@@ -972,6 +972,11 @@ struct StrangenessInJets {
972972 }
973973 PROCESS_SWITCH (StrangenessInJets, processData, " Process data" , true );
974974
975+ Preslice<aod::V0Datas> perCollisionV0 = o2::aod::v0data::collisionId;
976+ Preslice<aod::CascDataExt> perCollisionCasc = o2::aod::cascade::collisionId;
977+ Preslice<aod::McParticles> perMCCollision = o2::aod::mcparticle::mcCollisionId;
978+ Preslice<DaughterTracksMC> perCollisionTrk = o2::aod::track::collisionId;
979+
975980 // Generated MC events
976981 void processMCgenerated (aod::McCollisions const & collisions, aod::McParticles const & mcParticles)
977982 {
@@ -994,9 +999,12 @@ struct StrangenessInJets {
994999 // Multiplicity of generated event
9951000 double genMultiplicity = 0.0 ;
9961001
1002+ // MC particles per collision
1003+ auto mcParticlesPerColl = mcParticles.sliceBy (perMCCollision, collision.globalIndex ());
1004+
9971005 // Loop over all MC particles and select physical primaries within acceptance
9981006 std::vector<fastjet::PseudoJet> fjParticles;
999- for (const auto & particle : mcParticles ) {
1007+ for (const auto & particle : mcParticlesPerColl ) {
10001008 if (!particle.isPhysicalPrimary ())
10011009 continue ;
10021010 double minPtParticle = 0.1 ;
@@ -1048,7 +1056,7 @@ struct StrangenessInJets {
10481056 getPerpendicularAxis (jetAxis, ueAxis2, -1 );
10491057
10501058 // Loop over MC particles
1051- for (const auto & particle : mcParticles ) {
1059+ for (const auto & particle : mcParticlesPerColl ) {
10521060 if (!particle.isPhysicalPrimary ())
10531061 continue ;
10541062 double minPtParticle = 0.1 ;
@@ -1152,9 +1160,14 @@ struct StrangenessInJets {
11521160 // Event multiplicity
11531161 const float multiplicity = collision.centFT0M ();
11541162
1163+ // Number of V0 and cascades per collision
1164+ auto v0sPerColl = fullV0s.sliceBy (perCollisionV0, collision.globalIndex ());
1165+ auto cascPerColl = Cascades.sliceBy (perCollisionCasc, collision.globalIndex ());
1166+ auto tracksPerColl = mcTracks.sliceBy (perCollisionTrk, collision.globalIndex ());
1167+
11551168 // Loop over reconstructed tracks
11561169 std::vector<fastjet::PseudoJet> fjParticles;
1157- for (auto const & track : mcTracks ) {
1170+ for (auto const & track : tracksPerColl ) {
11581171 if (!passedTrackSelectionForJetReconstruction (track))
11591172 continue ;
11601173
@@ -1217,7 +1230,7 @@ struct StrangenessInJets {
12171230
12181231 // V0 particles
12191232 if (particleOfInterest == Option::kV0Particles ) {
1220- for (const auto & v0 : fullV0s ) {
1233+ for (const auto & v0 : v0sPerColl ) {
12211234 const auto & pos = v0.posTrack_as <DaughterTracksMC>();
12221235 const auto & neg = v0.negTrack_as <DaughterTracksMC>();
12231236 TVector3 v0dir (v0.px (), v0.py (), v0.pz ());
@@ -1316,7 +1329,7 @@ struct StrangenessInJets {
13161329
13171330 // Cascades
13181331 if (particleOfInterest == Option::kCascades ) {
1319- for (const auto & casc : Cascades ) {
1332+ for (const auto & casc : cascPerColl ) {
13201333 auto bach = casc.bachelor_as <DaughterTracksMC>();
13211334 auto pos = casc.posTrack_as <DaughterTracksMC>();
13221335 auto neg = casc.negTrack_as <DaughterTracksMC>();
0 commit comments