@@ -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