99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12+ #include < cmath>
1213#include < memory>
1314#include < string>
1415#include < vector>
@@ -47,7 +48,9 @@ struct NPCascCandidate {
4748 int64_t trackITSID;
4849 int64_t collisionID;
4950 float matchingChi2;
51+ float deltaPt;
5052 float itsClusSize;
53+ bool hasReassociatedCluster;
5154 bool isGoodMatch;
5255 bool isGoodCascade;
5356 int pdgCodeMom;
@@ -292,7 +295,7 @@ struct NonPromptCascadeTask {
292295 if (o2::base::Propagator::Instance ()->propagateToDCA (primaryVertex, trackCovTrk, bz, 2 .f , matCorr, &impactParameterTrk)) {
293296 if (protonTrack.hasTPC () && pionTrack.hasTPC ()) {
294297 if (isOmega) {
295- registry.fill (HIST (" h_dca_Omega" ), TMath::Sqrt (impactParameterTrk.getR2 ()));
298+ registry.fill (HIST (" h_dca_Omega" ), std::sqrt (impactParameterTrk.getR2 ()));
296299 registry.fill (HIST (" h_dcaxy_Omega" ), impactParameterTrk.getY ());
297300 registry.fill (HIST (" h_dcaz_Omega" ), impactParameterTrk.getZ ());
298301 registry.fill (HIST (" h_dcavspt_Omega" ), impactParameterTrk.getY (), track.pt ());
@@ -301,7 +304,7 @@ struct NonPromptCascadeTask {
301304 }
302305
303306 if (protonTrack.hasTPC () && pionTrack.hasTPC ()) {
304- registry.fill (HIST (" h_dca_Xi" ), TMath::Sqrt (impactParameterTrk.getR2 ()));
307+ registry.fill (HIST (" h_dca_Xi" ), std::sqrt (impactParameterTrk.getR2 ()));
305308 registry.fill (HIST (" h_dcaxy_Xi" ), impactParameterTrk.getY ());
306309 registry.fill (HIST (" h_dcaz_Xi" ), impactParameterTrk.getZ ());
307310 registry.fill (HIST (" h_dcavspt_Xi" ), impactParameterTrk.getY (), track.pt ());
@@ -432,6 +435,7 @@ struct NonPromptCascadeTask {
432435 o2::track::TrackParCov trackParCovV0;
433436 o2::track::TrackPar trackParV0;
434437 o2::track::TrackPar trackParBachelor;
438+ std::array<float , 3 > cascadeMomentum;
435439
436440 float cascCpa = -1 ;
437441 float v0Cpa = -1 ;
@@ -446,10 +450,9 @@ struct NonPromptCascadeTask {
446450 trackParBachelor = df2.getTrackParamAtPCA (1 );
447451 trackParV0.getPxPyPzGlo (momenta[0 ]); // getting the V0 momentum
448452 trackParBachelor.getPxPyPzGlo (momenta[1 ]); // getting the bachelor momentum
449- std::array<float , 3 > pVec;
450- df2.createParentTrackParCov ().getPxPyPzGlo (pVec);
453+ df2.createParentTrackParCov ().getPxPyPzGlo (cascadeMomentum);
451454 std::array<float , 3 > pvPos = {primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ ()};
452- cascCpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), pVec );
455+ cascCpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), cascadeMomentum );
453456 v0Cpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), momenta[0 ]);
454457 } else {
455458 continue ;
@@ -599,8 +602,9 @@ struct NonPromptCascadeTask {
599602 pdgCodeMom = track.mcParticle ().has_mothers () ? track.mcParticle ().mothers_as <aod::McParticles>()[0 ].pdgCode () : 0 ;
600603 }
601604 int itsTrackPDG = ITStrack.has_mcParticle () ? ITStrack.mcParticle ().pdgCode () : 0 ;
602-
603- candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack.globalIndex (), trackedCascade.collisionId (), trackedCascade.matchingChi2 (), trackedCascade.itsClsSize (), isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, std::get<0 >(fromHF), std::get<1 >(fromHF),
605+ float deltaPtITSCascade = std::hypot (cascadeMomentum[0 ], cascadeMomentum[1 ]) - ITStrack.pt ();
606+ bool hasReassociatedClusters = (track.itsNCls () != ITStrack.itsNCls ());
607+ candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack.globalIndex (), trackedCascade.collisionId (), trackedCascade.matchingChi2 (), deltaPtITSCascade, trackedCascade.itsClsSize (), hasReassociatedClusters, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, std::get<0 >(fromHF), std::get<1 >(fromHF),
604608 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
605609 track.pt (), track.eta (), track.phi (),
606610 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -629,7 +633,7 @@ struct NonPromptCascadeTask {
629633 auto mcCollision = particle.mcCollision_as <aod::McCollisions>();
630634 auto label = collisions.iteratorAt (c.collisionID );
631635
632- NPCTableMC (c.matchingChi2 , c.itsClusSize , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
636+ NPCTableMC (c.matchingChi2 , c.deltaPt , c. itsClusSize , c. hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
633637 c.pvX , c.pvY , c.pvZ ,
634638 c.cascPt , c.cascEta , c.cascPhi ,
635639 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
@@ -691,6 +695,7 @@ struct NonPromptCascadeTask {
691695 const auto & ntrack = v0.negTrack_as <TracksExtData>();
692696 const auto & protonTrack = bachelor.sign () > 0 ? ntrack : ptrack;
693697 const auto & pionTrack = bachelor.sign () > 0 ? ptrack : ntrack;
698+ bool hasReassociatedClusters = (track.itsNCls () != ITStrack.itsNCls ());
694699
695700 std::array<std::array<float , 3 >, 2 > momenta;
696701 std::array<double , 2 > masses;
@@ -699,6 +704,7 @@ struct NonPromptCascadeTask {
699704 o2::track::TrackParCov trackParCovV0;
700705 o2::track::TrackPar trackParV0;
701706 o2::track::TrackPar trackParBachelor;
707+ std::array<float , 3 > cascadeMomentum;
702708
703709 float cascCpa = -1 ;
704710 float v0Cpa = -1 ;
@@ -713,17 +719,17 @@ struct NonPromptCascadeTask {
713719 trackParBachelor = df2.getTrackParamAtPCA (1 );
714720 trackParV0.getPxPyPzGlo (momenta[0 ]); // getting the V0 momentum
715721 trackParBachelor.getPxPyPzGlo (momenta[1 ]); // getting the bachelor momentum
716- std::array<float , 3 > pVec;
717- df2.createParentTrackParCov ().getPxPyPzGlo (pVec);
722+ df2.createParentTrackParCov ().getPxPyPzGlo (cascadeMomentum);
718723 std::array<float , 3 > pvPos = {primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ ()};
719- cascCpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), pVec );
724+ cascCpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), cascadeMomentum );
720725 v0Cpa = RecoDecay::cpa (pvPos, df2.getPCACandidate (), momenta[0 ]);
721726 } else {
722727 continue ;
723728 }
724729 } else {
725730 continue ;
726731 }
732+ float deltaPtITSCascade = std::hypot (cascadeMomentum[0 ], cascadeMomentum[1 ]) - ITStrack.pt ();
727733
728734 // PV
729735 registry.fill (HIST (" h_PV_x" ), primaryVertex.getX ());
@@ -745,7 +751,7 @@ struct NonPromptCascadeTask {
745751 const auto v0mass = RecoDecay::m (momenta, masses);
746752
747753 // //Omega hypohesis -> rejecting Xi
748- if (TMath::Abs (massXi - constants::physics::MassXiMinus) > 0.005 ) {
754+ if (std::abs (massXi - constants::physics::MassXiMinus) > 0.005 ) {
749755 isOmega = true ;
750756 invMassBCOmega->Fill (massOmega);
751757 }
@@ -849,7 +855,7 @@ struct NonPromptCascadeTask {
849855 daughtersDCA dDCA;
850856 fillDauDCA (trackedCascade, bachelor, protonTrack, pionTrack, primaryVertex, isOmega, dDCA);
851857
852- candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack.globalIndex (), trackedCascade.collisionId (), trackedCascade.matchingChi2 (), trackedCascade.itsClsSize (), 0 , 0 , 0 , 0 , 0 , 0 ,
858+ candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack.globalIndex (), trackedCascade.collisionId (), trackedCascade.matchingChi2 (), deltaPtITSCascade, trackedCascade.itsClsSize (), hasReassociatedClusters , 0 , 0 , 0 , 0 , 0 , 0 ,
853859 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
854860 track.pt (), track.eta (), track.phi (),
855861 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -865,7 +871,7 @@ struct NonPromptCascadeTask {
865871
866872 for (auto & c : candidates) {
867873
868- NPCTable (c.matchingChi2 , c.itsClusSize ,
874+ NPCTable (c.matchingChi2 , c.deltaPt , c. itsClusSize , c. hasReassociatedCluster ,
869875 c.pvX , c.pvY , c.pvZ ,
870876 c.cascPt , c.cascEta , c.cascPhi ,
871877 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
0 commit comments