@@ -154,6 +154,17 @@ static const std::unordered_map<DecayChannelResonant, const std::array<int, 2>>
154154 {DecayChannelResonant::XicToPPhi, {+PDG_t::kProton , +o2::constants::physics::Pdg::kPhi }},
155155};
156156
157+ // cd+
158+
159+ static const std::unordered_map<DecayChannelMain, const std::vector<int >> daughtersCDeuteronMain{
160+ {DecayChannelMain::CDeuteronToDeKPi, {+o2::constants::physics::Pdg::kDeuteron , +PDG_t::kKMinus , +PDG_t::kPiPlus }}
161+ };
162+
163+ // / resonances in c-deuteron decay are not stored in the particle stack for c-deuteron, but tagged with specific status codes
164+ static constexpr int statusCodeCDeuteronToDeKstar0{95 };
165+ static constexpr int statusCodeCDeuteronToNeDeltaplusK{96 };
166+ static constexpr int statusCodeCDeuteronToNeL1520Pi{97 };
167+
157168// / Returns a map of the possible final states for a specific 3-prong particle specie
158169// / \param pdgMother PDG code of the mother particle
159170// / \return a map of final states with their corresponding PDG codes
@@ -170,6 +181,8 @@ inline std::unordered_map<DecayChannelMain, const std::vector<int>> getDecayChan
170181 return daughtersLcMain;
171182 case o2::constants::physics::Pdg::kXiCPlus :
172183 return daughtersXicMain;
184+ case o2::constants::physics::Pdg::kCDeuteron :
185+ return daughtersCDeuteronMain;
173186 default :
174187 LOG (fatal) << " Unknown PDG code for 3-prong final states: " << pdgMother;
175188 return {};
@@ -317,6 +330,27 @@ inline void flipPdgSign(const int pdgMother, const int pdgToFlip, std::array<int
317330 }
318331 }
319332}
333+ // / Get resonant channel for c-deuteron
334+ // / resonances are not stored in the particle stack for c-deuteron, but tagged with specific status codes
335+ // / \tparam particle is the c-deuteron
336+ // / \param pdgMother PDG code of the mother particle
337+ // / \param pdgToFlip PDG code to be flipped
338+ // / \param arrPdg array of PDG codes to be modified
339+ template <typename Part>
340+ inline int getResonantDecayCDeuteron (Part const & particle)
341+ {
342+ auto statusCode = std::abs (particle.getGenStatusCode ());
343+ if (statusCode == o2::hf_decay::hf_cand_3prong::statusCodeCDeuteronToDeKstar0) {
344+ return o2::hf_decay::hf_cand_3prong::DecayChannelResonant::CDeuteronToDeKstar0;
345+ }
346+ if (statusCode == o2::hf_decay::hf_cand_3prong::statusCodeCDeuteronToNeDeltaplusK) {
347+ return o2::hf_decay::hf_cand_3prong::DecayChannelResonant::CDeuteronToNeDeltaplusK;
348+ }
349+ if (statusCode == o2::hf_decay::hf_cand_3prong::statusCodeCDeuteronToNeL1520Pi) {
350+ return o2::hf_decay::hf_cand_3prong::DecayChannelResonant::CDeuteronToNeL1520Pi;
351+ }
352+ return 0 ;
353+ }
320354} // namespace o2::hf_decay
321355
322356#endif // PWGHF_UTILS_UTILSMCMATCHING_H_
0 commit comments