From f12c74761b925b17ca15c7ec79f632d52131701d Mon Sep 17 00:00:00 2001 From: skundu692 Date: Fri, 1 May 2026 15:59:11 +0200 Subject: [PATCH 1/5] Fix Lambda spin correlation selection --- .../Strangeness/lambdaspincorrderived.cxx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx b/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx index 954a1b11c13..117904e7de2 100644 --- a/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx +++ b/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx @@ -1294,7 +1294,8 @@ struct lambdaspincorrderived { continue; } - auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); + // auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); + auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.globalIndex()); // if pool empty, push and continue if (eventPools[bin].empty()) { @@ -1464,7 +1465,8 @@ struct lambdaspincorrderived { } // push current event into pool - auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); + // auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); + auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.globalIndex()); eventPools[bin].emplace_back(collision1.index(), std::move(sliced)); if ((int)eventPools[bin].size() > nEvtMixing) { eventPools[bin].pop_front(); @@ -1934,7 +1936,8 @@ struct lambdaspincorrderived { continue; } - auto slice = V0s.sliceBy(tracksPerCollisionV0, col.index()); + // auto slice = V0s.sliceBy(tracksPerCollisionV0, col.index()); + auto slice = V0s.sliceBy(tracksPerCollisionV0, col.globalIndex()); for (auto const& t : slice) { if (!selectionV0(t)) { @@ -2137,7 +2140,8 @@ struct lambdaspincorrderived { } const int64_t curColIdx = static_cast(col1.index()); - auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.index()); + // auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.index()); + auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.globalIndex()); for (auto const& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(poolA, poolA))) { if (!selectionV0(t1) || !selectionV0(t2)) { @@ -2391,7 +2395,8 @@ struct lambdaspincorrderived { continue; } - auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.index()); + // auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.index()); + auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.globalIndex()); for (auto const& t : slice) { if (!selectionV0MC(t)) { @@ -2600,7 +2605,8 @@ struct lambdaspincorrderived { } const int64_t curColIdx = static_cast(col1.index()); - auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.index()); + // auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.index()); + auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.globalIndex()); for (auto const& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(poolA, poolA))) { if (!selectionV0MC(t1) || !selectionV0MC(t2)) { From 11a1e9a7d5301e8185c76e69ec5099a5a0d2dc21 Mon Sep 17 00:00:00 2001 From: skundu692 Date: Fri, 1 May 2026 16:07:49 +0200 Subject: [PATCH 2/5] Fix Lambda spin correlation selection --- .../Strangeness/lambdaspincorrderived.cxx | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx b/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx index 117904e7de2..954a1b11c13 100644 --- a/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx +++ b/PWGLF/Tasks/Strangeness/lambdaspincorrderived.cxx @@ -1294,8 +1294,7 @@ struct lambdaspincorrderived { continue; } - // auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); - auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.globalIndex()); + auto poolA = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); // if pool empty, push and continue if (eventPools[bin].empty()) { @@ -1465,8 +1464,7 @@ struct lambdaspincorrderived { } // push current event into pool - // auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); - auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.globalIndex()); + auto sliced = V0s.sliceBy(tracksPerCollisionV0, collision1.index()); eventPools[bin].emplace_back(collision1.index(), std::move(sliced)); if ((int)eventPools[bin].size() > nEvtMixing) { eventPools[bin].pop_front(); @@ -1936,8 +1934,7 @@ struct lambdaspincorrderived { continue; } - // auto slice = V0s.sliceBy(tracksPerCollisionV0, col.index()); - auto slice = V0s.sliceBy(tracksPerCollisionV0, col.globalIndex()); + auto slice = V0s.sliceBy(tracksPerCollisionV0, col.index()); for (auto const& t : slice) { if (!selectionV0(t)) { @@ -2140,8 +2137,7 @@ struct lambdaspincorrderived { } const int64_t curColIdx = static_cast(col1.index()); - // auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.index()); - auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.globalIndex()); + auto poolA = V0s.sliceBy(tracksPerCollisionV0, col1.index()); for (auto const& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(poolA, poolA))) { if (!selectionV0(t1) || !selectionV0(t2)) { @@ -2395,8 +2391,7 @@ struct lambdaspincorrderived { continue; } - // auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.index()); - auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.globalIndex()); + auto slice = V0sMC.sliceBy(tracksPerCollisionV0mc, col.index()); for (auto const& t : slice) { if (!selectionV0MC(t)) { @@ -2605,8 +2600,7 @@ struct lambdaspincorrderived { } const int64_t curColIdx = static_cast(col1.index()); - // auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.index()); - auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.globalIndex()); + auto poolA = V0sMC.sliceBy(tracksPerCollisionV0mc, col1.index()); for (auto const& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(poolA, poolA))) { if (!selectionV0MC(t1) || !selectionV0MC(t2)) { From 5040c8adeec1059c9d816bfa9895c9dbdceaafb5 Mon Sep 17 00:00:00 2001 From: skundu692 Date: Tue, 12 May 2026 16:32:53 +0200 Subject: [PATCH 3/5] Fix event selection in MC table for spin correlation and add new process function for high mass resonance ananlysis --- PWGLF/Tasks/Resonances/doublephimeson.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGLF/Tasks/Resonances/doublephimeson.cxx b/PWGLF/Tasks/Resonances/doublephimeson.cxx index 6f24c57fc68..9181d1d676b 100644 --- a/PWGLF/Tasks/Resonances/doublephimeson.cxx +++ b/PWGLF/Tasks/Resonances/doublephimeson.cxx @@ -16,6 +16,7 @@ #include "PWGLF/DataModel/ReducedDoublePhiTables.h" #include + #include #include #include From ba4fcd680c88f910d051f3b56548483d04f13dbb Mon Sep 17 00:00:00 2001 From: skundu692 Date: Wed, 13 May 2026 12:23:50 +0200 Subject: [PATCH 4/5] Fix clang-format --- PWGLF/Tasks/Resonances/doublephimeson.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGLF/Tasks/Resonances/doublephimeson.cxx b/PWGLF/Tasks/Resonances/doublephimeson.cxx index 9181d1d676b..6f24c57fc68 100644 --- a/PWGLF/Tasks/Resonances/doublephimeson.cxx +++ b/PWGLF/Tasks/Resonances/doublephimeson.cxx @@ -16,7 +16,6 @@ #include "PWGLF/DataModel/ReducedDoublePhiTables.h" #include - #include #include #include From 647f6ab052cb70ea9612eb7eed45dc0a5d2e622c Mon Sep 17 00:00:00 2001 From: skundu692 Date: Tue, 23 Jun 2026 19:05:44 +0200 Subject: [PATCH 5/5] Add centrality info in doublephi derived data --- PWGLF/DataModel/ReducedDoublePhiTables.h | 4 +++- PWGLF/TableProducer/Resonances/doublephitable.cxx | 7 ++++--- PWGLF/Tasks/Resonances/doublephimeson.cxx | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/PWGLF/DataModel/ReducedDoublePhiTables.h b/PWGLF/DataModel/ReducedDoublePhiTables.h index 61175fccfc8..ec0d969e0f3 100644 --- a/PWGLF/DataModel/ReducedDoublePhiTables.h +++ b/PWGLF/DataModel/ReducedDoublePhiTables.h @@ -27,6 +27,7 @@ namespace redphievent { DECLARE_SOA_COLUMN(NumPos, numPos, int); //! Number of positive Kaon DECLARE_SOA_COLUMN(NumNeg, numNeg, int); //! Number of negative Kaon +DECLARE_SOA_COLUMN(Centrality, centrality, float); //! Number of negative Kaon } // namespace redphievent DECLARE_SOA_TABLE(RedPhiEvents, "AOD", "REDPHIEVENT", o2::soa::Index<>, @@ -36,7 +37,8 @@ DECLARE_SOA_TABLE(RedPhiEvents, "AOD", "REDPHIEVENT", collision::PosZ, collision::NumContrib, redphievent::NumPos, - redphievent::NumNeg); + redphievent::NumNeg, + redphievent::Centrality); using RedPhiEvent = RedPhiEvents::iterator; namespace phitrack diff --git a/PWGLF/TableProducer/Resonances/doublephitable.cxx b/PWGLF/TableProducer/Resonances/doublephitable.cxx index b682d8cbb40..0c116305cac 100644 --- a/PWGLF/TableProducer/Resonances/doublephitable.cxx +++ b/PWGLF/TableProducer/Resonances/doublephitable.cxx @@ -17,6 +17,7 @@ #include "PWGLF/DataModel/ReducedDoublePhiTables.h" #include "Common/CCDB/EventSelectionParams.h" +#include "Common/DataModel/Centrality.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" #include "Common/DataModel/PIDResponseITS.h" @@ -83,7 +84,7 @@ struct doublephitable { Filter DCAcutFilter = (nabs(aod::track::dcaXY) < cfgCutDCAxy) && (nabs(aod::track::dcaZ) < cfgCutDCAz); Filter PIDcutFilter = nabs(aod::pidtpc::tpcNSigmaKa) < nsigmaCutTPC; - using EventCandidates = soa::Filtered>; + using EventCandidates = soa::Filtered>; using TrackCandidates = soa::Filtered>; SliceCache cache; @@ -165,7 +166,7 @@ struct doublephitable { int Npostrack = 0; int Nnegtrack = 0; - + float centrality = collision.centFT0M(); if (collision.sel8() && collision.selection_bit(aod::evsel::kNoTimeFrameBorder) && collision.selection_bit(aod::evsel::kNoITSROFrameBorder) && collision.selection_bit(aod::evsel::kNoSameBunchPileup) && collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) { auto posThisColl = posTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); auto negThisColl = negTracks->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); @@ -258,7 +259,7 @@ struct doublephitable { if (keepEventDoublePhi && numberPhi > 1 && Npostrack > 1 && Nnegtrack > 1 && (phiresonance.size() == phiresonanced1.size()) && (phiresonance.size() == phiresonanced2.size())) { qaRegistry.fill(HIST("hEventstat"), 1.5); /////////// Fill collision table/////////////// - redPhiEvents(bc.globalBC(), currentRunNumber, bc.timestamp(), collision.posZ(), collision.numContrib(), Npostrack, Nnegtrack); + redPhiEvents(bc.globalBC(), currentRunNumber, bc.timestamp(), collision.posZ(), collision.numContrib(), Npostrack, Nnegtrack, centrality); auto indexEvent = redPhiEvents.lastIndex(); //// Fill track table for Phi////////////////// for (auto if1 = phiresonance.begin(); if1 != phiresonance.end(); ++if1) { diff --git a/PWGLF/Tasks/Resonances/doublephimeson.cxx b/PWGLF/Tasks/Resonances/doublephimeson.cxx index 6f24c57fc68..78d4e47102d 100644 --- a/PWGLF/Tasks/Resonances/doublephimeson.cxx +++ b/PWGLF/Tasks/Resonances/doublephimeson.cxx @@ -181,6 +181,7 @@ struct doublephimeson { histos.add("hDeltaRkaonplus", "hDeltaRkaonplus", kTH1F, {{800, 0.0, 8.0}}); histos.add("hDeltaRkaonminus", "hDeltaRkaonminus", kTH1F, {{800, 0.0, 8.0}}); histos.add("hPtCorrelation", "hPtCorrelation", kTH2F, {{400, 0.0, 40.0}, {5000, 0.0, 100.0}}); + histos.add("hPtCent", "hPtCent", kTH2F, {{100, 0.0, 100.0}, {100, 0.0, 100.0}}); const AxisSpec thnAxisdeltapt{configThnAxisDeltaPt, "Delta pt"}; const AxisSpec thnAxisdaughterpt{configThnAxisDaughterPt, "Daughter pt"}; const AxisSpec thnAxisInvMass{configThnAxisInvMass, "#it{M} (GeV/#it{c}^{2})"}; @@ -1780,6 +1781,7 @@ struct doublephimeson { } if (pairPt > minExoticPt) { histos.fill(HIST("hPtCorrelation"), pairPt, ptcorr); + histos.fill(HIST("hPtCent"), pairPt, collision.centrality()); histos.fill(HIST("SEMassUnlike_AllVars"), M, pairPt,