From 065a372472f3e36f4dfe4902f061b9953077f018 Mon Sep 17 00:00:00 2001 From: fchinu Date: Thu, 17 Oct 2024 12:02:10 +0200 Subject: [PATCH 1/4] PWGHF: use contain to choose the partition to use instead of an std::map in Ds task --- PWGHF/D2H/Tasks/taskDs.cxx | 52 +++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDs.cxx b/PWGHF/D2H/Tasks/taskDs.cxx index f962cc5acfc..e5d2c5ff607 100644 --- a/PWGHF/D2H/Tasks/taskDs.cxx +++ b/PWGHF/D2H/Tasks/taskDs.cxx @@ -78,7 +78,6 @@ struct HfTaskDs { HfHelper hfHelper; - using CentralityEstimator = o2::hf_centrality::CentralityEstimator; using TH1_ptr = std::shared_ptr; using TH2_ptr = std::shared_ptr; using THnSparse_ptr = std::shared_ptr; @@ -128,12 +127,6 @@ struct HfTaskDs { std::unordered_map mcDplusBkgHistograms = {}; std::unordered_map mcBkgHistograms = {}; - std::map, PresliceUnsorted, PresliceUnsorted, PresliceUnsorted>> colPerMcCollisionMap{ - {CentralityEstimator::None, colPerMcCollision}, - {CentralityEstimator::FT0C, colPerMcCollisionWithFT0C}, - {CentralityEstimator::FT0M, colPerMcCollisionWithFT0M}, - {CentralityEstimator::NTracksPV, colPerMcCollisionWithNTracksPV}}; - std::array, DataType::kDataTypes> histosPtr = {dataHistograms, mcDsPromptHistograms, mcDsNonPromptHistograms, mcDplusPromptHistograms, mcDplusNonPromptHistograms, mcDplusBkgHistograms, mcBkgHistograms}; void init(InitContext&) @@ -511,7 +504,7 @@ struct HfTaskDs { // TODO: add histograms for reflections } - template + template void fillMcGenHistos(CandDsMcGen const& mcParticles, Coll const& recoCollisions) { @@ -523,9 +516,26 @@ struct HfTaskDs { double y{0.f}; unsigned maxNumContrib = 0; - const auto& recoCollsPerMcColl = recoCollisions.sliceBy(std::get>(colPerMcCollisionMap.at(centDetector)), particle.mcCollision().globalIndex()); - for (const auto& recCol : recoCollsPerMcColl) { - maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; + if constexpr (recoCollisions. template contains()) { + const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0C, particle.mcCollision().globalIndex()); + for (const auto& recCol : recoCollsPerMcColl) { + maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; + } + } else if constexpr (recoCollisions. template contains()) { + const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0M, particle.mcCollision().globalIndex()); + for (const auto& recCol : recoCollsPerMcColl) { + maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; + } + } else if constexpr (recoCollisions. template contains()) { + const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithNTracksPV, particle.mcCollision().globalIndex()); + for (const auto& recCol : recoCollsPerMcColl) { + maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; + } + } else { // No centrality estimator + const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollision, particle.mcCollision().globalIndex()); + for (const auto& recCol : recoCollsPerMcColl) { + maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; + } } if (particle.flagMcDecayChanGen() == decayChannel) { @@ -615,7 +625,7 @@ struct HfTaskDs { } } - template + template void runMcAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs, const CandDsMcGen& mcParticles, @@ -673,7 +683,7 @@ struct HfTaskDs { } fillNPvContribHisto(collision, nCandsPerType, nCandsInSignalRegionDsPerType, nCandsInSignalRegionDplusPerType); } - fillMcGenHistos(mcParticles, collisions); + fillMcGenHistos(mcParticles, collisions); } void processDataWithCentFT0C(CollisionsWithFT0C const& collisions, @@ -746,7 +756,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0C, "Process MC w/o ML information on Ds, with information on centrality from FT0C", false); @@ -756,7 +766,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0M, "Process MC w/o ML information on Ds, with information on centrality from FT0M", false); @@ -766,7 +776,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithCentNTracksPV, "Process MC w/o ML information on Ds, with information on centrality from NTracksPV", false); @@ -776,7 +786,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); } PROCESS_SWITCH(HfTaskDs, processMc, "Process MC w/o ML information on Ds, w/o information on centrality", false); @@ -786,7 +796,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0C, "Process MC with ML information on Ds, with information on centrality from FT0C", false); @@ -796,7 +806,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0M, "Process MC with ML information on Ds, with information on centrality from FT0M", false); @@ -806,7 +816,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentNTracksPV, "Process MC with ML information on Ds, with information on centrality from NTracksPV", false); @@ -816,7 +826,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); } PROCESS_SWITCH(HfTaskDs, processMcWithMl, "Process MC with ML information on Ds, w/o information on centrality", false); }; From 3fc022852e8f0db6bb37ed0654ce100aba6d7feb Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 17 Oct 2024 10:07:27 +0000 Subject: [PATCH 2/4] Please consider the following formatting changes --- PWGHF/D2H/Tasks/taskDs.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDs.cxx b/PWGHF/D2H/Tasks/taskDs.cxx index e5d2c5ff607..75d4b9d558a 100644 --- a/PWGHF/D2H/Tasks/taskDs.cxx +++ b/PWGHF/D2H/Tasks/taskDs.cxx @@ -516,17 +516,17 @@ struct HfTaskDs { double y{0.f}; unsigned maxNumContrib = 0; - if constexpr (recoCollisions. template contains()) { + if constexpr (recoCollisions.template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0C, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; } - } else if constexpr (recoCollisions. template contains()) { + } else if constexpr (recoCollisions.template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0M, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; } - } else if constexpr (recoCollisions. template contains()) { + } else if constexpr (recoCollisions.template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithNTracksPV, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; From e8b254f1dab2924367a7589a054e4cd672c77913 Mon Sep 17 00:00:00 2001 From: fchinu Date: Fri, 18 Oct 2024 12:01:23 +0200 Subject: [PATCH 3/4] Change object function call to class function call --- PWGHF/D2H/Tasks/taskDs.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDs.cxx b/PWGHF/D2H/Tasks/taskDs.cxx index 75d4b9d558a..0e7cb3f1b15 100644 --- a/PWGHF/D2H/Tasks/taskDs.cxx +++ b/PWGHF/D2H/Tasks/taskDs.cxx @@ -516,17 +516,17 @@ struct HfTaskDs { double y{0.f}; unsigned maxNumContrib = 0; - if constexpr (recoCollisions.template contains()) { + if constexpr (Coll::template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0C, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; } - } else if constexpr (recoCollisions.template contains()) { + } else if constexpr (Coll::template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0M, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; } - } else if constexpr (recoCollisions.template contains()) { + } else if constexpr (Coll::template contains()) { const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithNTracksPV, particle.mcCollision().globalIndex()); for (const auto& recCol : recoCollsPerMcColl) { maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; From b4e8c124bd76de62109146e5d7d31e9f920b1fc4 Mon Sep 17 00:00:00 2001 From: fchinu Date: Sun, 20 Oct 2024 22:45:19 +0200 Subject: [PATCH 4/4] Implement Anton's comments --- PWGHF/D2H/Tasks/taskDs.cxx | 71 ++++++++++++-------------------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/PWGHF/D2H/Tasks/taskDs.cxx b/PWGHF/D2H/Tasks/taskDs.cxx index 0e7cb3f1b15..67fdf886491 100644 --- a/PWGHF/D2H/Tasks/taskDs.cxx +++ b/PWGHF/D2H/Tasks/taskDs.cxx @@ -100,15 +100,8 @@ struct HfTaskDs { using CandDsMcRecoWithMl = soa::Filtered>; using CandDsMcGen = soa::Join; - Preslice candDsDataPerCollision = aod::hf_cand::collisionId; - Preslice candDsDataWithMlPerCollision = aod::hf_cand::collisionId; - Preslice candDsMcRecoPerCollision = aod::hf_cand::collisionId; - Preslice candDsMcRecoWithMlPerCollision = aod::hf_cand::collisionId; - - PresliceUnsorted colPerMcCollision = aod::mccollisionlabel::mcCollisionId; - PresliceUnsorted colPerMcCollisionWithFT0C = aod::mccollisionlabel::mcCollisionId; - PresliceUnsorted colPerMcCollisionWithFT0M = aod::mccollisionlabel::mcCollisionId; - PresliceUnsorted colPerMcCollisionWithNTracksPV = aod::mccollisionlabel::mcCollisionId; + Preslice candDsPerCollision = aod::hf_cand::collisionId; + PresliceUnsorted colPerMcCollision = aod::mccollisionlabel::mcCollisionId; SliceCache cache; int offsetDplusDecayChannel = aod::hf_cand_3prong::DecayChannelDToKKPi::DplusToPhiPi - aod::hf_cand_3prong::DecayChannelDToKKPi::DsToPhiPi; // Offset between Dplus and Ds to use the same decay channel. See aod::hf_cand_3prong::DecayChannelDToKKPi @@ -516,26 +509,9 @@ struct HfTaskDs { double y{0.f}; unsigned maxNumContrib = 0; - if constexpr (Coll::template contains()) { - const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0C, particle.mcCollision().globalIndex()); - for (const auto& recCol : recoCollsPerMcColl) { - maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; - } - } else if constexpr (Coll::template contains()) { - const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithFT0M, particle.mcCollision().globalIndex()); - for (const auto& recCol : recoCollsPerMcColl) { - maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; - } - } else if constexpr (Coll::template contains()) { - const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollisionWithNTracksPV, particle.mcCollision().globalIndex()); - for (const auto& recCol : recoCollsPerMcColl) { - maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; - } - } else { // No centrality estimator - const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollision, particle.mcCollision().globalIndex()); - for (const auto& recCol : recoCollsPerMcColl) { - maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; - } + const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollision, particle.mcCollision().globalIndex()); + for (const auto& recCol : recoCollsPerMcColl) { + maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib; } if (particle.flagMcDecayChanGen() == decayChannel) { @@ -598,7 +574,7 @@ struct HfTaskDs { } template - void runDataAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs, Preslice candDsPerCollision) + void runDataAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs) { for (const auto& collision : collisions) { auto thisCollId = collision.globalIndex(); @@ -628,8 +604,7 @@ struct HfTaskDs { template void runMcAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs, - const CandDsMcGen& mcParticles, - Preslice candDsPerCollision) + const CandDsMcGen& mcParticles) { for (const auto& collision : collisions) { auto thisCollId = collision.globalIndex(); @@ -690,7 +665,7 @@ struct HfTaskDs { CandDsData const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithCentFT0C, "Process data w/o ML information on Ds, with information on centrality from FT0C", false); @@ -698,7 +673,7 @@ struct HfTaskDs { CandDsData const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithCentFT0M, "Process data w/o ML information on Ds, with information on centrality from FT0M", false); @@ -706,7 +681,7 @@ struct HfTaskDs { CandDsData const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithCentNTracksPV, "Process data w/o ML information on Ds, with information on centrality from NTracksPV", false); @@ -714,7 +689,7 @@ struct HfTaskDs { CandDsData const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processData, "Process data w/o ML information on Ds, w/o information on centrality", true); @@ -722,7 +697,7 @@ struct HfTaskDs { CandDsDataWithMl const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentFT0C, "Process data with ML information on Ds, with information on centrality from FT0C", false); @@ -730,7 +705,7 @@ struct HfTaskDs { CandDsDataWithMl const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentFT0M, "Process data with ML information on Ds, with information on centrality from FT0M", false); @@ -738,7 +713,7 @@ struct HfTaskDs { CandDsDataWithMl const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentNTracksPV, "Process data with ML information on Ds, with information on centrality", false); @@ -746,7 +721,7 @@ struct HfTaskDs { CandDsDataWithMl const& candsDs, aod::Tracks const&) { - runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision); + runDataAnalysisPerCollision(collisions, candsDs); } PROCESS_SWITCH(HfTaskDs, processDataWithMl, "Process data with ML information on Ds, w/o information on centrality", false); @@ -756,7 +731,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0C, "Process MC w/o ML information on Ds, with information on centrality from FT0C", false); @@ -766,7 +741,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0M, "Process MC w/o ML information on Ds, with information on centrality from FT0M", false); @@ -776,7 +751,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithCentNTracksPV, "Process MC w/o ML information on Ds, with information on centrality from NTracksPV", false); @@ -786,7 +761,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMc, "Process MC w/o ML information on Ds, w/o information on centrality", false); @@ -796,7 +771,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0C, "Process MC with ML information on Ds, with information on centrality from FT0C", false); @@ -806,7 +781,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0M, "Process MC with ML information on Ds, with information on centrality from FT0M", false); @@ -816,7 +791,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentNTracksPV, "Process MC with ML information on Ds, with information on centrality from NTracksPV", false); @@ -826,7 +801,7 @@ struct HfTaskDs { aod::McCollisions const&, aod::TracksWMc const&) { - runMcAnalysisPerCollision(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision); + runMcAnalysisPerCollision(collisions, candsDs, mcParticles); } PROCESS_SWITCH(HfTaskDs, processMcWithMl, "Process MC with ML information on Ds, w/o information on centrality", false); };