@@ -2564,14 +2564,19 @@ struct FemtoUniverseProducerTask {
25642564 Preslice<StrangePartType>& ps)
25652565 {
25662566 // recos
2567- std::set<int > recoMcIds;
2567+ static std::set<int > recoMcIds;
2568+ static std::set<int > mcColIds;
2569+ recoMcIds.clear ();
2570+ mcColIds.clear ();
2571+
25682572 for (const auto & col : collisions) {
25692573 auto groupedTracks = tracks.sliceBy (perCollisionTracks, col.globalIndex ());
25702574 auto groupedStrageParts = strangeParts.sliceBy (ps, col.globalIndex ());
25712575 getMagneticFieldTesla (col.bc_as <aod::BCsWithTimestamps>());
25722576 if constexpr (std::experimental::is_detected<HasBachelor, typename StrangePartType::iterator>::value) {
25732577 const auto colcheck = fillCollisions<true >(col, groupedTracks);
25742578 if (colcheck) {
2579+ mcColIds.insert (col.mcCollisionId ());
25752580 fillTracks<true >(groupedTracks);
25762581 fillCascade<true >(col, groupedStrageParts, groupedTracks);
25772582 }
@@ -2587,6 +2592,9 @@ struct FemtoUniverseProducerTask {
25872592 // truth
25882593 for (const auto & mccol : mccols) {
25892594 auto groupedMCParticles = mcParticles.sliceBy (perMCCollision, mccol.globalIndex ());
2595+ if (confCollMCTruthOnlyReco && !mcColIds.contains (mccol.globalIndex ())) {
2596+ continue ;
2597+ }
25902598 auto groupedCollisions = collisions.sliceBy (recoCollsPerMCColl, mccol.globalIndex ());
25912599 fillMCTruthCollisions (groupedCollisions, groupedMCParticles); // fills the reco collisions for mc collision
25922600 fillParticles<decltype (groupedMCParticles), true , true >(groupedMCParticles, recoMcIds); // fills mc particles
0 commit comments