From b016dfed314e9a339f5022e69bd4033cad539d3f Mon Sep 17 00:00:00 2001 From: Neelkamal Mallick Date: Tue, 20 Oct 2026 13:43:27 +0000 Subject: [PATCH] [PWGCF] JCorran/Core: Bug Fix to C0-scaling term --- PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx | 12 +++++++++--- PWGCF/JCorran/Core/FlowJSPCAnalysis.h | 7 ++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx b/PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx index 2fc35810957..3533e4c4987 100644 --- a/PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx +++ b/PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx @@ -121,15 +121,21 @@ void FlowJSPCAnalysis::calculateCorrelators(const int fCentBin) fillHistograms(fCentBin, j, correlationNum, correlationDenom, weightCorrelationNum, weightCorrelationDenom); } - // N_m = Re(Q_{0,1}); weight M_m. 3SPC → fN3, 4SPC → fN4. + // Effective multiplicity N_m (arXiv:2606.10258 Eq. IV.2 / manuscript eq:Neff): + // 1/N_m^{m-1} = sum_i M_m(N_i) N_i^{-(m-1)} / sum_i M_m(N_i), + // with M_m = N(N-1)...(N-m+1) = fCorrelDenoms[m-1] and N = Re(Q_{0,1}). + // TProfile stores _comb; invert offline as N_m = content^{-1/(m-1)}. + // 3SPC → fN3 (m=3); 4SPC → fN4 (m=4). if (mHistRegistry && qvecs) { const double nSel = qvecs->QvectorQC[0][1].Re(); const float centX = static_cast(fCentBin) + 0.5f; if (nSel > 0.0 && std::isfinite(nSel)) { if (mWhichSPC == 0 && fCorrelDenoms[2] > 0.0) { - mHistRegistry->fill(HIST("fN3"), centX, nSel, fCorrelDenoms[2]); + const double invN3Pow = 1.0 / (nSel * nSel); // N^{-(3-1)} + mHistRegistry->fill(HIST("fN3"), centX, invN3Pow, fCorrelDenoms[2]); } else if (mWhichSPC == 1 && fCorrelDenoms[3] > 0.0) { - mHistRegistry->fill(HIST("fN4"), centX, nSel, fCorrelDenoms[3]); + const double invN4Pow = 1.0 / (nSel * nSel * nSel); // N^{-(4-1)} + mHistRegistry->fill(HIST("fN4"), centX, invN4Pow, fCorrelDenoms[3]); } } } diff --git a/PWGCF/JCorran/Core/FlowJSPCAnalysis.h b/PWGCF/JCorran/Core/FlowJSPCAnalysis.h index 97ddedc1af2..425c78ee9d0 100644 --- a/PWGCF/JCorran/Core/FlowJSPCAnalysis.h +++ b/PWGCF/JCorran/Core/FlowJSPCAnalysis.h @@ -79,9 +79,10 @@ class FlowJSPCAnalysis return; } mHistRegistry->add("FullCentrality", "FullCentrality", o2::framework::HistType::kTH1D, {{100, 0., 100.}}, true); - // Effective N_m per centrality class, weighted by M_m (arXiv:2606.10258 c0). - mHistRegistry->add("fN3", "Effective N_{3};centrality class;N_{3}", {o2::framework::HistType::kTProfile, {{9, 0., 9.}}}, true); - mHistRegistry->add("fN4", "Effective N_{4};centrality class;N_{4}", {o2::framework::HistType::kTProfile, {{9, 0., 9.}}}, true); + // Stores _comb = 1/N_m^{m-1} (arXiv:2606.10258 Eq. IV.2). + // Invert offline: N_m = content^{-1/(m-1)}. Weight is M_m. + mHistRegistry->add("fN3", "1/N_{3}^{2};centrality class;1/N_{3}^{2}", {o2::framework::HistType::kTProfile, {{9, 0., 9.}}}, true); + mHistRegistry->add("fN4", "1/N_{4}^{3};centrality class;1/N_{4}^{3}", {o2::framework::HistType::kTProfile, {{9, 0., 9.}}}, true); mHistRegistry->add("Centrality_0/fResults", "Numerators and denominators", {o2::framework::HistType::kTProfile, {{24, 0., 24.}}}, true); mHistRegistry->add("Centrality_0/fCovResults", "Covariance N*D", {o2::framework::HistType::kTProfile, {{48, 0., 48.}}}, true); mHistRegistry->add("Centrality_0/phiBefore", "Phi before", {o2::framework::HistType::kTH1D, {{100, 0., o2::constants::math::TwoPI}}}, true);