]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardQATask.h
6c576ddb3a92c3350ad98498d5378a1b33c99058
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwardQATask.h
1 // 
2 // Calculate the qa in the forward regions event-by-event 
3 // 
4 #ifndef ALIFORWARDQATASK_H
5 #define ALIFORWARDQATASK_H
6 /**
7  * @file   AliForwardQATask.h
8  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
9  * @date   Wed Mar 23 14:06:42 2011
10  * 
11  * @brief  
12  * 
13  * 
14  * @ingroup pwglf_forward_aod
15  */
16 #include "AliBaseESDTask.h"
17 #include "AliFMDEventInspector.h"
18 #include "AliFMDESDFixer.h"
19 #include "AliFMDSharingFilter.h"
20 #include "AliFMDDensityCalculator.h"
21 #include "AliFMDEnergyFitter.h"
22 #include <AliESDFMD.h>
23 class AliESDEvent;
24 class TH2D;
25 class TAxis;
26
27 /** 
28  * Calculate the QA in the forward regions
29  * 
30  * @par Inputs: 
31  *   - AliESDEvent 
32  *
33  * @par Outputs: 
34  *   - Histograms 
35  * 
36  * @par Histograms 
37  *   
38  * @par Corrections used 
39  * 
40  * @ingroup pwglf_forward_tasks
41  * 
42  */
43 class AliForwardQATask : public AliBaseESDTask
44 {
45 public:
46   /** 
47    * Constructor 
48    * 
49    * @param name Name of task 
50    */
51   AliForwardQATask(const char* name);
52   /** 
53    * Constructor
54    */
55   AliForwardQATask();
56   /** 
57    * @{ 
58    * @name Interface methods 
59    */
60   /** 
61    * Called when initialising the train. 
62    * 
63    * @return Always true
64    */
65   virtual Bool_t Setup();
66   /** 
67    * Book output objects. Derived class should define this to book
68    * output objects on the processing output list @c fList before the
69    * actual event processing.  This is called on the master and on
70    * each slave.
71    * 
72    * If this member function returns false, the execution is stopped
73    * with a fatal signal.
74    *
75    * @return true on success. 
76    */
77   virtual Bool_t Book();
78   /** 
79    * Called after reading in the first event. Here we can setup stuff
80    * depending on the conditions we're running under.
81    * 
82    * @return true on success.  If this returns false, then we turn the
83    * task into a zombie and we do no more processing.
84    */
85   virtual Bool_t PreData(const TAxis& vertex, const TAxis& eta);
86   
87   /** 
88    * Called before processing a single event - should not do anything
89    * but clear data, etc.
90    * 
91    * @return true on success
92    */
93   virtual Bool_t PreEvent();
94   /** 
95    * Process each event 
96    *
97    * @param esd Event
98    * 
99    * @return true on success
100    */  
101   virtual Bool_t Event(AliESDEvent& esd);
102   /** 
103    * End of job
104    * 
105    * @return true on success
106    */
107   virtual Bool_t Finalize();
108   /** 
109    * @} 
110    */
111   /** 
112    * @{ 
113    * @name Default axes 
114    */
115   /** 
116    * Set the default eta axis to use in case we didn't get one from
117    * the read-in corretions.  Override this if the sub class should go
118    * on even without a valid eta axis from the corrections (e.g. QA
119    * task)
120    * 
121    * @return null
122    */
123   virtual TAxis* DefaultEtaAxis() const;
124   /** 
125    * Set the default eta axis to use in case we didn't get one from
126    * the read-in corretions.  Override this if the sub class should go
127    * on even without a valid eta axis from the corrections (e.g. QA
128    * task)
129    * 
130    * @return null
131    */
132   virtual TAxis* DefaultVertexAxis() const;
133   /* @} */
134   /** 
135    * @{ 
136    * @name Access to sub-algorithms 
137    */
138   /**
139    * Get reference to the EventInspector algorithm 
140    * 
141    * @return Reference to AliFMDEventInspector object 
142    */
143   AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
144   /**
145    * Get reference to the ESDFixer algorithm 
146    * 
147    * @return Reference to AliFMDESDFixer object 
148    */
149   AliFMDESDFixer& GetESDFixer() { return fESDFixer; }
150   /**
151    * Get reference to the EnergyFitter algorithm 
152    * 
153    * @return Reference to AliFMDEnergyFitter object 
154    */
155   AliFMDEnergyFitter& GetEnergyFitter() { return fEnergyFitter; }
156   /**
157    * Get reference to the SharingFilter algorithm 
158    * 
159    * @return Reference to AliFMDSharingFilter object 
160    */
161   AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
162   /**
163    * Get reference to the DensityCalculator algorithm 
164    * 
165    * @return Reference to AliFMDDensityCalculator object 
166    */
167   AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
168   /**
169    * Get reference to the EventInspector algorithm 
170    * 
171    * @return Reference to AliFMDEventInspector object 
172    */
173   const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
174   /**
175    * Get reference to the ESDFixer algorithm 
176    * 
177    * @return Reference to AliFMDESDFixer object 
178    */
179   const AliFMDESDFixer& GetESDFixer() const { return fESDFixer; }
180   /**
181    * Get reference to the EnergyFitter algorithm 
182    * 
183    * @return Reference to AliFMDEnergyFitter object 
184    */
185   const AliFMDEnergyFitter& GetEnergyFitter() const { return fEnergyFitter; }
186   /**
187    * Get reference to the SharingFilter algorithm 
188    * 
189    * @return Reference to AliFMDSharingFilter object 
190    */
191   const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
192   /**
193    * Get reference to the DensityCalculator algorithm 
194    * 
195    * @return Reference to AliFMDDensityCalculator object 
196    */
197   const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
198   /** 
199    * @} 
200    */
201   /** 
202    * Set debug level 
203    * 
204    * @param dbg Debug level
205    */
206   void SetDebug(Int_t dbg);
207   /** 
208    * Print information 
209    * 
210    * @param option Not used
211    */
212   void Print(Option_t* option="") const;
213 protected: 
214   /** 
215    * Copy constructor 
216    * 
217    * @param o Object to copy from 
218    */
219   AliForwardQATask(const AliForwardQATask& o);
220   /** 
221    * Assignment operator 
222    * 
223    * @param o Object to assign from 
224    * 
225    * @return Reference to this object 
226    */
227   AliForwardQATask& operator=(const AliForwardQATask& o);
228
229   Bool_t                  fEnableLowFlux;// Whether to use low-flux code
230   AliESDFMD               fESDFMD;       // Sharing corrected ESD object
231   AliForwardUtil::Histos  fHistos;       // Cache histograms 
232   AliFMDEventInspector    fEventInspector;    // Algorithm
233   AliFMDESDFixer          fESDFixer;          // Algorithm
234   AliFMDEnergyFitter      fEnergyFitter;      // Algorithm
235   AliFMDSharingFilter     fSharingFilter;     // Algorithm
236   AliFMDDensityCalculator fDensityCalculator; // Algorithm
237
238   ClassDef(AliForwardQATask,4) // Forward QA class
239 };
240
241 #endif
242 // Local Variables:
243 //  mode: C++
244 // End:
245