@@ -139,18 +139,28 @@ DECLARE_SOA_COLUMN(RecoPosX, recoPosX, float);
139139DECLARE_SOA_COLUMN(RecoPosY, recoPosY, float);
140140DECLARE_SOA_COLUMN(RecoPosZ, recoPosZ, float);
141141// track info
142- DECLARE_SOA_COLUMN(GenPt, genPt, float);
143- DECLARE_SOA_COLUMN(GenEta, genEta, float);
144- DECLARE_SOA_COLUMN(GenPhi, genPhi, float);
145- DECLARE_SOA_COLUMN(RecoPt, recoPt, float);
146- DECLARE_SOA_COLUMN(RecoEta, recoEta, float);
147- DECLARE_SOA_COLUMN(RecoPhi, recoPhi, float);
142+ DECLARE_SOA_COLUMN(LeadingSign, leadingSign, int);
143+ DECLARE_SOA_COLUMN(LeadingGenPt, leadingGenPt, float);
144+ DECLARE_SOA_COLUMN(LeadingGenEta, leadingGenEta, float);
145+ DECLARE_SOA_COLUMN(LeadingGenPhi, leadingGenPhi, float);
146+ DECLARE_SOA_COLUMN(LeadingRecoPt, leadingRecoPt, float);
147+ DECLARE_SOA_COLUMN(LeadingRecoEta, leadingRecoEta, float);
148+ DECLARE_SOA_COLUMN(LeadingRecoPhi, leadingRecoPhi, float);
149+ DECLARE_SOA_COLUMN(SubleadingSign, subleadingSign, int);
150+ DECLARE_SOA_COLUMN(SubleadingGenPt, subleadingGenPt, float);
151+ DECLARE_SOA_COLUMN(SubleadingGenEta, subleadingGenEta, float);
152+ DECLARE_SOA_COLUMN(SubleadingGenPhi, subleadingGenPhi, float);
153+ DECLARE_SOA_COLUMN(SubleadingRecoPt, subleadingRecoPt, float);
154+ DECLARE_SOA_COLUMN(SubleadingRecoEta, subleadingRecoEta, float);
155+ DECLARE_SOA_COLUMN(SubleadingRecoPhi, subleadingRecoPhi, float);
148156} // namespace resolution_tree
149157DECLARE_SOA_TABLE(ResolutionTree, "AOD", "RESOLUTIONTREE",
150158 resolution_tree::GenPosX, resolution_tree::GenPosY, resolution_tree::GenPosZ,
151159 resolution_tree::RecoPosX, resolution_tree::RecoPosY, resolution_tree::RecoPosZ,
152- resolution_tree::GenPt, resolution_tree::GenEta, resolution_tree::GenPhi,
153- resolution_tree::RecoPt, resolution_tree::RecoEta, resolution_tree::RecoPhi);
160+ resolution_tree::LeadingSign, resolution_tree::LeadingGenPt, resolution_tree::LeadingGenEta, resolution_tree::LeadingGenPhi,
161+ resolution_tree::LeadingRecoPt, resolution_tree::LeadingRecoEta, resolution_tree::LeadingRecoPhi,
162+ resolution_tree::SubleadingSign, resolution_tree::SubleadingGenPt, resolution_tree::SubleadingGenEta, resolution_tree::SubleadingGenPhi,
163+ resolution_tree::SubleadingRecoPt, resolution_tree::SubleadingRecoEta, resolution_tree::SubleadingRecoPhi);
154164} // namespace o2::aod
155165
156166struct UpcRhoAnalysis {
@@ -1133,11 +1143,11 @@ struct UpcRhoAnalysis {
11331143 continue;
11341144 rResolution.fill(HIST("MC/resolution/tracks/hMatch"), 1);
11351145 auto mcParticle = track.udMcParticle();
1146+ if (std::abs(mcParticle.pdgCode()) != kPiPlus && !mcParticle.isPhysicalPrimary())
1147+ continue;
11361148 rResolution.fill(HIST("MC/resolution/tracks/hPt"), pt(track.px(), track.py()) - pt(mcParticle.px(), mcParticle.py()));
11371149 rResolution.fill(HIST("MC/resolution/tracks/hEta"), eta(track.px(), track.py(), track.pz()) - eta(mcParticle.px(), mcParticle.py(), mcParticle.pz()));
11381150 rResolution.fill(HIST("MC/resolution/tracks/hPhi"), phi(track.px(), track.py()) - phi(mcParticle.px(), mcParticle.py()));
1139- if (std::abs(mcParticle.pdgCode()) != kPiPlus && !mcParticle.isPhysicalPrimary())
1140- continue;
11411151 truePionLVs.push_back(ROOT::Math::PxPyPzMVector(mcParticle.px(), mcParticle.py(), mcParticle.pz(), o2::constants::physics::MassPionCharged));
11421152 trueTracks.push_back(mcParticle);
11431153 recoPionLVs.push_back(ROOT::Math::PxPyPzMVector(track.px(), track.py(), track.pz(), o2::constants::physics::MassPionCharged));
@@ -1160,6 +1170,18 @@ struct UpcRhoAnalysis {
11601170 rResolution.fill(HIST("MC/resolution/system/2D/hYVsY"), trueSystem.Rapidity(), recoSystem.Rapidity());
11611171 rResolution.fill(HIST("MC/resolution/system/1D/hDeltaPhi"), recoDeltaPhi - trueDeltaPhi);
11621172 rResolution.fill(HIST("MC/resolution/system/2D/hDeltaPhiVsDeltaPhi"), trueDeltaPhi, recoDeltaPhi);
1173+
1174+ auto leadingTruePion = momentum(trueTracks[0].px(), trueTracks[0].py(), trueTracks[0].pz()) > momentum(trueTracks[1].px(), trueTracks[1].py(), trueTracks[1].pz()) ? trueTracks[0] : trueTracks[1];
1175+ auto subleadingTruePion = (leadingTruePion == trueTracks[0]) ? trueTracks[1] : trueTracks[0];
1176+ auto leadingRecoPion = momentum(recoTracks[0].px(), recoTracks[0].py(), recoTracks[0].pz()) > momentum(recoTracks[1].px(), recoTracks[1].py(), recoTracks[1].pz()) ? recoTracks[0] : recoTracks[1];
1177+ auto subleadingRecoPion = (leadingRecoPion == recoTracks[0]) ? recoTracks[1] : recoTracks[0];
1178+
1179+ resolutionTree(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
1180+ collision.posX(), collision.posY(), collision.posZ(),
1181+ leadingTruePion.pdgCode() / std::abs(leadingTruePion.pdgCode()), pt(leadingTruePion.px(), leadingTruePion.py()), eta(leadingTruePion.px(), leadingTruePion.py(), leadingTruePion.pz()), phi(leadingTruePion.px(), leadingTruePion.py()),
1182+ pt(leadingRecoPion.px(), leadingRecoPion.py()), eta(leadingRecoPion.px(), leadingRecoPion.py(), leadingRecoPion.pz()), phi(leadingRecoPion.px(), leadingRecoPion.py()),
1183+ subleadingTruePion.pdgCode() / std::abs(subleadingTruePion.pdgCode()), pt(subleadingTruePion.px(), subleadingTruePion.py()), eta(subleadingTruePion.px(), subleadingTruePion.py(), subleadingTruePion.pz()), phi(subleadingTruePion.px(), subleadingTruePion.py()),
1184+ pt(subleadingRecoPion.px(), subleadingRecoPion.py()), eta(subleadingRecoPion.px(), subleadingRecoPion.py(), subleadingRecoPion.pz()), phi(subleadingRecoPion.px(), subleadingRecoPion.py()));
11631185 }
11641186 PROCESS_SWITCH(UpcRhoAnalysis, processResolution, "check resolution of kinematic variables", false);
11651187
0 commit comments