diff --git a/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx b/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx index 827e6396462..4d4acf759f3 100644 --- a/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx +++ b/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx @@ -1474,7 +1474,8 @@ struct HfTaskCharmPolarisation { /// Get the Q vector /// \param collision is the collision with the Q vector information - std::vector getQVec(CollsWithQVecs::iterator const& collision) + template + std::vector getQVec(Coll const& collision) { float xQVec = -999.; float yQVec = -999.; @@ -2303,59 +2304,63 @@ struct HfTaskCharmPolarisation { } PROCESS_SWITCH(HfTaskCharmPolarisation, processDstarMcWithMl, "Process Dstar candidates in MC with ML", false); - void processDstarInPbPb(CollsWithQVecs::iterator const& collision, + void processDstarInPbPb(CollsWithQVecs const& collisions, FilteredCandDstarWSelFlag const& dstarCandidates, TracksWithExtra const& tracks) { - float centrality = {-1.f}; - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); - if (centrality < centralityMin || centrality > centralityMax) { - return; // skip this collision if outside of the centrality range - } - registry.fill(HIST("hCentrality"), centrality); + for (const auto& collision : collisions) { + float centrality = {-1.f}; + centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + if (centrality < centralityMin || centrality > centralityMax) { + return; // skip this collision if outside of the centrality range + } + registry.fill(HIST("hCentrality"), centrality); - auto thisCollId = collision.globalIndex(); - int numPvContributors = collision.numContrib(); - auto groupedDstarCandidates = dstarCandidates.sliceBy(dstarPerCollision, thisCollId); - int nCands{0}, nCandsInSignalRegion{0}; + auto thisCollId = collision.globalIndex(); + int numPvContributors = collision.numContrib(); + auto groupedDstarCandidates = dstarCandidates.sliceBy(dstarPerCollision, thisCollId); + int nCands{0}, nCandsInSignalRegion{0}; - std::vector qVecs = getQVec(collision); + std::vector qVecs = getQVec(collision); - for (const auto& dstarCandidate : groupedDstarCandidates) { - nCands++; - if (runPolarisationAnalysis(dstarCandidate, 0, numPvContributors, -1 /*MC particles*/, tracks, &qVecs)) { - nCandsInSignalRegion++; + for (const auto& dstarCandidate : groupedDstarCandidates) { + nCands++; + if (runPolarisationAnalysis(dstarCandidate, 0, numPvContributors, -1 /*MC particles*/, tracks, &qVecs)) { + nCandsInSignalRegion++; + } } + fillMultHistos(numPvContributors, nCands, nCandsInSignalRegion); } - fillMultHistos(numPvContributors, nCands, nCandsInSignalRegion); } PROCESS_SWITCH(HfTaskCharmPolarisation, processDstarInPbPb, "Process Dstar candidates in PbPb collisions", false); - void processDstarWithMlInPbPb(CollsWithQVecs::iterator const& collision, + void processDstarWithMlInPbPb(CollsWithQVecs const& collisions, FilteredCandDstarWSelFlagAndMl const& dstarCandidates, TracksWithExtra const& tracks) { - float centrality = {-1.f}; - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); - if (centrality < centralityMin || centrality > centralityMax) { - return; // skip this collision if outside of the centrality range - } - registry.fill(HIST("hCentrality"), centrality); + for (const auto& collision : collisions) { + float centrality = {-1.f}; + centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + if (centrality < centralityMin || centrality > centralityMax) { + return; // skip this collision if outside of the centrality range + } + registry.fill(HIST("hCentrality"), centrality); - auto thisCollId = collision.globalIndex(); - int numPvContributors = collision.numContrib(); - auto groupedDstarCandidates = dstarCandidates.sliceBy(dstarWithMlPerCollision, thisCollId); - int nCands{0}, nCandsInSignalRegion{0}; + auto thisCollId = collision.globalIndex(); + int numPvContributors = collision.numContrib(); + auto groupedDstarCandidates = dstarCandidates.sliceBy(dstarWithMlPerCollision, thisCollId); + int nCands{0}, nCandsInSignalRegion{0}; - std::vector qVecs = getQVec(collision); + std::vector qVecs = getQVec(collision); - for (const auto& dstarCandidate : groupedDstarCandidates) { - nCands++; - if (runPolarisationAnalysis(dstarCandidate, 0, numPvContributors, -1 /*MC particles*/, tracks, &qVecs)) { - nCandsInSignalRegion++; + for (const auto& dstarCandidate : groupedDstarCandidates) { + nCands++; + if (runPolarisationAnalysis(dstarCandidate, 0, numPvContributors, -1 /*MC particles*/, tracks, &qVecs)) { + nCandsInSignalRegion++; + } } + fillMultHistos(numPvContributors, nCands, nCandsInSignalRegion); } - fillMultHistos(numPvContributors, nCands, nCandsInSignalRegion); } PROCESS_SWITCH(HfTaskCharmPolarisation, processDstarWithMlInPbPb, "Process Dstar candidates with ML in PbPb collisions", false);