]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardMCFlowTaskQC.h
Adding support for centrality info from event gen header.
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwardMCFlowTaskQC.h
1 //
2 // Calculate the flow in the forward regions using the Q cumulants method
3 //
4 #ifndef ALIFORWARDMCFLOWTASKQC_H
5 #define ALIFORWARDMCFLOWTASKQC_H
6 /**
7  * @file   AliForwardMCFlowTaskQC.h
8  * @author Alexander Hansen alexander.hansen@cern.ch
9  * 
10  * @brief  
11  * 
12  * @ingroup pwglf_forward_flow
13  */
14 #include "AliForwardFlowTaskQC.h"
15 #include "AliForwardFlowWeights.h"
16 class TGraph;
17 class AliAODMCHeader;
18
19 /**
20  * Calculate the flow in the forward regions using the Q cumulants method
21  *
22  * @par Inputs:
23  *   - AliAODEvent
24  *
25  * Outputs:
26  *   - forward_flow.root
27  *
28  * @ingroup pwglf_forward_tasks_flow
29  * @ingroup pwglf_forward_flow
30  *
31  */
32 class AliForwardMCFlowTaskQC : public AliForwardFlowTaskQC
33 {
34 public:
35   /**
36    * Constructor
37    */
38   AliForwardMCFlowTaskQC();
39   /**
40    * Constructor
41    *
42    * @param name Name of task
43    */
44   AliForwardMCFlowTaskQC(const char* name);
45   /**
46    * Destructor 
47    */
48   virtual ~AliForwardMCFlowTaskQC() {}
49   /**
50    * Set use parametrization from impact parameter for centrality
51    *
52    * @param use Use impact par
53    */
54   void SetUseImpactParameter(Bool_t use = kTRUE) { fUseImpactPar = use; }
55   /**
56    * Set to get vertex from MC header
57    *
58    * @param use Get from MC header
59    */
60   void SetUseMCHeaderVertex(Bool_t use = kTRUE) { fUseMCVertex = use; }
61   /**
62    * Set string to add flow to MC particles particles
63    *
64    * @param type String
65    */
66   void AddFlow(TString type = "") { fAddFlow = type; }
67   /**
68    * Set which function fAddFlow should use
69    *
70    * @param number Type of AddFlow 
71    */
72   void AddFlowType(Int_t number = 0) { fAddType = number; }
73   /**
74    * Set which order of flow to add
75    *
76    * @param order Flow order 
77    */
78   void AddFlowOrder(Int_t order = 2) { fAddOrder = order; }
79  
80 protected:
81   /**
82    * Copy constructor
83    *
84    * @param o Object to copy from
85    */
86   AliForwardMCFlowTaskQC(const AliForwardMCFlowTaskQC& o);
87   /** 
88    * Assignment operator 
89    * 
90    * @param o Object to assing from 
91    *
92    * @return Reference to this object 
93    */
94   AliForwardMCFlowTaskQC& operator=(const AliForwardMCFlowTaskQC& o);
95   /**
96    * Initiate vertex bin objects
97    */
98   void InitVertexBins();
99   /**
100    * Initiate diagnostics histograms
101    */
102   void InitHists();
103   /**
104    * Analyze event
105    *
106    * @return true on success 
107    */
108   Bool_t Analyze();
109   /**
110    * Finalize analysis
111    */
112   void Finalize();
113     /**
114    * Check AODevent object for trigger, vertex and centrality
115    * uses aod header if object is null
116    * returns true if event is OK
117    *
118    * @param aodfm AliAODForwardMult object
119    * 
120    * @return Bool_t 
121    */
122   virtual Bool_t CheckEvent(const AliAODForwardMult* aodfm);
123   /**
124    * Check trigger from AODForwardMult object
125    * returns true if B trigger is present
126    *
127    * @param aodfm AliAODForwardMultObject
128    * 
129    * @return Bool_t 
130    */
131   virtual Bool_t CheckTrigger(const AliAODForwardMult* aodfm) const;
132   /**
133    * Check for centrality in AliAODForwardMult object, 
134    * if present return true - also sets fCent value
135    * can be used to get centrality from impact parameter
136    *
137    * @param aodfm AliAODForwardMultObject
138    * 
139    * @return Bool_t 
140    */
141   virtual Bool_t GetCentrality(const AliAODForwardMult* aodfm);
142   /**
143    * Check for vertex in MCHeader
144    * returns true if in range of fVtxAXis, also sets fVtx value
145    *
146    * @param aodfm Not used
147    * 
148    * @return Bool_t 
149    */
150   virtual Bool_t GetVertex(const AliAODForwardMult* aodfm);
151   /**
152    * Loop over AliAODMCParticle branch object and fill d^2N/detadphi histograms
153    * add flow if arguments are set
154    * 
155    * @return true on success
156    */
157   Bool_t FillMCHist();
158   /**
159    * Get centrality form MC impact parameter
160    *
161    * @return Centrality
162    */
163   Double_t GetCentFromB() const;
164   
165   TList                 fBinsForwardTR;   //  List with FMDTR VertexBin objects
166   TList                 fBinsCentralTR;   //  List with SPDTR VertexBin objects
167   TList                 fBinsMC;          //  List with MC VertexBin objects
168   AliAODMCHeader*       fAODMCHeader;     //  MC header object
169   TH2D                  fHistdNdedpMC;    //  d^2N/detadphi MC particles histogram
170   TH2D*                 fHistFMDMCCorr;   //  Diagnostics for mult. corr. between FMD and MC
171   TH2D*                 fHistSPDMCCorr;   //  Diagnostics for mult. corr. between SPD and MC
172   AliForwardFlowWeights fWeights;         //  Flow after burner 
173   TGraph*               fImpactParToCent; //  Parametrization of b to centrality
174   Bool_t                fUseImpactPar;    //  Flag to use impact parameter for cent
175   Bool_t                fUseMCVertex;     //  Get vertex from MC header
176   TString               fAddFlow;         //  Add flow string
177   Int_t                 fAddType;         //  Add flow type #
178   Int_t                 fAddOrder;        //  Add flow order
179
180   ClassDef(AliForwardMCFlowTaskQC, 5); // FMD MC analysis task 
181 };
182  
183 #endif
184 // Local Variables:
185 //   mode: C++ 
186 // End: