@@ -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
@@ -1138,16 +1138,20 @@ 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+ // brute force grouped index construction
1142+ std::vector<std::vector<int >> v0grouped (collisions.size ());
1143+
1144+ for (const auto & v0 : fullV0s) {
1145+ v0grouped[v0.straCollisionId ()].push_back (v0.globalIndex ());
1146+ }
1147+
11411148 for (const auto & coll : collisions) {
11421149
11431150 if (!IsEventAccepted (coll, true ))
11441151 continue ;
11451152
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);
11491153 float centrality = doPPAnalysis ? coll.centFT0M () : coll.centFT0C ();
1150-
1154+
11511155 bool fhasMCColl = false ;
11521156 if (coll.has_straMCCollision ())
11531157 fhasMCColl = true ;
@@ -1169,7 +1173,9 @@ struct sigma0builder {
11691173
11701174 // _______________________________________________
11711175 // V0s loop
1172- for (auto & v0 : V0s) {
1176+ for (size_t i = 0 ; i < v0grouped[coll.globalIndex ()].size (); i++) {
1177+ auto v0 = fullV0s.rawIteratorAt (v0grouped[coll.globalIndex ()][i]);
1178+
11731179 if (!v0.has_v0MCCore ())
11741180 continue ;
11751181
@@ -1317,14 +1323,18 @@ struct sigma0builder {
13171323
13181324 void processRealData (soa::Join<aod::StraCollisions, aod::StraCents, aod::StraEvSels, aod::StraStamps> const & collisions, V0StandardDerivedDatas const & fullV0s, dauTracks const &)
13191325 {
1326+ // brute force grouped index construction
1327+ std::vector<std::vector<int >> v0grouped (collisions.size ());
1328+
1329+ for (const auto & v0 : fullV0s) {
1330+ v0grouped[v0.straCollisionId ()].push_back (v0.globalIndex ());
1331+ }
1332+
13201333 for (const auto & coll : collisions) {
13211334
13221335 if (!IsEventAccepted (coll, true ))
13231336 continue ;
13241337
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);
13281338 float centrality = doPPAnalysis ? coll.centFT0M () : coll.centFT0C ();
13291339
13301340 // _______________________________________________
@@ -1344,7 +1354,8 @@ struct sigma0builder {
13441354
13451355 // _______________________________________________
13461356 // V0s loop
1347- for (auto & v0 : V0s) {
1357+ for (size_t i = 0 ; i < v0grouped[coll.globalIndex ()].size (); i++) {
1358+ auto v0 = fullV0s.rawIteratorAt (v0grouped[coll.globalIndex ()][i]);
13481359 if (processPhotonCandidate (v0, coll)) // selecting photons
13491360 bestGammasArray.push_back (v0.globalIndex ()); // Save indices of best gamma candidates
13501361
0 commit comments