Skip to content

Commit 0edae6e

Browse files
[PWGUD] Adding PID checks (#16443)
Co-authored-by: rolavick <roman.lavicka@cern.ch>
1 parent 7ab065b commit 0edae6e

1 file changed

Lines changed: 96 additions & 20 deletions

File tree

PWGUD/Tasks/upcPhotonuclearAnalysisJMG.cxx

Lines changed: 96 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace tree
5050
DECLARE_SOA_COLUMN(GapSide, gapSide, float);
5151
DECLARE_SOA_COLUMN(GapSideTimeZN, gapSideTimeZN, float);
5252
DECLARE_SOA_COLUMN(Sbp, sbp, int);
53-
DECLARE_SOA_COLUMN(ITSROFb, itsROFb, int);
53+
DECLARE_SOA_COLUMN(ItsRofB, itsRofB, int);
5454
DECLARE_SOA_COLUMN(VtxITSTPCCut, vtxITSTPCCut, int);
5555
DECLARE_SOA_COLUMN(ZVtxFT0vsPvCut, zVtxFT0vsPvCut, int);
5656
DECLARE_SOA_COLUMN(TimeZNA, timeZNA, float);
@@ -59,25 +59,38 @@ DECLARE_SOA_COLUMN(EnergyZNA, energyZNA, float);
5959
DECLARE_SOA_COLUMN(EnergyZNC, energyZNC, float);
6060
DECLARE_SOA_COLUMN(AmplitudeFV0A, amplitudeFV0A, float);
6161
DECLARE_SOA_COLUMN(Occupancy, occupancy, float);
62-
DECLARE_SOA_COLUMN(UPCMode, upcMode, float);
62+
DECLARE_SOA_COLUMN(UpcMode, upcMode, float);
63+
DECLARE_SOA_COLUMN(Pvz, pvz, float);
6364
DECLARE_SOA_COLUMN(PtSideA, ptSideA, std::vector<float>);
64-
DECLARE_SOA_COLUMN(RapSideA, rapSideA, std::vector<float>);
65+
DECLARE_SOA_COLUMN(PSideA, pSideA, std::vector<float>);
66+
DECLARE_SOA_COLUMN(ChargeSideA, chargeSideA, std::vector<float>);
67+
DECLARE_SOA_COLUMN(PseudorapSideA, pseudorapSideA, std::vector<float>);
6568
DECLARE_SOA_COLUMN(PhiSideA, phiSideA, std::vector<float>);
6669
DECLARE_SOA_COLUMN(TpcSignalSideA, tpcSignalSideA, std::vector<float>);
6770
DECLARE_SOA_COLUMN(TofSignalSideA, tofSignalSideA, std::vector<float>);
6871
DECLARE_SOA_COLUMN(TpcNSigmaPiSideA, tpcNSigmaPiSideA, std::vector<float>);
6972
DECLARE_SOA_COLUMN(TofNSigmaPiSideA, tofNSigmaPiSideA, std::vector<float>);
7073
DECLARE_SOA_COLUMN(TpcNSigmaKaSideA, tpcNSigmaKaSideA, std::vector<float>);
7174
DECLARE_SOA_COLUMN(TofNSigmaKaSideA, tofNSigmaKaSideA, std::vector<float>);
75+
DECLARE_SOA_COLUMN(TpcNSigmaProSideA, tpcNSigmaProSideA, std::vector<float>);
76+
DECLARE_SOA_COLUMN(TofNSigmaProSideA, tofNSigmaProSideA, std::vector<float>);
77+
DECLARE_SOA_COLUMN(TofBetaSideA, tofBetaSideA, std::vector<float>);
78+
DECLARE_SOA_COLUMN(TofBetaErrorSideA, tofBetaErrorSideA, std::vector<float>);
7279
DECLARE_SOA_COLUMN(PtSideC, ptSideC, std::vector<float>);
73-
DECLARE_SOA_COLUMN(RapSideC, rapSideC, std::vector<float>);
80+
DECLARE_SOA_COLUMN(PSideC, pSideC, std::vector<float>);
81+
DECLARE_SOA_COLUMN(ChargeSideC, chargeSideC, std::vector<float>);
82+
DECLARE_SOA_COLUMN(PseudorapSideC, pseudorapSideC, std::vector<float>);
7483
DECLARE_SOA_COLUMN(PhiSideC, phiSideC, std::vector<float>);
7584
DECLARE_SOA_COLUMN(TpcSignalSideC, tpcSignalSideC, std::vector<float>);
7685
DECLARE_SOA_COLUMN(TofSignalSideC, tofSignalSideC, std::vector<float>);
7786
DECLARE_SOA_COLUMN(TpcNSigmaPiSideC, tpcNSigmaPiSideC, std::vector<float>);
7887
DECLARE_SOA_COLUMN(TofNSigmaPiSideC, tofNSigmaPiSideC, std::vector<float>);
7988
DECLARE_SOA_COLUMN(TpcNSigmaKaSideC, tpcNSigmaKaSideC, std::vector<float>);
8089
DECLARE_SOA_COLUMN(TofNSigmaKaSideC, tofNSigmaKaSideC, std::vector<float>);
90+
DECLARE_SOA_COLUMN(TpcNSigmaProSideC, tpcNSigmaProSideC, std::vector<float>);
91+
DECLARE_SOA_COLUMN(TofNSigmaProSideC, tofNSigmaProSideC, std::vector<float>);
92+
DECLARE_SOA_COLUMN(TofBetaSideC, tofBetaSideC, std::vector<float>);
93+
DECLARE_SOA_COLUMN(TofBetaErrorSideC, tofBetaErrorSideC, std::vector<float>);
8194
DECLARE_SOA_COLUMN(NchSideA, nchSideA, int);
8295
DECLARE_SOA_COLUMN(MultiplicitySideA, multiplicitySideA, int);
8396
DECLARE_SOA_COLUMN(NchSideC, nchSideC, int);
@@ -87,7 +100,7 @@ DECLARE_SOA_TABLE(TREE, "AOD", "Tree",
87100
tree::GapSide,
88101
tree::GapSideTimeZN,
89102
tree::Sbp,
90-
tree::ITSROFb,
103+
tree::ItsRofB,
91104
tree::VtxITSTPCCut,
92105
tree::ZVtxFT0vsPvCut,
93106
tree::TimeZNA,
@@ -96,33 +109,47 @@ DECLARE_SOA_TABLE(TREE, "AOD", "Tree",
96109
tree::EnergyZNC,
97110
tree::AmplitudeFV0A,
98111
tree::Occupancy,
99-
tree::UPCMode,
112+
tree::UpcMode,
113+
tree::Pvz,
100114
tree::PtSideA,
101-
tree::RapSideA,
115+
tree::PSideA,
116+
tree::ChargeSideA,
117+
tree::PseudorapSideA,
102118
tree::PhiSideA,
103119
tree::TpcSignalSideA,
104120
tree::TofSignalSideA,
105121
tree::TpcNSigmaPiSideA,
106122
tree::TofNSigmaPiSideA,
107123
tree::TpcNSigmaKaSideA,
108124
tree::TofNSigmaKaSideA,
125+
tree::TpcNSigmaProSideA,
126+
tree::TofNSigmaProSideA,
127+
tree::TofBetaSideA,
128+
tree::TofBetaErrorSideA,
109129
tree::PtSideC,
110-
tree::RapSideC,
130+
tree::PSideC,
131+
tree::ChargeSideC,
132+
tree::PseudorapSideC,
111133
tree::PhiSideC,
112134
tree::TpcSignalSideC,
113135
tree::TofSignalSideC,
114136
tree::TpcNSigmaPiSideC,
115137
tree::TofNSigmaPiSideC,
116138
tree::TpcNSigmaKaSideC,
117139
tree::TofNSigmaKaSideC,
140+
tree::TpcNSigmaProSideC,
141+
tree::TofNSigmaProSideC,
142+
tree::TofBetaSideC,
143+
tree::TofBetaErrorSideC,
118144
tree::NchSideA,
119145
tree::MultiplicitySideA,
120146
tree::NchSideC,
121147
tree::MultiplicitySideC);
122148
} // namespace o2::aod
123149

124150
static constexpr float CFGPairCutDefaults[1][5] = {{-1, -1, -1, -1, -1}};
125-
constexpr float kThreeHalfPi = 1.5f * PI;
151+
constexpr float KThreeHalfPi = 1.5f * PI;
152+
constexpr float KMaxInSigmaPID = 9.0f;
126153

127154
struct UpcPhotonuclearAnalysisJMG {
128155

@@ -200,7 +227,7 @@ struct UpcPhotonuclearAnalysisJMG {
200227
"Pair cuts on various particles"};
201228
Configurable<float> cfgTwoTrackCut{"cfgTwoTrackCut", -1, {"Two track cut"}};
202229
ConfigurableAxis axisVertex{"axisVertex", {20, -10, 10}, "vertex axis for histograms"};
203-
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {32, -PIHalf, kThreeHalfPi}, "delta phi axis for histograms"};
230+
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {32, -PIHalf, KThreeHalfPi}, "delta phi axis for histograms"};
204231
ConfigurableAxis axisDeltaEta{"axisDeltaEta", {32, -1.6, 1.6}, "delta eta axis for histograms"};
205232
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "pt trigger axis for histograms"};
206233
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}, "pt associated axis for histograms"};
@@ -286,6 +313,8 @@ struct UpcPhotonuclearAnalysisJMG {
286313
histos.add("Tracks/SGsideA/hTrackPhi", "#it{#phi} distribution; #it{#phi}; counts", kTH1F, {axisPhi});
287314
histos.add("Tracks/SGsideA/hTrackEta", "#it{#eta} distribution; #it{#eta}; counts", kTH1F, {axisEta});
288315
histos.add("Tracks/SGsideA/hTrackTPCSignnalP", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
316+
histos.add("Tracks/SGsideA/hTrackTPCSignnalPPiones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
317+
histos.add("Tracks/SGsideA/hTrackTPCSignnalPKaones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
289318
histos.add("Tracks/SGsideA/hTrackTOFSignnalP", "#it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}", kTH2F, {axisP, axisTPCSignal});
290319
histos.add("Tracks/SGsideA/hTrackITSNCls", "#it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts", kTH1F, {axisNCls});
291320
histos.add("Tracks/SGsideA/hTrackITSChi2NCls", "#it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts", kTH1F, {axisChi2NCls});
@@ -318,6 +347,8 @@ struct UpcPhotonuclearAnalysisJMG {
318347
histos.add("Tracks/SGsideC/hTrackPhi", "#it{#phi} distribution; #it{#phi}; counts", kTH1F, {axisPhi});
319348
histos.add("Tracks/SGsideC/hTrackEta", "#it{#eta} distribution; #it{#eta}; counts", kTH1F, {axisEta});
320349
histos.add("Tracks/SGsideC/hTrackTPCSignnalP", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
350+
histos.add("Tracks/SGsideC/hTrackTPCSignnalPPiones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
351+
histos.add("Tracks/SGsideC/hTrackTPCSignnalPKaones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
321352
histos.add("Tracks/SGsideC/hTrackTOFSignnalP", "#it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}", kTH2F, {axisP, axisTPCSignal});
322353
histos.add("Tracks/SGsideC/hTrackITSNCls", "#it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts", kTH1F, {axisNCls});
323354
histos.add("Tracks/SGsideC/hTrackITSChi2NCls", "#it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts", kTH1F, {axisChi2NCls});
@@ -627,8 +658,8 @@ struct UpcPhotonuclearAnalysisJMG {
627658
int nchPVGapSideC = 0;
628659
int nchGapSideA = 0;
629660
int nchGapSideC = 0;
630-
std::vector<float> vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA;
631-
std::vector<float> vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideC, vTrackTOFSignalSideC, vTrackTPCNSigmaPiSideC, vTrackTOFNSigmaPiSideC, vTrackTPCNSigmaKaSideC, vTrackTOFNSigmaKaSideC;
661+
std::vector<float> vTrackPtSideA, vTrackPSideA, vTrackChargeSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA, vTrackTPCNSigmaProSideA, vTrackTOFNSigmaProSideA, vTrackTOFBetaSideA, vTrackTOFBetaErrorSideA;
662+
std::vector<float> vTrackPtSideC, vTrackPSideC, vTrackChargeSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideC, vTrackTOFSignalSideC, vTrackTPCNSigmaPiSideC, vTrackTOFNSigmaPiSideC, vTrackTPCNSigmaKaSideC, vTrackTOFNSigmaKaSideC, vTrackTPCNSigmaProSideC, vTrackTOFNSigmaProSideC, vTrackTOFBetaSideC, vTrackTOFBetaErrorSideC;
632663

633664
int nTracksChargedSideA(-222), nTracksChargedSideC(-222);
634665
int multiplicitySideA(-222), multiplicitySideC(-222);
@@ -675,20 +706,36 @@ struct UpcPhotonuclearAnalysisJMG {
675706
nTracksCharged++;
676707
sumPt += track.pt();
677708
float phiVal = RecoDecay::constrainAngle(phi(track.px(), track.py()), 0.f);
709+
float pTotal = momentum(track.px(), track.py(), track.pz()) * track.sign();
710+
float etaVal = eta(track.px(), track.py(), track.pz());
678711
histos.fill(HIST("Tracks/SGsideA/hTrackPt"), track.pt());
679712
histos.fill(HIST("Tracks/SGsideA/hTrackPhi"), phiVal);
680-
histos.fill(HIST("Tracks/SGsideA/hTrackEta"), eta(track.px(), track.py(), track.pz()));
681-
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tpcSignal());
682-
histos.fill(HIST("Tracks/SGsideA/hTrackTOFSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tofSignal());
713+
histos.fill(HIST("Tracks/SGsideA/hTrackEta"), etaVal);
714+
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalP"), pTotal, track.tpcSignal());
715+
float nSigmaPi2 = track.tpcNSigmaPi() * track.tpcNSigmaPi() + track.tofNSigmaPi() * track.tofNSigmaPi();
716+
float nSigmaKa2 = track.tpcNSigmaKa() * track.tpcNSigmaKa() + track.tofNSigmaKa() * track.tofNSigmaKa();
717+
if (nSigmaPi2 < KMaxInSigmaPID && nSigmaKa2 > KMaxInSigmaPID) {
718+
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalPPiones"), pTotal, track.tpcSignal());
719+
}
720+
if (nSigmaKa2 < KMaxInSigmaPID && nSigmaPi2 > KMaxInSigmaPID) {
721+
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalPKaones"), pTotal, track.tpcSignal());
722+
}
723+
histos.fill(HIST("Tracks/SGsideA/hTrackTOFSignnalP"), pTotal, track.tofSignal());
683724
vTrackPtSideA.push_back(track.pt());
684-
vTrackEtaSideA.push_back(eta(track.px(), track.py(), track.pz()));
725+
vTrackPSideA.push_back(pTotal);
726+
vTrackChargeSideA.push_back(track.sign());
727+
vTrackEtaSideA.push_back(etaVal);
685728
vTrackPhiSideA.push_back(phiVal);
686729
vTrackTPCSignalSideA.push_back(track.tpcSignal());
687730
vTrackTOFSignalSideA.push_back(track.tofSignal());
688731
vTrackTPCNSigmaPiSideA.push_back(track.tpcNSigmaPi());
689732
vTrackTOFNSigmaPiSideA.push_back(track.tofNSigmaPi());
690733
vTrackTPCNSigmaKaSideA.push_back(track.tpcNSigmaKa());
691734
vTrackTOFNSigmaKaSideA.push_back(track.tofNSigmaKa());
735+
vTrackTPCNSigmaProSideA.push_back(track.tpcNSigmaPr());
736+
vTrackTOFNSigmaProSideA.push_back(track.tofNSigmaPr());
737+
vTrackTOFBetaSideA.push_back(track.beta());
738+
vTrackTOFBetaErrorSideA.push_back(track.betaerror());
692739

693740
histos.fill(HIST("Tracks/SGsideA/hTrackITSNCls"), track.itsNCls());
694741
histos.fill(HIST("Tracks/SGsideA/hTrackITSChi2NCls"), track.itsChi2NCl());
@@ -735,20 +782,36 @@ struct UpcPhotonuclearAnalysisJMG {
735782
nTracksCharged++;
736783
sumPt += track.pt();
737784
float phiVal = RecoDecay::constrainAngle(phi(track.px(), track.py()), 0.f);
785+
float pTotal = momentum(track.px(), track.py(), track.pz()) * track.sign();
786+
float etaVal = eta(track.px(), track.py(), track.pz());
738787
histos.fill(HIST("Tracks/SGsideC/hTrackPt"), track.pt());
739788
histos.fill(HIST("Tracks/SGsideC/hTrackPhi"), phiVal);
740-
histos.fill(HIST("Tracks/SGsideC/hTrackEta"), eta(track.px(), track.py(), track.pz()));
741-
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tpcSignal());
742-
histos.fill(HIST("Tracks/SGsideC/hTrackTOFSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tofSignal());
789+
histos.fill(HIST("Tracks/SGsideC/hTrackEta"), etaVal);
790+
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalP"), pTotal, track.tpcSignal());
791+
float nSigmaPi2 = track.tpcNSigmaPi() * track.tpcNSigmaPi() + track.tofNSigmaPi() * track.tofNSigmaPi();
792+
float nSigmaKa2 = track.tpcNSigmaKa() * track.tpcNSigmaKa() + track.tofNSigmaKa() * track.tofNSigmaKa();
793+
if (nSigmaPi2 < KMaxInSigmaPID && nSigmaKa2 > KMaxInSigmaPID) {
794+
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalPPiones"), pTotal, track.tpcSignal());
795+
}
796+
if (nSigmaKa2 < KMaxInSigmaPID && nSigmaPi2 > KMaxInSigmaPID) {
797+
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalPKaones"), pTotal, track.tpcSignal());
798+
}
799+
histos.fill(HIST("Tracks/SGsideC/hTrackTOFSignnalP"), pTotal, track.tofSignal());
743800
vTrackPtSideC.push_back(track.pt());
744-
vTrackEtaSideC.push_back(eta(track.px(), track.py(), track.pz()));
801+
vTrackPSideC.push_back(pTotal);
802+
vTrackChargeSideC.push_back(track.sign());
803+
vTrackEtaSideC.push_back(etaVal);
745804
vTrackPhiSideC.push_back(phiVal);
746805
vTrackTPCSignalSideC.push_back(track.tpcSignal());
747806
vTrackTOFSignalSideC.push_back(track.tofSignal());
748807
vTrackTPCNSigmaPiSideC.push_back(track.tpcNSigmaPi());
749808
vTrackTOFNSigmaPiSideC.push_back(track.tofNSigmaPi());
750809
vTrackTPCNSigmaKaSideC.push_back(track.tpcNSigmaKa());
751810
vTrackTOFNSigmaKaSideC.push_back(track.tofNSigmaKa());
811+
vTrackTPCNSigmaProSideC.push_back(track.tpcNSigmaPr());
812+
vTrackTOFNSigmaProSideC.push_back(track.tofNSigmaPr());
813+
vTrackTOFBetaSideC.push_back(track.beta());
814+
vTrackTOFBetaErrorSideC.push_back(track.betaerror());
752815

753816
histos.fill(HIST("Tracks/SGsideC/hTrackITSNCls"), track.itsNCls());
754817
histos.fill(HIST("Tracks/SGsideC/hTrackITSChi2NCls"), track.itsChi2NCl());
@@ -787,7 +850,10 @@ struct UpcPhotonuclearAnalysisJMG {
787850
reconstructedCollision.totalFV0AmplitudeA(),
788851
reconstructedCollision.occupancyInTime(),
789852
reconstructedCollision.flags(),
853+
reconstructedCollision.posZ(),
790854
vTrackPtSideA,
855+
vTrackPSideA,
856+
vTrackChargeSideA,
791857
vTrackEtaSideA,
792858
vTrackPhiSideA,
793859
vTrackTPCSignalSideA,
@@ -796,7 +862,13 @@ struct UpcPhotonuclearAnalysisJMG {
796862
vTrackTOFNSigmaPiSideA,
797863
vTrackTPCNSigmaKaSideA,
798864
vTrackTOFNSigmaKaSideA,
865+
vTrackTPCNSigmaProSideA,
866+
vTrackTOFNSigmaProSideA,
867+
vTrackTOFBetaSideA,
868+
vTrackTOFBetaErrorSideA,
799869
vTrackPtSideC,
870+
vTrackPSideC,
871+
vTrackChargeSideC,
800872
vTrackEtaSideC,
801873
vTrackPhiSideC,
802874
vTrackTPCSignalSideA,
@@ -805,6 +877,10 @@ struct UpcPhotonuclearAnalysisJMG {
805877
vTrackTOFNSigmaPiSideA,
806878
vTrackTPCNSigmaKaSideA,
807879
vTrackTOFNSigmaKaSideA,
880+
vTrackTPCNSigmaProSideA,
881+
vTrackTOFNSigmaProSideA,
882+
vTrackTOFBetaSideA,
883+
vTrackTOFBetaErrorSideA,
808884
nTracksChargedSideA,
809885
multiplicitySideA,
810886
nTracksChargedSideC,

0 commit comments

Comments
 (0)