@@ -115,9 +115,12 @@ struct Filter2Prong {
115115
116116 using HFCandidates = soa::Join<aod::HfCand2Prong, aod::HfSelD0>;
117117 using HFCandidatesML = soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0>;
118+ using HFCandidatesMCRecoML = soa::Join<aod::HfCand2Prong, aod::HfCand2ProngMcRec, aod::HfSelD0, aod::HfMlD0>;
118119
119120 template <class T >
120121 using HasMLProb = decltype (std::declval<T&>().mlProbD0());
122+ template <class T >
123+ using HasFlagMcMatchRec = decltype (std::declval<T&>().flagMcMatchRec());
121124
122125 using PIDTrack = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr, aod::pidTOFPi, aod::pidTOFKa, aod::pidTOFPr, aod::pidTOFbeta, aod::TracksDCA>;
123126 using ResoV0s = aod::V0Datas;
@@ -170,6 +173,10 @@ struct Filter2Prong {
170173 continue ;
171174 if (cfgYMax >= 0 .0f && std::abs (hfHelper.yD0 (c)) > cfgYMax)
172175 continue ;
176+ if constexpr (std::experimental::is_detected<HasFlagMcMatchRec, typename HFCandidatesType::iterator>::value) {
177+ if (std::abs (c.flagMcMatchRec ()) != o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK)
178+ continue ;
179+ }
173180
174181 if (c.isSelD0 () > 0 ) {
175182 output2ProngTracks (cfcollisions.begin ().globalIndex (),
@@ -213,6 +220,12 @@ struct Filter2Prong {
213220 }
214221 PROCESS_SWITCH (Filter2Prong, processData, " Process data D0 candidates" , true );
215222
223+ void processMCRecoML (aod::Collisions::iterator const & col, aod::BCsWithTimestamps const & bcs, aod::CFCollRefs const & cfcollisions, aod::CFTrackRefs const & cftracks, HFCandidatesMCRecoML const & candidates)
224+ {
225+ processDataT (col, bcs, cfcollisions, cftracks, candidates);
226+ }
227+ PROCESS_SWITCH (Filter2Prong, processMCRecoML, " Process data D0 candidates together with reco information and ML" , false );
228+
216229 using HFMCTrack = soa::Join<aod::McParticles, aod::HfCand2ProngMcGen>;
217230 void processMC (aod::McCollisions::iterator const &, aod::CFMcParticleRefs const & cfmcparticles, [[maybe_unused]] HFMCTrack const & mcparticles)
218231 {
@@ -233,7 +246,7 @@ struct Filter2Prong {
233246 }
234247 }
235248 output2ProngMcParts (prongCFId[0 ], prongCFId[1 ],
236- (mcParticle.pdgCode () >= 0 ? aod::cf2prongtrack::D0ToPiK : aod::cf2prongtrack::D0barToKPi) | ((mcParticle.originMcGen () & RecoDecay::OriginType::Prompt) ? aod::cf2prongmcpart::Prompt : 0 ));
249+ (mcParticle.pdgCode () >= 0 ? aod::cf2prongtrack::D0ToPiK : aod::cf2prongtrack::D0barToKPi) | ((mcParticle.originMcGen () == RecoDecay::OriginType::Prompt) ? aod::cf2prongmcpart::Prompt : 0 ));
237250 }
238251 }
239252 PROCESS_SWITCH (Filter2Prong, processMC, " Process MC 2-prong daughters" , false );
0 commit comments