Skip to content

Commit 5bdb918

Browse files
gmantzarGeorgios Mantzaridis
andauthored
[PWGCF] implement MC for Cascades (#14383)
Co-authored-by: Georgios Mantzaridis <ga27bor@nidoqueen.ktas.ph.tum.de>
1 parent 65e82f2 commit 5bdb918

File tree

5 files changed

+222
-82
lines changed

5 files changed

+222
-82
lines changed

PWGCF/DataModel/FemtoDerived.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -660,18 +660,21 @@ namespace femtodreamMCparticle
660660
{
661661
/// Distinuishes the different particle origins
662662
enum ParticleOriginMCTruth {
663-
kPrimary, //! Primary track or V0
664-
kSecondary, //! Particle from a decay
665-
kMaterial, //! Particle from a material
666-
kNotPrimary, //! Not primary particles (kept for compatibility reasons with the FullProducer task. will be removed, since we look at "non primaries" more differentially now)
667-
kFake, //! particle, that has NOT the PDG code of the current analysed particle
668-
kWrongCollision, //! particle, that was associated wrongly to the collision
669-
kSecondaryDaughterLambda, //! Daughter from a Lambda decay
670-
kSecondaryDaughterSigmaplus, //! Daughter from a Sigma^plus decay
671-
kSecondaryDaughterSigma0, //! Daughter from a Sigma^0 decay
672-
kSecondaryDaughterXiMinus, //! Daughter from a Xi^- decay
673-
kSecondaryDaughterXi0, //! Daughter from a Xi^0 decay
674-
kElse, //! none of the above; (NOTE: used to catch bugs. will be removed once MC usage is properly validated)
663+
kPrimary, //! Primary track or V0
664+
kSecondary, //! Particle from a decay
665+
kMaterial, //! Particle from a material
666+
kNotPrimary, //! Not primary particles (kept for compatibility reasons with the FullProducer task. will be removed, since we look at "non primaries" more differentially now)
667+
kFake, //! particle, that has NOT the PDG code of the current analysed particle
668+
kWrongCollision, //! particle, that was associated wrongly to the collision
669+
kSecondaryDaughterLambda, //! Daughter from a Lambda decay
670+
kSecondaryDaughterSigmaplus, //! Daughter from a Sigma^plus decay
671+
kSecondaryDaughterSigma0, //! Daughter from a Sigma^0 decay
672+
kSecondaryDaughterXiMinus, //! Daughter from a Xi^- decay
673+
kSecondaryDaughterXi0, //! Daughter from a Xi^0 decay
674+
kSecondaryDaughterOmegaMinus, //! Daughter from a Omega^- decay
675+
kSecondaryDaughterXistar0, //! Daughter from a Xi*^0 decay
676+
kSecondaryDaughterXistarMinus, //! Daughter from a Xi*^- decay
677+
kElse, //! none of the above; (NOTE: used to catch bugs. will be removed once MC usage is properly validated)
675678
kNOriginMCTruthTypes
676679
};
677680

PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,11 @@ class FemtoDreamParticleHisto
7171
mHistogramRegistry->add((folderName + folderSuffix + "/hpTInvMassAntiLambda").c_str(), "; M_{#bar{#Lambda}}; Entries", kTH2F, {pTAxis, InvMassAxis});
7272
mHistogramRegistry->add((folderName + folderSuffix + "/hInvMassLambdaAntiLambda").c_str(), "; M_{#Lambda}; M_{#bar{#Lambda}}", kTH2F, {InvMassAxis, InvMassAxis});
7373
}
74-
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
74+
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade && mc == o2::aod::femtodreamMCparticle::MCType::kRecon) {
7575
mHistogramRegistry->add((folderName + folderSuffix + "/hInvMassCascade").c_str(), "; M_{Cascade}; Entries", kTH1F, {InvMassAxis});
7676
mHistogramRegistry->add((folderName + folderSuffix + "/hpTInvMassCascade").c_str(), "; p_{T} (GeV/#it{c{}); M_{Cascade}", kTH2F, {pTAxis, InvMassAxis});
77+
mHistogramRegistry->add((folderName + folderSuffix + "/hInvMassCascadeV0Daugh").c_str(), "; M_{Cascade}; Entries", kTH1F, {InvMassAxis});
78+
mHistogramRegistry->add((folderName + folderSuffix + "/hpTInvMassCascadeV0Daugh").c_str(), "; p_{T} (GeV/#it{c{}); M_{Cascade}", kTH2F, {pTAxis, InvMassAxis});
7779
}
7880
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kReso) {
7981
mHistogramRegistry->add((folderName + folderSuffix + "/hInvMassReso").c_str(), "; M_{Reso}; Entries", kTH1F, {InvMassAxis}); // added for Phi !!
@@ -271,7 +273,15 @@ class FemtoDreamParticleHisto
271273
/// to be implemented
272274
} else if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
273275
/// Cascade histograms
274-
/// to be implemented
276+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Primary").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
277+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Secondary").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
278+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Material").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
279+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_WrongCollision").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
280+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Fake").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
281+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Else").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
282+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Secondary_OMEGAMinus").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
283+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Secondary_XIStar0").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
284+
mHistogramRegistry->add((folderName + folderSuffix + "/hCPA_Secondary_XIStarMinus").c_str(), "; #it{p}_{T} (GeV/#it{c}); CPA", kTH2F, {tempFitVarpTAxis, tempFitVarAxis});
275285
} else {
276286
LOG(fatal) << "FemtoDreamParticleHisto: Histogramming for requested object not defined - quitting!";
277287
}
@@ -360,11 +370,11 @@ class FemtoDreamParticleHisto
360370
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hpTInvMassAntiLambda"), part.pt(), part.mAntiLambda());
361371
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hInvMassLambdaAntiLambda"), part.mLambda(), part.mAntiLambda());
362372
}
363-
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
373+
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade && mc == o2::aod::femtodreamMCparticle::MCType::kRecon) {
364374
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hInvMassCascade"), part.mLambda());
365375
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hpTInvMassCascade"), part.pt(), part.mLambda());
366-
// mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hInvMassCascade"), part.mLambda());
367-
// mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hpTInvMassCascade"), part.pt(), part.mLambda());
376+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hInvMassCascadeV0Daugh"), part.mAntiLambda());
377+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hpTInvMassCascadeV0Daugh"), part.pt(), part.mAntiLambda());
368378
}
369379
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kReso) {
370380
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hInvMassReso"), part.mLambda()); // currently no MC for Phi!!
@@ -564,7 +574,7 @@ class FemtoDreamParticleHisto
564574
if (std::abs(pdgcode) == mPDG) { // fill this histogramm only for TRUE protons (independently of their origin) for the track purity estimation
565575
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hPt_ReconNoFake"), part.pt());
566576
}
567-
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kTrack || mParticleType == o2::aod::femtodreamparticle::ParticleType::kV0Child) {
577+
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kTrack || mParticleType == o2::aod::femtodreamparticle::ParticleType::kV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeBachelor) {
568578
/// Track histograms
569579
if constexpr (isDebug) {
570580
switch (mctruthorigin) {
@@ -735,6 +745,47 @@ class FemtoDreamParticleHisto
735745
}
736746
}
737747
} else if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
748+
switch (mctruthorigin) {
749+
case (o2::aod::femtodreamMCparticle::kPrimary):
750+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Primary"),
751+
part.pt(), part.tempFitVar());
752+
break;
753+
case (o2::aod::femtodreamMCparticle::kSecondary):
754+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Secondary"),
755+
part.pt(), part.tempFitVar());
756+
break;
757+
case (o2::aod::femtodreamMCparticle::kMaterial):
758+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Material"),
759+
part.pt(), part.tempFitVar());
760+
break;
761+
case (o2::aod::femtodreamMCparticle::kWrongCollision):
762+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_WrongCollision"),
763+
part.pt(), part.tempFitVar());
764+
break;
765+
case (o2::aod::femtodreamMCparticle::kFake):
766+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Fake"),
767+
part.pt(), part.tempFitVar());
768+
break;
769+
case (o2::aod::femtodreamMCparticle::kElse):
770+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Else"),
771+
part.pt(), part.tempFitVar());
772+
break;
773+
case (o2::aod::femtodreamMCparticle::kSecondaryDaughterOmegaMinus):
774+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Secondary_OMEGAMinus"),
775+
part.pt(), part.tempFitVar());
776+
break;
777+
case (o2::aod::femtodreamMCparticle::kSecondaryDaughterXistar0):
778+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Secondary_XIStar0"),
779+
part.pt(), part.tempFitVar());
780+
break;
781+
case (o2::aod::femtodreamMCparticle::kSecondaryDaughterXistarMinus):
782+
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hCPA_Secondary_XIStarMinus"),
783+
part.pt(), part.tempFitVar());
784+
break;
785+
default:
786+
LOG(fatal) << "femtodreamparticleMC: not known value for ParticleOriginMCTruth - please check. Quitting!";
787+
}
788+
738789
/// Cascade histograms
739790
} else {
740791
LOG(fatal) << "FemtoDreamParticleHisto: Histogramming for requested object not defined - quitting!";

PWGCF/FemtoDream/Core/femtoDreamUtils.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ inline int checkDaughterType(o2::aod::femtodreamparticle::ParticleType partType,
124124
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondary;
125125
}
126126

127-
} else if (partType == o2::aod::femtodreamparticle::ParticleType::kV0Child) {
127+
} else if (partType == o2::aod::femtodreamparticle::ParticleType::kV0Child || partType == o2::aod::femtodreamparticle::ParticleType::kCascadeV0Child || partType == o2::aod::femtodreamparticle::ParticleType::kCascadeBachelor) {
128128
switch (abs(motherPDG)) {
129129
case kLambda0:
130130
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondaryDaughterLambda;
@@ -137,9 +137,19 @@ inline int checkDaughterType(o2::aod::femtodreamparticle::ParticleType partType,
137137
} // switch
138138

139139
} else if (partType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
140-
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondary;
141-
} else if (partType == o2::aod::femtodreamparticle::ParticleType::kCascadeBachelor) {
142-
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondary;
140+
switch (std::abs(motherPDG)) {
141+
case kOmegaMinus:
142+
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondaryDaughterOmegaMinus;
143+
break;
144+
case 3324:
145+
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondaryDaughterXistar0;
146+
break;
147+
case 3314:
148+
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondaryDaughterXistarMinus;
149+
break;
150+
default:
151+
partOrigin = aod::femtodreamMCparticle::ParticleOriginMCTruth::kSecondary;
152+
}
143153
}
144154
return partOrigin;
145155
};

0 commit comments

Comments
 (0)