@@ -128,7 +128,7 @@ struct CorrelationTask {
128128 Filter collisionVertexTypeFilter = (aod::collision::flags & static_cast <uint16_t >(aod::collision::CollisionFlagsRun2::Run2VertexerTracks)) == static_cast <uint16_t >(aod::collision::CollisionFlagsRun2::Run2VertexerTracks);
129129
130130 // Track filters
131- Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPt) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t ) true ));
131+ Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPt) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t )true ));
132132 Filter cfTrackFilter = (nabs(aod::cftrack::eta) < cfgCutEta) && (aod::cftrack::pt > cfgCutPt) && ((aod::track::trackType & (uint8_t )cfgTrackBitMask) == (uint8_t )cfgTrackBitMask);
133133
134134 // MC filters
@@ -430,6 +430,17 @@ struct CorrelationTask {
430430 bool checkObject (TTrack& track)
431431 {
432432 if constexpr (step <= CorrelationContainer::kCFStepAnaTopology ) {
433+ // If using MC trigger PDGs, allow ONLY those PDGs to bypass isPhysicalPrimary
434+ if (!cfgMcTriggerPDGs->empty ()) {
435+ // track has pdgCode in this compilation branch (you only call checkObject where that is true)
436+ const bool isWantedTrigger =
437+ std::find (cfgMcTriggerPDGs->begin (), cfgMcTriggerPDGs->end (), track.pdgCode ()) != cfgMcTriggerPDGs->end ();
438+ if (isWantedTrigger) {
439+ return true ; // allow phi, K*, etc. even if not physical primary
440+ }
441+ // For everything else keep original definition
442+ return track.isPhysicalPrimary ();
443+ }
433444 return track.isPhysicalPrimary ();
434445 } else if constexpr (step == CorrelationContainer::kCFStepTrackedOnlyPrim ) {
435446 return track.isPhysicalPrimary () && (track.flags () & aod::cfmcparticle::kReconstructed );
0 commit comments