From 9637a005e8ff170c1d374cfa048375b58043e49e Mon Sep 17 00:00:00 2001 From: gianniliveraro Date: Sun, 13 Jul 2025 18:01:27 -0300 Subject: [PATCH 1/2] Custom v0 grouping in sigma0builder --- .../Strangeness/sigma0builder.cxx | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/PWGLF/TableProducer/Strangeness/sigma0builder.cxx b/PWGLF/TableProducer/Strangeness/sigma0builder.cxx index acdae0bca7c..bd2f41e02d4 100644 --- a/PWGLF/TableProducer/Strangeness/sigma0builder.cxx +++ b/PWGLF/TableProducer/Strangeness/sigma0builder.cxx @@ -63,7 +63,7 @@ struct sigma0builder { Service ccdb; ctpRateFetcher rateFetcher; - SliceCache cache; + //SliceCache cache; Produces sigma0cores; // save sigma0 candidates for analysis Produces sigmaPhotonExtras; // save sigma0 candidates for analysis @@ -71,8 +71,8 @@ struct sigma0builder { Produces sigma0mccores; // For manual sliceBy - PresliceUnsorted perCollisionMCDerived = o2::aod::v0data::straCollisionId; - PresliceUnsorted perCollisionSTDDerived = o2::aod::v0data::straCollisionId; + //PresliceUnsorted perCollisionMCDerived = o2::aod::v0data::straCollisionId; + //PresliceUnsorted perCollisionSTDDerived = o2::aod::v0data::straCollisionId; PresliceUnsorted> perMcCollision = aod::v0data::straMCCollisionId; // pack track quality but separte also afterburner @@ -385,7 +385,7 @@ struct sigma0builder { } template - bool IsEventAccepted(TCollision collision, bool fillHists) + bool IsEventAccepted(TCollision const& collision, bool fillHists) // check whether the collision passes our collision selections { if (fillHists) @@ -1138,16 +1138,27 @@ struct sigma0builder { void processMonteCarlo(soa::Join const& collisions, V0DerivedMCDatas const& fullV0s, dauTracks const&, aod::MotherMCParts const&, soa::Join const&, soa::Join const&) { + // Initialize auxiliary vectors + std::vector bestGammasArray; + std::vector bestLambdasArray; + + // brute force grouped index construction + std::vector> v0grouped(collisions.size()); + + for (const auto& v0 : fullV0s) { + v0grouped[v0.straCollisionId()].push_back(v0.globalIndex()); + } + for (const auto& coll : collisions) { + // Clear vectors + bestGammasArray.clear(); + bestLambdasArray.clear(); if (!IsEventAccepted(coll, true)) continue; - // Do analysis with collision-grouped V0s, retain full collision information - const uint64_t collIdx = coll.globalIndex(); - auto V0s = fullV0s.sliceBy(perCollisionMCDerived, collIdx); float centrality = doPPAnalysis ? coll.centFT0M() : coll.centFT0C(); - + bool fhasMCColl = false; if (coll.has_straMCCollision()) fhasMCColl = true; @@ -1164,12 +1175,11 @@ struct sigma0builder { histos.fill(HIST("GeneralQA/hCentralityVsInteractionRate"), centrality, interactionRate); } - std::vector bestGammasArray; - std::vector bestLambdasArray; - //_______________________________________________ // V0s loop - for (auto& v0 : V0s) { + for (size_t i = 0; i < v0grouped[coll.globalIndex()].size(); i++) { + auto v0 = fullV0s.rawIteratorAt(v0grouped[coll.globalIndex()][i]); + if (!v0.has_v0MCCore()) continue; @@ -1317,14 +1327,25 @@ struct sigma0builder { void processRealData(soa::Join const& collisions, V0StandardDerivedDatas const& fullV0s, dauTracks const&) { + // Initialize auxiliary vectors + std::vector bestGammasArray; + std::vector bestLambdasArray; + + // brute force grouped index construction + std::vector> v0grouped(collisions.size()); + + for (const auto& v0 : fullV0s) { + v0grouped[v0.straCollisionId()].push_back(v0.globalIndex()); + } + for (const auto& coll : collisions) { + // Clear vectors + bestGammasArray.clear(); + bestLambdasArray.clear(); if (!IsEventAccepted(coll, true)) continue; - // Do analysis with collision-grouped V0s, retain full collision information - const uint64_t collIdx = coll.globalIndex(); - auto V0s = fullV0s.sliceBy(perCollisionSTDDerived, collIdx); float centrality = doPPAnalysis ? coll.centFT0M() : coll.centFT0C(); //_______________________________________________ @@ -1339,12 +1360,10 @@ struct sigma0builder { histos.fill(HIST("GeneralQA/hCentralityVsInteractionRate"), centrality, interactionRate); } - std::vector bestGammasArray; - std::vector bestLambdasArray; - //_______________________________________________ // V0s loop - for (auto& v0 : V0s) { + for (size_t i = 0; i < v0grouped[coll.globalIndex()].size(); i++) { + auto v0 = fullV0s.rawIteratorAt(v0grouped[coll.globalIndex()][i]); if (processPhotonCandidate(v0, coll)) // selecting photons bestGammasArray.push_back(v0.globalIndex()); // Save indices of best gamma candidates @@ -1402,3 +1421,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask(cfgc)}; } + From e1d25dd3984994be10ef1387e624433a5af2093b Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Sun, 13 Jul 2025 21:08:58 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- .../Strangeness/sigma0builder.cxx | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/PWGLF/TableProducer/Strangeness/sigma0builder.cxx b/PWGLF/TableProducer/Strangeness/sigma0builder.cxx index bd2f41e02d4..32ed292dddd 100644 --- a/PWGLF/TableProducer/Strangeness/sigma0builder.cxx +++ b/PWGLF/TableProducer/Strangeness/sigma0builder.cxx @@ -63,7 +63,7 @@ struct sigma0builder { Service ccdb; ctpRateFetcher rateFetcher; - //SliceCache cache; + // SliceCache cache; Produces sigma0cores; // save sigma0 candidates for analysis Produces sigmaPhotonExtras; // save sigma0 candidates for analysis @@ -71,8 +71,8 @@ struct sigma0builder { Produces sigma0mccores; // For manual sliceBy - //PresliceUnsorted perCollisionMCDerived = o2::aod::v0data::straCollisionId; - //PresliceUnsorted perCollisionSTDDerived = o2::aod::v0data::straCollisionId; + // PresliceUnsorted perCollisionMCDerived = o2::aod::v0data::straCollisionId; + // PresliceUnsorted perCollisionSTDDerived = o2::aod::v0data::straCollisionId; PresliceUnsorted> perMcCollision = aod::v0data::straMCCollisionId; // pack track quality but separte also afterburner @@ -1142,9 +1142,9 @@ struct sigma0builder { std::vector bestGammasArray; std::vector bestLambdasArray; - // brute force grouped index construction - std::vector> v0grouped(collisions.size()); - + // brute force grouped index construction + std::vector> v0grouped(collisions.size()); + for (const auto& v0 : fullV0s) { v0grouped[v0.straCollisionId()].push_back(v0.globalIndex()); } @@ -1158,7 +1158,7 @@ struct sigma0builder { continue; float centrality = doPPAnalysis ? coll.centFT0M() : coll.centFT0C(); - + bool fhasMCColl = false; if (coll.has_straMCCollision()) fhasMCColl = true; @@ -1331,9 +1331,9 @@ struct sigma0builder { std::vector bestGammasArray; std::vector bestLambdasArray; - // brute force grouped index construction - std::vector> v0grouped(collisions.size()); - + // brute force grouped index construction + std::vector> v0grouped(collisions.size()); + for (const auto& v0 : fullV0s) { v0grouped[v0.straCollisionId()].push_back(v0.globalIndex()); } @@ -1421,4 +1421,3 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask(cfgc)}; } -