Skip to content

Commit f418dee

Browse files
[PWGLF] Custom v0 grouping in sigma0builder (#12041)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent d06f1f6 commit f418dee

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed

PWGLF/TableProducer/Strangeness/sigma0builder.cxx

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,16 @@ struct sigma0builder {
6363
Service<o2::ccdb::BasicCCDBManager> ccdb;
6464
ctpRateFetcher rateFetcher;
6565

66-
SliceCache cache;
66+
// SliceCache cache;
6767

6868
Produces<aod::Sigma0Cores> sigma0cores; // save sigma0 candidates for analysis
6969
Produces<aod::SigmaPhotonExtras> sigmaPhotonExtras; // save sigma0 candidates for analysis
7070
Produces<aod::SigmaLambdaExtras> sigmaLambdaExtras; // save sigma0 candidates for analysis
7171
Produces<aod::SigmaMCCores> sigma0mccores;
7272

7373
// For manual sliceBy
74-
PresliceUnsorted<V0DerivedMCDatas> perCollisionMCDerived = o2::aod::v0data::straCollisionId;
75-
PresliceUnsorted<V0StandardDerivedDatas> perCollisionSTDDerived = o2::aod::v0data::straCollisionId;
74+
// PresliceUnsorted<V0DerivedMCDatas> perCollisionMCDerived = o2::aod::v0data::straCollisionId;
75+
// PresliceUnsorted<V0StandardDerivedDatas> perCollisionSTDDerived = o2::aod::v0data::straCollisionId;
7676
PresliceUnsorted<soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraCollLabels>> perMcCollision = aod::v0data::straMCCollisionId;
7777

7878
// pack track quality but separte also afterburner
@@ -385,7 +385,7 @@ struct sigma0builder {
385385
}
386386

387387
template <typename TCollision>
388-
bool IsEventAccepted(TCollision collision, bool fillHists)
388+
bool IsEventAccepted(TCollision const& collision, bool fillHists)
389389
// check whether the collision passes our collision selections
390390
{
391391
if (fillHists)
@@ -1138,14 +1138,25 @@ struct sigma0builder {
11381138

11391139
void processMonteCarlo(soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraStamps, aod::StraCollLabels> const& collisions, V0DerivedMCDatas const& fullV0s, dauTracks const&, aod::MotherMCParts const&, soa::Join<aod::StraMCCollisions, aod::StraMCCollMults> const&, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const&)
11401140
{
1141+
// Initialize auxiliary vectors
1142+
std::vector<int> bestGammasArray;
1143+
std::vector<int> bestLambdasArray;
1144+
1145+
// brute force grouped index construction
1146+
std::vector<std::vector<int>> v0grouped(collisions.size());
1147+
1148+
for (const auto& v0 : fullV0s) {
1149+
v0grouped[v0.straCollisionId()].push_back(v0.globalIndex());
1150+
}
1151+
11411152
for (const auto& coll : collisions) {
1153+
// Clear vectors
1154+
bestGammasArray.clear();
1155+
bestLambdasArray.clear();
11421156

11431157
if (!IsEventAccepted(coll, true))
11441158
continue;
11451159

1146-
// Do analysis with collision-grouped V0s, retain full collision information
1147-
const uint64_t collIdx = coll.globalIndex();
1148-
auto V0s = fullV0s.sliceBy(perCollisionMCDerived, collIdx);
11491160
float centrality = doPPAnalysis ? coll.centFT0M() : coll.centFT0C();
11501161

11511162
bool fhasMCColl = false;
@@ -1164,12 +1175,11 @@ struct sigma0builder {
11641175
histos.fill(HIST("GeneralQA/hCentralityVsInteractionRate"), centrality, interactionRate);
11651176
}
11661177

1167-
std::vector<int> bestGammasArray;
1168-
std::vector<int> bestLambdasArray;
1169-
11701178
//_______________________________________________
11711179
// V0s loop
1172-
for (auto& v0 : V0s) {
1180+
for (size_t i = 0; i < v0grouped[coll.globalIndex()].size(); i++) {
1181+
auto v0 = fullV0s.rawIteratorAt(v0grouped[coll.globalIndex()][i]);
1182+
11731183
if (!v0.has_v0MCCore())
11741184
continue;
11751185

@@ -1317,14 +1327,25 @@ struct sigma0builder {
13171327

13181328
void processRealData(soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraStamps> const& collisions, V0StandardDerivedDatas const& fullV0s, dauTracks const&)
13191329
{
1330+
// Initialize auxiliary vectors
1331+
std::vector<int> bestGammasArray;
1332+
std::vector<int> bestLambdasArray;
1333+
1334+
// brute force grouped index construction
1335+
std::vector<std::vector<int>> v0grouped(collisions.size());
1336+
1337+
for (const auto& v0 : fullV0s) {
1338+
v0grouped[v0.straCollisionId()].push_back(v0.globalIndex());
1339+
}
1340+
13201341
for (const auto& coll : collisions) {
1342+
// Clear vectors
1343+
bestGammasArray.clear();
1344+
bestLambdasArray.clear();
13211345

13221346
if (!IsEventAccepted(coll, true))
13231347
continue;
13241348

1325-
// Do analysis with collision-grouped V0s, retain full collision information
1326-
const uint64_t collIdx = coll.globalIndex();
1327-
auto V0s = fullV0s.sliceBy(perCollisionSTDDerived, collIdx);
13281349
float centrality = doPPAnalysis ? coll.centFT0M() : coll.centFT0C();
13291350

13301351
//_______________________________________________
@@ -1339,12 +1360,10 @@ struct sigma0builder {
13391360
histos.fill(HIST("GeneralQA/hCentralityVsInteractionRate"), centrality, interactionRate);
13401361
}
13411362

1342-
std::vector<int> bestGammasArray;
1343-
std::vector<int> bestLambdasArray;
1344-
13451363
//_______________________________________________
13461364
// V0s loop
1347-
for (auto& v0 : V0s) {
1365+
for (size_t i = 0; i < v0grouped[coll.globalIndex()].size(); i++) {
1366+
auto v0 = fullV0s.rawIteratorAt(v0grouped[coll.globalIndex()][i]);
13481367
if (processPhotonCandidate(v0, coll)) // selecting photons
13491368
bestGammasArray.push_back(v0.globalIndex()); // Save indices of best gamma candidates
13501369

0 commit comments

Comments
 (0)