@@ -54,9 +54,11 @@ struct NPCascCandidate {
5454 int64_t trackITSID;
5555 int64_t collisionID;
5656 float matchingChi2;
57+ float deltaPtITS;
5758 float deltaPt;
5859 float itsClusSize;
5960 bool hasReassociatedCluster;
61+ bool hasFakeReassociation;
6062 bool isGoodMatch;
6163 bool isGoodCascade;
6264 int pdgCodeMom;
@@ -389,6 +391,7 @@ struct NonPromptCascadeTask {
389391 if (v0part.mothersIds ()[0 ] == bachelor.mcParticle ().mothersIds ()[0 ]) {
390392 if (std::abs (motherV0.pdgCode ()) == 3312 || std::abs (motherV0.pdgCode ()) == 3334 ) {
391393 isGoodCascade = true ;
394+
392395 isOmega = (std::abs (motherV0.pdgCode ()) == 3334 );
393396 fromHF = isFromHF (motherV0);
394397 mcParticleID = v0part.mothersIds ()[0 ];
@@ -413,8 +416,8 @@ struct NonPromptCascadeTask {
413416 o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, pionTrkParCov, mBz , 2 .f , matCorr, &pionDCA);
414417 o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, bachTrkParCov, mBz , 2 .f , matCorr, &bachDCA);
415418
416- float deltaPtITSCascade{-1 .e10f }, cascITSclsSize{-1 .e10f }, matchingChi2{-1 .e10f };
417- bool hasReassociatedClusters{false };
419+ float deltaPtITSCascade{-1 .e10f }, deltaPtCascade{- 1 . e10f }, cascITSclsSize{-1 .e10f }, matchingChi2{-1 .e10f };
420+ bool hasReassociatedClusters{false }, hasFakeReassociation{ false } ;
418421 int trackedCascGlobalIndex{-1 }, itsTrackGlobalIndex{-1 }, cascITSclusters{-1 };
419422 if constexpr (requires { candidate.track (); }) {
420423 const auto & track = candidate.template track_as <TrackType>();
@@ -424,6 +427,7 @@ struct NonPromptCascadeTask {
424427 hasReassociatedClusters = (track.itsNCls () != ITStrack.itsNCls ());
425428 cascadeLvector.SetCoordinates (track.pt (), track.eta (), track.phi (), 0 );
426429 deltaPtITSCascade = std::hypot (cascadeMomentum[0 ], cascadeMomentum[1 ]) - ITStrack.pt ();
430+ deltaPtCascade = std::hypot (cascadeMomentum[0 ], cascadeMomentum[1 ]) - track.pt ();
427431 trackedCascGlobalIndex = track.globalIndex ();
428432 itsTrackGlobalIndex = ITStrack.globalIndex ();
429433 cascITSclusters = track.itsNCls ();
@@ -435,11 +439,12 @@ struct NonPromptCascadeTask {
435439
436440 if (isGoodMatch) {
437441 pdgCodeMom = track.mcParticle ().has_mothers () ? track.mcParticle ().template mothers_as <aod::McParticles>()[0 ].pdgCode () : 0 ;
442+ hasFakeReassociation = track.mcMask () & (1 << 15 );
438443 }
439444 itsTrackPDG = ITStrack.has_mcParticle () ? ITStrack.mcParticle ().pdgCode () : 0 ;
440445 }
441446 }
442- candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, cascITSclsSize, hasReassociatedClusters, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
447+ candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, deltaPtCascade, cascITSclsSize, hasReassociatedClusters, hasFakeReassociation , isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
443448 collision.numContrib (), collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
444449 cascadeLvector.pt (), cascadeLvector.eta (), cascadeLvector.phi (),
445450 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -457,7 +462,7 @@ struct NonPromptCascadeTask {
457462 void fillDataTable (auto const & candidates)
458463 {
459464 for (const auto & c : candidates) {
460- getDataTable<CascadeType>()(c.matchingChi2 , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster ,
465+ getDataTable<CascadeType>()(c.matchingChi2 , c.deltaPtITS , c. deltaPt , c.itsClusSize , c.hasReassociatedCluster ,
461466 c.pvContributors , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ ,
462467 c.cascPt , c.cascEta , c.cascPhi ,
463468 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
@@ -496,7 +501,7 @@ struct NonPromptCascadeTask {
496501 auto mcCollision = particle.template mcCollision_as <aod::McCollisions>();
497502 auto recCollision = collisions.iteratorAt (c.collisionID );
498503
499- getMCtable<CascadeType>()(c.matchingChi2 , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
504+ getMCtable<CascadeType>()(c.matchingChi2 , c.deltaPtITS , c. deltaPt , c.itsClusSize , c.hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
500505 c.pvContributors , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ , c.cascPt , c.cascEta , c.cascPhi ,
501506 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
502507 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
@@ -505,7 +510,7 @@ struct NonPromptCascadeTask {
505510 c.pionTPCNSigma , c.bachKaonTPCNSigma , c.bachPionTPCNSigma , c.protonHasTOF , c.pionHasTOF , c.bachHasTOF ,
506511 c.protonTOFNSigma , c.pionTOFNSigma , c.bachKaonTOFNSigma , c.bachPionTOFNSigma ,
507512 particle.pt (), particle.eta (), particle.phi (), particle.pdgCode (), mcCollision.posX () - particle.vx (), mcCollision.posY () - particle.vy (),
508- mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), motherDecayDaughters);
513+ mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c. hasFakeReassociation , motherDecayDaughters);
509514 }
510515 }
511516
0 commit comments