]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardMCFlowTaskQC.h
Merge branch 'feature-movesplit'
[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    * Add flow to MC particles
63    */
64   void SetUseFlowWeights(Bool_t use = kTRUE) { fUseFlowWeights = use; }
65    
66 protected:
67   /**
68    * Copy constructor
69    *
70    * @param o Object to copy from
71    */
72   AliForwardMCFlowTaskQC(const AliForwardMCFlowTaskQC& o);
73   /** 
74    * Assignment operator 
75    * 
76    * @param o Object to assing from 
77    *
78    * @return Reference to this object 
79    */
80   AliForwardMCFlowTaskQC& operator=(const AliForwardMCFlowTaskQC& o);
81   /**
82    * Initiate vertex bin objects
83    */
84   void InitVertexBins();
85   /**
86    * Initiate diagnostics histograms
87    */
88   void InitHists();
89   /**
90    * Analyze event
91    *
92    * @return true on success 
93    */
94   Bool_t Analyze();
95   /**
96    * Finalize analysis
97    */
98   void Finalize();
99     /**
100    * Check AODevent object for trigger, vertex and centrality
101    * uses aod header if object is null
102    * returns true if event is OK
103    *
104    * @param aodfm AliAODForwardMult object
105    * 
106    * @return Bool_t 
107    */
108   virtual Bool_t CheckEvent(const AliAODForwardMult* aodfm);
109   /**
110    * Check trigger from AODForwardMult object
111    * returns true if B trigger is present
112    *
113    * @param aodfm AliAODForwardMultObject
114    * 
115    * @return Bool_t 
116    */
117   virtual Bool_t CheckTrigger(const AliAODForwardMult* aodfm) const;
118   /**
119    * Check for centrality in AliAODForwardMult object, 
120    * if present return true - also sets fCent value
121    * can be used to get centrality from impact parameter
122    *
123    * @param aodfm AliAODForwardMultObject
124    * 
125    * @return Bool_t 
126    */
127   virtual Bool_t GetCentrality(const AliAODForwardMult* aodfm);
128   /**
129    * Check for vertex in MCHeader
130    * returns true if in range of fVtxAXis, also sets fVtx value
131    *
132    * @param aodfm Not used
133    * 
134    * @return Bool_t 
135    */
136   virtual Bool_t GetVertex(const AliAODForwardMult* aodfm);
137   /**
138    * Loop over AliAODMCParticle branch object and fill d^2N/detadphi histograms
139    * add flow if arguments are set
140    * 
141    * @return true on success
142    */
143   Bool_t FillMCHist();
144   /**
145    * Get centrality form MC impact parameter
146    *
147    * @return Centrality
148    */
149   Double_t GetCentFromB() const;
150   
151   TList                 fBinsForwardTR;   //  List with FMDTR VertexBin objects
152   TList                 fBinsCentralTR;   //  List with SPDTR VertexBin objects
153   TList                 fBinsMC;          //  List with MC VertexBin objects
154   AliAODMCHeader*       fAODMCHeader;     //  MC header object
155   TH2D                  fHistdNdedpMC;    //  d^2N/detadphi MC particles histogram
156   TH2D*                 fHistFMDMCCorr;   //  Diagnostics for mult. corr. between FMD and MC
157   TH2D*                 fHistSPDMCCorr;   //  Diagnostics for mult. corr. between SPD and MC
158   AliForwardFlowWeights* fWeights;         //  Flow after burner 
159   TGraph*               fImpactParToCent; //  Parametrization of b to centrality
160   Bool_t                fUseImpactPar;    //  Flag to use impact parameter for cent
161   Bool_t                fUseMCVertex;     //  Get vertex from MC header
162   Bool_t                fUseFlowWeights;  //  Add flow
163
164   ClassDef(AliForwardMCFlowTaskQC, 6); // FMD MC analysis task 
165 };
166  
167 #endif
168 // Local Variables:
169 //   mode: C++ 
170 // End: