Skip to content

Commit 990e762

Browse files
authored
[PWGCF] Add MC reco flags check, fix prompt check (#12284)
1 parent 5e973e1 commit 990e762

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

PWGCF/TableProducer/filter2Prong.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)