From d8b9b1cdf6d99f61d1bf73de737a1b18c8febae4 Mon Sep 17 00:00:00 2001 From: wenyaCern <31894577+wenyaCern@users.noreply.github.com> Date: Mon, 22 Jun 2026 16:34:38 +0200 Subject: [PATCH 1/2] Add Preslice for track collision identification --- PWGCF/Flow/Tasks/flowFlucGfwPp.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx b/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx index b1f3d561cfc..6dfabdbb6b9 100644 --- a/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx +++ b/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx @@ -336,7 +336,8 @@ struct FlowFlucGfwPp { o2::framework::expressions::Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ; o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && (aod::track::itsChi2NCl < cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgDCAz; - + + Preslice perCollision = aod::track::collisionId; o2::framework::expressions::Filter mcCollFilter = nabs(aod::mccollision::posZ) < cfgVtxZ; o2::framework::expressions::Filter mcParticlesFilter = (aod::mcparticle::eta > o2::analysis::gfwflowflucpp::etalow && aod::mcparticle::eta < o2::analysis::gfwflowflucpp::etaup && aod::mcparticle::pt > o2::analysis::gfwflowflucpp::ptlow && aod::mcparticle::pt < o2::analysis::gfwflowflucpp::ptup); From 0d5afd584bba072fd0d63e17cb96b8e72e94c3b3 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Mon, 22 Jun 2026 14:46:59 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- PWGCF/Flow/Tasks/flowFlucGfwPp.cxx | 16 +++++++--------- PWGCF/Flow/flowFlucGfwPp.cxx | 13 ++++++------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx b/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx index 6dfabdbb6b9..04cf63b61c7 100644 --- a/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx +++ b/PWGCF/Flow/Tasks/flowFlucGfwPp.cxx @@ -336,7 +336,7 @@ struct FlowFlucGfwPp { o2::framework::expressions::Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ; o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && (aod::track::itsChi2NCl < cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgDCAz; - + Preslice perCollision = aod::track::collisionId; o2::framework::expressions::Filter mcCollFilter = nabs(aod::mccollision::posZ) < cfgVtxZ; o2::framework::expressions::Filter mcParticlesFilter = (aod::mcparticle::eta > o2::analysis::gfwflowflucpp::etalow && aod::mcparticle::eta < o2::analysis::gfwflowflucpp::etaup && aod::mcparticle::pt > o2::analysis::gfwflowflucpp::ptlow && aod::mcparticle::pt < o2::analysis::gfwflowflucpp::ptup); @@ -894,7 +894,6 @@ struct FlowFlucGfwPp { std::string name = Form("%s_%d_%s", shapeSel.c_str(), jese, it->Head.c_str()); std::string title = it->Head + std::string("_ese"); oba->Add(new TNamed(name.c_str(), title.c_str())); - } } } @@ -1017,14 +1016,14 @@ struct FlowFlucGfwPp { registry.fill(HIST("qvecQA/ChTracks"), trk.pt(), trk.eta(), trk.phi()); } - if (trk.eta() > 0 && fabs(trk.eta())< cfgQnTrkAbsEtaMax) { + if (trk.eta() > 0 && fabs(trk.eta()) < cfgQnTrkAbsEtaMax) { // In qVectorsTable this branch is additionally guarded by useDetector["QvectorTPCposs"] || useDetector["QvectorBPoss"]. // Here TPCpos is always computed because the downstream ESE selector can require it. qvec.qVectTPCPos[0] += trk.pt() * std::cos(trk.phi() * nMode); qvec.qVectTPCPos[1] += trk.pt() * std::sin(trk.phi() * nMode); qvec.trkTPCPosLabel.push_back(trk.globalIndex()); qvec.nTrkTPCPos++; - } else if (trk.eta() < 0 && fabs(trk.eta())< cfgQnTrkAbsEtaMax) { + } else if (trk.eta() < 0 && fabs(trk.eta()) < cfgQnTrkAbsEtaMax) { // In qVectorsTable this branch is additionally guarded by useDetector["QvectorTPCnegs"] || useDetector["QvectorBNegs"]. // Here TPCneg is always computed because the downstream ESE selector can require it. qvec.qVectTPCNeg[0] += trk.pt() * std::cos(trk.phi() * nMode); @@ -1558,10 +1557,10 @@ struct FlowFlucGfwPp { PROCESS_SWITCH(FlowFlucGfwPp, processq2, "Process analysis for filling q_n-vector calibration histograms", true); void processMC(soa::Filtered>::iterator const& collision, - aod::BCsWithTimestamps const&, GFWTracksMC const& tracks, aod::McCollisions const&, aod::McParticles const& mcParticles) + aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, + aod::CentFV0As, aod::CentNTPVs, aod::CentNGlobals, + aod::McCollisionLabels>>::iterator const& collision, + aod::BCsWithTimestamps const&, GFWTracksMC const& tracks, aod::McCollisions const&, aod::McParticles const& mcParticles) { auto bc = collision.bc_as(); int run = bc.runNumber(); @@ -1632,7 +1631,6 @@ struct FlowFlucGfwPp { processGenCollision(genCollision, mcParticles, collision.mcCollisionId(), xaxis, run, 0); } PROCESS_SWITCH(FlowFlucGfwPp, processMC, "Process analysis for Monte-Carlo data", false); - }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) diff --git a/PWGCF/Flow/flowFlucGfwPp.cxx b/PWGCF/Flow/flowFlucGfwPp.cxx index de048182729..e6ea00b8dc2 100644 --- a/PWGCF/Flow/flowFlucGfwPp.cxx +++ b/PWGCF/Flow/flowFlucGfwPp.cxx @@ -1020,14 +1020,14 @@ struct FlowFlucGfwPp { registry.fill(HIST("qvecQA/ChTracks"), trk.pt(), trk.eta(), trk.phi()); } - if (trk.eta() > 0 && fabs(trk.eta())< cfgQnTrkAbsEtaMax) { + if (trk.eta() > 0 && fabs(trk.eta()) < cfgQnTrkAbsEtaMax) { // In qVectorsTable this branch is additionally guarded by useDetector["QvectorTPCposs"] || useDetector["QvectorBPoss"]. // Here TPCpos is always computed because the downstream ESE selector can require it. qvec.qVectTPCPos[0] += trk.pt() * std::cos(trk.phi() * nMode); qvec.qVectTPCPos[1] += trk.pt() * std::sin(trk.phi() * nMode); qvec.trkTPCPosLabel.push_back(trk.globalIndex()); qvec.nTrkTPCPos++; - } else if (trk.eta() < 0 && fabs(trk.eta())< cfgQnTrkAbsEtaMax) { + } else if (trk.eta() < 0 && fabs(trk.eta()) < cfgQnTrkAbsEtaMax) { // In qVectorsTable this branch is additionally guarded by useDetector["QvectorTPCnegs"] || useDetector["QvectorBNegs"]. // Here TPCneg is always computed because the downstream ESE selector can require it. qvec.qVectTPCNeg[0] += trk.pt() * std::cos(trk.phi() * nMode); @@ -1565,10 +1565,10 @@ struct FlowFlucGfwPp { PROCESS_SWITCH(FlowFlucGfwPp, processq2, "Process analysis for filling q_n-vector calibration histograms", true); void processMC(soa::Filtered>::iterator const& collision, - aod::BCsWithTimestamps const&, GFWTracksMC const& tracks, aod::McCollisions const&, aod::McParticles const& mcParticles) + aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, + aod::CentFV0As, aod::CentNTPVs, aod::CentNGlobals, + aod::CentMFTs, aod::McCollisionLabels>>::iterator const& collision, + aod::BCsWithTimestamps const&, GFWTracksMC const& tracks, aod::McCollisions const&, aod::McParticles const& mcParticles) { auto bc = collision.bc_as(); int run = bc.runNumber(); @@ -1639,7 +1639,6 @@ struct FlowFlucGfwPp { processGenCollision(genCollision, mcParticles, collision.mcCollisionId(), xaxis, run, 0); } PROCESS_SWITCH(FlowFlucGfwPp, processMC, "Process analysis for Monte-Carlo data", false); - }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)