]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardMCMultiplicityTask.h
Merge branch 'TPCdev' of https://git.cern.ch/reps/AliRoot into TPCdev
[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    * Called before processing a single event - should not do anything
68    * but clear data, etc.
69    * 
70    * @return true on success
71    */
72   virtual Bool_t PreEvent();
73   /** 
74    * Process each event 
75    *
76    * @param esd ESD event
77    */  
78   virtual Bool_t Event(AliESDEvent& esd);
79   /** 
80    * @} 
81    */
82   /** 
83    * Process only primary MC tracks 
84    * 
85    * @param use 
86    */
87   void SetOnlyPrimary(Bool_t use);
88   /** 
89    * @{ 
90    * @name Access to sub-algorithms 
91    */
92   /**
93    * Get reference to the EventInspector algorithm 
94    * 
95    * @return Reference to AliFMDEventInspector object 
96    */
97   AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
98   /**
99    * Get reference to the SharingFilter algorithm 
100    * 
101    * @return Reference to AliFMDSharingFilter object 
102    */
103   AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
104   /**
105    * Get reference to the DensityCalculator algorithm 
106    * 
107    * @return Reference to AliFMDDensityCalculator object 
108    */
109   AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
110   /**
111    * Get reference to the Corrections algorithm 
112    * 
113    * @return Reference to AliFMDCorrector object 
114    */
115   AliFMDCorrector& GetCorrections() { return fCorrections; }
116   /**
117    * Get reference to the HistCollector algorithm 
118    * 
119    * @return Reference to AliFMDHistCollector object 
120    */
121   AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
122   /**
123    * Get reference to the EventInspector algorithm 
124    * 
125    * @return Reference to AliFMDEventInspector object 
126    */
127   const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
128   /**
129    * Get reference to the SharingFilter algorithm 
130    * 
131    * @return Reference to AliFMDSharingFilter object 
132    */
133   const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
134   /**
135    * Get reference to the DensityCalculator algorithm 
136    * 
137    * @return Reference to AliFMDDensityCalculator object 
138    */
139   const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
140   /**
141    * Get reference to the Corrections algorithm 
142    * 
143    * @return Reference to AliFMDCorrector object 
144    */
145   const AliFMDCorrector& GetCorrections() const { return fCorrections; }
146   /**
147    * Get reference to the HistCollector algorithm 
148    * 
149    * @return Reference to AliFMDHistCollector object 
150    */
151   const AliFMDHistCollector& GetHistCollector() const { return fHistCollector; }
152    /**
153    * Get reference to the EventPlaneFinder algorithm 
154    * 
155    * @return Reference to AliFMDEventPlaneFinder object 
156    */
157   AliFMDEventPlaneFinder& GetEventPlaneFinder() { return fEventPlaneFinder; }
158   /**
159    * Get reference to the EventPlaneFinder algorithm 
160    * 
161    * @return Reference to AliFMDEventPlaneFinder object 
162    */
163   const AliFMDEventPlaneFinder& GetEventPlaneFinder() const { return fEventPlaneFinder; }
164   /** 
165    * @} 
166    */
167 protected: 
168   /** 
169    * Copy constructor 
170    * 
171    * @param o Object to copy from 
172    */
173   AliForwardMCMultiplicityTask(const AliForwardMCMultiplicityTask& o);
174   /** 
175    * Assignment operator 
176    * 
177    * @param o Object to assign from 
178    * 
179    * @return Reference to this object 
180    */
181   AliForwardMCMultiplicityTask& 
182   operator=(const AliForwardMCMultiplicityTask& o);
183   /** 
184    * Initialize members based on eta and vertex axis - only available
185    * after first event - called from SetupForData.
186    * 
187    * @param pe @f$\eta@f$ axis
188    * @param pv Interaction point Z-coordinate axis 
189    */
190   virtual void InitMembers(const TAxis& pe, const TAxis& pv);
191   /**
192    * Create output branches - called from UserCreateOutputObjects
193    */
194   virtual void CreateBranches(AliAODHandler* ah);
195   /** 
196    * Do estimates of @f$dN/d\eta@f$ - called at Terminate
197    * 
198    * @param input  Input list
199    * @param output Output list
200    */
201   virtual void EstimatedNdeta(const TList* input, TList* output) const;
202
203   AliESDFMD              fESDFMD;       // Sharing corrected ESD object
204   AliESDFMD              fMCESDFMD;     // MC 'Sharing corrected' ESD object
205   AliForwardUtil::Histos fMCHistos;     // MC Cache histograms 
206   AliAODForwardMult      fMCAODFMD;     // MC Output object
207   AliForwardUtil::Histos fMCRingSums;   // Cache histograms 
208   TH2D*                  fPrimary;      // Per event primary particles 
209
210   AliFMDMCEventInspector    fEventInspector;    // Algorithm
211   AliFMDMCSharingFilter     fSharingFilter;     // Algorithm
212   AliFMDMCDensityCalculator fDensityCalculator; // Algorithm
213   AliFMDMCCorrector         fCorrections;       // Algorithm
214   AliFMDHistCollector       fHistCollector;     // Algorithm
215   AliFMDEventPlaneFinder    fEventPlaneFinder;  // Algorithm
216
217   ClassDef(AliForwardMCMultiplicityTask,4) // Forward multiplicity class
218 };
219
220 #endif
221 // Local Variables:
222 //  mode: C++
223 // End:
224