Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions PWGCF/JCorran/Core/FlowJSPCAnalysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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 <N^{-(m-1)}>_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<float>(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]);
}
}
}
Expand Down
7 changes: 4 additions & 3 deletions PWGCF/JCorran/Core/FlowJSPCAnalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <N^{-(m-1)}>_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);
Expand Down
Loading