Skip to content

Commit ce93863

Browse files
authored
[PWGLF] enabled efficient and scoped analysis per collision (#12050)
1 parent be70ebf commit ce93863

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

PWGLF/Tasks/Strangeness/strangenessInJets.cxx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)