Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 69 additions & 2 deletions PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,17 @@ struct HfDataCreatorCharmHadPiReduced {
}
}
}
// B0 → D- K+ → (π- K+ π-) K+
if (!flag) {
indexRec = RecoDecay::getMatchedMCRec<true, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2], vecDaughtersB[3]}, Pdg::kB0, std::array{-kPiPlus, +kKPlus, -kPiPlus, +kKPlus}, true, &sign, 3);
if (indexRec > -1) {
// D- → π- K+ π-
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2]}, Pdg::kDMinus, std::array{-kPiPlus, +kKPlus, -kPiPlus}, true, &sign, 2);
if (indexRec > -1) {
flag = sign * BIT(hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK);
}
}
}
// Partly reconstructed decays, i.e. the 4 prongs have a common b-hadron ancestor
// convention: final state particles are prong0,1,2,3
if (!flag) {
Expand Down Expand Up @@ -604,6 +615,41 @@ struct HfDataCreatorCharmHadPiReduced {
}
}
}
// Bs → Ds- K+ → (K- K+ π-) K+
if (!flag) {
indexRec = RecoDecay::getMatchedMCRec<true, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2], vecDaughtersB[3]}, Pdg::kBS, std::array{-kKPlus, +kKPlus, -kPiPlus, +kKPlus}, true, &sign, 3);
if (indexRec > -1) {
// Ds- → K- K+ π-
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2]}, -Pdg::kDS, std::array{-kKPlus, +kKPlus, -kPiPlus}, true, &sign, 2);
if (indexRec > -1) {
std::vector<int> arrDaughDsIndex;
std::array<int, 2> arrPDGDaughDs;
RecoDecay::getDaughters(particlesMc.rawIteratorAt(indexRec), &arrDaughDsIndex, std::array{0}, 1);
if (arrDaughDsIndex.size() == NDaughtersDs) {
for (auto iProng = 0u; iProng < arrDaughDsIndex.size(); ++iProng) {
auto daughI = particlesMc.rawIteratorAt(arrDaughDsIndex[iProng]);
arrPDGDaughDs[iProng] = std::abs(daughI.pdgCode());
}
// Ds- → Phi π- → K- K+ π- and Ds- → K0* K- → K- K+ π-
if ((arrPDGDaughDs[0] == arrPDGResonantDsPhiPi[0] && arrPDGDaughDs[1] == arrPDGResonantDsPhiPi[1]) || (arrPDGDaughDs[0] == arrPDGResonantDsPhiPi[1] && arrPDGDaughDs[1] == arrPDGResonantDsPhiPi[0])) {
flag = sign * BIT(hf_cand_bs::DecayTypeMc::BsToDsKToPhiPiKToKKPiK);
} else if ((arrPDGDaughDs[0] == arrPDGResonantDKstarK[0] && arrPDGDaughDs[1] == arrPDGResonantDKstarK[1]) || (arrPDGDaughDs[0] == arrPDGResonantDKstarK[1] && arrPDGDaughDs[1] == arrPDGResonantDKstarK[0])) {
flag = sign * BIT(hf_cand_bs::DecayTypeMc::BsToDsKToK0starKKToKKPiK);
}
}
} else {
debug = 1;
LOGF(debug, "Bs decays in the expected final state but the condition on the intermediate state is not fulfilled");
}

auto indexMother = RecoDecay::getMother(particlesMc, vecDaughtersB.back().template mcParticle_as<PParticles>(), Pdg::kBS, true);
if (indexMother >= 0) {
auto particleMother = particlesMc.rawIteratorAt(indexMother);
motherPt = particleMother.pt();
checkWrongCollision(particleMother, collision, indexCollisionMaxNumContrib, flagWrongCollision);
}
}
}
// Partly reconstructed decays, i.e. the 4 prongs have a common b-hadron ancestor
// convention: final state particles are prong0,1,2,3
if (!flag) {
Expand Down Expand Up @@ -669,7 +715,7 @@ struct HfDataCreatorCharmHadPiReduced {
// D0(bar) → K+ π-;
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1]}, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1);
if (indexRec > -1) {
flag = sign * BIT(hf_cand_bplus::DecayType::BplusToD0Pi);
flag = sign * BIT(hf_cand_bplus::DecayTypeMc::BplusToD0PiToKPiPi);
} else {
debug = 1;
LOGF(debug, "B+ decays in the expected final state but the condition on the intermediate state is not fulfilled");
Expand All @@ -684,6 +730,27 @@ struct HfDataCreatorCharmHadPiReduced {
}
// additional checks for correlated backgrounds
if (checkDecayTypeMc) {
if (!flag) {
// B+ → D0(bar) K+ → (K+ π-) K+
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2]}, Pdg::kBPlus, std::array{+kKPlus, +kKPlus, -kPiPlus}, true, &sign, 2);
if (indexRec > -1) {
// D0(bar) → K+ π-;
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1]}, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1);
if (indexRec > -1) {
flag = sign * BIT(hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK);
} else {
debug = 1;
LOGF(debug, "B+ decays in the expected final state but the condition on the intermediate state is not fulfilled");
}

auto indexMother = RecoDecay::getMother(particlesMc, vecDaughtersB.back().template mcParticle_as<PParticles>(), Pdg::kBPlus, true);
if (indexMother >= 0) {
auto particleMother = particlesMc.rawIteratorAt(indexMother);
motherPt = particleMother.pt();
checkWrongCollision(particleMother, collision, indexCollisionMaxNumContrib, flagWrongCollision);
}
}
}
// Partly reconstructed decays, i.e. the 3 prongs have a common b-hadron ancestor
// convention: final state particles are prong0,1,2
if (!flag) {
Expand Down Expand Up @@ -769,7 +836,7 @@ struct HfDataCreatorCharmHadPiReduced {
// Lc+ → p K- π+
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2]}, Pdg::kLambdaCPlus, std::array{+kProton, -kKPlus, +kPiPlus}, true, &sign, 2);
if (indexRec > -1) {
flag = sign * BIT(hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK);
flag = sign * BIT(hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK);
}
}
}
Expand Down
16 changes: 11 additions & 5 deletions PWGHF/D2H/Tasks/taskB0Reduced.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ DECLARE_SOA_COLUMN(AbsEtaBach, absEtaBach, float);
DECLARE_SOA_COLUMN(ItsNClsBach, itsNClsBach, int); //! Number of ITS clusters of bachelor pion
DECLARE_SOA_COLUMN(TpcNClsCrossedRowsBach, tpcNClsCrossedRowsBach, int); //! Number of TPC crossed rows of prongs of bachelor pion
DECLARE_SOA_COLUMN(TpcChi2NClBach, tpcChi2NClBach, float); //! Maximum TPC chi2 of prongs of D-meson daughter candidate
DECLARE_SOA_COLUMN(PtDmesProngMin, ptProngDmesMin, float); //! Minimum pT of prongs of D-meson daughter candidate (GeV/c)
DECLARE_SOA_COLUMN(AbsEtaDmesProngMin, absEtaProngDmesMin, float); //! Minimum absolute pseudorapidity of prongs of D-meson daughter candidate
DECLARE_SOA_COLUMN(PtDmesProngMin, ptDmesProngMin, float); //! Minimum pT of prongs of D-meson daughter candidate (GeV/c)
DECLARE_SOA_COLUMN(AbsEtaDmesProngMin, absEtaDmesProngMin, float); //! Minimum absolute pseudorapidity of prongs of D-meson daughter candidate
DECLARE_SOA_COLUMN(ItsNClsDmesProngMin, itsNClsDmesProngMin, int); //! Minimum number of ITS clusters of prongs of D-meson daughter candidate
DECLARE_SOA_COLUMN(TpcNClsCrossedRowsDmesProngMin, tpcNClsCrossedRowsDmesProngMin, int); //! Minimum number of TPC crossed rows of prongs of D-meson daughter candidate
DECLARE_SOA_COLUMN(TpcChi2NClDmesProngMax, tpcChi2NClDmesProngMax, float); //! Maximum TPC chi2 of prongs of D-meson daughter candidate
Expand Down Expand Up @@ -176,13 +176,13 @@ struct HfTaskB0Reduced {

HfHelper hfHelper;

using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
using CandsDplus = soa::Join<HfRed3Prongs, HfRedPidDau0s, HfRedPidDau1s, HfRedPidDau2s>;

Filter filterSelectCandidates = (aod::hf_sel_candidate_b0::isSelB0ToDPi >= selectionFlagB0);

HistogramRegistry registry{"registry"};

using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
using CandsDplus = soa::Join<HfRed3Prongs, HfRedPidDau0s, HfRedPidDau1s, HfRedPidDau2s>;

void init(InitContext&)
{
std::array<bool, 3> processFuncData{doprocessData, doprocessDataWithDmesMl, doprocessDataWithB0Ml};
Expand Down Expand Up @@ -310,6 +310,8 @@ struct HfTaskB0Reduced {
TString labels[kNBinsDecayTypeMc];
labels[hf_cand_b0::DecayTypeMc::B0ToDplusPiToPiKPiPi] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
labels[hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi] = "B^{0} #rightarrow (D^{#minus}_{s} #rightarrow K^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
labels[hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi] = "B_{s}^{0} #rightarrow (D^{#minus}_{s} #rightarrow K^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
labels[hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) K^{#plus}";
labels[hf_cand_b0::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
labels[hf_cand_b0::DecayTypeMc::OtherDecay] = "Other decays";
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
Expand Down Expand Up @@ -463,6 +465,10 @@ struct HfTaskB0Reduced {
} else if constexpr (withDecayTypeCheck) {
if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi)) { // B0 → Ds- π+ → (K- K+ π-) π+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi, invMassB0, ptCandB0);
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi)) { // B0s → Ds- π+ → (K- K+ π-) π+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi, invMassB0, ptCandB0);
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK)) { // B0 → D- K+ → (π- K+ π-) K+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK, invMassB0, ptCandB0);
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::PartlyRecoDecay, invMassB0, ptCandB0);
} else {
Expand Down
5 changes: 4 additions & 1 deletion PWGHF/D2H/Tasks/taskBplusReduced.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ struct HfTaskBplusReduced {
constexpr uint8_t kNBinsDecayTypeMc = hf_cand_bplus::DecayTypeMc::NDecayTypeMc;
TString labels[kNBinsDecayTypeMc];
labels[hf_cand_bplus::DecayTypeMc::BplusToD0PiToKPiPi] = "B^{+} #rightarrow (#overline{D^{0}} #rightarrow K^{#plus} #pi^{#minus}) #pi^{#plus}";
labels[hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK] = "B^{+} #rightarrow (#overline{D^{0}} #rightarrow K^{#plus} #pi^{#minus}) #K^{#plus}";
labels[hf_cand_bplus::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
labels[hf_cand_bplus::DecayTypeMc::OtherDecay] = "Other decays";
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
Expand Down Expand Up @@ -478,7 +479,9 @@ struct HfTaskBplusReduced {
registry.fill(HIST("hMlScoreSigBplusRecBg"), ptCandBplus, candidate.mlProbBplusToD0Pi());
}
} else if constexpr (withDecayTypeCheck) {
if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK)) { // Partly reconstructed decay channel
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK, invMassBplus, ptCandBplus);
} else if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::PartlyRecoDecay, invMassBplus, ptCandBplus);
} else {
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::OtherDecay, invMassBplus, ptCandBplus);
Expand Down
6 changes: 4 additions & 2 deletions PWGHF/D2H/Tasks/taskBsReduced.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,12 @@ struct HfTaskBsReduced {

HfHelper hfHelper;

using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;

Filter filterSelectCandidates = (aod::hf_sel_candidate_bs::isSelBsToDsPi >= selectionFlagBs);

HistogramRegistry registry{"registry"};

using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;

void init(InitContext&)
{
std::array<bool, 3> processFuncData{doprocessData, doprocessDataWithDmesMl, doprocessDataWithBsMl};
Expand Down Expand Up @@ -262,6 +262,8 @@ struct HfTaskBsReduced {
labels[hf_cand_bs::DecayTypeMc::BsToDsPiToK0starKPiToKKPiPi] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) #pi";
labels[hf_cand_bs::DecayTypeMc::B0ToDsPiToPhiPiPiToKKPiPi] = "B^{0} #rightarrow (D_{s} #rightarrow #Phi#pi #rightarrow KK#pi) #pi";
labels[hf_cand_bs::DecayTypeMc::B0ToDsPiToK0starKPiToKKPiPi] = "B^{0} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) #pi";
labels[hf_cand_bs::DecayTypeMc::BsToDsKToPhiPiKToKKPiK] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow #Phi#pi #rightarrow KK#pi) K";
labels[hf_cand_bs::DecayTypeMc::BsToDsKToK0starKKToKKPiK] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) K";
labels[hf_cand_bs::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
labels[hf_cand_bs::DecayTypeMc::OtherDecay] = "Other decays";
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
Expand Down
9 changes: 6 additions & 3 deletions PWGHF/D2H/Tasks/taskLbReduced.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,8 @@ struct HfTaskLbReduced {
constexpr uint8_t kNBinsDecayTypeMc = hf_cand_lb::DecayTypeMc::NDecayTypeMc;
TString labels[kNBinsDecayTypeMc];
labels[hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiPi] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) #pi^{#minus}";
labels[hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) K^{#minus}";
labels[hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
labels[hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) K^{#minus}";
labels[hf_cand_lb::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
labels[hf_cand_lb::DecayTypeMc::OtherDecay] = "Other decays";
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
Expand Down Expand Up @@ -459,8 +460,10 @@ struct HfTaskLbReduced {
registry.fill(HIST("hMlScoreSigLbRecBg"), ptCandLb, candidate.mlProbLbToLcPi());
}
} else if constexpr (withDecayTypeCheck) {
if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiPi)) { // Lb → Lc+ π- → (pK-π+) π-
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK, invMassLb, ptCandLb);
if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK)) { // Lb → Lc+ K- → (pK-π+) K-
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK, invMassLb, ptCandLb);
} else if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi)) { // // B0 → D- π+ → (π- K+ π-) π+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi, invMassLb, ptCandLb);
} else if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::PartlyRecoDecay, invMassLb, ptCandLb);
} else {
Expand Down
6 changes: 5 additions & 1 deletion PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -859,6 +859,7 @@ DECLARE_SOA_COLUMN(DebugMcRec, debugMcRec, int8_t); // debug fla
enum DecayType { BplusToD0Pi = 0 };

enum DecayTypeMc : uint8_t { BplusToD0PiToKPiPi = 0,
BplusToD0KToKPiK,
PartlyRecoDecay,
OtherDecay,
NDecayTypeMc };
Expand Down Expand Up @@ -1912,7 +1913,7 @@ DECLARE_SOA_COLUMN(DebugMcRec, debugMcRec, int8_t); // debug fla
enum DecayType { LbToLcPi }; // move this to a dedicated cascade namespace in the future?

enum DecayTypeMc : uint8_t { LbToLcPiToPKPiPi = 0,
LbToLcPiToPKPiK,
LbToLcKToPKPiK,
B0ToDplusPiToPiKPiPi,
PartlyRecoDecay,
OtherDecay,
Expand Down Expand Up @@ -1986,6 +1987,7 @@ enum DecayType { B0ToDPi };
enum DecayTypeMc : uint8_t { B0ToDplusPiToPiKPiPi = 0,
B0ToDsPiToKKPiPi,
BsToDsPiToKKPiPi,
B0ToDplusKToPiKPiK,
PartlyRecoDecay,
OtherDecay,
NDecayTypeMc };
Expand Down Expand Up @@ -2062,6 +2064,8 @@ enum DecayTypeMc : uint8_t { BsToDsPiToPhiPiPiToKKPiPi = 0, // Bs(bar) → Ds∓
BsToDsPiToK0starKPiToKKPiPi, // Bs(bar) → Ds∓ π± → (K0* K∓) π± → (K- K+ π∓) π±
B0ToDsPiToPhiPiPiToKKPiPi, // B0(bar) → Ds± π∓ → (Phi π±) π∓ → (K- K+ π±) π∓
B0ToDsPiToK0starKPiToKKPiPi, // B0(bar) → Ds± π∓ → (K0* K±) π∓ → (K- K+ π±) π∓
BsToDsKToPhiPiKToKKPiK, // Bs(bar) → Ds± K∓ → (Phi π∓) K∓ → (K- K+ π±) K∓
BsToDsKToK0starKKToKKPiK, // Bs(bar) → Ds± K∓ → (K0* K±) K∓ → (K- K+ π±) K∓
PartlyRecoDecay, // 4 final state particles have another common b-hadron ancestor
OtherDecay,
NDecayTypeMc }; // counter of differentiated MC decay types
Expand Down
Loading