@@ -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,7 +288,7 @@ 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 };
@@ -298,12 +299,20 @@ struct NonPromptCascadeTask {
298299 mZorro .populateHistRegistry (mRegistry , bc.runNumber ());
299300 runNumber = bc.runNumber ();
300301 }
301- mZorro .isSelected (bc.globalBC ()); // / Just let Zorro do the accounting
302+ bool sel = mZorro .isSelected (bc.globalBC ()); // / Just let Zorro do the accounting
303+ if (sel) {
304+ std::vector<bool > toivect = mZorro .getTriggerOfInterestResults ();
305+ uint32_t toiMask = 0 ;
306+ for (uint i = 0 ; i < toivect.size (); i++) {
307+ toiMask += 1 << i;
308+ }
309+ toiMap[bc.globalBC ()] = toiMask;
310+ }
302311 }
303312 }
304313 }
305314 template <typename TrackType, typename CollisionType>
306- void fillCandidatesVector (CollisionType const &, TrackType const & tracks, auto const & cascades, auto & candidates)
315+ void fillCandidatesVector (CollisionType const &, TrackType const & tracks, auto const & cascades, auto & candidates, std::map< uint64_t , uint32_t > toiMap = {} )
307316 {
308317
309318 const auto & getCascade = [](auto const & candidate) {
@@ -507,6 +516,10 @@ struct NonPromptCascadeTask {
507516 } else {
508517 o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, ntCascadeTrack, mBz , 2 .f , matCorr, &motherDCA);
509518 }
519+ uint32_t toiMask = 0x0 ;
520+ if (toiMap.count (bc.globalBC ())) {
521+ toiMask = toiMap[bc.globalBC ()];
522+ }
510523 candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, deltaPtCascade, cascITSclsSize, hasReassociatedClusters, hasFakeReassociation, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
511524 collision.numContrib (), cascPVContribs, collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
512525 cascadeLvector.pt (), cascadeLvector.eta (), cascadeLvector.phi (),
@@ -517,7 +530,7 @@ struct NonPromptCascadeTask {
517530 cascITSclusters, protonTrack.itsNCls (), pionTrack.itsNCls (), bachelor.itsNCls (), protonTrack.tpcNClsFound (), pionTrack.tpcNClsFound (), bachelor.tpcNClsFound (),
518531 protonTrack.tpcNSigmaPr (), pionTrack.tpcNSigmaPi (), bachelor.tpcNSigmaKa (), bachelor.tpcNSigmaPi (),
519532 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 ()});
533+ protonTrack.tofNSigmaPr (), pionTrack.tofNSigmaPi (), bachelor.tofNSigmaKa (), bachelor.tofNSigmaPi (), collision.sel8 (), collision.multFT0C (), collision.multFT0A (), collision.multFT0M (), collision.centFT0C (), collision.centFT0A (), collision.centFT0M (), toiMask });
521534 }
522535 }
523536
@@ -537,7 +550,7 @@ struct NonPromptCascadeTask {
537550 c.protonTPCNSigma , c.pionTPCNSigma , c.bachKaonTPCNSigma , c.bachPionTPCNSigma ,
538551 c.protonHasTOF , c.pionHasTOF , c.bachHasTOF ,
539552 c.protonTOFNSigma , c.pionTOFNSigma , c.bachKaonTOFNSigma , c.bachPionTOFNSigma ,
540- c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M );
553+ c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M , c. toiMask );
541554 }
542555 }
543556
@@ -576,7 +589,7 @@ struct NonPromptCascadeTask {
576589 c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M ,
577590 particle.pt (), particle.eta (), particle.phi (), mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (),
578591 particle.pdgCode (), mcCollision.posX () - particle.vx (), mcCollision.posY () - particle.vy (),
579- mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters);
592+ mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters,c. toiMask );
580593 }
581594 }
582595
@@ -653,8 +666,9 @@ struct NonPromptCascadeTask {
653666 aod::V0s const & /* v0s*/ , TracksExtData const & tracks,
654667 aod::BCsWithTimestamps const &)
655668 {
656- zorroAccounting (collisions);
657- fillCandidatesVector<TracksExtData>(collisions, tracks, trackedCascades, gCandidates );
669+ std::map<uint64_t , uint32_t > toiMap;
670+ zorroAccounting (collisions, toiMap);
671+ fillCandidatesVector<TracksExtData>(collisions, tracks, trackedCascades, gCandidates , toiMap);
658672 fillDataTable<aod::AssignedTrackedCascades>(gCandidates );
659673 }
660674 PROCESS_SWITCH (NonPromptCascadeTask, processTrackedCascadesData, " process cascades from strangeness tracking: Data analysis" , false );
@@ -663,8 +677,9 @@ struct NonPromptCascadeTask {
663677 aod::V0s const & /* v0s*/ , TracksExtData const & tracks,
664678 aod::BCsWithTimestamps const &)
665679 {
666- zorroAccounting (collisions);
667- fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT );
680+ std::map<uint64_t , uint32_t > toiMap;
681+ zorroAccounting (collisions, toiMap);
682+ fillCandidatesVector<TracksExtData>(collisions, tracks, cascades, gCandidatesNT , toiMap);
668683 fillDataTable<aod::Cascades>(gCandidatesNT );
669684 }
670685 PROCESS_SWITCH (NonPromptCascadeTask, processCascadesData, " process cascades: Data analysis" , false );
0 commit comments