@@ -125,6 +125,7 @@ struct NPCascCandidate {
125125 float centFT0C;
126126 float centFT0A;
127127 float centFT0M;
128+ uint32_t toiMask;
128129};
129130std::array<bool , 2 > isFromHF (auto & particle)
130131{
@@ -287,23 +288,34 @@ struct NonPromptCascadeTask {
287288 return true ;
288289 }
289290
290- void zorroAccounting (const auto & collisions)
291+ void zorroAccounting (const auto & collisions, auto & toiMap )
291292 {
292293 if (cfgSkimmedProcessing) {
293294 int runNumber{-1 };
294295 for (const auto & coll : collisions) {
295296 auto bc = coll.template bc_as <aod::BCsWithTimestamps>();
296297 if (runNumber != bc.runNumber ()) {
297298 mZorro .initCCDB (mCCDB .service , bc.runNumber (), bc.timestamp (), cfgTriggersOfInterest.value );
299+ if (mZorro .getNTOIs () > 32 ) {
300+ LOG (fatal) << " N TOIs:" << mZorro .getNTOIs () << " Max 32 TOIs possible." ;
301+ }
298302 mZorro .populateHistRegistry (mRegistry , bc.runNumber ());
299303 runNumber = bc.runNumber ();
300304 }
301- mZorro .isSelected (bc.globalBC ()); // / Just let Zorro do the accounting
305+ bool sel = mZorro .isSelected (bc.globalBC ()); // / Just let Zorro do the accounting
306+ if (sel) {
307+ std::vector<bool > toivect = mZorro .getTriggerOfInterestResults ();
308+ uint32_t toiMask = 0 ;
309+ for (size_t i{0 }; i < toivect.size (); i++) {
310+ toiMask += toivect[i] << i;
311+ }
312+ toiMap[bc.globalBC ()] = toiMask;
313+ }
302314 }
303315 }
304316 }
305317 template <typename TrackType, typename CollisionType>
306- void fillCandidatesVector (CollisionType const &, TrackType const & tracks, auto const & cascades, auto & candidates)
318+ void fillCandidatesVector (CollisionType const &, TrackType const & tracks, auto const & cascades, auto & candidates, std::map< uint64_t , uint32_t > toiMap = {} )
307319 {
308320
309321 const auto & getCascade = [](auto const & candidate) {
@@ -507,6 +519,10 @@ struct NonPromptCascadeTask {
507519 } else {
508520 o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, ntCascadeTrack, mBz , 2 .f , matCorr, &motherDCA);
509521 }
522+ uint32_t toiMask = 0x0 ;
523+ if (toiMap.count (bc.globalBC ())) {
524+ toiMask = toiMap[bc.globalBC ()];
525+ }
510526 candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, deltaPtCascade, cascITSclsSize, hasReassociatedClusters, hasFakeReassociation, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
511527 collision.numContrib (), cascPVContribs, collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
512528 cascadeLvector.pt (), cascadeLvector.eta (), cascadeLvector.phi (),
@@ -517,7 +533,7 @@ struct NonPromptCascadeTask {
517533 cascITSclusters, protonTrack.itsNCls (), pionTrack.itsNCls (), bachelor.itsNCls (), protonTrack.tpcNClsFound (), pionTrack.tpcNClsFound (), bachelor.tpcNClsFound (),
518534 protonTrack.tpcNSigmaPr (), pionTrack.tpcNSigmaPi (), bachelor.tpcNSigmaKa (), bachelor.tpcNSigmaPi (),
519535 protonTrack.hasTOF (), pionTrack.hasTOF (), bachelor.hasTOF (),
520- protonTrack.tofNSigmaPr (), pionTrack.tofNSigmaPi (), bachelor.tofNSigmaKa (), bachelor.tofNSigmaPi (), collision.sel8 (), collision.multFT0C (), collision.multFT0A (), collision.multFT0M (), collision.centFT0C (), collision.centFT0A (), collision.centFT0M ()});
536+ protonTrack.tofNSigmaPr (), pionTrack.tofNSigmaPi (), bachelor.tofNSigmaKa (), bachelor.tofNSigmaPi (), collision.sel8 (), collision.multFT0C (), collision.multFT0A (), collision.multFT0M (), collision.centFT0C (), collision.centFT0A (), collision.centFT0M (), toiMask });
521537 }
522538 }
523539
@@ -537,7 +553,7 @@ struct NonPromptCascadeTask {
537553 c.protonTPCNSigma , c.pionTPCNSigma , c.bachKaonTPCNSigma , c.bachPionTPCNSigma ,
538554 c.protonHasTOF , c.pionHasTOF , c.bachHasTOF ,
539555 c.protonTOFNSigma , c.pionTOFNSigma , c.bachKaonTOFNSigma , c.bachPionTOFNSigma ,
540- c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M );
556+ c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M , c. toiMask );
541557 }
542558 }
543559
@@ -576,7 +592,7 @@ struct NonPromptCascadeTask {
576592 c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M ,
577593 particle.pt (), particle.eta (), particle.phi (), mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (),
578594 particle.pdgCode (), mcCollision.posX () - particle.vx (), mcCollision.posY () - particle.vy (),
579- mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters);
595+ mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters, c. toiMask );
580596 }
581597 }
582598
@@ -653,8 +669,9 @@ struct NonPromptCascadeTask {
653669 aod::V0s const & /* v0s*/ , TracksExtData const & tracks,
654670 aod::BCsWithTimestamps const &)
655671 {
656- zorroAccounting (collisions);
657- fillCandidatesVector<TracksExtData>(collisions, tracks, trackedCascades, gCandidates );
672+ std::map<uint64_t , uint32_t > toiMap;
673+ zorroAccounting (collisions, toiMap);
674+ fillCandidatesVector<TracksExtData>(collisions, tracks, trackedCascades, gCandidates , toiMap);
658675 fillDataTable<aod::AssignedTrackedCascades>(gCandidates );
659676 }
660677 PROCESS_SWITCH (NonPromptCascadeTask, processTrackedCascadesData, " process cascades from strangeness tracking: Data analysis" , false );
@@ -663,8 +680,9 @@ struct NonPromptCascadeTask {
663680 aod::V0s const & /* v0s*/ , TracksExtData const & tracks,
664681 aod::BCsWithTimestamps const &)
665682 {
666- zorroAccounting (collisions);
667- fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT );
683+ std::map<uint64_t , uint32_t > toiMap;
684+ zorroAccounting (collisions, toiMap);
685+ fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT , toiMap);
668686 fillDataTable<aod::Cascades>(gCandidatesNT );
669687 }
670688 PROCESS_SWITCH (NonPromptCascadeTask, processCascadesData, " process cascades: Data analysis" , false );
0 commit comments