]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/AliForwardFlowTaskQC.h
Adding support for centrality info from event gen header.
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwardFlowTaskQC.h
CommitLineData
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 17class AliAODForwardMult;
87f694ab 18class TH1I;
2b556440 19class TH1D;
87f694ab 20class TH2I;
d420e249 21class TH2F;
2b556440 22class TH2D;
23class TH3D;
4b5b52b7 24class TAxis;
87f694ab 25class 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 */
46class AliForwardFlowTaskQC : public AliAnalysisTaskSE
47{
48public:
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 267protected:
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: