From 9c2873fd926dcf8ad7d01fb7e3aac44dc55726c8 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Mon, 14 Jul 2025 17:51:18 +0200 Subject: [PATCH 1/3] [PWGLF] enabled efficient and scoped analysis per collision --- PWGLF/Tasks/Strangeness/strangenessInJets.cxx | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx index 23584cf6695..2dc3c62a3c0 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx @@ -972,6 +972,11 @@ struct StrangenessInJets { } PROCESS_SWITCH(StrangenessInJets, processData, "Process data", true); + Preslice perCollisionV0 = o2::aod::v0data::collisionId; + Preslice perCollisionCasc = o2::aod::cascade::collisionId; + Preslice perMCCollision = o2::aod::mcparticle::mcCollisionId; + Preslice perCollisionTrk = o2::aod::track::collisionId; + // Generated MC events void processMCgenerated(aod::McCollisions const& collisions, aod::McParticles const& mcParticles) { @@ -994,9 +999,12 @@ struct StrangenessInJets { // Multiplicity of generated event double genMultiplicity = 0.0; + // MC particles per collision + auto mcParticlesPerColl = mcParticles.sliceBy(perMCCollision, collision.globalIndex()); + // Loop over all MC particles and select physical primaries within acceptance std::vector fjParticles; - for (const auto& particle : mcParticles) { + for (const auto& particle : mcParticlesPerColl) { if (!particle.isPhysicalPrimary()) continue; double minPtParticle = 0.1; @@ -1048,7 +1056,7 @@ struct StrangenessInJets { getPerpendicularAxis(jetAxis, ueAxis2, -1); // Loop over MC particles - for (const auto& particle : mcParticles) { + for (const auto& particle : mcParticlesPerColl) { if (!particle.isPhysicalPrimary()) continue; double minPtParticle = 0.1; @@ -1152,9 +1160,14 @@ struct StrangenessInJets { // Event multiplicity const float multiplicity = collision.centFT0M(); + // Number of V0 and cascades per collision + Preslice perCollisionV0 = o2::aod::v0data::collisionId; + Preslice perCollisionCasc = o2::aod::cascade::collisionId; + Preslice perCollisionTrk = o2::aod::track::collisionId; + // Loop over reconstructed tracks std::vector fjParticles; - for (auto const& track : mcTracks) { + for (auto const& track : perCollisionTrk) { if (!passedTrackSelectionForJetReconstruction(track)) continue; @@ -1217,7 +1230,7 @@ struct StrangenessInJets { // V0 particles if (particleOfInterest == Option::kV0Particles) { - for (const auto& v0 : fullV0s) { + for (const auto& v0 : perCollisionV0) { const auto& pos = v0.posTrack_as(); const auto& neg = v0.negTrack_as(); TVector3 v0dir(v0.px(), v0.py(), v0.pz()); @@ -1316,7 +1329,7 @@ struct StrangenessInJets { // Cascades if (particleOfInterest == Option::kCascades) { - for (const auto& casc : Cascades) { + for (const auto& casc : perCollisionCasc) { auto bach = casc.bachelor_as(); auto pos = casc.posTrack_as(); auto neg = casc.negTrack_as(); From edbe59fd83e04b557c676dacc793ab46f8f3a60c Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Mon, 14 Jul 2025 17:53:36 +0200 Subject: [PATCH 2/3] removed white space --- PWGLF/Tasks/Strangeness/strangenessInJets.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx index 2dc3c62a3c0..f3997aa9f9c 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx @@ -1164,7 +1164,7 @@ struct StrangenessInJets { Preslice perCollisionV0 = o2::aod::v0data::collisionId; Preslice perCollisionCasc = o2::aod::cascade::collisionId; Preslice perCollisionTrk = o2::aod::track::collisionId; - + // Loop over reconstructed tracks std::vector fjParticles; for (auto const& track : perCollisionTrk) { From b300eabaf1e6e88cba80515fa5560c2ddc00dbd5 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Mon, 14 Jul 2025 22:38:41 +0200 Subject: [PATCH 3/3] fixed typos --- PWGLF/Tasks/Strangeness/strangenessInJets.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx index f3997aa9f9c..847c6421e54 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJets.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJets.cxx @@ -1161,13 +1161,13 @@ struct StrangenessInJets { const float multiplicity = collision.centFT0M(); // Number of V0 and cascades per collision - Preslice perCollisionV0 = o2::aod::v0data::collisionId; - Preslice perCollisionCasc = o2::aod::cascade::collisionId; - Preslice perCollisionTrk = o2::aod::track::collisionId; + auto v0sPerColl = fullV0s.sliceBy(perCollisionV0, collision.globalIndex()); + auto cascPerColl = Cascades.sliceBy(perCollisionCasc, collision.globalIndex()); + auto tracksPerColl = mcTracks.sliceBy(perCollisionTrk, collision.globalIndex()); // Loop over reconstructed tracks std::vector fjParticles; - for (auto const& track : perCollisionTrk) { + for (auto const& track : tracksPerColl) { if (!passedTrackSelectionForJetReconstruction(track)) continue; @@ -1230,7 +1230,7 @@ struct StrangenessInJets { // V0 particles if (particleOfInterest == Option::kV0Particles) { - for (const auto& v0 : perCollisionV0) { + for (const auto& v0 : v0sPerColl) { const auto& pos = v0.posTrack_as(); const auto& neg = v0.negTrack_as(); TVector3 v0dir(v0.px(), v0.py(), v0.pz()); @@ -1329,7 +1329,7 @@ struct StrangenessInJets { // Cascades if (particleOfInterest == Option::kCascades) { - for (const auto& casc : perCollisionCasc) { + for (const auto& casc : cascPerColl) { auto bach = casc.bachelor_as(); auto pos = casc.posTrack_as(); auto neg = casc.negTrack_as();