Skip to content

Commit 15ddc4c

Browse files
authored
[PWGLF] nonPromptCascade: added checks for stangeness-tracked cascades in MC (#7018)
1 parent 62e4d4f commit 15ddc4c

2 files changed

Lines changed: 43 additions & 5 deletions

File tree

PWGLF/DataModel/LFNonPromptCascadeTables.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ namespace o2::aod
2424
{
2525
namespace NPCascadeTable
2626
{
27+
DECLARE_SOA_COLUMN(MatchingChi2, matchingChi2, float);
28+
DECLARE_SOA_COLUMN(IsGoodMatch, isGoodMatch, bool);
29+
DECLARE_SOA_COLUMN(IsGoodCascade, isGoodCascade, bool);
30+
2731
DECLARE_SOA_COLUMN(PvX, pvX, float);
2832
DECLARE_SOA_COLUMN(PvY, pvY, float);
2933
DECLARE_SOA_COLUMN(PvZ, pvZ, float);
@@ -94,6 +98,7 @@ DECLARE_SOA_COLUMN(PDGcode, pdgCode, int);
9498

9599
} // namespace NPCascadeTable
96100
DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE",
101+
NPCascadeTable::MatchingChi2,
97102
NPCascadeTable::PvX,
98103
NPCascadeTable::PvY,
99104
NPCascadeTable::PvZ,
@@ -146,6 +151,9 @@ DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE",
146151
NPCascadeTable::BachPionTOFNSigma)
147152

148153
DECLARE_SOA_TABLE(NPCascTableMC, "AOD", "NPCASCTABLEMC",
154+
NPCascadeTable::MatchingChi2,
155+
NPCascadeTable::IsGoodMatch,
156+
NPCascadeTable::IsGoodCascade,
149157
NPCascadeTable::PvX,
150158
NPCascadeTable::PvY,
151159
NPCascadeTable::PvZ,

PWGLF/Tasks/Strangeness/nonPromptCascade.cxx

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ using namespace o2::framework;
3838
using namespace o2::framework::expressions;
3939

4040
struct 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

Comments
 (0)