@@ -38,7 +38,11 @@ using namespace o2::framework;
3838using namespace o2 ::framework::expressions;
3939
4040struct NPCascCandidate {
41- int globalIndex;
41+ int64_t trackGlobID;
42+ int64_t trackITSID;
43+ float matchingChi2;
44+ bool isGoodMatch;
45+ bool isGoodCascade;
4246 float pvX;
4347 float pvY;
4448 float pvZ;
@@ -382,6 +386,7 @@ struct NonPromptCascadeTask {
382386 isOmega = false ;
383387
384388 const auto & track = trackedCascade.track_as <TracksExtMC>();
389+ const auto & ITStrack = trackedCascade.itsTrack_as <TracksExtMC>();
385390 const auto & casc = trackedCascade.cascade ();
386391 const auto & bachelor = casc.bachelor_as <TracksExtMC>();
387392 const auto & v0 = casc.v0 ();
@@ -555,7 +560,29 @@ struct NonPromptCascadeTask {
555560 daughtersDCA dDCA;
556561 fillDauDCA (trackedCascade, bachelor, protonTrack, pionTrack, primaryVertex, isOmega, dDCA);
557562
558- candidates.emplace_back (NPCascCandidate{static_cast <int >(track.globalIndex ()),
563+ bool isGoodCascade = false ;
564+
565+ int motherParticleID = -1 ;
566+
567+ if (protonTrack.mcParticle ().has_mothers () && pionTrack.mcParticle ().has_mothers () && bachelor.mcParticle ().has_mothers ()) {
568+ if (protonTrack.mcParticle ().mothersIds ()[0 ] == pionTrack.mcParticle ().mothersIds ()[0 ]) {
569+ const auto v0part = protonTrack.mcParticle ().mothers_first_as <aod::McParticles>();
570+ if (abs (v0part.pdgCode ()) == 3122 && v0part.has_mothers ()) {
571+ const auto motherV0 = v0part.mothers_as <aod::McParticles>()[0 ];
572+ // const auto motherBach = bachelor.mcParticle().mothers_as<aod::McParticles>()[0];
573+ if (v0part.mothersIds ()[0 ] == bachelor.mcParticle ().mothersIds ()[0 ]) {
574+ if (abs (motherV0.pdgCode ()) == 3312 || abs (motherV0.pdgCode ()) == 3334 ) {
575+ isGoodCascade = true ;
576+ motherParticleID = v0part.mothersIds ()[0 ];
577+ }
578+ }
579+ }
580+ }
581+ }
582+
583+ bool isGoodMatch = ((motherParticleID == ITStrack.mcParticleId ())) ? true : false ;
584+
585+ candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack.globalIndex (), trackedCascade.matchingChi2 (), isGoodMatch, isGoodCascade,
559586 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
560587 track.pt (), track.eta (), track.phi (),
561588 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -582,7 +609,8 @@ struct NonPromptCascadeTask {
582609 auto particle = mcParticles.iteratorAt (mcParticleId[i]);
583610 auto & c = candidates[i];
584611
585- NPCTableMC (c.pvX , c.pvY , c.pvZ ,
612+ NPCTableMC (c.matchingChi2 , c.isGoodMatch , c.isGoodCascade ,
613+ c.pvX , c.pvY , c.pvZ ,
586614 c.cascPt , c.cascEta , c.cascPhi ,
587615 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
588616 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
@@ -625,6 +653,7 @@ struct NonPromptCascadeTask {
625653 isOmega = false ;
626654
627655 const auto & track = trackedCascade.track_as <TracksExtData>();
656+ const auto & ITStrack = trackedCascade.itsTrack_as <TracksExtData>();
628657 const auto & casc = trackedCascade.cascade ();
629658 const auto & bachelor = casc.bachelor_as <TracksExtData>();
630659 const auto & v0 = casc.v0 ();
@@ -790,7 +819,7 @@ struct NonPromptCascadeTask {
790819 daughtersDCA dDCA;
791820 fillDauDCA (trackedCascade, bachelor, protonTrack, pionTrack, primaryVertex, isOmega, dDCA);
792821
793- candidates.emplace_back (NPCascCandidate{static_cast < int >( track.globalIndex ()) ,
822+ candidates.emplace_back (NPCascCandidate{track.globalIndex (), ITStrack. globalIndex (), trackedCascade. matchingChi2 (), 0 , 0 ,
794823 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
795824 track.pt (), track.eta (), track.phi (),
796825 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -807,7 +836,8 @@ struct NonPromptCascadeTask {
807836
808837 for (auto & c : candidates) {
809838
810- NPCTable (c.pvX , c.pvY , c.pvZ ,
839+ NPCTable (c.matchingChi2 ,
840+ c.pvX , c.pvY , c.pvZ ,
811841 c.cascPt , c.cascEta , c.cascPhi ,
812842 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
813843 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
0 commit comments