2 // Calculate the flow in the forward regions using the Q cumulants method
4 #ifndef ALIFORWARDFLOWTASKQC_H
5 #define ALIFORWARDFLOWTASKQC_H
7 * @file AliForwardFlowTaskQC.h
8 * @author Alexander Hansen alexander.hansen@cern.ch
9 * @date Fri Mar 25 13:53:00 2011
14 * @ingroup pwg2_forward_flow
16 #include "AliAnalysisTaskSE.h"
17 #include "AliForwardFlowUtil.h"
21 * @defgroup pwg2_forward_tasks_flow Flow tasks
22 * @ingroup pwg2_forward_tasks
25 * Calculate the flow in the forward regions using the Q cumulants method
31 * - AnalysisResults.root
33 * @ingroup pwg2_forward_tasks_flow
34 * @ingroup pwg2_forward_flow
36 * @todo Add centrality stuff
39 class AliForwardFlowTaskQC : public AliAnalysisTaskSE
45 AliForwardFlowTaskQC();
49 * @param name Name of task
51 AliForwardFlowTaskQC(const char* name);
55 virtual ~AliForwardFlowTaskQC() {}
58 * @name Task interface methods
61 * Create output objects
64 virtual void UserCreateOutputObjects();
69 virtual void Init() {}
73 * @param option Not used
75 virtual void UserExec(Option_t *option);
79 * @param option Not used
81 virtual void Terminate(Option_t *option);
84 * Returns the outputlist
87 TList* GetOutputList() { return fOutputList; }
89 * Set Number of @f$ \eta@f$ bins to be used in flow analysis
92 void SetUseNEtaBins(Int_t nbins) { fEtaBins = nbins; }
94 * Set which harmonics to calculate. @f$ v_{1}@f$ to @f$ v_{4}@f$ is
95 * available and calculated as default
97 * @param v1 Do @f$ v_{1}@f$
98 * @param v2 Do @f$ v_{2}@f$
99 * @param v3 Do @f$ v_{3}@f$
100 * @param v4 Do @f$ v_{4}@f$
102 void SetDoHarmonics(Bool_t v1 = kTRUE, Bool_t v2 = kTRUE,
103 Bool_t v3 = kTRUE, Bool_t v4 = kTRUE,
104 Bool_t v5 = kTRUE, Bool_t v6 = kTRUE) {
105 fv[1] = v1; fv[2] = v2; fv[3] = v3; fv[4] = v4; fv[5] = v5; fv[6] = v6;}
107 * Set string to add flow to MC truth particles
111 void AddFlow(TString type = "") { fAddFlow = type; }
113 * Set which function fAddFlow should use
115 * @param type of AddFlow
117 void AddFlowType(Int_t number = 0) { fAddType = number; }
119 * Set which order of flow to add
121 * @param order Flow order
123 void AddFlowOrder(Int_t order = 2) { fAddOrder = order; }
130 void SetMCinput(Bool_t mc = kTRUE) { fMC = mc; }
132 * Set number of eta bins to be used in reference flow
134 * @param bins Ref Eta Bins
136 void SetRefEtaBins(Int_t bins) { fEtaRef = bins; }
141 * @param o Object to copy from
143 AliForwardFlowTaskQC(const AliForwardFlowTaskQC& o);
145 * Assignment operator
147 * @return Reference to this object
149 AliForwardFlowTaskQC& operator=(const AliForwardFlowTaskQC&) { return *this; }
151 * if MC information is available do analysis on Monte Carlo truth
152 * and track references
155 void ProcessPrimary();
157 * Calculate Q cumulant
159 * @param type Determines which histograms should be used
160 * - "FMD" = FMD data histograms
161 * - "SPD" = SPD data histograms
162 * - "TR" = track reference histograms
163 * - "MC" = MC truth histograms
164 * @param harmonic Which harmonic to calculate
166 void CumulantsMethod(TString type, Int_t harmonic);
168 TList* fOutputList; // Output list
169 AliForwardFlowUtil* fFlowUtil;// AliForwardFlowUtil
170 AliAODEvent* fAOD; // AOD event
171 Bool_t fMC; // Is MC flags
172 Int_t fEtaBins; // Number of eta bins in histograms
173 Int_t fEtaRef; // Number of eta bins for reference flow
174 Bool_t fv[7]; // Calculate v_{n} flag
175 TString fAddFlow; // Add flow string
176 Int_t fAddType; // Add flow type #
177 Int_t fAddOrder; // Add flow order
178 Float_t fZvertex; // Z vertex bin
179 Double_t fCent; // Centrality
182 ClassDef(AliForwardFlowTaskQC, 2); // Analysis task for FMD analysis