diff --git a/PWGHF/D2H/Tasks/taskCd.cxx b/PWGHF/D2H/Tasks/taskCd.cxx index 7b2770d69cb..266d2612552 100644 --- a/PWGHF/D2H/Tasks/taskCd.cxx +++ b/PWGHF/D2H/Tasks/taskCd.cxx @@ -249,8 +249,8 @@ struct HfTaskCd { }; /// Fill histograms for real data - template - void fillHistosData(CollType const& collision, CandType const& candidates, TrackType const& /*tracks*/, BcType const& /*bcs*/) + template + void fillHistosData(CollType const& collision, CandType const& candidates, TrackType const& /*tracks*/, TrackWithItsType const& tracksWithItsPid, BcType const& /*bcs*/) { auto thisCollId = collision.globalIndex(); auto groupedCdCandidates = candidates.sliceBy(candCdPerCollision, thisCollId); @@ -363,6 +363,9 @@ struct HfTaskCd { auto prong1 = candidate.template prong1_as(); auto prong2 = candidate.template prong2_as(); + auto prong0Its = tracksWithItsPid.iteratorAt(candidate.prong0Id() - tracksWithItsPid.offset()); + auto prong2Its = tracksWithItsPid.iteratorAt(candidate.prong2Id() - tracksWithItsPid.offset()); + if (selDeKPi) { candFlag = 1; pSignedDe = prong0.p() * prong0.sign(); @@ -371,7 +374,7 @@ struct HfTaskCd { nSigmaTofDe = candidate.nSigTofDe0(); nSigmaTpcPi = candidate.nSigTpcPi2(); nSigmaTofPi = candidate.nSigTofPi2(); - nSigmaItsDe = prong0.itsNSigmaDe(); + nSigmaItsDe = prong0Its.itsNSigmaDe(); itsNClusterDe = prong0.itsNCls(); itsNClusterSizeDe = prong0.itsClusterSizes(); tpcNClusterDe = prong0.tpcNClsCrossedRows(); @@ -385,7 +388,7 @@ struct HfTaskCd { nSigmaTofDe = candidate.nSigTofDe2(); nSigmaTpcPi = candidate.nSigTpcPi0(); nSigmaTofPi = candidate.nSigTofPi0(); - nSigmaItsDe = prong2.itsNSigmaDe(); + nSigmaItsDe = prong2Its.itsNSigmaDe(); itsNClusterDe = prong2.itsNCls(); itsNClusterSizeDe = prong2.itsClusterSizes(); tpcNClusterDe = prong2.tpcNClsCrossedRows(); @@ -431,15 +434,16 @@ struct HfTaskCd { } } /// Run the analysis on real data - template + template void runAnalysisPerCollisionData(CollType const& collisions, CandType const& candidates, TrackType const& tracks, + TrackWithItsType const& tracksWithItsPid, BcType const& bcs) { for (const auto& collision : collisions) { - fillHistosData(collision, candidates, tracks, bcs); + fillHistosData(collision, candidates, tracks, tracksWithItsPid, bcs); } } @@ -450,7 +454,7 @@ struct HfTaskCd { { // inlcude ITS PID information auto tracksWithItsPid = soa::Attach(tracks); - runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracksWithItsPid, bcWithTimeStamps); + runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracks, tracksWithItsPid, bcWithTimeStamps); } PROCESS_SWITCH(HfTaskCd, processDataStd, "Process Data with the standard method", true); @@ -461,7 +465,7 @@ struct HfTaskCd { { // inlcude ITS PID information auto tracksWithItsPid = soa::Attach(tracks); - runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracksWithItsPid, bcWithTimeStamps); + runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracks, tracksWithItsPid, bcWithTimeStamps); } PROCESS_SWITCH(HfTaskCd, processDataStdWithFT0C, "Process real data with the standard method and with FT0C centrality", false); @@ -472,7 +476,7 @@ struct HfTaskCd { { // inlcude ITS PID information auto tracksWithItsPid = soa::Attach(tracks); - runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracksWithItsPid, bcWithTimeStamps); + runAnalysisPerCollisionData(collisions, selectedCdCandidates, tracks, tracksWithItsPid, bcWithTimeStamps); } PROCESS_SWITCH(HfTaskCd, processDataStdWithFT0M, "Process real data with the standard method and with FT0M centrality", false); }; diff --git a/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx b/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx index dc75f4fbe07..b085d6d2fda 100644 --- a/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx +++ b/PWGHF/HFC/TableProducer/producerCharmHadronsTrackFemtoDream.cxx @@ -740,6 +740,8 @@ struct HfProducerCharmHadronsTrackFemtoDream { } 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()) + fillTable(2, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); // tag reflection } else if constexpr (Channel == DecayChannel::DstarToD0Pi) { if constexpr (UseCharmMl) { diff --git a/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx b/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx index 747b385f2a2..b83ddf58dc4 100644 --- a/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx +++ b/PWGHF/HFC/TableProducer/producerCharmHadronsV0FemtoDream.cxx @@ -925,6 +925,8 @@ struct HfProducerCharmHadronsV0FemtoDream { } 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()) + fillTable(2, candidate.isSelD0(), outputMlD0.at(0), outputMlD0.at(1), outputMlD0.at(2)); // tag reflection } else if constexpr (Channel == DecayChannel::DstarToD0Pi) { if constexpr (UseCharmMl) {