Skip to content

Commit fd24ceb

Browse files
authored
[PWGHF] Add B->DK decay channels in analysis workflows (#11179)
1 parent 2c771d5 commit fd24ceb

File tree

6 files changed

+99
-14
lines changed

6 files changed

+99
-14
lines changed

PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,17 @@ struct HfDataCreatorCharmHadPiReduced {
485485
}
486486
}
487487
}
488+
// B0 → D- K+ → (π- K+ π-) K+
489+
if (!flag) {
490+
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);
491+
if (indexRec > -1) {
492+
// D- → π- K+ π-
493+
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);
494+
if (indexRec > -1) {
495+
flag = sign * BIT(hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK);
496+
}
497+
}
498+
}
488499
// Partly reconstructed decays, i.e. the 4 prongs have a common b-hadron ancestor
489500
// convention: final state particles are prong0,1,2,3
490501
if (!flag) {
@@ -604,6 +615,41 @@ struct HfDataCreatorCharmHadPiReduced {
604615
}
605616
}
606617
}
618+
// Bs → Ds- K+ → (K- K+ π-) K+
619+
if (!flag) {
620+
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);
621+
if (indexRec > -1) {
622+
// Ds- → K- K+ π-
623+
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);
624+
if (indexRec > -1) {
625+
std::vector<int> arrDaughDsIndex;
626+
std::array<int, 2> arrPDGDaughDs;
627+
RecoDecay::getDaughters(particlesMc.rawIteratorAt(indexRec), &arrDaughDsIndex, std::array{0}, 1);
628+
if (arrDaughDsIndex.size() == NDaughtersDs) {
629+
for (auto iProng = 0u; iProng < arrDaughDsIndex.size(); ++iProng) {
630+
auto daughI = particlesMc.rawIteratorAt(arrDaughDsIndex[iProng]);
631+
arrPDGDaughDs[iProng] = std::abs(daughI.pdgCode());
632+
}
633+
// Ds- → Phi π- → K- K+ π- and Ds- → K0* K- → K- K+ π-
634+
if ((arrPDGDaughDs[0] == arrPDGResonantDsPhiPi[0] && arrPDGDaughDs[1] == arrPDGResonantDsPhiPi[1]) || (arrPDGDaughDs[0] == arrPDGResonantDsPhiPi[1] && arrPDGDaughDs[1] == arrPDGResonantDsPhiPi[0])) {
635+
flag = sign * BIT(hf_cand_bs::DecayTypeMc::BsToDsKToPhiPiKToKKPiK);
636+
} else if ((arrPDGDaughDs[0] == arrPDGResonantDKstarK[0] && arrPDGDaughDs[1] == arrPDGResonantDKstarK[1]) || (arrPDGDaughDs[0] == arrPDGResonantDKstarK[1] && arrPDGDaughDs[1] == arrPDGResonantDKstarK[0])) {
637+
flag = sign * BIT(hf_cand_bs::DecayTypeMc::BsToDsKToK0starKKToKKPiK);
638+
}
639+
}
640+
} else {
641+
debug = 1;
642+
LOGF(debug, "Bs decays in the expected final state but the condition on the intermediate state is not fulfilled");
643+
}
644+
645+
auto indexMother = RecoDecay::getMother(particlesMc, vecDaughtersB.back().template mcParticle_as<PParticles>(), Pdg::kBS, true);
646+
if (indexMother >= 0) {
647+
auto particleMother = particlesMc.rawIteratorAt(indexMother);
648+
motherPt = particleMother.pt();
649+
checkWrongCollision(particleMother, collision, indexCollisionMaxNumContrib, flagWrongCollision);
650+
}
651+
}
652+
}
607653
// Partly reconstructed decays, i.e. the 4 prongs have a common b-hadron ancestor
608654
// convention: final state particles are prong0,1,2,3
609655
if (!flag) {
@@ -669,7 +715,7 @@ struct HfDataCreatorCharmHadPiReduced {
669715
// D0(bar) → K+ π-;
670716
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1]}, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1);
671717
if (indexRec > -1) {
672-
flag = sign * BIT(hf_cand_bplus::DecayType::BplusToD0Pi);
718+
flag = sign * BIT(hf_cand_bplus::DecayTypeMc::BplusToD0PiToKPiPi);
673719
} else {
674720
debug = 1;
675721
LOGF(debug, "B+ decays in the expected final state but the condition on the intermediate state is not fulfilled");
@@ -684,6 +730,27 @@ struct HfDataCreatorCharmHadPiReduced {
684730
}
685731
// additional checks for correlated backgrounds
686732
if (checkDecayTypeMc) {
733+
if (!flag) {
734+
// B+ → D0(bar) K+ → (K+ π-) K+
735+
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);
736+
if (indexRec > -1) {
737+
// D0(bar) → K+ π-;
738+
indexRec = RecoDecay::getMatchedMCRec<false, false, false, true, true>(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1]}, Pdg::kD0, std::array{+kPiPlus, -kKPlus}, true, &sign, 1);
739+
if (indexRec > -1) {
740+
flag = sign * BIT(hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK);
741+
} else {
742+
debug = 1;
743+
LOGF(debug, "B+ decays in the expected final state but the condition on the intermediate state is not fulfilled");
744+
}
745+
746+
auto indexMother = RecoDecay::getMother(particlesMc, vecDaughtersB.back().template mcParticle_as<PParticles>(), Pdg::kBPlus, true);
747+
if (indexMother >= 0) {
748+
auto particleMother = particlesMc.rawIteratorAt(indexMother);
749+
motherPt = particleMother.pt();
750+
checkWrongCollision(particleMother, collision, indexCollisionMaxNumContrib, flagWrongCollision);
751+
}
752+
}
753+
}
687754
// Partly reconstructed decays, i.e. the 3 prongs have a common b-hadron ancestor
688755
// convention: final state particles are prong0,1,2
689756
if (!flag) {
@@ -769,7 +836,7 @@ struct HfDataCreatorCharmHadPiReduced {
769836
// Lc+ → p K- π+
770837
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);
771838
if (indexRec > -1) {
772-
flag = sign * BIT(hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK);
839+
flag = sign * BIT(hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK);
773840
}
774841
}
775842
}

PWGHF/D2H/Tasks/taskB0Reduced.cxx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ DECLARE_SOA_COLUMN(AbsEtaBach, absEtaBach, float);
4242
DECLARE_SOA_COLUMN(ItsNClsBach, itsNClsBach, int); //! Number of ITS clusters of bachelor pion
4343
DECLARE_SOA_COLUMN(TpcNClsCrossedRowsBach, tpcNClsCrossedRowsBach, int); //! Number of TPC crossed rows of prongs of bachelor pion
4444
DECLARE_SOA_COLUMN(TpcChi2NClBach, tpcChi2NClBach, float); //! Maximum TPC chi2 of prongs of D-meson daughter candidate
45-
DECLARE_SOA_COLUMN(PtDmesProngMin, ptProngDmesMin, float); //! Minimum pT of prongs of D-meson daughter candidate (GeV/c)
46-
DECLARE_SOA_COLUMN(AbsEtaDmesProngMin, absEtaProngDmesMin, float); //! Minimum absolute pseudorapidity of prongs of D-meson daughter candidate
45+
DECLARE_SOA_COLUMN(PtDmesProngMin, ptDmesProngMin, float); //! Minimum pT of prongs of D-meson daughter candidate (GeV/c)
46+
DECLARE_SOA_COLUMN(AbsEtaDmesProngMin, absEtaDmesProngMin, float); //! Minimum absolute pseudorapidity of prongs of D-meson daughter candidate
4747
DECLARE_SOA_COLUMN(ItsNClsDmesProngMin, itsNClsDmesProngMin, int); //! Minimum number of ITS clusters of prongs of D-meson daughter candidate
4848
DECLARE_SOA_COLUMN(TpcNClsCrossedRowsDmesProngMin, tpcNClsCrossedRowsDmesProngMin, int); //! Minimum number of TPC crossed rows of prongs of D-meson daughter candidate
4949
DECLARE_SOA_COLUMN(TpcChi2NClDmesProngMax, tpcChi2NClDmesProngMax, float); //! Maximum TPC chi2 of prongs of D-meson daughter candidate
@@ -176,13 +176,13 @@ struct HfTaskB0Reduced {
176176

177177
HfHelper hfHelper;
178178

179+
using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
180+
using CandsDplus = soa::Join<HfRed3Prongs, HfRedPidDau0s, HfRedPidDau1s, HfRedPidDau2s>;
181+
179182
Filter filterSelectCandidates = (aod::hf_sel_candidate_b0::isSelB0ToDPi >= selectionFlagB0);
180183

181184
HistogramRegistry registry{"registry"};
182185

183-
using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
184-
using CandsDplus = soa::Join<HfRed3Prongs, HfRedPidDau0s, HfRedPidDau1s, HfRedPidDau2s>;
185-
186186
void init(InitContext&)
187187
{
188188
std::array<bool, 3> processFuncData{doprocessData, doprocessDataWithDmesMl, doprocessDataWithB0Ml};
@@ -310,6 +310,8 @@ struct HfTaskB0Reduced {
310310
TString labels[kNBinsDecayTypeMc];
311311
labels[hf_cand_b0::DecayTypeMc::B0ToDplusPiToPiKPiPi] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
312312
labels[hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi] = "B^{0} #rightarrow (D^{#minus}_{s} #rightarrow K^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
313+
labels[hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi] = "B_{s}^{0} #rightarrow (D^{#minus}_{s} #rightarrow K^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
314+
labels[hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) K^{#plus}";
313315
labels[hf_cand_b0::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
314316
labels[hf_cand_b0::DecayTypeMc::OtherDecay] = "Other decays";
315317
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
@@ -463,6 +465,10 @@ struct HfTaskB0Reduced {
463465
} else if constexpr (withDecayTypeCheck) {
464466
if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi)) { // B0 → Ds- π+ → (K- K+ π-) π+
465467
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::B0ToDsPiToKKPiPi, invMassB0, ptCandB0);
468+
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi)) { // B0s → Ds- π+ → (K- K+ π-) π+
469+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::BsToDsPiToKKPiPi, invMassB0, ptCandB0);
470+
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK)) { // B0 → D- K+ → (π- K+ π-) K+
471+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::B0ToDplusKToPiKPiK, invMassB0, ptCandB0);
466472
} else if (TESTBIT(flagMcMatchRec, hf_cand_b0::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
467473
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_b0::DecayTypeMc::PartlyRecoDecay, invMassB0, ptCandB0);
468474
} else {

PWGHF/D2H/Tasks/taskBplusReduced.cxx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ struct HfTaskBplusReduced {
322322
constexpr uint8_t kNBinsDecayTypeMc = hf_cand_bplus::DecayTypeMc::NDecayTypeMc;
323323
TString labels[kNBinsDecayTypeMc];
324324
labels[hf_cand_bplus::DecayTypeMc::BplusToD0PiToKPiPi] = "B^{+} #rightarrow (#overline{D^{0}} #rightarrow K^{#plus} #pi^{#minus}) #pi^{#plus}";
325+
labels[hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK] = "B^{+} #rightarrow (#overline{D^{0}} #rightarrow K^{#plus} #pi^{#minus}) #K^{#plus}";
325326
labels[hf_cand_bplus::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
326327
labels[hf_cand_bplus::DecayTypeMc::OtherDecay] = "Other decays";
327328
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
@@ -478,7 +479,9 @@ struct HfTaskBplusReduced {
478479
registry.fill(HIST("hMlScoreSigBplusRecBg"), ptCandBplus, candidate.mlProbBplusToD0Pi());
479480
}
480481
} else if constexpr (withDecayTypeCheck) {
481-
if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
482+
if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK)) { // Partly reconstructed decay channel
483+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::BplusToD0KToKPiK, invMassBplus, ptCandBplus);
484+
} else if (TESTBIT(flagMcMatchRec, hf_cand_bplus::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
482485
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::PartlyRecoDecay, invMassBplus, ptCandBplus);
483486
} else {
484487
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_bplus::DecayTypeMc::OtherDecay, invMassBplus, ptCandBplus);

PWGHF/D2H/Tasks/taskBsReduced.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ struct HfTaskBsReduced {
127127

128128
HfHelper hfHelper;
129129

130+
using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
131+
130132
Filter filterSelectCandidates = (aod::hf_sel_candidate_bs::isSelBsToDsPi >= selectionFlagBs);
131133

132134
HistogramRegistry registry{"registry"};
133135

134-
using TracksPion = soa::Join<HfRedTracks, HfRedTracksPid>;
135-
136136
void init(InitContext&)
137137
{
138138
std::array<bool, 3> processFuncData{doprocessData, doprocessDataWithDmesMl, doprocessDataWithBsMl};
@@ -262,6 +262,8 @@ struct HfTaskBsReduced {
262262
labels[hf_cand_bs::DecayTypeMc::BsToDsPiToK0starKPiToKKPiPi] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) #pi";
263263
labels[hf_cand_bs::DecayTypeMc::B0ToDsPiToPhiPiPiToKKPiPi] = "B^{0} #rightarrow (D_{s} #rightarrow #Phi#pi #rightarrow KK#pi) #pi";
264264
labels[hf_cand_bs::DecayTypeMc::B0ToDsPiToK0starKPiToKKPiPi] = "B^{0} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) #pi";
265+
labels[hf_cand_bs::DecayTypeMc::BsToDsKToPhiPiKToKKPiK] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow #Phi#pi #rightarrow KK#pi) K";
266+
labels[hf_cand_bs::DecayTypeMc::BsToDsKToK0starKKToKKPiK] = "B^{0}_{s} #rightarrow (D_{s} #rightarrow K^{0*}K #rightarrow KK#pi) K";
265267
labels[hf_cand_bs::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
266268
labels[hf_cand_bs::DecayTypeMc::OtherDecay] = "Other decays";
267269
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};

PWGHF/D2H/Tasks/taskLbReduced.cxx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ struct HfTaskLbReduced {
306306
constexpr uint8_t kNBinsDecayTypeMc = hf_cand_lb::DecayTypeMc::NDecayTypeMc;
307307
TString labels[kNBinsDecayTypeMc];
308308
labels[hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiPi] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) #pi^{#minus}";
309-
labels[hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) K^{#minus}";
309+
labels[hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi] = "B^{0} #rightarrow (D^{#minus} #rightarrow #pi^{#minus} K^{#plus} #pi^{#minus}) #pi^{#plus}";
310+
labels[hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK] = "#Lambda_{b}^{0} #rightarrow (#Lambda_{c}^{#plus} #rightarrow p K^{#minus} #pi^{#plus}) K^{#minus}";
310311
labels[hf_cand_lb::DecayTypeMc::PartlyRecoDecay] = "Partly reconstructed decay channel";
311312
labels[hf_cand_lb::DecayTypeMc::OtherDecay] = "Other decays";
312313
static const AxisSpec axisDecayType = {kNBinsDecayTypeMc, 0.5, kNBinsDecayTypeMc + 0.5, ""};
@@ -459,8 +460,10 @@ struct HfTaskLbReduced {
459460
registry.fill(HIST("hMlScoreSigLbRecBg"), ptCandLb, candidate.mlProbLbToLcPi());
460461
}
461462
} else if constexpr (withDecayTypeCheck) {
462-
if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiPi)) { // Lb → Lc+ π- → (pK-π+) π-
463-
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::LbToLcPiToPKPiK, invMassLb, ptCandLb);
463+
if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK)) { // Lb → Lc+ K- → (pK-π+) K-
464+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::LbToLcKToPKPiK, invMassLb, ptCandLb);
465+
} else if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi)) { // // B0 → D- π+ → (π- K+ π-) π+
466+
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::B0ToDplusPiToPiKPiPi, invMassLb, ptCandLb);
464467
} else if (TESTBIT(flagMcMatchRec, hf_cand_lb::DecayTypeMc::PartlyRecoDecay)) { // Partly reconstructed decay channel
465468
registry.fill(HIST("hDecayTypeMc"), 1 + hf_cand_lb::DecayTypeMc::PartlyRecoDecay, invMassLb, ptCandLb);
466469
} else {

PWGHF/DataModel/CandidateReconstructionTables.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,7 @@ DECLARE_SOA_COLUMN(DebugMcRec, debugMcRec, int8_t); // debug fla
859859
enum DecayType { BplusToD0Pi = 0 };
860860

861861
enum DecayTypeMc : uint8_t { BplusToD0PiToKPiPi = 0,
862+
BplusToD0KToKPiK,
862863
PartlyRecoDecay,
863864
OtherDecay,
864865
NDecayTypeMc };
@@ -1913,7 +1914,7 @@ DECLARE_SOA_COLUMN(DebugMcRec, debugMcRec, int8_t); // debug fla
19131914
enum DecayType { LbToLcPi }; // move this to a dedicated cascade namespace in the future?
19141915

19151916
enum DecayTypeMc : uint8_t { LbToLcPiToPKPiPi = 0,
1916-
LbToLcPiToPKPiK,
1917+
LbToLcKToPKPiK,
19171918
B0ToDplusPiToPiKPiPi,
19181919
PartlyRecoDecay,
19191920
OtherDecay,
@@ -1987,6 +1988,7 @@ enum DecayType { B0ToDPi };
19871988
enum DecayTypeMc : uint8_t { B0ToDplusPiToPiKPiPi = 0,
19881989
B0ToDsPiToKKPiPi,
19891990
BsToDsPiToKKPiPi,
1991+
B0ToDplusKToPiKPiK,
19901992
PartlyRecoDecay,
19911993
OtherDecay,
19921994
NDecayTypeMc };
@@ -2063,6 +2065,8 @@ enum DecayTypeMc : uint8_t { BsToDsPiToPhiPiPiToKKPiPi = 0, // Bs(bar) → Ds∓
20632065
BsToDsPiToK0starKPiToKKPiPi, // Bs(bar) → Ds∓ π± → (K0* K∓) π± → (K- K+ π∓) π±
20642066
B0ToDsPiToPhiPiPiToKKPiPi, // B0(bar) → Ds± π∓ → (Phi π±) π∓ → (K- K+ π±) π∓
20652067
B0ToDsPiToK0starKPiToKKPiPi, // B0(bar) → Ds± π∓ → (K0* K±) π∓ → (K- K+ π±) π∓
2068+
BsToDsKToPhiPiKToKKPiK, // Bs(bar) → Ds± K∓ → (Phi π∓) K∓ → (K- K+ π±) K∓
2069+
BsToDsKToK0starKKToKKPiK, // Bs(bar) → Ds± K∓ → (K0* K±) K∓ → (K- K+ π±) K∓
20662070
PartlyRecoDecay, // 4 final state particles have another common b-hadron ancestor
20672071
OtherDecay,
20682072
NDecayTypeMc }; // counter of differentiated MC decay types

0 commit comments

Comments
 (0)