]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis2/AliForwardMCMultiplicityTask.h
Mega commit.
[u/mrichter/AliRoot.git] / PWG2 / 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 pwg2_forward_aod
15  */
16 #include "AliForwardMultiplicityBase.h"
17 #include "AliForwardUtil.h"
18 #include "AliFMDMCEventInspector.h"
19 #include "AliFMDMCSharingFilter.h"
20 #include "AliFMDMCDensityCalculator.h"
21 #include "AliFMDMCCorrector.h"
22 #include "AliFMDHistCollector.h"
23 #include "AliAODForwardMult.h"
24 #include "AliFMDEnergyFitter.h"
25 #include <AliESDFMD.h>
26 class AliESDEvent;
27 class TH2D;
28 class TList;
29
30 /** 
31  * Calculate the multiplicity in the forward regions event-by-event 
32  * 
33  * @par Inputs: 
34  *   - AliESDEvent 
35  *   - Kinematics
36  *   - Track references
37  *
38  * @par Outputs: 
39  *   - AliAODForwardMult 
40  * 
41  * @par Histograms 
42  *   
43  * @par Corrections used 
44  * 
45  * @ingroup pwg2_forward_tasks
46  * @ingroup pwg2_forward_mc
47  * @ingroup pwg2_forward_aod
48  * 
49  */
50 class AliForwardMCMultiplicityTask : public AliForwardMultiplicityBase
51 {
52 public:
53   /** 
54    * Constructor 
55    * 
56    * @param name Name of task 
57    */
58   AliForwardMCMultiplicityTask(const char* name);
59   /** 
60    * Constructor
61    */
62   AliForwardMCMultiplicityTask();
63   /** 
64    * Copy constructor 
65    * 
66    * @param o Object to copy from 
67    */
68   AliForwardMCMultiplicityTask(const AliForwardMCMultiplicityTask& o);
69   /** 
70    * Assignment operator 
71    * 
72    * @param o Object to assign from 
73    * 
74    * @return Reference to this object 
75    */
76   AliForwardMCMultiplicityTask& 
77   operator=(const AliForwardMCMultiplicityTask& o);
78   /** 
79    * @{ 
80    * @name Interface methods 
81    */
82   /** 
83    * Create output objects 
84    * 
85    */
86   virtual void UserCreateOutputObjects();
87   /** 
88    * Process each event 
89    *
90    * @param option Not used
91    */  
92   virtual void UserExec(Option_t* option);
93   /** 
94    * End of job
95    * 
96    * @param option Not used 
97    */
98   virtual void Terminate(Option_t* option);
99   /** 
100    * @} 
101    */
102   /** 
103    * Process only primary MC tracks 
104    * 
105    * @param use 
106    */
107   void SetOnlyPrimary(Bool_t use);
108   /** 
109    * @{ 
110    * @name Access to sub-algorithms 
111    */
112   /**
113    * Get reference to the EventInspector algorithm 
114    * 
115    * @return Reference to AliFMDEventInspector object 
116    */
117   AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
118   /**
119    * Get reference to the SharingFilter algorithm 
120    * 
121    * @return Reference to AliFMDSharingFilter object 
122    */
123   AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
124   /**
125    * Get reference to the DensityCalculator algorithm 
126    * 
127    * @return Reference to AliFMDDensityCalculator object 
128    */
129   AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
130   /**
131    * Get reference to the Corrections algorithm 
132    * 
133    * @return Reference to AliFMDCorrector object 
134    */
135   AliFMDCorrector& GetCorrections() { return fCorrections; }
136   /**
137    * Get reference to the HistCollector algorithm 
138    * 
139    * @return Reference to AliFMDHistCollector object 
140    */
141   AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
142   /**
143    * Get reference to the EventInspector algorithm 
144    * 
145    * @return Reference to AliFMDEventInspector object 
146    */
147   const AliFMDEventInspector& GetEventInspector() const { return fEventInspector; }
148   /**
149    * Get reference to the SharingFilter algorithm 
150    * 
151    * @return Reference to AliFMDSharingFilter object 
152    */
153   const AliFMDSharingFilter& GetSharingFilter() const { return fSharingFilter; }
154   /**
155    * Get reference to the DensityCalculator algorithm 
156    * 
157    * @return Reference to AliFMDDensityCalculator object 
158    */
159   const AliFMDDensityCalculator& GetDensityCalculator() const { return fDensityCalculator; }
160   /**
161    * Get reference to the Corrections algorithm 
162    * 
163    * @return Reference to AliFMDCorrector object 
164    */
165   const AliFMDCorrector& GetCorrections() const { return fCorrections; }
166   /**
167    * Get reference to the HistCollector algorithm 
168    * 
169    * @return Reference to AliFMDHistCollector object 
170    */
171   const AliFMDHistCollector& GetHistCollector() const { return fHistCollector; }
172   /** 
173    * @} 
174    */
175   /** 
176    * Set debug level 
177    * 
178    * @param dbg debug level
179    */
180   void SetDebug(Int_t dbg);
181 protected: 
182   /** 
183    * Initialise the sub objects and stuff.  Called on first event 
184    * 
185    */
186   virtual void   InitializeSubs();
187
188   TH2D*                  fHData;        // Summed 1/Nd^2N_{ch}/dphideta
189   AliESDFMD              fESDFMD;       // Sharing corrected ESD object
190   AliForwardUtil::Histos fHistos;       // Cache histograms 
191   AliAODForwardMult      fAODFMD;       // Output object
192   AliESDFMD              fMCESDFMD;     // MC 'Sharing corrected' ESD object
193   AliForwardUtil::Histos fMCHistos;     // MC Cache histograms 
194   AliAODForwardMult      fMCAODFMD;     // MC Output object
195   AliForwardUtil::Histos fRingSums;     // Cache histograms 
196   AliForwardUtil::Histos fMCRingSums;   // Cache histograms 
197   TH2D*                  fPrimary;      // Per event primary particles 
198
199   AliFMDMCEventInspector    fEventInspector;    // Algorithm
200   AliFMDMCSharingFilter     fSharingFilter;     // Algorithm
201   AliFMDMCDensityCalculator fDensityCalculator; // Algorithm
202   AliFMDMCCorrector         fCorrections;       // Algorithm
203   AliFMDHistCollector       fHistCollector;     // Algorithm
204
205   TList* fList; // Output list 
206
207   ClassDef(AliForwardMCMultiplicityTask,1) // Forward multiplicity class
208 };
209
210 #endif
211 // Local Variables:
212 //  mode: C++
213 // End:
214