@@ -65,6 +65,7 @@ struct NPCascCandidate {
6565 bool isFromBeauty;
6666 bool isFromCharm;
6767 uint16_t pvContributors;
68+ uint8_t cascPVContribs;
6869 float pvTimeResolution;
6970 float pvX;
7071 float pvY;
@@ -286,6 +287,12 @@ struct NonPromptCascadeTask {
286287 const auto & protonTrack = bachelor.sign () > 0 ? ntrack : ptrack;
287288 const auto & pionTrack = bachelor.sign () > 0 ? ptrack : ntrack;
288289
290+ // first bit for the strange track, second for pos v0, third for neg v0, fourth for bachelor
291+ uint8_t cascPVContribs = 0 ;
292+ cascPVContribs |= ptrack.isPVContributor () << 1 ;
293+ cascPVContribs |= ntrack.isPVContributor () << 2 ;
294+ cascPVContribs |= bachelor.isPVContributor () << 3 ;
295+
289296 mRegistry .fill (HIST (" h_PIDcutsXi" ), 0 , 1.322 );
290297 mRegistry .fill (HIST (" h_PIDcutsOmega" ), 0 , 1.675 );
291298
@@ -422,6 +429,7 @@ struct NonPromptCascadeTask {
422429 int trackedCascGlobalIndex{-1 }, itsTrackGlobalIndex{-1 }, cascITSclusters{-1 };
423430 if constexpr (requires { candidate.track (); }) {
424431 const auto & track = candidate.template track_as <TrackType>();
432+ cascPVContribs |= track.isPVContributor () << 0 ;
425433 const auto & ITStrack = candidate.template itsTrack_as <TrackType>();
426434 auto trackTrkParCov = getTrackParCov (track);
427435 o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, trackTrkParCov, mBz , 2 .f , matCorr, &motherDCA);
@@ -447,7 +455,7 @@ struct NonPromptCascadeTask {
447455 float mc = collision.multFT0C ();
448456 float ma = collision.multFT0A ();
449457 candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, cascITSclsSize, hasReassociatedClusters, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
450- collision.numContrib (), collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
458+ collision.numContrib (), cascPVContribs, collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
451459 cascadeLvector.pt (), cascadeLvector.eta (), cascadeLvector.phi (),
452460 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
453461 motherDCA.getY (), motherDCA.getZ (), protonDCA.getY (), protonDCA.getZ (), pionDCA.getY (), pionDCA.getZ (), bachDCA.getY (), bachDCA.getZ (),
@@ -465,7 +473,7 @@ struct NonPromptCascadeTask {
465473 {
466474 for (const auto & c : candidates) {
467475 getDataTable<CascadeType>()(c.matchingChi2 , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster ,
468- c.pvContributors , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ ,
476+ c.pvContributors , c.cascPVContribs , c. pvTimeResolution , c.pvX , c.pvY , c.pvZ ,
469477 c.cascPt , c.cascEta , c.cascPhi ,
470478 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
471479 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
@@ -492,7 +500,7 @@ struct NonPromptCascadeTask {
492500 auto recCollision = collisions.iteratorAt (c.collisionID );
493501
494502 getMCtable<CascadeType>()(c.matchingChi2 , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
495- c.pvContributors , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ , c.cascPt , c.cascEta , c.cascPhi ,
503+ c.pvContributors , c.cascPVContribs , c. pvTimeResolution , c.pvX , c.pvY , c.pvZ , c.cascPt , c.cascEta , c.cascPhi ,
496504 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
497505 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
498506 c.casccosPA , c.v0cosPA , c.massXi , c.massOmega , c.massV0 , c.cascRadius , c.v0radius , c.cascLength , c.v0length ,
0 commit comments