Skip to content

Commit

Permalink
PWGHF: small fixes in charm baryon tasks (AliceO2Group#6483)
Browse files Browse the repository at this point in the history
* Fix bool and config

* eta->y gen level info

* Update PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx

Co-authored-by: Fabio Catalano <[email protected]>

* Remove unnecessary check

* Switch to McEvSel func

* Use hfEvSelMc func

* Please consider the following formatting changes

* Remove unnecessary code

* Remove include

* Remove include

---------

Co-authored-by: Fabio Catalano <[email protected]>
Co-authored-by: ALICE Action Bot <[email protected]>
  • Loading branch information
3 people authored and echizzal committed Jul 18, 2024
1 parent e2f6285 commit 20bf405
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 50 deletions.
10 changes: 5 additions & 5 deletions PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -1175,7 +1175,7 @@ DECLARE_SOA_COLUMN(DebugGenLambda, debugGenLambda, int8_t);
DECLARE_SOA_COLUMN(OriginRec, originRec, int8_t);
DECLARE_SOA_COLUMN(OriginGen, originGen, int8_t);
DECLARE_SOA_COLUMN(PtCharmBaryonGen, ptCharmBaryonGen, float);
DECLARE_SOA_COLUMN(EtaCharmBaryonGen, etaCharmBaryonGen, float);
DECLARE_SOA_COLUMN(RapidityCharmBaryonGen, rapidityCharmBaryonGen, float);

// mapping of decay types
enum DecayType { XiczeroToXiPi = 0,
Expand Down Expand Up @@ -1309,16 +1309,16 @@ DECLARE_SOA_TABLE(HfToOmegaKMCRec, "AOD", "HFTOOMEKMCREC", //!
// table with results of generator level MC matching
DECLARE_SOA_TABLE(HfXicToXiPiMCGen, "AOD", "HFXICXIPIMCGEN", //!
hf_cand_xic0_omegac0::FlagMcMatchGen, hf_cand_xic0_omegac0::DebugGenCharmBar, hf_cand_xic0_omegac0::DebugGenCasc, hf_cand_xic0_omegac0::DebugGenLambda,
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::EtaCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<1>);
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::RapidityCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<1>);
DECLARE_SOA_TABLE(HfOmegacToXiPiMCGen, "AOD", "HFOMECXIPIMCGEN", //!
hf_cand_xic0_omegac0::FlagMcMatchGen, hf_cand_xic0_omegac0::DebugGenCharmBar, hf_cand_xic0_omegac0::DebugGenCasc, hf_cand_xic0_omegac0::DebugGenLambda,
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::EtaCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<2>);
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::RapidityCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<2>);
DECLARE_SOA_TABLE(HfToOmegaPiMCGen, "AOD", "HFTOOMEPIMCGEN", //!
hf_cand_xic0_omegac0::FlagMcMatchGen, hf_cand_xic0_omegac0::DebugGenCharmBar, hf_cand_xic0_omegac0::DebugGenCasc, hf_cand_xic0_omegac0::DebugGenLambda,
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::EtaCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<3>);
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::RapidityCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<3>);
DECLARE_SOA_TABLE(HfToOmegaKMCGen, "AOD", "HFTOOMEKMCGEN", //!
hf_cand_xic0_omegac0::FlagMcMatchGen, hf_cand_xic0_omegac0::DebugGenCharmBar, hf_cand_xic0_omegac0::DebugGenCasc, hf_cand_xic0_omegac0::DebugGenLambda,
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::EtaCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<4>);
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::RapidityCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<4>);

// specific chic candidate properties
namespace hf_cand_chic
Expand Down
68 changes: 34 additions & 34 deletions PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@ struct HfCandidateCreatorXic0Omegac0Mc {
BCsInfo const&)
{
float ptCharmBaryonGen = -999.;
float etaCharmBaryonGen = -999.;
float rapidityCharmBaryonGen = -999.;
int indexRec = -1;
int indexRecCharmBaryon = -1;
int8_t sign = -9;
Expand Down Expand Up @@ -758,9 +758,9 @@ struct HfCandidateCreatorXic0Omegac0Mc {
// Check whether the charm baryon is non-prompt (from a b quark).
if (flag != 0) {
auto particle = mcParticles.rawIteratorAt(indexRecCharmBaryon);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
if (origin == RecoDecay::OriginType::NonPrompt) {
auto bHadMother = mcParticles.rawIteratorAt(idxBhadMothers[0]);
rowMCMatchRecXicToXiPi(flag, debug, origin, collisionMatched, bHadMother.pt(), bHadMother.pdgCode());
} else {
Expand Down Expand Up @@ -797,9 +797,9 @@ struct HfCandidateCreatorXic0Omegac0Mc {
// Check whether the charm baryon is non-prompt (from a b quark).
if (flag != 0) {
auto particle = mcParticles.rawIteratorAt(indexRecCharmBaryon);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
if (origin == RecoDecay::OriginType::NonPrompt) {
auto bHadMother = mcParticles.rawIteratorAt(idxBhadMothers[0]);
rowMCMatchRecOmegacToXiPi(flag, debug, origin, collisionMatched, bHadMother.pt(), bHadMother.pdgCode());
} else {
Expand Down Expand Up @@ -836,9 +836,9 @@ struct HfCandidateCreatorXic0Omegac0Mc {
// Check whether the charm baryon is non-prompt (from a b quark).
if (flag != 0) {
auto particle = mcParticles.rawIteratorAt(indexRecCharmBaryon);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
if (origin == RecoDecay::OriginType::NonPrompt) {
auto bHadMother = mcParticles.rawIteratorAt(idxBhadMothers[0]);
rowMCMatchRecToOmegaPi(flag, debug, origin, collisionMatched, bHadMother.pt(), bHadMother.pdgCode());
} else {
Expand Down Expand Up @@ -875,9 +875,9 @@ struct HfCandidateCreatorXic0Omegac0Mc {
// Check whether the charm baryon is non-prompt (from a b quark).
if (flag != 0) {
auto particle = mcParticles.rawIteratorAt(indexRecCharmBaryon);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
if (origin == RecoDecay::OriginType::NonPrompt) {
auto bHadMother = mcParticles.rawIteratorAt(idxBhadMothers[0]);
rowMCMatchRecToOmegaK(flag, debug, origin, collisionMatched, bHadMother.pt(), bHadMother.pdgCode());
} else {
Expand All @@ -892,7 +892,7 @@ struct HfCandidateCreatorXic0Omegac0Mc {
// Match generated particles.
for (const auto& particle : mcParticles) {
ptCharmBaryonGen = -999.;
etaCharmBaryonGen = -999.;
rapidityCharmBaryonGen = -999.;
flag = 0;
sign = -9;
debugGenCharmBar = 0;
Expand All @@ -907,13 +907,13 @@ struct HfCandidateCreatorXic0Omegac0Mc {
if (rejectionMask != 0) {
/// at least one event selection not satisfied --> reject the gen particle
if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::XiczeroToXiPi) {
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToXiPi) {
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToOmegaPi) {
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToOmegaK) {
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
}
continue;
}
Expand All @@ -923,7 +923,7 @@ struct HfCandidateCreatorXic0Omegac0Mc {
if (RecoDecay::isMatchedMCGen<false, true>(mcParticles, particle, pdgCodeXic0, std::array{pdgCodeXiMinus, pdgCodePiPlus}, true, &sign)) {
debugGenCharmBar = 1;
ptCharmBaryonGen = particle.pt();
etaCharmBaryonGen = particle.eta();
rapidityCharmBaryonGen = particle.y();
for (const auto& daughterCharm : particle.daughters_as<aod::McParticles>()) {
if (std::abs(daughterCharm.pdgCode()) != pdgCodeXiMinus) {
continue;
Expand All @@ -946,20 +946,20 @@ struct HfCandidateCreatorXic0Omegac0Mc {
}
// Check whether the charm baryon is non-prompt (from a b quark)
if (flag != 0) {
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, idxBhadMothers[0]);
if (origin == RecoDecay::OriginType::NonPrompt) {
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, idxBhadMothers[0]);
} else {
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenXicToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
}

} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToXiPi) {
// Omegac → Xi pi
if (RecoDecay::isMatchedMCGen<false, true>(mcParticles, particle, pdgCodeOmegac0, std::array{pdgCodeXiMinus, pdgCodePiPlus}, true, &sign)) {
debugGenCharmBar = 1;
ptCharmBaryonGen = particle.pt();
etaCharmBaryonGen = particle.eta();
rapidityCharmBaryonGen = particle.y();
for (const auto& daughterCharm : particle.daughters_as<aod::McParticles>()) {
if (std::abs(daughterCharm.pdgCode()) != pdgCodeXiMinus) {
continue;
Expand All @@ -982,20 +982,20 @@ struct HfCandidateCreatorXic0Omegac0Mc {
}
// Check whether the charm baryon is non-prompt (from a b quark)
if (flag != 0) {
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, idxBhadMothers[0]);
if (origin == RecoDecay::OriginType::NonPrompt) {
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, idxBhadMothers[0]);
} else {
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenOmegacToXiPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
}

} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToOmegaPi) {
// Omegac → Omega pi
if (RecoDecay::isMatchedMCGen<false, true>(mcParticles, particle, pdgCodeOmegac0, std::array{pdgCodeOmegaMinus, pdgCodePiPlus}, true, &sign)) {
debugGenCharmBar = 1;
ptCharmBaryonGen = particle.pt();
etaCharmBaryonGen = particle.eta();
rapidityCharmBaryonGen = particle.y();
for (const auto& daughterCharm : particle.daughters_as<aod::McParticles>()) {
if (std::abs(daughterCharm.pdgCode()) != pdgCodeOmegaMinus) {
continue;
Expand All @@ -1018,20 +1018,20 @@ struct HfCandidateCreatorXic0Omegac0Mc {
}
// Check whether the charm baryon is non-prompt (from a b quark)
if (flag != 0) {
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, idxBhadMothers[0]);
if (origin == RecoDecay::OriginType::NonPrompt) {
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, idxBhadMothers[0]);
} else {
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenToOmegaPi(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
}

} else if constexpr (decayChannel == aod::hf_cand_xic0_omegac0::DecayType::OmegaczeroToOmegaK) {
// Omegac → Omega K
if (RecoDecay::isMatchedMCGen<false, true>(mcParticles, particle, pdgCodeOmegac0, std::array{pdgCodeOmegaMinus, pdgCodeKaonPlus}, true, &sign)) {
debugGenCharmBar = 1;
ptCharmBaryonGen = particle.pt();
etaCharmBaryonGen = particle.eta();
rapidityCharmBaryonGen = particle.y();
for (const auto& daughterCharm : particle.daughters_as<aod::McParticles>()) {
if (std::abs(daughterCharm.pdgCode()) != pdgCodeOmegaMinus) {
continue;
Expand All @@ -1054,12 +1054,12 @@ struct HfCandidateCreatorXic0Omegac0Mc {
}
// Check whether the charm baryon is non-prompt (from a b quark)
if (flag != 0) {
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, true, &idxBhadMothers);
origin = RecoDecay::getCharmHadronOrigin(mcParticles, particle, false, &idxBhadMothers);
}
if (origin == RecoDecay::OriginType::NonPrompt && idxBhadMothers.size() > 0) {
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, idxBhadMothers[0]);
if (origin == RecoDecay::OriginType::NonPrompt) {
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, idxBhadMothers[0]);
} else {
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, etaCharmBaryonGen, origin, -1);
rowMCMatchGenToOmegaK(flag, debugGenCharmBar, debugGenCasc, debugGenLambda, ptCharmBaryonGen, rapidityCharmBaryonGen, origin, -1);
}
}
} // close loop on MCParticles
Expand Down
12 changes: 1 addition & 11 deletions PWGHF/Tasks/taskMcEfficiencyToXiPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ using namespace o2::framework;
using namespace o2::framework::expressions;

struct HfTaskMcEfficiencyToXiPi {

Configurable<float> rapidityCharmBaryonMax{"rapidityCharmBaryonMax", 0.5, "Max absolute value of rapidity for charm baryon"};
Configurable<float> acceptanceEtaLf{"acceptanceEtaLf", 1.0, "Max absolute value of eta for LF daughters"};
Configurable<float> acceptancePtPionFromCascade{"acceptancePtPionFromCascade", 0.2, "Min value of pt for pion <-- cascade"};
Expand All @@ -43,8 +44,6 @@ struct HfTaskMcEfficiencyToXiPi {
Configurable<int> nClustersTpcMin{"nClustersTpcMin", 70, "Minimum number of TPC clusters requirement for pion <-- charm baryon"};
Configurable<int> nClustersItsMin{"nClustersItsMin", 3, "Minimum number of ITS clusters requirement for pion <- charm baryon"};

Configurable<bool> rejGenTFAndITSROFBorders{"rejGenTFAndITSROFBorders", true, "Reject generated particles coming from bc close to TF and ITSROF borders"};

ConfigurableAxis axisPt{"axisPt", {200, 0, 20}, "pT axis"};
ConfigurableAxis axisMass{"axisMass", {900, 2.1, 3}, "m_inv axis"};

Expand Down Expand Up @@ -212,15 +211,6 @@ struct HfTaskMcEfficiencyToXiPi {

for (const auto& mcParticle : genParticles) {

// accept only mc particles coming from bc that are far away from TF border and ITSROFrame
if (rejGenTFAndITSROFBorders) {
auto coll = mcParticle.template mcCollision_as<aod::McCollisions>();
auto bc = coll.template bc_as<BCsInfo>();
if (!bc.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) || !bc.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
continue;
}
}

// check if I am treating the desired charm baryon
if (std::abs(mcParticle.pdgCode()) != pdgCode) {
continue;
Expand Down

0 comments on commit 20bf405

Please sign in to comment.