@@ -169,7 +169,8 @@ struct TrackEfficiency {
169169 registry.fill (HIST (" h2_centrality_particle_phi" ), collision.centFT0M (), mcparticle.phi (), weight);
170170 registry.fill (HIST (" h2_centrality_particle_energy" ), collision.centFT0M (), mcparticle.energy (), weight);
171171 registry.fill (HIST (" h3_intrate_centrality_particle_pt" ), collision.hadronicRate (), collision.centFT0M (), mcparticle.pt (), weight);
172- for (auto const & track : tracks) {
172+ auto partTracks = tracks.sliceBy (tracksPerJParticles, mcparticle.globalIndex ());
173+ for (auto const & track : partTracks) {
173174 registry.fill (HIST (" h2_particle_pt_track_pt_deltapt" ), mcparticle.pt (), mcparticle.pt () - track.pt (), weight);
174175 registry.fill (HIST (" h2_particle_pt_track_pt_deltaptoverparticlept" ), mcparticle.pt (), (mcparticle.pt () - track.pt ()) / mcparticle.pt (), weight);
175176 }
@@ -319,6 +320,9 @@ struct TrackEfficiency {
319320 registry.add (" h2_centrality_particle_phi" , " centrality vs particle #varphi; centrality; #varphi_{part}" , {HistType::kTH2F , {centAxis, {160 , -1.0 , 7 .}}});
320321 registry.add (" h2_centrality_particle_energy" , " centrality vs particle energy; centrality; Energy GeV" , {HistType::kTH2F , {centAxis, {100 , 0.0 , 100.0 }}});
321322 registry.add (" h3_intrate_centrality_particle_pt" , " interaction rate vs centrality vs particle pT; int. rate; centrality; #it{p}_{T,part} (GeV/#it{c})" , {HistType::kTH3F , {intRateAxis, centAxis, {200 , 0 ., 200 .}}});
323+
324+ registry.add (" h2_particle_pt_track_pt_deltapt" , " track pt vs delta pT; pT; #it{p}_{T, part} - #it{p}_{T,track} (GeV/#it{c})" , {HistType::kTH2F , {{200 , 0 ., 200 .}, {200 , -1 ., 1 .}}});
325+ registry.add (" h2_particle_pt_track_pt_deltaptoverparticlept" , " track vs delta pT / MC pT ; pT; #frac{#it{p}_{T, part} - #it{p}_{T,track}}{#it{p}_{T,part}}" , {HistType::kTH2F , {{200 , 0 ., 200 .}, {200 , -1 ., 1 .}}});
322326 }
323327
324328 if (doprocessCollisionsFromData || doprocessCollisionsFromMc || doprocessCollisionsFromMcWeighted) {
@@ -366,6 +370,7 @@ struct TrackEfficiency {
366370 }
367371
368372 Preslice<aod::JetTracksMCD> tracksPerJCollision = o2::aod::jtrack::collisionId;
373+ PresliceUnsorted<aod::JetTracksMCD> tracksPerJParticles = o2::aod::jmctracklb::mcParticleId;
369374
370375 // filters for processTracks QA functions only:
371376 Filter trackCuts = (aod::jtrack::pt >= trackQAPtMin && aod::jtrack::pt < trackQAPtMax && aod::jtrack::eta > trackQAEtaMin && aod::jtrack::eta < trackQAEtaMax);
@@ -751,7 +756,7 @@ struct TrackEfficiency {
751756 void processTracksFromMc (soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>::iterator const & collision, // a filter should probably be added here to stay consistent with processTracksFromData
752757 soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const &,
753758 soa::Join<aod::McCollisions, aod::HepMCXSections> const &,
754- soa::Filtered<soa::Join<aod::JetTracks , aod::JTrackExtras, aod::JTrackPIs>> const & jetTracks,
759+ soa::Filtered<soa::Join<aod::JetTracksMCD , aod::JTrackExtras, aod::JTrackPIs>> const & jetTracks,
755760 soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA> const &)
756761 {
757762 if (!collision.has_mcCollision ()) { // the collision is fake and has no associated mc coll; skip as .mccollision() cannot be called
@@ -776,7 +781,7 @@ struct TrackEfficiency {
776781 void processTracksFromMcWeighted (soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>::iterator const & collision, // a filter should probably be added here to stay consistent with processTracksFromData
777782 soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const &,
778783 soa::Join<aod::McCollisions, aod::HepMCXSections> const &,
779- soa::Filtered<soa::Join<aod::JetTracks , aod::JTrackExtras, aod::JTrackPIs>> const & jetTracks,
784+ soa::Filtered<soa::Join<aod::JetTracksMCD , aod::JTrackExtras, aod::JTrackPIs>> const & jetTracks,
780785 soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA> const &)
781786 {
782787 if (!collision.has_mcCollision ()) { // the collision is fake and has no associated mc coll; skip as .mccollision() cannot be called
@@ -803,7 +808,7 @@ struct TrackEfficiency {
803808 soa::Join<aod::McCollisions, aod::HepMCXSections> const &,
804809 soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
805810 soa::Filtered<aod::JetParticles> const & mcparticles,
806- soa::Filtered<aod::JetTracks > const & tracks)
811+ soa::Filtered<aod::JetTracksMCD > const & tracks)
807812 {
808813
809814 if (!(std::abs (mcCollision.posZ ()) < vertexZCut)) {
@@ -855,7 +860,7 @@ struct TrackEfficiency {
855860 soa::Join<aod::McCollisions, aod::HepMCXSections> const &,
856861 soa::SmallGroups<aod::JetCollisionsMCD> const & collisions,
857862 soa::Filtered<aod::JetParticles> const & mcparticles,
858- soa::Filtered<aod::JetTracks > const & tracks)
863+ soa::Filtered<aod::JetTracksMCD > const & tracks)
859864 {
860865 if (skipMBGapEvents && mcCollision.subGeneratorId () == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
861866 return ;
0 commit comments