Skip to content

Commit 9db4e99

Browse files
jjurackaalibuild
andauthored
[PWGUD] changes to upcRhoAnalysis.cxx (#14430)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 777bac9 commit 9db4e99

File tree

1 file changed

+82
-93
lines changed

1 file changed

+82
-93
lines changed

PWGUD/Tasks/upcRhoAnalysis.cxx

Lines changed: 82 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -49,70 +49,64 @@ namespace reco_tree
4949
// event info
5050
DECLARE_SOA_COLUMN(RecoSetting, recoSetting, uint16_t);
5151
DECLARE_SOA_COLUMN(RunNumber, runNumber, int32_t);
52-
DECLARE_SOA_COLUMN(LocalBC, localBC, int);
53-
DECLARE_SOA_COLUMN(NumContrib, numContrib, int);
54-
DECLARE_SOA_COLUMN(PosX, posX, float);
55-
DECLARE_SOA_COLUMN(PosY, posY, float);
5652
DECLARE_SOA_COLUMN(PosZ, posZ, float);
57-
// FIT info
58-
DECLARE_SOA_COLUMN(TotalFT0AmplitudeA, totalFT0AmplitudeA, float);
59-
DECLARE_SOA_COLUMN(TotalFT0AmplitudeC, totalFT0AmplitudeC, float);
60-
DECLARE_SOA_COLUMN(TotalFV0AmplitudeA, totalFV0AmplitudeA, float);
61-
DECLARE_SOA_COLUMN(TotalFDDAmplitudeA, totalFDDAmplitudeA, float);
62-
DECLARE_SOA_COLUMN(TotalFDDAmplitudeC, totalFDDAmplitudeC, float);
63-
DECLARE_SOA_COLUMN(TimeFT0A, timeFT0A, float);
64-
DECLARE_SOA_COLUMN(TimeFT0C, timeFT0C, float);
65-
DECLARE_SOA_COLUMN(TimeFV0A, timeFV0A, float);
66-
DECLARE_SOA_COLUMN(TimeFDDA, timeFDDA, float);
67-
DECLARE_SOA_COLUMN(TimeFDDC, timeFDDC, float);
6853
// ZDC info
6954
DECLARE_SOA_COLUMN(EnergyCommonZNA, energyCommonZNA, float);
7055
DECLARE_SOA_COLUMN(EnergyCommonZNC, energyCommonZNC, float);
7156
DECLARE_SOA_COLUMN(TimeZNA, timeZNA, float);
7257
DECLARE_SOA_COLUMN(TimeZNC, timeZNC, float);
7358
DECLARE_SOA_COLUMN(NeutronClass, neutronClass, int);
74-
// pion tracks
75-
DECLARE_SOA_COLUMN(PhiRandom, phiRandom, float);
76-
DECLARE_SOA_COLUMN(PhiCharge, phiCharge, float);
77-
DECLARE_SOA_COLUMN(TrackSign, trackSign, int[2]);
78-
DECLARE_SOA_COLUMN(TrackPt, trackPt, float[2]);
79-
DECLARE_SOA_COLUMN(TrackEta, trackEta, float[2]);
80-
DECLARE_SOA_COLUMN(TrackPhi, trackPhi, float[2]);
81-
DECLARE_SOA_COLUMN(TrackPiPID, trackPiPID, float[2]);
82-
DECLARE_SOA_COLUMN(TrackElPID, trackElPID, float[2]);
83-
DECLARE_SOA_COLUMN(TrackKaPID, trackKaPID, float[2]);
84-
DECLARE_SOA_COLUMN(TrackDcaXY, trackDcaXY, float[2]);
85-
DECLARE_SOA_COLUMN(TrackDcaZ, trackDcaZ, float[2]);
86-
DECLARE_SOA_COLUMN(TrackTpcSignal, trackTpcSignal, float[2]);
59+
// tracks
60+
DECLARE_SOA_COLUMN(LeadingTrackSign, leadingTrackSign, int);
61+
DECLARE_SOA_COLUMN(SubleadingTrackSign, subleadingTrackSign, int);
62+
DECLARE_SOA_COLUMN(LeadingTrackPt, leadingTrackPt, float);
63+
DECLARE_SOA_COLUMN(SubleadingTrackPt, subleadingTrackPt, float);
64+
DECLARE_SOA_COLUMN(LeadingTrackEta, leadingTrackEta, float);
65+
DECLARE_SOA_COLUMN(SubleadingTrackEta, subleadingTrackEta, float);
66+
DECLARE_SOA_COLUMN(LeadingTrackPhi, leadingTrackPhi, float);
67+
DECLARE_SOA_COLUMN(SubleadingTrackPhi, subleadingTrackPhi, float);
68+
DECLARE_SOA_COLUMN(LeadingTrackPiPID, leadingTrackPiPID, float);
69+
DECLARE_SOA_COLUMN(SubleadingTrackPiPID, subleadingTrackPiPID, float);
70+
DECLARE_SOA_COLUMN(LeadingTrackElPID, leadingTrackElPID, float);
71+
DECLARE_SOA_COLUMN(SubleadingTrackElPID, subleadingTrackElPID, float);
72+
DECLARE_SOA_COLUMN(LeadingTrackKaPID, leadingTrackKaPID, float);
73+
DECLARE_SOA_COLUMN(SubleadingTrackKaPID, subleadingTrackKaPID, float);
74+
DECLARE_SOA_COLUMN(LeadingTrackPrPID, leadingTrackPrPID, float);
75+
DECLARE_SOA_COLUMN(SubleadingTrackPrPID, subleadingTrackPrPID, float);
8776
} // namespace reco_tree
8877
DECLARE_SOA_TABLE(RecoTree, "AOD", "RECOTREE",
89-
reco_tree::RecoSetting, reco_tree::RunNumber, reco_tree::LocalBC, reco_tree::NumContrib, reco_tree::PosX, reco_tree::PosY, reco_tree::PosZ,
90-
reco_tree::TotalFT0AmplitudeA, reco_tree::TotalFT0AmplitudeC, reco_tree::TotalFV0AmplitudeA, reco_tree::TotalFDDAmplitudeA, reco_tree::TotalFDDAmplitudeC,
91-
reco_tree::TimeFT0A, reco_tree::TimeFT0C, reco_tree::TimeFV0A, reco_tree::TimeFDDA, reco_tree::TimeFDDC,
78+
reco_tree::RecoSetting, reco_tree::RunNumber, reco_tree::PosZ,
9279
reco_tree::EnergyCommonZNA, reco_tree::EnergyCommonZNC, reco_tree::TimeZNA, reco_tree::TimeZNC, reco_tree::NeutronClass,
93-
reco_tree::PhiRandom, reco_tree::PhiCharge, reco_tree::TrackSign, reco_tree::TrackPt, reco_tree::TrackEta, reco_tree::TrackPhi, reco_tree::TrackPiPID, reco_tree::TrackElPID, reco_tree::TrackKaPID, reco_tree::TrackDcaXY, reco_tree::TrackDcaZ, reco_tree::TrackTpcSignal);
80+
reco_tree::LeadingTrackSign, reco_tree::SubleadingTrackSign,
81+
reco_tree::LeadingTrackPt, reco_tree::SubleadingTrackPt,
82+
reco_tree::LeadingTrackEta, reco_tree::SubleadingTrackEta,
83+
reco_tree::LeadingTrackPhi, reco_tree::SubleadingTrackPhi,
84+
reco_tree::LeadingTrackPiPID, reco_tree::SubleadingTrackPiPID,
85+
reco_tree::LeadingTrackElPID, reco_tree::SubleadingTrackElPID,
86+
reco_tree::LeadingTrackKaPID, reco_tree::SubleadingTrackKaPID,
87+
reco_tree::LeadingTrackPrPID, reco_tree::SubleadingTrackPrPID);
9488

9589
namespace mc_tree
9690
{
9791
// misc event info
98-
DECLARE_SOA_COLUMN(LocalBc, localBc, int);
9992
DECLARE_SOA_COLUMN(RunNumber, runNumber, int);
100-
// event vertex
101-
DECLARE_SOA_COLUMN(PosX, posX, float);
102-
DECLARE_SOA_COLUMN(PosY, posY, float);
10393
DECLARE_SOA_COLUMN(PosZ, posZ, float);
104-
// pion tracks
105-
DECLARE_SOA_COLUMN(PhiRandom, phiRandom, float);
106-
DECLARE_SOA_COLUMN(PhiCharge, phiCharge, float);
107-
DECLARE_SOA_COLUMN(TrackSign, trackSign, int[2]);
108-
DECLARE_SOA_COLUMN(TrackPt, trackPt, float[2]);
109-
DECLARE_SOA_COLUMN(TrackEta, trackEta, float[2]);
110-
DECLARE_SOA_COLUMN(TrackPhi, trackPhi, float[2]);
94+
// tracks
95+
DECLARE_SOA_COLUMN(LeadingTrackSign, leadingTrackSign, int);
96+
DECLARE_SOA_COLUMN(SubleadingTrackSign, subleadingTrackSign, int);
97+
DECLARE_SOA_COLUMN(LeadingTrackPt, leadingTrackPt, float);
98+
DECLARE_SOA_COLUMN(SubleadingTrackPt, subleadingTrackPt, float);
99+
DECLARE_SOA_COLUMN(LeadingTrackEta, leadingTrackEta, float);
100+
DECLARE_SOA_COLUMN(SubleadingTrackEta, subleadingTrackEta, float);
101+
DECLARE_SOA_COLUMN(LeadingTrackPhi, leadingTrackPhi, float);
102+
DECLARE_SOA_COLUMN(SubleadingTrackPhi, subleadingTrackPhi, float);
111103
} // namespace mc_tree
112104
DECLARE_SOA_TABLE(McTree, "AOD", "MCTREE",
113-
mc_tree::LocalBc, mc_tree::RunNumber,
114-
mc_tree::PosX, mc_tree::PosY, mc_tree::PosZ,
115-
mc_tree::PhiRandom, mc_tree::PhiCharge, mc_tree::TrackSign, mc_tree::TrackPt, mc_tree::TrackEta, mc_tree::TrackPhi);
105+
mc_tree::RunNumber, mc_tree::PosZ,
106+
mc_tree::LeadingTrackSign, mc_tree::SubleadingTrackSign,
107+
mc_tree::LeadingTrackPt, mc_tree::SubleadingTrackPt,
108+
mc_tree::LeadingTrackEta, mc_tree::SubleadingTrackEta,
109+
mc_tree::LeadingTrackPhi, mc_tree::SubleadingTrackPhi);
116110
} // namespace o2::aod
117111

118112
struct UpcRhoAnalysis {
@@ -153,7 +147,7 @@ struct UpcRhoAnalysis {
153147
Configurable<float> znTimeCut{"znTimeCut", 2.0, "ZN time cut"};
154148

155149
Configurable<float> tracksTpcNSigmaPiCut{"tracksTpcNSigmaPiCut", 3.0, "TPC nSigma pion cut"};
156-
Configurable<bool> rejectLowerProbPairs{"rejectLowerProbPairs", false, "reject track pairs with lower El or Ka PID radii"};
150+
Configurable<bool> rejectLowerProbPairs{"rejectLowerProbPairs", true, "reject track pairs with lower El or Ka PID radii"};
157151
Configurable<float> tracksDcaMaxCut{"tracksDcaMaxCut", 1.0, "max DCA cut on tracks"};
158152
Configurable<int> tracksMinItsNClsCut{"tracksMinItsNClsCut", 4, "min ITS clusters cut"};
159153
Configurable<float> tracksMaxItsChi2NClCut{"tracksMaxItsChi2NClCut", 3.0, "max ITS chi2/Ncls cut"};
@@ -219,6 +213,7 @@ struct UpcRhoAnalysis {
219213
rQC.add("QC/tracks/all/hTpcNSigmaPi", ";TPC #it{n#sigma}(#pi);counts", kTH1D, {nSigmaAxis});
220214
rQC.add("QC/tracks/all/hTpcNSigmaEl", ";TPC #it{n#sigma}(e);counts", kTH1D, {nSigmaAxis});
221215
rQC.add("QC/tracks/all/hTpcNSigmaKa", ";TPC #it{n#sigma}(K);counts", kTH1D, {nSigmaAxis});
216+
rQC.add("QC/tracks/all/hTpcNSigmaPr", ";TPC #it{n#sigma}(p);counts", kTH1D, {nSigmaAxis});
222217
rQC.add("QC/tracks/all/hDcaXYZ", ";track #it{DCA}_{z} (cm);track #it{DCA}_{xy} (cm);counts", kTH2D, {{1000, -5.0, 5.0}, {400, -2.0, 2.0}});
223218
rQC.add("QC/tracks/all/hItsNCls", ";ITS #it{N}_{cls};counts", kTH1D, {{11, -0.5, 10.5}});
224219
rQC.add("QC/tracks/all/hItsChi2NCl", ";ITS #it{#chi}^{2}/#it{N}_{cls};counts", kTH1D, {{200, 0.0, 20.0}});
@@ -238,6 +233,7 @@ struct UpcRhoAnalysis {
238233
rQC.add("QC/tracks/trackSelections/hTpcNSigmaPi2D", ";TPC #it{n#sigma}(#pi)_{leading};TPC #it{n#sigma}(#pi)_{subleading};counts", kTH2D, {nSigmaAxis, nSigmaAxis});
239234
rQC.add("QC/tracks/trackSelections/hTpcNSigmaEl2D", ";TPC #it{n#sigma}(e)_{leading};TPC #it{n#sigma}(e)_{subleading};counts", kTH2D, {nSigmaAxis, nSigmaAxis});
240235
rQC.add("QC/tracks/trackSelections/hTpcNSigmaKa2D", ";TPC #it{n#sigma}(K)_{leading};TPC #it{n#sigma}(K)_{subleading};counts", kTH2D, {nSigmaAxis, nSigmaAxis});
236+
rQC.add("QC/tracks/trackSelections/hTpcNSigmaPr2D", ";TPC #it{n#sigma}(p)_{leading};TPC #it{n#sigma}(p)_{subleading};counts", kTH2D, {nSigmaAxis, nSigmaAxis});
241237
// selection counter
242238
std::vector<std::string> trackSelectionCounterLabels = {"all tracks", "PV contributor", "ITS hit", "ITS #it{N}_{cls}", "itsClusterMap check", "ITS #it{#chi}^{2}/#it{N}_{cls}", "TPC hit", "found TPC #it{N}_{cls}", "TPC #it{#chi}^{2}/#it{N}_{cls}", "TPC crossed rows",
243239
"TPC crossed rows/#it{N}_{cls}",
@@ -261,6 +257,7 @@ struct UpcRhoAnalysis {
261257
rQC.add("QC/tracks/hPiPIDRadius", ";#it{n#sigma}(#pi) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
262258
rQC.add("QC/tracks/hElPIDRadius", ";#it{n#sigma}(e) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
263259
rQC.add("QC/tracks/hKaPIDRadius", ";#it{n#sigma}(K) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
260+
rQC.add("QC/tracks/hPrPIDRadius", ";#it{n#sigma}(p) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
264261

265262
// TRACKS (2D)
266263
rTracks.add("tracks/trackSelections/unlike-sign/hPt", ";#it{p}_{T leading} (GeV/#it{c});#it{p}_{T subleading} (GeV/#it{c});counts", kTH2D, {ptAxis, ptAxis});
@@ -587,17 +584,19 @@ struct UpcRhoAnalysis {
587584
template <typename T>
588585
bool tracksPassPID(const T& cutTracks) // n-dimensional pion PID cut
589586
{
590-
float radiusPi = 0.0, radiusEl = 0.0, radiusKa = 0.0;
587+
float radiusPi = 0.0, radiusEl = 0.0, radiusKa = 0.0, radiusPr = 0.0;
591588
for (const auto& track : cutTracks) {
592589
radiusEl += std::pow(track.tpcNSigmaEl(), 2);
593590
radiusKa += std::pow(track.tpcNSigmaKa(), 2);
594591
radiusPi += std::pow(track.tpcNSigmaPi(), 2);
592+
radiusPr += std::pow(track.tpcNSigmaPr(), 2);
595593
}
596594
rQC.fill(HIST("QC/tracks/hPiPIDRadius"), std::sqrt(radiusPi));
597595
rQC.fill(HIST("QC/tracks/hElPIDRadius"), std::sqrt(radiusEl));
598596
rQC.fill(HIST("QC/tracks/hKaPIDRadius"), std::sqrt(radiusKa));
597+
rQC.fill(HIST("QC/tracks/hPrPIDRadius"), std::sqrt(radiusPr));
599598
if (rejectLowerProbPairs)
600-
return ((radiusPi < std::pow(tracksTpcNSigmaPiCut, 2)) && (radiusPi < radiusEl) && (radiusPi < radiusKa));
599+
return ((radiusPi < std::pow(tracksTpcNSigmaPiCut, 2)) && (radiusPi < radiusEl) && (radiusPi < radiusKa) && (radiusPi < radiusPr));
601600
else
602601
return radiusPi < std::pow(tracksTpcNSigmaPiCut, 2);
603602
}
@@ -642,7 +641,10 @@ struct UpcRhoAnalysis {
642641
double deltaPhi(const ROOT::Math::PxPyPzMVector& p1, const ROOT::Math::PxPyPzMVector& p2)
643642
{
644643
double dPhi = p1.Phi() - p2.Phi();
645-
dPhi = std::fmod(dPhi + o2::constants::math::PI, o2::constants::math::TwoPI) - o2::constants::math::PI; // normalize to (-pi, pi)
644+
while (dPhi >= o2::constants::math::PI)
645+
dPhi -= o2::constants::math::TwoPI;
646+
while (dPhi < -o2::constants::math::PI)
647+
dPhi += o2::constants::math::TwoPI;
646648
return dPhi;
647649
}
648650

@@ -750,6 +752,7 @@ struct UpcRhoAnalysis {
750752
rQC.fill(HIST("QC/tracks/trackSelections/hTpcNSigmaPi2D"), cutTracks[0].tpcNSigmaPi(), cutTracks[1].tpcNSigmaPi());
751753
rQC.fill(HIST("QC/tracks/trackSelections/hTpcNSigmaEl2D"), cutTracks[0].tpcNSigmaEl(), cutTracks[1].tpcNSigmaEl());
752754
rQC.fill(HIST("QC/tracks/trackSelections/hTpcNSigmaKa2D"), cutTracks[0].tpcNSigmaKa(), cutTracks[1].tpcNSigmaKa());
755+
rQC.fill(HIST("QC/tracks/trackSelections/hTpcNSigmaPr2D"), cutTracks[0].tpcNSigmaPr(), cutTracks[1].tpcNSigmaPr());
753756

754757
// create a vector of 4-vectors for selected tracks
755758
std::vector<ROOT::Math::PxPyPzMVector> cutTracksLVs;
@@ -758,38 +761,29 @@ struct UpcRhoAnalysis {
758761
}
759762

760763
// differentiate leading- and subleading-momentum tracks
761-
auto leadingMomentumTrack = momentum(cutTracks[0].px(), cutTracks[0].py(), cutTracks[0].pz()) > momentum(cutTracks[1].px(), cutTracks[1].py(), cutTracks[1].pz()) ? cutTracks[0] : cutTracks[1];
762-
auto subleadingMomentumTrack = (leadingMomentumTrack == cutTracks[0]) ? cutTracks[1] : cutTracks[0];
763-
764-
auto positiveTrack = cutTracks[0].sign() > 0 ? cutTracks[0] : cutTracks[1];
765-
auto negativeTrack = cutTracks[0].sign() > 0 ? cutTracks[1] : cutTracks[0];
766-
767-
float leadingPt = leadingMomentumTrack.pt();
768-
float subleadingPt = subleadingMomentumTrack.pt();
769-
float leadingEta = eta(leadingMomentumTrack.px(), leadingMomentumTrack.py(), leadingMomentumTrack.pz());
770-
float subleadingEta = eta(subleadingMomentumTrack.px(), subleadingMomentumTrack.py(), subleadingMomentumTrack.pz());
771-
float leadingPhi = phi(leadingMomentumTrack.px(), leadingMomentumTrack.py());
772-
float subleadingPhi = phi(subleadingMomentumTrack.px(), subleadingMomentumTrack.py());
764+
auto leadingTrack = momentum(cutTracks[0].px(), cutTracks[0].py(), cutTracks[0].pz()) > momentum(cutTracks[1].px(), cutTracks[1].py(), cutTracks[1].pz()) ? cutTracks[0] : cutTracks[1];
765+
auto subleadingTrack = (leadingTrack == cutTracks[0]) ? cutTracks[1] : cutTracks[0];
766+
767+
float leadingPt = leadingTrack.pt();
768+
float subleadingPt = subleadingTrack.pt();
769+
float leadingEta = eta(leadingTrack.px(), leadingTrack.py(), leadingTrack.pz());
770+
float subleadingEta = eta(subleadingTrack.px(), subleadingTrack.py(), subleadingTrack.pz());
771+
float leadingPhi = phi(leadingTrack.px(), leadingTrack.py());
772+
float subleadingPhi = phi(subleadingTrack.px(), subleadingTrack.py());
773773
float phiRandom = getPhiRandom(cutTracksLVs);
774774
float phiCharge = getPhiCharge(cutTracks, cutTracksLVs);
775775

776776
// fill recoTree
777-
int localBc = collision.globalBC() % o2::constants::lhc::LHCMaxBunches;
778-
int trackSigns[2] = {positiveTrack.sign(), negativeTrack.sign()};
779-
float trackPts[2] = {positiveTrack.pt(), negativeTrack.pt()};
780-
float trackEtas[2] = {eta(positiveTrack.px(), positiveTrack.py(), positiveTrack.pz()), eta(negativeTrack.px(), negativeTrack.py(), negativeTrack.pz())};
781-
float trackPhis[2] = {phi(positiveTrack.px(), positiveTrack.py()), phi(negativeTrack.px(), negativeTrack.py())};
782-
float trackPiPIDs[2] = {positiveTrack.tpcNSigmaPi(), negativeTrack.tpcNSigmaPi()};
783-
float trackElPIDs[2] = {positiveTrack.tpcNSigmaEl(), negativeTrack.tpcNSigmaEl()};
784-
float trackKaPIDs[2] = {positiveTrack.tpcNSigmaKa(), negativeTrack.tpcNSigmaKa()};
785-
float trackDcaXYs[2] = {positiveTrack.dcaXY(), negativeTrack.dcaXY()};
786-
float trackDcaZs[2] = {positiveTrack.dcaZ(), negativeTrack.dcaZ()};
787-
float trackTpcSignals[2] = {positiveTrack.tpcSignal(), negativeTrack.tpcSignal()};
788-
recoTree(collision.flags(), collision.runNumber(), localBc, collision.numContrib(), collision.posX(), collision.posY(), collision.posZ(),
789-
collision.totalFT0AmplitudeA(), collision.totalFT0AmplitudeC(), collision.totalFV0AmplitudeA(), collision.totalFDDAmplitudeA(), collision.totalFDDAmplitudeC(),
790-
collision.timeFT0A(), collision.timeFT0C(), collision.timeFV0A(), collision.timeFDDA(), collision.timeFDDC(),
777+
recoTree(collision.flags(), collision.runNumber(), collision.posZ(),
791778
energyCommonZNA, energyCommonZNC, timeZNA, timeZNC, neutronClass,
792-
phiRandom, phiCharge, trackSigns, trackPts, trackEtas, trackPhis, trackPiPIDs, trackElPIDs, trackKaPIDs, trackDcaXYs, trackDcaZs, trackTpcSignals);
779+
leadingTrack.sign(), subleadingTrack.sign(),
780+
leadingPt, subleadingPt,
781+
leadingEta, subleadingEta,
782+
leadingPhi, subleadingPhi,
783+
leadingTrack.tpcNSigmaPi(), subleadingTrack.tpcNSigmaPi(),
784+
leadingTrack.tpcNSigmaEl(), subleadingTrack.tpcNSigmaEl(),
785+
leadingTrack.tpcNSigmaKa(), subleadingTrack.tpcNSigmaKa(),
786+
leadingTrack.tpcNSigmaPr(), subleadingTrack.tpcNSigmaPr());
793787

794788
if (!tracksPassPID(cutTracks)) // apply PID cut
795789
return;
@@ -799,7 +793,7 @@ struct UpcRhoAnalysis {
799793
rQC.fill(HIST("QC/tracks/hSelectionCounterPerRun"), 16, runIndex);
800794
fillTrackQcHistos<1>(cutTrack); // fill QC histograms after cuts
801795
}
802-
rQC.fill(HIST("QC/tracks/hTofHitCheck"), leadingMomentumTrack.hasTOF(), subleadingMomentumTrack.hasTOF());
796+
rQC.fill(HIST("QC/tracks/hTofHitCheck"), leadingTrack.hasTOF(), subleadingTrack.hasTOF());
803797
fillCollisionQcHistos<1>(collision); // fill QC histograms after track selections
804798

805799
ROOT::Math::PxPyPzMVector system = reconstructSystem(cutTracksLVs);
@@ -947,11 +941,11 @@ struct UpcRhoAnalysis {
947941
float phiRandom = getPhiRandom(mcParticlesLVs);
948942
float phiCharge = getPhiChargeMC(cutMcParticles, mcParticlesLVs);
949943

950-
auto leadingMomentumPion = momentum(cutMcParticles[0].px(), cutMcParticles[0].py(), cutMcParticles[0].pz()) > momentum(cutMcParticles[1].px(), cutMcParticles[1].py(), cutMcParticles[1].pz()) ? cutMcParticles[0] : cutMcParticles[1];
951-
auto subleadingMomentumPion = (leadingMomentumPion == cutMcParticles[0]) ? cutMcParticles[1] : cutMcParticles[0];
952-
rMC.fill(HIST("MC/tracks/hPt"), pt(leadingMomentumPion.px(), leadingMomentumPion.py()), pt(subleadingMomentumPion.px(), subleadingMomentumPion.py()));
953-
rMC.fill(HIST("MC/tracks/hEta"), eta(leadingMomentumPion.px(), leadingMomentumPion.py(), leadingMomentumPion.pz()), eta(subleadingMomentumPion.px(), subleadingMomentumPion.py(), subleadingMomentumPion.pz()));
954-
rMC.fill(HIST("MC/tracks/hPhi"), phi(leadingMomentumPion.px(), leadingMomentumPion.py()), phi(subleadingMomentumPion.px(), subleadingMomentumPion.py()));
944+
auto leadingPion = momentum(cutMcParticles[0].px(), cutMcParticles[0].py(), cutMcParticles[0].pz()) > momentum(cutMcParticles[1].px(), cutMcParticles[1].py(), cutMcParticles[1].pz()) ? cutMcParticles[0] : cutMcParticles[1];
945+
auto subleadingPion = (leadingPion == cutMcParticles[0]) ? cutMcParticles[1] : cutMcParticles[0];
946+
rMC.fill(HIST("MC/tracks/hPt"), pt(leadingPion.px(), leadingPion.py()), pt(subleadingPion.px(), subleadingPion.py()));
947+
rMC.fill(HIST("MC/tracks/hEta"), eta(leadingPion.px(), leadingPion.py(), leadingPion.pz()), eta(subleadingPion.px(), subleadingPion.py(), subleadingPion.pz()));
948+
rMC.fill(HIST("MC/tracks/hPhi"), phi(leadingPion.px(), leadingPion.py()), phi(subleadingPion.px(), subleadingPion.py()));
955949

956950
rMC.fill(HIST("MC/system/hM"), mass);
957951
rMC.fill(HIST("MC/system/hPt"), pT);
@@ -978,16 +972,11 @@ struct UpcRhoAnalysis {
978972
}
979973

980974
// fill mcTree
981-
auto positivePion = cutMcParticles[0].pdgCode() > 0 ? cutMcParticles[0] : cutMcParticles[1];
982-
auto negativePion = cutMcParticles[0].pdgCode() > 0 ? cutMcParticles[1] : cutMcParticles[0];
983-
int localBc = mcCollision.globalBC() % o2::constants::lhc::LHCMaxBunches;
984-
int trackSigns[2] = {positivePion.pdgCode() / std::abs(positivePion.pdgCode()), negativePion.pdgCode() / std::abs(negativePion.pdgCode())};
985-
float trackPts[2] = {pt(positivePion.px(), positivePion.py()), pt(negativePion.px(), negativePion.py())};
986-
float trackEtas[2] = {eta(positivePion.px(), positivePion.py(), positivePion.pz()), eta(negativePion.px(), negativePion.py(), negativePion.pz())};
987-
float trackPhis[2] = {phi(positivePion.px(), positivePion.py()), phi(negativePion.px(), negativePion.py())};
988-
mcTree(localBc, runNumber,
989-
mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
990-
phiRandom, phiCharge, trackSigns, trackPts, trackEtas, trackPhis);
975+
mcTree(runNumber, mcCollision.posZ(),
976+
leadingPion.pdgCode() / std::abs(leadingPion.pdgCode()), subleadingPion.pdgCode() / std::abs(subleadingPion.pdgCode()),
977+
pt(leadingPion.px(), leadingPion.py()), pt(subleadingPion.px(), subleadingPion.py()),
978+
eta(leadingPion.px(), leadingPion.py(), leadingPion.pz()), eta(subleadingPion.px(), subleadingPion.py(), subleadingPion.pz()),
979+
phi(leadingPion.px(), leadingPion.py()), phi(subleadingPion.px(), subleadingPion.py()));
991980
}
992981

993982
template <typename C>

0 commit comments

Comments
 (0)