From 1fb57abb8c0b625131cfe474721cff6856308ed7 Mon Sep 17 00:00:00 2001 From: Prottay Das Date: Wed, 22 Apr 2026 18:28:12 +0200 Subject: [PATCH 1/2] updated mixing function for phi --- PWGCF/TableProducer/filter2Prong.cxx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/PWGCF/TableProducer/filter2Prong.cxx b/PWGCF/TableProducer/filter2Prong.cxx index da28c853e3b..207ce080f14 100644 --- a/PWGCF/TableProducer/filter2Prong.cxx +++ b/PWGCF/TableProducer/filter2Prong.cxx @@ -64,6 +64,7 @@ enum LambdaPid { kLambda = 0, struct Filter2Prong { SliceCache cache; + Preslice perCollisionCFTrackRefs = aod::track::collisionId; O2_DEFINE_CONFIGURABLE(cfgVerbosity, int, 0, "Verbosity level (0 = major, 1 = per collision)") O2_DEFINE_CONFIGURABLE(cfgYMax, float, -1.0f, "Maximum candidate rapidity") @@ -799,11 +800,12 @@ struct Filter2Prong { PROCESS_SWITCH(Filter2Prong, processDataPhiV0, "Process data Phi and V0 candidates with invariant mass method", false); using DerivedCollisions = soa::Join; - void processDataPhiMixed(DerivedCollisions const& collisions, aod::CFTrackRefs const& cftracks) + void processDataPhiMixed(DerivedCollisions const& collisions, Filter2Prong::PIDTrack const& tracksP, aod::CFTrackRefs const& cftracks) { auto getMultiplicity = [](auto const& col) { return col.multiplicity(); }; + using BinningTypeDerived = FlexibleBinningPolicy, aod::collision::PosZ, decltype(getMultiplicity)>; BinningTypeDerived configurableBinningDerived{{getMultiplicity}, {axisVertexMix, axisMultiplicityMix}, true}; auto tracksTuple = std::make_tuple(cftracks, cftracks); @@ -831,7 +833,8 @@ struct Filter2Prong { } for (const auto& cftrack1 : tracks1) { - const auto& p1 = cftrack1.track_as(); + // const auto& p1 = cftrack1.track_as(); + const auto& p1 = tracksP.iteratorAt(cftrack1.trackId() - tracksP.begin().globalIndex()); if (p1.sign() != 1) { continue; @@ -850,7 +853,8 @@ struct Filter2Prong { } for (const auto& cftrack2 : tracks2) { - const auto& p2 = cftrack2.track_as(); + // const auto& p2 = cftrack2.track_as(); + const auto& p2 = tracksP.iteratorAt(cftrack2.trackId() - tracksP.begin().globalIndex()); if (p2.sign() != -1) { continue; From f49c327734ebae20af79c57178af219c1d7790ff Mon Sep 17 00:00:00 2001 From: Prottay Das Date: Thu, 23 Apr 2026 13:21:07 +0200 Subject: [PATCH 2/2] removed the iteratorAt function to reduce memory consumption --- PWGCF/TableProducer/filter2Prong.cxx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/PWGCF/TableProducer/filter2Prong.cxx b/PWGCF/TableProducer/filter2Prong.cxx index 207ce080f14..8c413cbd6cf 100644 --- a/PWGCF/TableProducer/filter2Prong.cxx +++ b/PWGCF/TableProducer/filter2Prong.cxx @@ -800,7 +800,7 @@ struct Filter2Prong { PROCESS_SWITCH(Filter2Prong, processDataPhiV0, "Process data Phi and V0 candidates with invariant mass method", false); using DerivedCollisions = soa::Join; - void processDataPhiMixed(DerivedCollisions const& collisions, Filter2Prong::PIDTrack const& tracksP, aod::CFTrackRefs const& cftracks) + void processDataPhiMixed(DerivedCollisions const& collisions, Filter2Prong::PIDTrack const& /*tracksP*/, aod::CFTrackRefs const& cftracks) { auto getMultiplicity = [](auto const& col) { return col.multiplicity(); @@ -833,8 +833,7 @@ struct Filter2Prong { } for (const auto& cftrack1 : tracks1) { - // const auto& p1 = cftrack1.track_as(); - const auto& p1 = tracksP.iteratorAt(cftrack1.trackId() - tracksP.begin().globalIndex()); + const auto& p1 = cftrack1.track_as(); if (p1.sign() != 1) { continue; @@ -853,8 +852,7 @@ struct Filter2Prong { } for (const auto& cftrack2 : tracks2) { - // const auto& p2 = cftrack2.track_as(); - const auto& p2 = tracksP.iteratorAt(cftrack2.trackId() - tracksP.begin().globalIndex()); + const auto& p2 = cftrack2.track_as(); if (p2.sign() != -1) { continue;