]>
Commit | Line | Data |
---|---|---|
d2bea14e | 1 | // |
2 | // Calculate the flow in the forward regions using the Q cumulants method | |
3 | // | |
4 | #ifndef ALIFORWARDFLOWTASKQC_H | |
5 | #define ALIFORWARDFLOWTASKQC_H | |
ffca499d | 6 | /** |
2b556440 | 7 | * @file AliForwardFlowTaskQC.h |
8 | * @author Alexander Hansen | |
ffca499d | 9 | * |
2b556440 | 10 | * @brief |
ffca499d | 11 | * |
bd6f5206 | 12 | * @ingroup pwglf_forward_flow |
ffca499d | 13 | */ |
d2bea14e | 14 | #include "AliAnalysisTaskSE.h" |
4b5b52b7 | 15 | #include "TString.h" |
87f694ab | 16 | #include <TH2D.h> |
2b556440 | 17 | class AliAODForwardMult; |
87f694ab | 18 | class TH1I; |
2b556440 | 19 | class TH1D; |
87f694ab | 20 | class TH2I; |
d420e249 | 21 | class TH2F; |
2b556440 | 22 | class TH2D; |
23 | class TH3D; | |
4b5b52b7 | 24 | class TAxis; |
87f694ab | 25 | class AliESDtrackCuts; |
290052e7 | 26 | /** |
bd6f5206 | 27 | * @defgroup pwglf_forward_tasks_flow Flow tasks |
290052e7 | 28 | * |
29 | * Code to do with flow | |
30 | * | |
bd6f5206 | 31 | * @ingroup pwglf_forward_tasks |
ffca499d | 32 | */ |
d2bea14e | 33 | /** |
34 | * Calculate the flow in the forward regions using the Q cumulants method | |
35 | * | |
36 | * @par Inputs: | |
37 | * - AliAODEvent | |
38 | * | |
39 | * Outputs: | |
87f694ab | 40 | * - forward_flow.root |
d2bea14e | 41 | * |
bd6f5206 | 42 | * @ingroup pwglf_forward_tasks_flow |
43 | * @ingroup pwglf_forward_flow | |
d2bea14e | 44 | * |
45 | */ | |
46 | class AliForwardFlowTaskQC : public AliAnalysisTaskSE | |
47 | { | |
48 | public: | |
49 | /** | |
50 | * Constructor | |
51 | */ | |
9d05ffeb | 52 | AliForwardFlowTaskQC(); |
d2bea14e | 53 | /** |
54 | * Constructor | |
55 | * | |
56 | * @param name Name of task | |
57 | */ | |
9d05ffeb | 58 | AliForwardFlowTaskQC(const char* name); |
d2bea14e | 59 | /** |
60 | * Destructor | |
61 | */ | |
ffca499d | 62 | virtual ~AliForwardFlowTaskQC() {} |
9d05ffeb | 63 | /** |
d2bea14e | 64 | * @{ |
ffca499d | 65 | * @name Task interface methods |
d2bea14e | 66 | */ |
67 | /** | |
68 | * Create output objects | |
d2bea14e | 69 | */ |
9453b19e | 70 | virtual void UserCreateOutputObjects(); |
d2bea14e | 71 | /** |
72 | * Initialize the task | |
d2bea14e | 73 | */ |
2b556440 | 74 | virtual void Init() {} |
d2bea14e | 75 | /** |
76 | * Process each event | |
77 | * | |
78 | * @param option Not used | |
79 | */ | |
9d05ffeb | 80 | virtual void UserExec(Option_t *option); |
d2bea14e | 81 | /** |
82 | * End of job | |
83 | * | |
84 | * @param option Not used | |
85 | */ | |
9d05ffeb | 86 | virtual void Terminate(Option_t *option); |
ffca499d | 87 | /* @} */ |
2b556440 | 88 | /** |
d2bea14e | 89 | * Returns the outputlist |
2b556440 | 90 | * |
91 | * @return TList* | |
4b5b52b7 | 92 | */ |
9d05ffeb | 93 | TList* GetOutputList() { return fOutputList; } |
4b5b52b7 | 94 | /** |
87f694ab | 95 | * Set max flow moment to calculate. |
2b556440 | 96 | * |
87f694ab | 97 | * @param n Do v_2 to v_n |
d2bea14e | 98 | */ |
87f694ab | 99 | void SetMaxFlowMoment(Short_t n) { fMaxMoment = n; } |
290052e7 | 100 | /** |
87f694ab | 101 | * Set vertex binning and range |
4b5b52b7 | 102 | * |
103 | * @param axis Use this vtx axis | |
4b5b52b7 | 104 | */ |
105 | void SetVertexAxis(TAxis* axis) { fVtxAxis = axis; } | |
87f694ab AH |
106 | /** |
107 | * Set centrality/multiplicity binning and range | |
108 | * | |
109 | * @param axis Use this binning | |
110 | */ | |
111 | void SetCentralityAxis(TAxis* axis) { fCentAxis = axis; } | |
290052e7 | 112 | /** |
d420e249 | 113 | * Set detector sigma cuts |
114 | * | |
115 | * @param fmdCut FMD sigma cut | |
116 | * @param spdCut SPD sigma cut | |
d420e249 | 117 | */ |
118 | void SetDetectorCuts(Double_t fmdCut, Double_t spdCut) { fFMDCut = fmdCut; fSPDCut = spdCut; } | |
68589651 | 119 | /** |
33438b4c | 120 | * Set flow flags, @f$\eta@f$-gap, sym. around @f$\eta=0@f$ or |
87f694ab | 121 | * sat. vtx. interactions, also sets which forward detector to use |
68589651 | 122 | * |
123 | * @param flags EFlowFlags | |
124 | */ | |
87f694ab | 125 | void SetFlowFlags(UShort_t flags); |
68589651 | 126 | /** |
87f694ab AH |
127 | * Get QC type |
128 | * | |
129 | * @param flags EFlowFlags | |
130 | * @param prepensUS prepend an underscore | |
131 | * | |
132 | * @return type | |
133 | */ | |
134 | static const Char_t* GetQCType(UShort_t flags, Bool_t prependUS = kTRUE); | |
68589651 | 135 | /** |
33438b4c | 136 | * Set @f$|\eta|@f$ value to make cut for @f$\eta@f$ gap at |
68589651 | 137 | * |
33438b4c | 138 | * @param eg gap value |
68589651 | 139 | */ |
140 | void SetEtaGapValue(Double_t eg) { fEtaGap = eg; } | |
87f694ab AH |
141 | /** |
142 | * Enum for flow flags | |
143 | */ | |
144 | enum EFlowFlags { | |
145 | kStdQC = 0x001, // Standard QC{2} and QC{4} calculations | |
146 | kEtaGap = 0x002, // QC{2} w/ an eta-gap | |
147 | k3Cor = 0x004, // 3 correlator method for QC{2} w/ an eta-gap | |
148 | kSymEta = 0x008, // Symmetrize ref flow in std. QC{2} and QC{4} around eta = 0 | |
149 | kSatVtx = 0x010, // Do satellite vertex input (currently not implemented) | |
150 | kNUAcorr = 0x020, // Apply full NUA correction | |
151 | kFMD = 0x040, // Use FMD for forward flow | |
152 | kVZERO = 0x080, // Use VZERO for forward flow | |
02738f97 | 153 | kTPC = 0x100, // Use TPC tracks for reference flow |
154 | kSPD = 0x200, // SPD object flag | |
155 | kMC = 0x400 // MC object flag | |
87f694ab AH |
156 | }; |
157 | /** | |
158 | * struct to handle cumulant calculations and control histograms | |
159 | */ | |
160 | struct CumuHistos : public TObject | |
161 | { | |
162 | public: | |
163 | /* | |
164 | * Constructor | |
165 | */ | |
166 | CumuHistos() : fMaxMoment(), fRefHists(), fDiffHists(), fNUA() {} | |
167 | /** | |
168 | * Constructor | |
169 | * | |
170 | * @param n max flow moment contained | |
171 | * @param nua Make room for NUA corrected histograms | |
172 | */ | |
173 | CumuHistos(Int_t n, UInt_t nua) : fMaxMoment(n), fRefHists(), fDiffHists(), fNUA(nua) {} | |
174 | /** | |
175 | * Copy constructor | |
176 | * | |
177 | * @param o Object to copy from | |
178 | * | |
179 | * @return CumuHistos | |
180 | */ | |
181 | CumuHistos(const CumuHistos& o) | |
182 | : TObject(o), | |
183 | fMaxMoment(o.fMaxMoment), // Max moment to compute | |
184 | fRefHists(o.fRefHists), // List with ref hists | |
185 | fDiffHists(o.fDiffHists), // List with diff hists | |
186 | fNUA(o.fNUA) | |
187 | {} | |
188 | /** | |
189 | * Assignment operator | |
190 | * | |
191 | * @param o Object to assing from | |
192 | * | |
193 | * @return reference to this | |
194 | */ | |
195 | CumuHistos& operator=(const CumuHistos& o) | |
196 | { | |
197 | if (&o == this) return *this; | |
198 | TObject::operator=(o); | |
199 | fMaxMoment = o.fMaxMoment; | |
200 | fRefHists = o.fRefHists; | |
201 | fDiffHists = o.fDiffHists; | |
202 | fNUA = o.fNUA; | |
203 | return *this; | |
204 | } | |
205 | /** | |
206 | * Destructor | |
207 | */ | |
208 | ~CumuHistos(){} | |
209 | /** | |
210 | * To access histograms | |
211 | * main function of this class | |
212 | * | |
213 | * @param t (r)eference or (d)iff | |
214 | * @param n flow moment | |
215 | * @param nua nua type | |
216 | * | |
217 | * @return requested histogram | |
218 | */ | |
fdd86891 | 219 | TH1* Get(Char_t t, Int_t n, UInt_t nua = 0) const; |
87f694ab AH |
220 | /** |
221 | * Connect internal lists to output | |
222 | * | |
223 | * @param name Name of VertexBin | |
224 | * @param l Output list | |
225 | */ | |
226 | void ConnectList(TString name, TList* l); | |
227 | /** | |
228 | * Make histograms to one of the lists | |
229 | * | |
230 | * @param h Hist to add | |
231 | */ | |
232 | void Add(TH1* h) const; | |
233 | /** | |
234 | * Check to see of lists are connected, | |
235 | * needed for grid/proof | |
236 | * | |
237 | * @return is connected? | |
238 | */ | |
239 | Bool_t IsConnected() { return (fRefHists && fDiffHists); } | |
240 | /** | |
241 | * enum for NUA histograms | |
242 | */ | |
243 | enum { | |
244 | kNoNUA = 0, // No NUA applied | |
245 | kNUAOld, // NUA correction from same moment applied | |
246 | kNUA // Full cross-moment NUA correction applied | |
247 | }; | |
248 | protected: | |
249 | /** | |
250 | * Get position of histogram in list | |
251 | * | |
252 | * @param n moment to get position of | |
253 | * @param nua nua type | |
254 | * | |
255 | * @return position | |
256 | */ | |
257 | Int_t GetPos(Int_t n, UInt_t nua) const; | |
258 | ||
259 | Int_t fMaxMoment; // Max flow moment contained | |
260 | TList* fRefHists; // List of reference hists | |
261 | TList* fDiffHists; // List of diff hists | |
262 | UInt_t fNUA; // NUA tracker | |
263 | ||
264 | ClassDef(CumuHistos, 1); | |
265 | }; // End of struct | |
266 | ||
68589651 | 267 | protected: |
268 | /** | |
87f694ab | 269 | * Enum for filling flow histos |
68589651 | 270 | */ |
87f694ab AH |
271 | enum { |
272 | kFillRef = 0x1, // Fill only ref flow | |
273 | kFillDiff = 0x2, // Fill only diff flow | |
274 | kFillBoth = 0x3, // Fill both | |
275 | kReset = 0x4, // Reset hists (used with one of the above) | |
276 | }; | |
277 | /** | |
278 | * Enum for event diagnostics | |
279 | */ | |
280 | enum { | |
281 | kNoEvent = 1, // No event found | |
282 | kNoForward, // No forward object found | |
283 | kNoCentral, // No central object found | |
284 | kNoTrigger, // No (wrong) trigger | |
285 | kNoCent, // No centrality | |
286 | kInvCent, // Centrality outside range | |
287 | kNoVtx, // No vertex | |
288 | kInvVtx, // Vertex outside range | |
289 | kOK // Event OK! | |
68589651 | 290 | }; |
291 | // ----------------- Being nested class --------------------- | |
290052e7 | 292 | /** |
293 | * Nested class to handle cumulant calculations in vertex bins | |
294 | */ | |
2b556440 | 295 | class VertexBin : public TNamed |
296 | { | |
290052e7 | 297 | public: |
2b556440 | 298 | /* |
299 | * Constructor | |
300 | */ | |
301 | VertexBin(); | |
4b5b52b7 | 302 | /** |
303 | * Constructor | |
304 | * | |
305 | * @param vLow Min vertex z-coordinate | |
306 | * @param vHigh Max vertex z-coordinate | |
307 | * @param moment Flow moment | |
87f694ab | 308 | * @param type Data type (FMD/VZERO/SPD/FMDTR/SPDTR/MC) |
33438b4c | 309 | * @param flags Flags |
290052e7 | 310 | * @param cut Cut value |
33438b4c | 311 | * @param etaGap @f$\eta@f$ gap |
4b5b52b7 | 312 | */ |
313 | VertexBin(Int_t vLow, Int_t vHigh, | |
314 | UShort_t moment, TString type, | |
87f694ab AH |
315 | UShort_t flags, |
316 | Double_t cut = -1, Double_t etaGap = -1.); | |
4b5b52b7 | 317 | /** |
318 | * Copy constructor | |
319 | * | |
320 | * @param o Object to copy from | |
321 | * | |
322 | * @return VertexBin | |
323 | */ | |
2b556440 | 324 | VertexBin(const VertexBin& o); |
4b5b52b7 | 325 | /** |
326 | * Assignment operator | |
327 | * | |
290052e7 | 328 | * @param v Object to assing from |
4b5b52b7 | 329 | * |
290052e7 | 330 | * @return reference to this |
4b5b52b7 | 331 | */ |
290052e7 | 332 | VertexBin& operator=(const VertexBin& v); |
4b5b52b7 | 333 | /** |
334 | * Destructor | |
335 | */ | |
2b556440 | 336 | ~VertexBin(){} |
4b5b52b7 | 337 | /** |
338 | * Add vertex bin output to list | |
339 | * | |
340 | * @param list Histograms are added to this list | |
87f694ab | 341 | * @param centAxis Axis to handle centrality binning |
4b5b52b7 | 342 | * |
343 | * @return void | |
344 | */ | |
87f694ab | 345 | void AddOutput(TList* list, TAxis* centAxis); |
4b5b52b7 | 346 | /** |
347 | * Fill reference and differential flow histograms for analysis | |
87f694ab | 348 | * using histograms as input |
4b5b52b7 | 349 | * |
350 | * @param dNdetadphi 2D data histogram | |
68589651 | 351 | * @param cent Centrality |
352 | * @param mode fill ref/diff or both | |
4b5b52b7 | 353 | * |
354 | * @return false if bad event (det. hotspot) | |
355 | */ | |
87f694ab AH |
356 | Bool_t FillHists(TH2D& dNdetadphi, Double_t cent, UShort_t mode); |
357 | /** | |
358 | * Fill reference and differential flow histograms for analysis | |
359 | * using tracks as input | |
360 | * | |
361 | * @param trList Array with tracks | |
362 | * @param cent Centrality | |
363 | * @param mode fill ref/diff or both | |
364 | * | |
365 | * @return false if bad event (det. hotspot) | |
366 | */ | |
367 | Bool_t FillTracks(TObjArray* trList, UShort_t mode); | |
4b5b52b7 | 368 | /** |
369 | * Do cumulants calculations for current event with | |
370 | * centrality cent | |
371 | * | |
372 | * @param cent Event centrality | |
87f694ab AH |
373 | */ |
374 | void CumulantsAccumulate(Double_t cent); | |
375 | /** | |
376 | * Do 3 correlator cumulants calculations for current event with | |
377 | * centrality cent | |
378 | * | |
379 | * @param cent Event centrality | |
380 | */ | |
381 | void CumulantsAccumulate3Cor(Double_t cent); | |
382 | /** | |
383 | * Get limits to do reference flow calculations for 3 correlator method | |
33438b4c | 384 | * |
87f694ab AH |
385 | * @param bin Differential bin |
386 | * @param aLow Lowest bin to be used for v_A | |
387 | * @param aHigh Highest bin to be used for v_A | |
388 | * @param bLow Lowest bin to be used for v_B | |
389 | * @param bHigh Highest bin to be used for v_B | |
4b5b52b7 | 390 | */ |
87f694ab | 391 | void GetLimits(Int_t bin, Int_t& aLow, Int_t& aHigh, Int_t& bLow, Int_t& bHigh) const; |
4b5b52b7 | 392 | /** |
393 | * Finish cumulants calculations. Takes input and | |
394 | * output lists in case Terminate is called separately | |
395 | * | |
396 | * @param inlist List with input histograms | |
397 | * @param outlist List with output histograms | |
4b5b52b7 | 398 | */ |
2b556440 | 399 | void CumulantsTerminate(TList* inlist, TList* outlist); |
4b5b52b7 | 400 | /* |
2a276c75 | 401 | * Enumeration for cumulant histograms |
4b5b52b7 | 402 | */ |
87f694ab AH |
403 | enum { kW2Two = 1, // <w2*two> |
404 | kW2, // <w2> | |
405 | kW4Four, // <w4*four> | |
406 | kW4, // <w4> | |
407 | kCosphi1phi2, // <cos(phi1+phi2)> | |
408 | kSinphi1phi2, // <sin(phi1+phi2)> | |
409 | kCosphi1phi2phi3m, // <cos(phi1-phi2-phi3)> | |
410 | kSinphi1phi2phi3m, // <sin(phi1-phi2-phi3)> | |
411 | k3pWeight, // M(M-1)(M-1) or (mp*M-2mq)(M-1) | |
412 | kCosphi1phi2phi3p, // <cos(phi1+phi2-phi3)> | |
413 | kSinphi1phi2phi3p // <sin(phi1+phi2-phi3)> | |
414 | }; | |
415 | protected: | |
416 | /** | |
417 | * Calculate reference flow | |
418 | * | |
419 | * @param cumu2 QC2 histos | |
420 | * @param cumu4 QC4 histos | |
421 | * @param quality QC Quality diag. histo | |
422 | * @param chist Centrality histogram | |
423 | * @param dNdetaRef dN/deta histogram | |
424 | */ | |
425 | void CalculateReferenceFlow(CumuHistos& cumu2h, CumuHistos& cumu4h, TH2I* quality, TH1D* chist, TH2D* dNdetaRef) const; | |
426 | /** | |
427 | * Calculate differential flow | |
428 | * | |
429 | * @param cumu2 QC2 histos | |
430 | * @param cumu4 QC4 histos | |
431 | * @param quality QC Quality diag. histo | |
432 | * @param dNdetaDiff dN/deta histogram | |
433 | */ | |
434 | void CalculateDifferentialFlow(CumuHistos& cumu2h, CumuHistos& cumu4h, TH2I* quality, TH2D* dNdetaDiff) const; | |
435 | /** | |
436 | * Calculate 3 correlator ref and fiff flow | |
437 | * | |
438 | * @param cumu2 QC2 histos | |
439 | * @param quality QC Quality diag. histo | |
440 | * @param chist Centrality histogram | |
441 | * @param dNdetaRef dN/deta histogram | |
442 | * @param dNdetaDiff dN/deta histogram | |
443 | */ | |
fdd86891 | 444 | void Calculate3CorFlow(CumuHistos& cumu2h, TH2I* quality, TH1D* chist, TH2D* dNdetaRef, TH2D* dNdetaDiff) const; |
87f694ab AH |
445 | /** |
446 | * Solve coupled eqs. to get v_n | |
447 | * | |
448 | * @param cumu CumuHistos object with non-corrected flow results | |
449 | * @param type reference of differential flow ('r'/'d'/'a'/'b') | |
450 | */ | |
451 | void SolveCoupledFlowEquations(CumuHistos& cumu, Char_t type) const; | |
452 | /** | |
453 | * Calculate NUA matrix elements to fill into the matrix | |
454 | * | |
455 | * @param n row | |
456 | * @param m column | |
457 | * @param type reference of differential flow ('r'/'d'/'a'/'b') | |
458 | * @param binA Eta bin of phi1 | |
459 | * @param cBin Centrality bin | |
460 | * | |
461 | * @return maxtrix element | |
462 | */ | |
463 | Double_t CalculateNUAMatrixElement(Int_t n, Int_t m, Char_t type, Int_t binA, Int_t cBin) const; | |
464 | /** | |
465 | * Adds up the vertex bins to master profiles | |
466 | * | |
467 | * @param cumu QC histos | |
468 | * @param list output list | |
469 | * @param nNUA number of nua calculations | |
470 | */ | |
471 | void AddVertexBins(CumuHistos& cumu, TList* list, UInt_t nNUA) const; | |
d420e249 | 472 | /** |
87f694ab | 473 | * Get the bin number of <<cos(nphi)>> |
d420e249 | 474 | * |
87f694ab | 475 | * @param n moment |
d420e249 | 476 | * |
87f694ab | 477 | * @return bin number |
d420e249 | 478 | */ |
87f694ab AH |
479 | Int_t GetBinNumberCos(Int_t n = 0) const; |
480 | /** | |
481 | * Get the bin number of <<sin(nphi)>> | |
482 | * | |
483 | * @param n moment | |
484 | * | |
485 | * @return bin number | |
486 | */ | |
487 | Int_t GetBinNumberSin(Int_t n = 0) const; | |
488 | /** | |
489 | * Setup NUA axis with labels | |
490 | * | |
491 | * @param axis NUA axis | |
492 | */ | |
493 | void SetupNUALabels(TAxis* a) const; | |
494 | /** | |
495 | * Make diagnostics hitogram | |
496 | * | |
497 | * @param name Name | |
498 | * | |
499 | * @return hist | |
500 | */ | |
501 | TH2I* MakeQualityHist(const Char_t* name) const; | |
502 | /** | |
503 | * Make output histogram | |
504 | * | |
505 | * @param qc # of particle correlations | |
506 | * @param n flow moment | |
507 | * @param ctype Type of flow | |
508 | * @param nua For nua corrected hists | |
509 | * | |
510 | * @return hist | |
511 | */ | |
512 | TH2D* MakeOutputHist(Int_t qc, Int_t n, const Char_t* ctype, UInt_t nua) const; | |
2b556440 | 513 | |
87f694ab AH |
514 | UShort_t fMaxMoment; // Max flow moment |
515 | Int_t fVzMin; // z-vertex min must be in whole [cm] | |
516 | Int_t fVzMax; // z-vertex max must be in whole [cm] | |
517 | TString fType; // Data type | |
518 | UShort_t fFlags; // Flow flags, e.g., eta-gap or sat. vtx | |
519 | Double_t fSigmaCut; // Detector specific cut for outlier events | |
520 | Double_t fEtaGap; // Eta gap value | |
521 | Double_t fEtaLims[6]; // Limits for binning in 3Cor method | |
522 | TH2D* fCumuRef; // Histogram for reference flow | |
523 | TH2D* fCumuDiff; // Histogram for differential flow | |
524 | CumuHistos fCumuHists; // Array of histograms for cumulants calculations | |
525 | TH3D* fCumuNUARef; // histogram for NUA terms | |
526 | TH3D* fCumuNUADiff; // histogram for NUA terms | |
527 | TH2F* fdNdedpRefAcc; // Diagnostics histogram for acc. maps | |
528 | TH2F* fdNdedpDiffAcc; // Diagnostics histogram for acc. maps | |
529 | TH2F* fOutliers; // Sigma <M> histogram | |
530 | UShort_t fDebug; // Debug flag | |
2b556440 | 531 | |
87f694ab | 532 | ClassDef(VertexBin, 4); // object for eta dependent cumulants ananlysis |
2b556440 | 533 | }; |
68589651 | 534 | // ---------- End of nested class ------------- |
d2bea14e | 535 | /** |
ffca499d | 536 | * Copy constructor |
537 | * | |
538 | * @param o Object to copy from | |
d2bea14e | 539 | */ |
ffca499d | 540 | AliForwardFlowTaskQC(const AliForwardFlowTaskQC& o); |
541 | /** | |
542 | * Assignment operator | |
543 | * | |
544 | * @return Reference to this object | |
545 | */ | |
2b556440 | 546 | AliForwardFlowTaskQC& operator=(const AliForwardFlowTaskQC&); |
290052e7 | 547 | /** |
2b556440 | 548 | * Initiate vertex bin objects |
d2bea14e | 549 | */ |
2b556440 | 550 | virtual void InitVertexBins(); |
290052e7 | 551 | /** |
2b556440 | 552 | * Initiate diagnostics histograms |
553 | */ | |
554 | virtual void InitHists(); | |
290052e7 | 555 | /** |
2b556440 | 556 | * Analyze event |
290052e7 | 557 | * |
558 | * @return true on success | |
2b556440 | 559 | */ |
560 | virtual Bool_t Analyze(); | |
290052e7 | 561 | /** |
2b556440 | 562 | * Finalize analysis |
9d05ffeb | 563 | */ |
2b556440 | 564 | virtual void Finalize(); |
d420e249 | 565 | /** |
566 | * Loops of vertex bins in list and runs analysis on those for current vertex | |
567 | * | |
568 | * @param list List of vertex bins | |
569 | * @param h dN/detadphi histogram | |
570 | * @param vtx Current vertex bin | |
87f694ab | 571 | * @param flags Extra flags |
d420e249 | 572 | */ |
87f694ab | 573 | void FillVtxBinList(const TList& list, TH2D& h1, Int_t vtx, UShort_t flags = 0x0) const; |
68589651 | 574 | /** |
575 | * Loops of vertex bins in list and runs analysis on those for current vertex | |
576 | * | |
577 | * @param list List of vertex bins | |
578 | * @param href dN/detadphi histogram for ref flow | |
579 | * @param hdiff dN/detadphi histogram for diff flow | |
580 | * @param vtx Current vertex bin | |
87f694ab AH |
581 | * @param flags Extra flags |
582 | */ | |
583 | void FillVtxBinListEtaGap(const TList& list, TH2D& href, TH2D& hdiff, Int_t vtx, UShort_t flags = 0x0) const; | |
584 | /** | |
585 | * Loops of vertex bins in list and runs analysis on those for current vertex | |
68589651 | 586 | * |
87f694ab AH |
587 | * @param list List of vertex bins |
588 | * @param hcent dN/detadphi histogram for central barrel | |
589 | * @param hfwd dN/detadphi histogram for fwd detectors | |
590 | * @param vtx Current vertex bin | |
591 | * @param flags Extra flags | |
68589651 | 592 | */ |
87f694ab AH |
593 | void FillVtxBinList3Cor(const TList& list, TH2D& hcent, TH2D& hfwd, Int_t vtx, UShort_t flags = 0x0); |
594 | /** | |
595 | * Combine forward and central detector histograms to one histogram, to be used for 3 correlator method | |
596 | * | |
597 | * @param hcent Central data | |
598 | * @param hfwd Forward data | |
599 | * | |
600 | * @return combined hist | |
601 | */ | |
602 | TH2D& CombineHists(TH2D& hcent, TH2D& hfwd); | |
603 | /** | |
604 | * Get TPC tracks from ESD or AOD input event | |
605 | * | |
606 | * @return array of tracks | |
607 | */ | |
608 | TObjArray* GetTracks() const; | |
d420e249 | 609 | /** |
610 | * Loops over VertexBin list and calls terminate on each | |
611 | * | |
612 | * @param list VertexBin list | |
613 | */ | |
614 | void EndVtxBinList(const TList& list) const; | |
615 | /** | |
87f694ab | 616 | * Projects a list of TH2D's with flow |
d420e249 | 617 | * results to TH1's in centrality bins |
618 | * | |
619 | * @param list List of flow results | |
d420e249 | 620 | */ |
87f694ab | 621 | void MakeCentralityHists(TList* list) const; |
d420e249 | 622 | /** |
623 | * Check AODevent object for trigger, vertex and centrality | |
87f694ab | 624 | * uses aod header if object is null |
d420e249 | 625 | * returns true if event is OK |
626 | * | |
87f694ab | 627 | * @param aodfm AliAODForwardMult object |
d420e249 | 628 | * |
629 | * @return Bool_t | |
630 | */ | |
67f453a9 | 631 | virtual Bool_t CheckEvent(const AliAODForwardMult* aodfm); |
d420e249 | 632 | /** |
633 | * Check trigger from AODForwardMult object | |
87f694ab | 634 | * uses aod header if object is null |
d420e249 | 635 | * returns true if offline trigger is present |
636 | * | |
87f694ab | 637 | * @param aodfm AliAODForwardMult object |
d420e249 | 638 | * |
639 | * @return Bool_t | |
640 | */ | |
641 | virtual Bool_t CheckTrigger(const AliAODForwardMult* aodfm) const; | |
642 | /** | |
643 | * Check for centrality in AliAODForwardMult object, | |
87f694ab | 644 | * uses aod header if object is null |
d420e249 | 645 | * if present return true - also sets fCent value |
646 | * | |
87f694ab | 647 | * @param aodfm AliAODForwardMult object |
d420e249 | 648 | * |
649 | * @return Bool_t | |
650 | */ | |
651 | virtual Bool_t GetCentrality(const AliAODForwardMult* aodfm); | |
652 | /** | |
653 | * Check for vertex in AliAODForwardMult | |
87f694ab | 654 | * uses aod header if object is null |
d420e249 | 655 | * returns true if in range of fVtxAXis, also sets fVtx value |
656 | * | |
87f694ab | 657 | * @param aodfm AliAODForwardMult object |
d420e249 | 658 | * |
659 | * @return Bool_t | |
660 | */ | |
661 | virtual Bool_t GetVertex(const AliAODForwardMult* aodfm); | |
f5908250 | 662 | /** |
663 | * Get VZERO Data | |
664 | * | |
665 | * @return VZERO data object | |
666 | */ | |
667 | AliVVZERO* GetVZERO() const; | |
008eda2b | 668 | /** |
87f694ab | 669 | * Fill VZERO d^2N/detadphi hist |
008eda2b | 670 | * |
87f694ab | 671 | * @param aodvzero: AliAODVZERO object |
008eda2b | 672 | */ |
f5908250 | 673 | void FillVZEROHist(AliVVZERO* vzero); |
d420e249 | 674 | /** |
675 | * Print the setup of the task | |
d420e249 | 676 | */ |
87f694ab | 677 | void PrintFlowSetup() const; |
d2bea14e | 678 | |
87f694ab AH |
679 | TAxis* fVtxAxis; // Axis to control vertex binning |
680 | TAxis* fCentAxis; // Axis to control centrality/multiplicity binning | |
681 | Double_t fFMDCut; // FMD sigma cut for outlier events | |
682 | Double_t fSPDCut; // SPD sigma cut for outlier events | |
683 | UShort_t fFlowFlags; // Flow flags, e.g., eta-gap, sat. vtx. | |
684 | Double_t fEtaGap; // Eta gap value | |
685 | TList fBinsForward; // List with forward VertexBin objects | |
686 | TList fBinsCentral; // List with central VertexBin objects | |
687 | TList* fSumList; // Sum list | |
688 | TList* fOutputList; // Output list | |
689 | AliAODEvent* fAOD; // AOD event | |
690 | AliESDtrackCuts* fESDTrackCuts; // ESD track cuts | |
691 | Int_t fMaxMoment; // Calculate v_{n} flag | |
692 | Float_t fVtx; // Z vertex bin | |
693 | Double_t fCent; // Centrality | |
694 | TH2D fHistdNdedpV0; // VZERO d^2N/detadphi histogram | |
695 | TH2D fHistdNdedp3Cor;// VZERO d^2N/detadphi histogram | |
696 | TH2D* fHistFMDSPDCorr;// Diagnostics hist for multiplicity correlations between FMD and SPD | |
697 | TH1D* fHistCent; // Diagnostics hist for centrality | |
698 | TH1D* fHistVertexSel; // Diagnostics hist for selected vertices | |
699 | TH1I* fHistEventSel; // Diagnostics hist for event selection | |
58f5fae2 | 700 | |
87f694ab | 701 | ClassDef(AliForwardFlowTaskQC, 4); // Analysis task for flow analysis |
d2bea14e | 702 | }; |
d420e249 | 703 | |
d2bea14e | 704 | #endif |
705 | // Local Variables: | |
706 | // mode: C++ | |
707 | // End: |