diff --git a/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx b/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx index b085d6d2fda..22956fa8d89 100644 --- a/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx +++ b/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx @@ -9,7 +9,7 @@ // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. -/// \file femtoDreamProducer.cxx +/// \file producerCharmHadronsTrackFemtoDream.cxx /// \brief Tasks that produces the track tables used for the pairing /// \author Ravindra Singh, GSI, ravindra.singh@cern.ch /// \author Biao Zhang, Heidelberg University, biao.zhang@cern.ch @@ -98,6 +98,12 @@ enum DecayChannel { DplusToPiKPi = 0, DstarToD0Pi }; +enum class D0CandFlag : uint8_t { + D0 = 0, + D0Bar = 1, + Reflected = 2 +}; + struct HfProducerCharmHadronsTrackFemtoDream { Produces outputCollision; @@ -586,11 +592,13 @@ struct HfProducerCharmHadronsTrackFemtoDream { bdtScoreFd); } else if constexpr (Channel == DecayChannel::D0ToPiK) { - int signD0 = 0; - if (candFlag == 0) { - signD0 = +1; // D0 - } else if (candFlag == 1) { - signD0 = -1; // anti-D0 + int signD0 = -999; + if (candFlag == static_cast(D0CandFlag::D0)) { + signD0 = +1; + } else if (candFlag == static_cast(D0CandFlag::D0Bar)) { + signD0 = -1; + } else if (candFlag == static_cast(D0CandFlag::Reflected)) { + signD0 = 0; } else { LOG(error) << "Unexpected candFlag = " << candFlag; } @@ -738,10 +746,12 @@ struct HfProducerCharmHadronsTrackFemtoDream { LOGF(fatal, "Please check your Ml configuration!!"); } } - fillTable(0, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); - fillTable(1, candidate.isSelD0bar(), outputMlD0bar.at(0), outputMlD0bar.at(1), outputMlD0bar.at(2)); - if (candidate.isSelD0() && candidate.isSelD0bar()) + if (candidate.isSelD0() && candidate.isSelD0bar()) { fillTable(2, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); // tag reflection + } else { + fillTable(0, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); + fillTable(1, candidate.isSelD0bar(), outputMlD0bar.at(0), outputMlD0bar.at(1), outputMlD0bar.at(2)); + } } else if constexpr (Channel == DecayChannel::DstarToD0Pi) { if constexpr (UseCharmMl) { diff --git a/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx b/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx index b83ddf58dc4..e95ea304bae 100644 --- a/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx +++ b/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx @@ -104,6 +104,12 @@ enum V0Channel { Lambda }; +enum class D0CandFlag : uint8_t { + D0 = 0, + D0Bar = 1, + Reflected = 2 +}; + struct HfProducerCharmHadronsV0FemtoDream { Produces outputCollision; @@ -771,11 +777,13 @@ struct HfProducerCharmHadronsV0FemtoDream { bdtScoreFd); } else if constexpr (Channel == DecayChannel::D0ToPiK) { - int signD0 = 0; - if (candFlag == 0) { - signD0 = +1; // D0 - } else if (candFlag == 1) { - signD0 = -1; // anti-D0 + int signD0 = -999; + if (candFlag == static_cast(D0CandFlag::D0)) { + signD0 = +1; + } else if (candFlag == static_cast(D0CandFlag::D0Bar)) { + signD0 = -1; + } else if (candFlag == static_cast(D0CandFlag::Reflected)) { + signD0 = 0; } else { LOG(error) << "Unexpected candFlag = " << candFlag; } @@ -923,10 +931,12 @@ struct HfProducerCharmHadronsV0FemtoDream { LOGF(fatal, "Please check your Ml configuration!!"); } } - fillTable(0, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); - fillTable(1, candidate.isSelD0bar(), outputMlD0bar.at(0), outputMlD0bar.at(1), outputMlD0bar.at(2)); - if (candidate.isSelD0() && candidate.isSelD0bar()) + if (candidate.isSelD0() && candidate.isSelD0bar()) { fillTable(2, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); // tag reflection + } else { + fillTable(0, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); + fillTable(1, candidate.isSelD0bar(), outputMlD0bar.at(0), outputMlD0bar.at(1), outputMlD0bar.at(2)); + } } else if constexpr (Channel == DecayChannel::DstarToD0Pi) { if constexpr (UseCharmMl) { diff --git a/PWGHF/HFC/Tasks/taskCharmHadronsTrackFemtoDream.cxx b/PWGHF/HFC/Tasks/taskCharmHadronsTrackFemtoDream.cxx index e4deb4835d6..962e8b07c91 100644 --- a/PWGHF/HFC/Tasks/taskCharmHadronsTrackFemtoDream.cxx +++ b/PWGHF/HFC/Tasks/taskCharmHadronsTrackFemtoDream.cxx @@ -75,7 +75,8 @@ struct HfTaskCharmHadronsTrackFemtoDream { enum PairSign { PairNotDefined = 0, LikeSignPair = 1, - UnLikeSignPair = 2 + UnLikeSignPair = 2, + ReflectedPair = 3 }; // decay channels enum DecayChannel { DplusToPiKPi = 0, @@ -529,9 +530,12 @@ struct HfTaskCharmHadronsTrackFemtoDream { int pairSign = 0; if (chargeTrack == p2.charge()) { pairSign = LikeSignPair; - } else { + } else if (chargeTrack == -p2.charge()) { pairSign = UnLikeSignPair; + } else { + pairSign = ReflectedPair; } + /// Filling QA histograms of the selected tracks selectedTrackHisto.fillQA(p1, static_cast(confTempFitVarMomentum.value), col.multNtr(), col.multV0M()); @@ -655,8 +659,10 @@ struct HfTaskCharmHadronsTrackFemtoDream { int pairSign = 0; if (chargeTrack == p2.charge()) { pairSign = LikeSignPair; - } else { + } else if (chargeTrack == -p2.charge()) { pairSign = UnLikeSignPair; + } else { + pairSign = ReflectedPair; } int charmHadMc = 0; diff --git a/PWGHF/HFC/Tasks/taskCharmHadronsV0FemtoDream.cxx b/PWGHF/HFC/Tasks/taskCharmHadronsV0FemtoDream.cxx index 4b8022ef252..e75593574b7 100644 --- a/PWGHF/HFC/Tasks/taskCharmHadronsV0FemtoDream.cxx +++ b/PWGHF/HFC/Tasks/taskCharmHadronsV0FemtoDream.cxx @@ -69,7 +69,8 @@ struct HfTaskCharmHadronsV0FemtoDream { enum PairSign { PairNotDefined = 0, LikeSignPair = 1, - UnLikeSignPair = 2 + UnLikeSignPair = 2, + ReflectedPair = 3 }; // decay channels enum DecayChannel { DplusToPiKPi = 0, @@ -466,8 +467,10 @@ struct HfTaskCharmHadronsV0FemtoDream { int pairSign = 0; if (chargeV0 == p2.charge()) { pairSign = LikeSignPair; - } else { + } else if (chargeV0 == -p2.charge()) { pairSign = UnLikeSignPair; + } else { + pairSign = ReflectedPair; } int charmHadMc = 0; @@ -554,8 +557,10 @@ struct HfTaskCharmHadronsV0FemtoDream { int pairSign = 0; if (chargeV0 == p2.charge()) { pairSign = LikeSignPair; - } else { + } else if (chargeV0 == -p2.charge()) { pairSign = UnLikeSignPair; + } else { + pairSign = ReflectedPair; } int charmHadMc = 0;