@@ -50,7 +50,7 @@ namespace tree
5050DECLARE_SOA_COLUMN (GapSide, gapSide, float );
5151DECLARE_SOA_COLUMN (GapSideTimeZN, gapSideTimeZN, float );
5252DECLARE_SOA_COLUMN (Sbp, sbp, int );
53- DECLARE_SOA_COLUMN (ITSROFb, itsROFb , int );
53+ DECLARE_SOA_COLUMN (ItsRofB, itsRofB , int );
5454DECLARE_SOA_COLUMN (VtxITSTPCCut, vtxITSTPCCut, int );
5555DECLARE_SOA_COLUMN (ZVtxFT0vsPvCut, zVtxFT0vsPvCut, int );
5656DECLARE_SOA_COLUMN (TimeZNA, timeZNA, float );
@@ -59,25 +59,38 @@ DECLARE_SOA_COLUMN(EnergyZNA, energyZNA, float);
5959DECLARE_SOA_COLUMN (EnergyZNC, energyZNC, float );
6060DECLARE_SOA_COLUMN (AmplitudeFV0A, amplitudeFV0A, float );
6161DECLARE_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 );
6364DECLARE_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 >);
6568DECLARE_SOA_COLUMN (PhiSideA, phiSideA, std::vector<float >);
6669DECLARE_SOA_COLUMN (TpcSignalSideA, tpcSignalSideA, std::vector<float >);
6770DECLARE_SOA_COLUMN (TofSignalSideA, tofSignalSideA, std::vector<float >);
6871DECLARE_SOA_COLUMN (TpcNSigmaPiSideA, tpcNSigmaPiSideA, std::vector<float >);
6972DECLARE_SOA_COLUMN (TofNSigmaPiSideA, tofNSigmaPiSideA, std::vector<float >);
7073DECLARE_SOA_COLUMN (TpcNSigmaKaSideA, tpcNSigmaKaSideA, std::vector<float >);
7174DECLARE_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 >);
7279DECLARE_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 >);
7483DECLARE_SOA_COLUMN (PhiSideC, phiSideC, std::vector<float >);
7584DECLARE_SOA_COLUMN (TpcSignalSideC, tpcSignalSideC, std::vector<float >);
7685DECLARE_SOA_COLUMN (TofSignalSideC, tofSignalSideC, std::vector<float >);
7786DECLARE_SOA_COLUMN (TpcNSigmaPiSideC, tpcNSigmaPiSideC, std::vector<float >);
7887DECLARE_SOA_COLUMN (TofNSigmaPiSideC, tofNSigmaPiSideC, std::vector<float >);
7988DECLARE_SOA_COLUMN (TpcNSigmaKaSideC, tpcNSigmaKaSideC, std::vector<float >);
8089DECLARE_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 >);
8194DECLARE_SOA_COLUMN (NchSideA, nchSideA, int );
8295DECLARE_SOA_COLUMN (MultiplicitySideA, multiplicitySideA, int );
8396DECLARE_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
124150static 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
127154struct 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