]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardMCMultiplicityTask.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwardMCMultiplicityTask.h
1 // 
2 // Calculate the multiplicity in the forward regions event-by-event 
3 // 
4 #ifndef ALIFORWARDMCMULTIPLICITYTASK_H
5 #define ALIFORWARDMCMULTIPLICITYTASK_H
6 /**
7  * @file   AliForwardMCMultiplicityTask.h
8  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
9  * @date   Wed Mar 23 14:06:13 2011
10  * 
11  * @brief  
12  * 
13  * 
14  * @ingroup pwglf_forward_aod
15  */
16 #include "AliForwardMultiplicityBase.h"
17 #include "AliFMDMCEventInspector.h"
18 #include "AliFMDMCSharingFilter.h"
19 #include "AliFMDMCDensityCalculator.h"
20 #include "AliFMDMCCorrector.h"
21 #include "AliFMDHistCollector.h"
22 // #include "AliFMDEnergyFitter.h"
23 #include "AliFMDEventPlaneFinder.h"
24 #include <AliESDFMD.h>
25 class AliESDEvent;
26 class TH2D;
27 class TList;
28
29 /** 
30  * Calculate the multiplicity in the forward regions event-by-event 
31  * 
32  * @par Inputs: 
33  *   - AliESDEvent 
34  *   - Kinematics
35  *   - Track references
36  *
37  * @par Outputs: 
38  *   - AliAODForwardMult 
39  * 
40  * @par Histograms 
41  *   
42  * @par Corrections used 
43  * 
44  * @ingroup pwglf_forward_tasks
45  * @ingroup pwglf_forward_mc
46  * @ingroup pwglf_forward_aod
47  * 
48  */
49 class AliForwardMCMultiplicityTask : public AliForwardMultiplicityBase
50 {
51 public:
52   /** 
53    * Constructor 
54    * 
55    * @param name Name of task 
56    */
57   AliForwardMCMultiplicityTask(const char* name);
58   /** 
59    * Constructor
60    */
61   AliForwardMCMultiplicityTask();
62   /** 
63    * @{ 
64    * @name Interface methods 
65    */
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 before processing a single event - should not do anything
80    * but clear data, etc.
81    * 
82    * @return true on success
83    */
84   virtual Bool_t PreEvent();
85   /** 
86    * Process each event 
87    *
88    * @param esd ESD event
89    */  
90   virtual Bool_t Event(AliESDEvent& esd);
91   /** 
92    * Called after processing a single event - should not do anything
93    * but clear data, etc.
94    * 
95    * @return true on success
96    */
97   virtual Bool_t PostEvent();
98   /* 
99    * @} 
100    */
101   /** 
102    * Process only primary MC tracks 
103    * 
104    * @param use 
105    */
106   void SetOnlyPrimary(Bool_t use);
107   /** 
108    * @{ 
109    * @name Access to sub-algorithms 
110    */
111   /**
112    * Get reference to the EventInspector algorithm 
113    * 
114    * @return Reference to AliFMDEventInspector object 
115    */
116   AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
117   /**
118    * Get reference to the SharingFilter algorithm 
119    * 
120    * @return Reference to AliFMDSharingFilter object 
121    */
122   AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
123   /**
124    * Get reference to the DensityCalculator algorithm 
125    * 
126    * @return Reference to AliFMDDensityCalculator object 
127    */
128   AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
129   /**
130    * Get reference to the Corrections algorithm 
131    * 
132    * @return Reference to AliFMDCorrector object 
133    */
134   AliFMDCorrector& GetCorrections() { return fCorrections; }
135   /**
136    * Get reference to the HistCollector algorithm 
137    * 
138    * @return Reference to AliFMDHistCollector object 
139    */
140   AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
141   /**
142    * Get reference to the EventInspector algorithm 
143    * 
144    * @return Reference to AliFMDEventInspector object 
145    */
146   const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
147   /**
148    * Get reference to the SharingFilter algorithm 
149    * 
150    * @return Reference to AliFMDSharingFilter object 
151    */
152   const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
153   /**
154    * Get reference to the DensityCalculator algorithm 
155    * 
156    * @return Reference to AliFMDDensityCalculator object 
157    */
158   const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
159   /**
160    * Get reference to the Corrections algorithm 
161    * 
162    * @return Reference to AliFMDCorrector object 
163    */
164   const AliFMDCorrector& GetCorrections() const { return fCorrections; }
165   /**
166    * Get reference to the HistCollector algorithm 
167    * 
168    * @return Reference to AliFMDHistCollector object 
169    */
170   const AliFMDHistCollector& GetHistCollector() const { return fHistCollector; }
171    /**
172    * Get reference to the EventPlaneFinder algorithm 
173    * 
174    * @return Reference to AliFMDEventPlaneFinder object 
175    */
176   AliFMDEventPlaneFinder& GetEventPlaneFinder() { return fEventPlaneFinder; }
177   /**
178    * Get reference to the EventPlaneFinder algorithm 
179    * 
180    * @return Reference to AliFMDEventPlaneFinder object 
181    */
182   const AliFMDEventPlaneFinder& GetEventPlaneFinder() const { return fEventPlaneFinder; }
183   /** 
184    * @} 
185    */
186 protected: 
187   /** 
188    * Copy constructor 
189    * 
190    * @param o Object to copy from 
191    */
192   AliForwardMCMultiplicityTask(const AliForwardMCMultiplicityTask& o);
193   /** 
194    * Assignment operator 
195    * 
196    * @param o Object to assign from 
197    * 
198    * @return Reference to this object 
199    */
200   AliForwardMCMultiplicityTask& 
201   operator=(const AliForwardMCMultiplicityTask& o);
202   /** 
203    * Initialize members based on eta and vertex axis - only available
204    * after first event - called from SetupForData.
205    * 
206    * @param pe @f$\eta@f$ axis
207    * @param pv Interaction point Z-coordinate axis 
208    */
209   virtual void InitMembers(const TAxis& pe, const TAxis& pv);
210   /**
211    * Create output branches - called from UserCreateOutputObjects
212    */
213   virtual void CreateBranches(AliAODHandler* ah);
214   /** 
215    * Do estimates of @f$dN/d\eta@f$ - called at Terminate
216    * 
217    * @param input  Input list
218    * @param output Output list
219    */
220   virtual void EstimatedNdeta(const TList* input, TList* output) const;
221
222   AliESDFMD              fESDFMD;       // Sharing corrected ESD object
223   AliESDFMD              fMCESDFMD;     // MC 'Sharing corrected' ESD object
224   AliForwardUtil::Histos fMCHistos;     // MC Cache histograms 
225   AliAODForwardMult      fMCAODFMD;     // MC Output object
226   AliForwardUtil::Histos fMCRingSums;   // Cache histograms 
227   TH2D*                  fPrimary;      // Per event primary particles 
228
229   AliFMDMCEventInspector    fEventInspector;    // Algorithm
230   AliFMDMCSharingFilter     fSharingFilter;     // Algorithm
231   AliFMDMCDensityCalculator fDensityCalculator; // Algorithm
232   AliFMDMCCorrector         fCorrections;       // Algorithm
233   AliFMDHistCollector       fHistCollector;     // Algorithm
234   AliFMDEventPlaneFinder    fEventPlaneFinder;  // Algorithm
235
236   ClassDef(AliForwardMCMultiplicityTask,4) // Forward multiplicity class
237 };
238
239 #endif
240 // Local Variables:
241 //  mode: C++
242 // End:
243