Skip to content

Commit 19e2187

Browse files
[PWGLF] Harmonics configurable and amplitude definition (#11555)
1 parent cd56de7 commit 19e2187

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

PWGLF/TableProducer/Nuspex/nucleiFlowTree.cxx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -428,11 +428,11 @@ struct nucleiFlowTree {
428428
computeEventPlane(collision.qvecTPCallImVec()[cfgHarmonics - 2], collision.qvecTPCallReVec()[cfgHarmonics - 2]),
429429
computeEventPlane(collision.qvecTPCnegImVec()[cfgHarmonics - 2], collision.qvecTPCnegReVec()[cfgHarmonics - 2]),
430430
computeEventPlane(collision.qvecTPCposImVec()[cfgHarmonics - 2], collision.qvecTPCposReVec()[cfgHarmonics - 2]),
431-
collision.sumAmplFT0A(),
432-
collision.sumAmplFT0C(),
433-
static_cast<float>(collision.nTrkTPCall()),
434-
static_cast<float>(collision.nTrkTPCneg()),
435-
static_cast<float>(collision.nTrkTPCpos())});
431+
std::hypot(collision.qvecFT0AImVec()[cfgHarmonics - 2], collision.qvecFT0AReVec()[cfgHarmonics - 2]),
432+
std::hypot(collision.qvecFT0CImVec()[cfgHarmonics - 2], collision.qvecFT0CReVec()[cfgHarmonics - 2]),
433+
std::hypot(collision.qvecTPCallImVec()[cfgHarmonics - 2], collision.qvecTPCallReVec()[cfgHarmonics - 2]),
434+
std::hypot(collision.qvecTPCnegImVec()[cfgHarmonics - 2], collision.qvecTPCnegReVec()[cfgHarmonics - 2]),
435+
std::hypot(collision.qvecTPCposImVec()[cfgHarmonics - 2], collision.qvecTPCposReVec()[cfgHarmonics - 2])});
436436
}
437437
if (flag & kTriton) {
438438
if (track.pt() < cfgCutPtMinTree || track.pt() > cfgCutPtMaxTree || track.sign() > 0)

PWGLF/TableProducer/QC/flowQC.cxx

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,11 @@ struct flowQC {
111111
int mRunNumber = 0;
112112
float mBz = 0.f;
113113

114+
Configurable<int> cfgHarmonics{"cfgHarmonics", 2, "Harmonics for flow analysis"};
115+
114116
// Flow analysis
115117
using CollWithEPandQvec = soa::Join<aod::Collisions,
116-
aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::CentFV0As, aod::FT0Mults, aod::FV0Mults, aod::TPCMults, aod::EPCalibrationTables, aod::QvectorFT0Cs, aod::QvectorFT0As, aod::QvectorFT0Ms, aod::QvectorFV0As, aod::QvectorBTots, aod::QvectorBPoss, aod::QvectorBNegs>::iterator;
118+
aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::CentFV0As, aod::FT0Mults, aod::FV0Mults, aod::TPCMults, aod::EPCalibrationTables, aod::QvectorFT0CVecs, aod::QvectorFT0AVecs, aod::QvectorFT0MVecs, aod::QvectorFV0AVecs, aod::QvectorTPCallVecs, aod::QvectorTPCposVecs, aod::QvectorTPCnegVecs>::iterator;
117119

118120
HistogramRegistry general{"general", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
119121
HistogramRegistry flow_ep{"flow_ep", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
@@ -171,15 +173,15 @@ struct flowQC {
171173

172174
const AxisSpec centAxis{cfgCentralityBins, fmt::format("{} percentile", (std::string)centDetectorNames[cfgCentralityEstimator])};
173175

174-
const AxisSpec QxAxis{cfgQvecBins, "Q_{2,x}"};
175-
const AxisSpec QyAxis{cfgQvecBins, "Q_{2,y}"};
176+
const AxisSpec QxAxis{cfgQvecBins, Form("Q_{%d,x}", cfgHarmonics.value)};
177+
const AxisSpec QyAxis{cfgQvecBins, Form("Q_{%d,y}", cfgHarmonics.value)};
176178

177-
const AxisSpec NormQxAxis{cfgQvecBins, "#frac{Q_{2,x}}{||#vec{Q_{2}}||}"};
178-
const AxisSpec NormQyAxis{cfgQvecBins, "#frac{Q_{2,y}}{||#vec{Q_{2}}||}"};
179+
const AxisSpec NormQxAxis{cfgQvecBins, Form("#frac{Q_{%d,x}}{||#vec{Q_{%d}}||}", cfgHarmonics.value, cfgHarmonics.value)};
180+
const AxisSpec NormQyAxis{cfgQvecBins, Form("#frac{Q_{%d,y}}{||#vec{Q_{%d}}||}", cfgHarmonics.value, cfgHarmonics.value)};
179181

180-
const AxisSpec psiAxis{cfgPhiBins, "#psi_{2}"};
181-
const AxisSpec psiCompAxis{cfgPhiBins, "#psi_{2}^{EP} - #psi_{2}^{Qvec}"};
182-
const AxisSpec cosPsiCompAxis{cfgCosPhiBins, "cos[2(#psi_{2}^{EP} - #psi_{2}^{Qvec})]"};
182+
const AxisSpec psiAxis{cfgPhiBins, Form("#psi_{%d}", cfgHarmonics.value)};
183+
const AxisSpec psiCompAxis{cfgPhiBins, Form("#psi_{%d}^{EP} - #psi_{%d}^{Qvec}", cfgHarmonics.value, cfgHarmonics.value)};
184+
const AxisSpec cosPsiCompAxis{cfgCosPhiBins, Form("cos[2(#psi_{%d}^{EP} - #psi_{%d}^{Qvec})]", cfgHarmonics.value, cfgHarmonics.value)};
183185

184186
// z vertex histogram
185187
general.add("hRecVtxZData", "collision z position", HistType::kTH1F, {{200, -20., +20., "z position (cm)"}});
@@ -203,12 +205,12 @@ struct flowQC {
203205
hDeltaPsi[iMethod][iQvecDet][jQvecDet] = registry->add<TH2>(Form("hDeltaPsi_%s_%s_%s", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str(), suffixes[iMethod].c_str()), "", HistType::kTH2F, {centAxis, {cfgDeltaPhiBins, Form("#psi_{%s} - #psi_{%s}", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str())}});
204206

205207
// Scalar-product histograms
206-
auto spLabel = Form("#vec{Q}_{2}^{%s} #upoint #vec{Q}_{2}^{%s}", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str());
208+
auto spLabel = Form("#vec{Q}_{%d}^{%s} #upoint #vec{Q}_{%d}^{%s}", cfgHarmonics.value, qVecDetectorNames[iQvecDet].c_str(), cfgHarmonics.value, qVecDetectorNames[jQvecDet].c_str());
207209

208210
hScalarProduct[iMethod][iQvecDet][jQvecDet] = registry->add<TH2>(Form("hScalarProduct_%s_%s_%s", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str(), suffixes[iMethod].c_str()), "", HistType::kTH2F, {centAxis, {cfgQvecBins, spLabel}});
209211

210212
// Normalised scalar-product histograms
211-
auto normSpLabel = Form("#frac{#vec{Q}_{2}^{%s} #upoint #vec{Q}_{2}^{%s}}{||#vec{Q}_{2}^{%s}|| ||#vec{Q}_{2}^{%s}||}", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str(), qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str());
213+
auto normSpLabel = Form("#frac{#vec{Q}_{%d}^{%s} #upoint #vec{Q}_{%d}^{%s}}{||#vec{Q}_{%d}^{%s}|| ||#vec{Q}_{%d}^{%s}||}", cfgHarmonics.value, qVecDetectorNames[iQvecDet].c_str(), cfgHarmonics.value, qVecDetectorNames[jQvecDet].c_str(), cfgHarmonics.value, qVecDetectorNames[iQvecDet].c_str(), cfgHarmonics.value, qVecDetectorNames[jQvecDet].c_str());
212214

213215
hNormalisedScalarProduct[iMethod][iQvecDet][jQvecDet] = registry->add<TH2>(Form("hNormalisedScalarProduct_%s_%s_%s", qVecDetectorNames[iQvecDet].c_str(), qVecDetectorNames[jQvecDet].c_str(), suffixes[iMethod].c_str()), "", HistType::kTH2F, {centAxis, {cfgQvecBins, normSpLabel}});
214216
}
@@ -285,28 +287,28 @@ struct flowQC {
285287
float QyTPC_EP = QmodTPC_EP * std::sin(2 * psiTPC_EP);
286288

287289
// Qvec method
288-
float QxFT0A_Qvec = collision.qvecFT0ARe();
289-
float QyFT0A_Qvec = collision.qvecFT0AIm();
290+
float QxFT0A_Qvec = collision.qvecFT0AReVec()[cfgHarmonics - 2];
291+
float QyFT0A_Qvec = collision.qvecFT0AImVec()[cfgHarmonics - 2];
290292
float QmodFT0A_Qvec = std::hypot(QxFT0A_Qvec, QyFT0A_Qvec);
291293
float psiFT0A_Qvec = computeEventPlane(QyFT0A_Qvec, QxFT0A_Qvec);
292294

293-
float QxFT0C_Qvec = collision.qvecFT0CRe();
294-
float QyFT0C_Qvec = collision.qvecFT0CIm();
295+
float QxFT0C_Qvec = collision.qvecFT0CReVec()[cfgHarmonics - 2];
296+
float QyFT0C_Qvec = collision.qvecFT0CImVec()[cfgHarmonics - 2];
295297
float QmodFT0C_Qvec = std::hypot(QxFT0C_Qvec, QyFT0C_Qvec);
296298
float psiFT0C_Qvec = computeEventPlane(QyFT0C_Qvec, QxFT0C_Qvec);
297299

298-
float QxTPCl_Qvec = collision.qvecBNegRe();
299-
float QyTPCl_Qvec = collision.qvecBNegIm();
300+
float QxTPCl_Qvec = collision.qvecTPCnegReVec()[cfgHarmonics - 2];
301+
float QyTPCl_Qvec = collision.qvecTPCnegImVec()[cfgHarmonics - 2];
300302
float QmodTPCl_Qvec = std::hypot(QxTPCl_Qvec, QyTPCl_Qvec);
301303
float psiTPCl_Qvec = computeEventPlane(QyTPCl_Qvec, QxTPCl_Qvec);
302304

303-
float QxTPCr_Qvec = collision.qvecBPosRe();
304-
float QyTPCr_Qvec = collision.qvecBPosIm();
305+
float QxTPCr_Qvec = collision.qvecTPCposReVec()[cfgHarmonics - 2];
306+
float QyTPCr_Qvec = collision.qvecTPCposImVec()[cfgHarmonics - 2];
305307
float QmodTPCr_Qvec = std::hypot(QxTPCr_Qvec, QyTPCr_Qvec);
306308
float psiTPCr_Qvec = computeEventPlane(QyTPCr_Qvec, QxTPCr_Qvec);
307309

308-
float QxTPC_Qvec = collision.qvecBTotRe();
309-
float QyTPC_Qvec = collision.qvecBTotIm();
310+
float QxTPC_Qvec = collision.qvecTPCallReVec()[cfgHarmonics - 2];
311+
float QyTPC_Qvec = collision.qvecTPCallImVec()[cfgHarmonics - 2];
310312
float QmodTPC_Qvec = std::hypot(QxTPC_Qvec, QyTPC_Qvec);
311313
float psiTPC_Qvec = computeEventPlane(QyTPC_Qvec, QxTPC_Qvec);
312314

0 commit comments

Comments
 (0)