forked from AliceO2Group/O2Physics
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
73 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ | |
// \author Sasha Bylinkin, [email protected] | ||
// \since April 2023 | ||
|
||
#include "Framework/AnalysisDataModel.h" | ||
#include "Framework/runDataProcessing.h" | ||
#include "Framework/AnalysisTask.h" | ||
#include "Framework/AnalysisDataModel.h" | ||
|
@@ -21,20 +22,26 @@ | |
#include "PWGUD/Core/SGSelector.h" | ||
#include "PWGUD/Tasks/SGTrackSelector.h" | ||
#include "Common/DataModel/PIDResponse.h" | ||
#include "Framework/ASoA.h" | ||
#include "Framework/DataTypes.h" | ||
#include "MathUtils/Utils.h" | ||
#include "Common/DataModel/TrackSelectionTables.h" | ||
|
||
#include <TString.h> | ||
#include "TLorentzVector.h" | ||
using namespace std; | ||
using namespace o2; | ||
using namespace o2::aod; | ||
//using namespace o2::aod::track::v001; | ||
using namespace o2::framework; | ||
using namespace o2::framework::expressions; | ||
#define mpion 0.1396 | ||
#define mkaon 0.4937 | ||
#define mproton 0.9383 | ||
struct SG_FourPi_Analyzer { | ||
SGSelector sgSelector; | ||
Configurable<float> FV0_cut{"FV0", 100., "FV0A threshold"}; | ||
Configurable<float> FT0A_cut{"FT0A", 100., "FT0A threshold"}; | ||
Configurable<float> FV0_cut{"FV0", 50., "FV0A threshold"}; | ||
Configurable<float> FT0A_cut{"FT0A", 150., "FT0A threshold"}; | ||
Configurable<float> FT0C_cut{"FT0C", 50., "FT0C threshold"}; | ||
Configurable<float> FDDA_cut{"FDDA", 10000., "FDDA threshold"}; | ||
Configurable<float> FDDC_cut{"FDDC", 10000., "FDDC threshold"}; | ||
|
@@ -45,6 +52,7 @@ struct SG_FourPi_Analyzer { | |
|
||
{"GapSide", "Gap Side; Entries", {HistType::kTH1F, {{4, -1.5, 2.5}}}}, | ||
{"TrueGapSide", "Gap Side; Entries", {HistType::kTH1F, {{4, -1.5, 2.5}}}}, | ||
{"ITSNCls", "ITS Clusters", {HistType::kTH1F, {{10, -.5, 9.5}}}}, | ||
{"os_4Pi_pT", "#K#Pi pT (GeV/c); Entries", {HistType::kTH1F, {{1000, 0, 10}}}}, | ||
{"os_4Pi_eTa", "#K#Pi eTa (GeV/c); Entries", {HistType::kTH1F, {{100, -2., 2.}}}}, | ||
{"os_4Pi_invm", "#K#Pi Mass (GeV/c^2); Entries", {HistType::kTH1F, {{1000, 0, 10}}}}, | ||
|
@@ -84,9 +92,9 @@ struct SG_FourPi_Analyzer { | |
// Single gap either side | ||
TLorentzVector v01; | ||
// int truegapSide = sgSelector.trueGap(collision); | ||
// int truegapSide = sgSelector.trueGap(collision, FV0_cut, ZDC_cut); | ||
float FIT_cut[5] = {FV0_cut, FT0A_cut, FT0C_cut, FDDA_cut, FDDC_cut}; | ||
// int truegapSide = sgSelector.trueGap(collision, *FIT_cut, ZDC_cut); | ||
//int truegapSide = sgSelector.trueGap(collision, FV0_cut, ZDC_cut); | ||
float FIT_cut[5]={FV0_cut, FT0A_cut, FT0C_cut, FDDA_cut, FDDC_cut}; | ||
//int truegapSide = sgSelector.trueGap(collision, *FIT_cut, ZDC_cut); | ||
int truegapSide = sgSelector.trueGap(collision, FIT_cut[0], FIT_cut[1], FIT_cut[3], ZDC_cut); | ||
registry.fill(HIST("GapSide"), gapSide); | ||
registry.fill(HIST("TrueGapSide"), truegapSide); | ||
|
@@ -95,69 +103,70 @@ struct SG_FourPi_Analyzer { | |
// Look for D0 and D0bar | ||
float sign = 0; | ||
for (auto t : tracks) { | ||
TLorentzVector a; | ||
a.SetXYZM(t.px(), t.py(), t.pz(), mpion); | ||
if (trackselector(t)) { | ||
sign += t.sign(); | ||
goodTracks.push_back(a); | ||
} | ||
//int itsNCls = t.itsNCls(); | ||
int itsNCls = t.uditsNCls(); | ||
// int itsNCls = o2::aod::track::v001::ITSNCls<track::ITSClusterSizes>; | ||
// if (t.itsNCls()) {std::cout << t.itsClusterSizes()<<std::endl; | ||
// registry.fill(HIST("ITSNCls"), t.itsClusterSizes());} | ||
//if (itsNCls) { | ||
std::cout <<t.itsClusterSizes()<<"\t"<< itsNCls<<std::endl; | ||
registry.fill(HIST("ITSNCls"), itsNCls); | ||
//} | ||
TLorentzVector a; | ||
a.SetXYZM(t.px(), t.py(), t.pz(), mpion); | ||
if (trackselector(t)){ | ||
sign += t.sign(); | ||
goodTracks.push_back(a); | ||
} | ||
} | ||
std::cout << goodTracks.size() << std::endl; | ||
if (goodTracks.size() == 4) { | ||
for (auto pion : goodTracks) { | ||
v01 += pion; | ||
} | ||
// Apply pion hypothesis and create pairs | ||
// Opposite sign pairs | ||
// std::cout << goodTracks.size()<<std::endl; | ||
if (goodTracks.size()==4) { | ||
for (auto pion : goodTracks){ | ||
v01 += pion; | ||
} | ||
// Apply pion hypothesis and create pairs | ||
// Opposite sign pairs | ||
|
||
if (sign == 0) { | ||
registry.fill(HIST("os_4Pi_pT"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("os_4Pi_invm"), v01.M()); | ||
if (gapSide == 0) { | ||
registry.fill(HIST("os_4Pi_pT_0"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_0"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("os_4Pi_invm_0"), v01.M()); | ||
} | ||
if (gapSide == 1) { | ||
registry.fill(HIST("os_4Pi_pT_1"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_1"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("os_4Pi_invm_1"), v01.M()); | ||
} | ||
if (gapSide == 2) { | ||
registry.fill(HIST("os_4Pi_pT_2"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_2"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("os_4Pi_invm_2"), v01.M()); | ||
} | ||
} else { | ||
registry.fill(HIST("ss_4Pi_pT"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("ss_4Pi_invm"), v01.M()); | ||
if (gapSide == 0) { | ||
registry.fill(HIST("ss_4Pi_pT_0"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_0"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("ss_4Pi_invm_0"), v01.M()); | ||
} | ||
if (gapSide == 1) { | ||
registry.fill(HIST("ss_4Pi_pT_1"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_1"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("ss_4Pi_invm_1"), v01.M()); | ||
} | ||
if (gapSide == 2) { | ||
registry.fill(HIST("ss_4Pi_pT_2"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_2"), v01.Eta()); | ||
if (TMath::Abs(v01.Eta() < 0.9) && v01.Pt() < .15) | ||
registry.fill(HIST("ss_4Pi_invm_2"), v01.M()); | ||
if (sign == 0) { | ||
registry.fill(HIST("os_4Pi_pT"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("os_4Pi_invm"), v01.M()); | ||
if (gapSide == 0) { | ||
registry.fill(HIST("os_4Pi_pT_0"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_0"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("os_4Pi_invm_0"), v01.M()); | ||
} | ||
if (gapSide == 1) { | ||
registry.fill(HIST("os_4Pi_pT_1"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_1"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("os_4Pi_invm_1"), v01.M()); | ||
} | ||
if (gapSide == 2) { | ||
registry.fill(HIST("os_4Pi_pT_2"), v01.Pt()); | ||
registry.fill(HIST("os_4Pi_eTa_2"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("os_4Pi_invm_2"), v01.M()); | ||
} | ||
} else { | ||
registry.fill(HIST("ss_4Pi_pT"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("ss_4Pi_invm"), v01.M()); | ||
if (gapSide == 0) { | ||
registry.fill(HIST("ss_4Pi_pT_0"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_0"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("ss_4Pi_invm_0"), v01.M()); | ||
} | ||
if (gapSide == 1) { | ||
registry.fill(HIST("ss_4Pi_pT_1"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_1"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("ss_4Pi_invm_1"), v01.M()); | ||
} | ||
if (gapSide == 2) { | ||
registry.fill(HIST("ss_4Pi_pT_2"), v01.Pt()); | ||
registry.fill(HIST("ss_4Pi_eTa_2"), v01.Eta()); | ||
if(TMath::Abs(v01.Eta()<0.9) && v01.Pt() < .15) registry.fill(HIST("ss_4Pi_invm_2"), v01.M()); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
|
||
|