Added some more scripts
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliForwardMultiplicity.h
1 #ifndef ALIROOT_PWG2_FORWARD_ALIFORWARDMULTIPLICITY_H
2 #define ALIROOT_PWG2_FORWARD_ALIFORWARDMULTIPLICITY_H
3 #include <AliAnalysisTaskSE.h>
4 #include "AliForwardUtil.h"
5 #include "AliFMDEventInspector.h"
6 #include "AliFMDEnergyFitter.h"
7 #include "AliFMDSharingFilter.h"
8 #include "AliFMDDensityCalculator.h"
9 #include "AliFMDCorrections.h"
10 #include "AliFMDHistCollector.h"
11 #include "AliAODForwardMult.h"
12 #include "AliFMDEnergyFitter.h"
13 #include <AliESDFMD.h>
14 #include <TH1I.h>
15 class AliFMDAnaParameters;
16 class AliESDEvent;
17 class TH2D;
18 class TList;
19 class TTree;
20
21
22 /** 
23  * @mainpage ALICE PWG2 Forward Multiplcity Analysis 
24  */
25 /** 
26  * @defgroup pwg2_forward_analysis PWG2 Forward analysis
27  *
28  * Code to do the multiplicity analysis in the forward psuedo-rapidity
29  * regions
30  *
31  */
32 /** 
33  * Calculate the multiplicity in the forward regions event-by-event 
34  * 
35  * @par Inputs: 
36  *   - AliESDEvent 
37  *
38  * @par Outputs: 
39  *   - AliAODForwardMult 
40  * 
41  * @par Histograms 
42  *   
43  * @par Corrections used 
44  * 
45  * @ingroup pwg2_forward_analysis 
46  * 
47  */
48 class AliForwardMultiplicity : public AliAnalysisTaskSE
49 {
50 public:
51   /** 
52    * Constructor 
53    * 
54    * @param name Name of task 
55    */
56   AliForwardMultiplicity(const char* name);
57   /** 
58    * Constructor
59    */
60   AliForwardMultiplicity();
61   /** 
62    * Copy constructor 
63    * 
64    * @param o Object to copy from 
65    */
66   AliForwardMultiplicity(const AliForwardMultiplicity& o);
67   /** 
68    * Assignment operator 
69    * 
70    * @param o Object to assign from 
71    * 
72    * @return Reference to this object 
73    */
74   AliForwardMultiplicity& operator=(const AliForwardMultiplicity& o);
75   /** 
76    * @{ 
77    * @name Interface methods 
78    */
79   /** 
80    * Initialize the task 
81    * 
82    */
83   virtual void Init();
84   /** 
85    * Create output objects 
86    * 
87    */
88   virtual void UserCreateOutputObjects();
89   /** 
90    * Process each event 
91    *
92    * @param option Not used
93    */  
94   virtual void UserExec(Option_t* option);
95   /** 
96    * End of job
97    * 
98    * @param option Not used 
99    */
100   virtual void Terminate(Option_t* option);
101   /** 
102    * @} 
103    */
104   void Print(Option_t* option="") const;
105
106   /** 
107    * @{ 
108    * @name Access to sub-algorithms 
109    */
110   /**
111    * Get reference to the EventInspector algorithm 
112    * 
113    * @return Reference to AliFMDEventInspector object 
114    */
115   AliFMDEventInspector& GetEventInspector() { return fEventInspector; }
116   /**
117    * Get reference to the EnergyFitter algorithm 
118    * 
119    * @return Reference to AliFMDEnergyFitter object 
120    */
121   AliFMDEnergyFitter& GetEnergyFitter() { return fEnergyFitter; }
122   /**
123    * Get reference to the SharingFilter algorithm 
124    * 
125    * @return Reference to AliFMDSharingFilter object 
126    */
127   AliFMDSharingFilter& GetSharingFilter() { return fSharingFilter; }
128   /**
129    * Get reference to the DensityCalculator algorithm 
130    * 
131    * @return Reference to AliFMDDensityCalculator object 
132    */
133   AliFMDDensityCalculator& GetDensityCalculator() { return fDensityCalculator; }
134   /**
135    * Get reference to the Corrections algorithm 
136    * 
137    * @return Reference to AliFMDCorrections object 
138    */
139   AliFMDCorrections& GetCorrections() { return fCorrections; }
140   /**
141    * Get reference to the HistCollector algorithm 
142    * 
143    * @return Reference to AliFMDHistCollector object 
144    */
145   AliFMDHistCollector& GetHistCollector() { return fHistCollector; }
146   /** 
147    * @} 
148    */
149   void SetDebug(Int_t dbg);
150 protected: 
151   /** 
152    * Initialise the sub objects and stuff.  Called on first event 
153    * 
154    */
155   virtual void   InitializeSubs();
156   /** 
157    * Mark this event as one to store in the AOD 
158    * 
159    */
160   virtual void MarkEventForStore() const;
161
162   TH2D*                  fHData;        // Summed 1/Nd^2N_{ch}/dphideta
163   Bool_t                 fFirstEvent;   // Whether the event is the first seen 
164   AliESDFMD              fESDFMD;       // Sharing corrected ESD object
165   AliForwardUtil::Histos fHistos;       // Cache histograms 
166   AliAODForwardMult      fAODFMD;       // Output object
167
168   AliFMDEventInspector    fEventInspector;    // Algorithm
169   AliFMDEnergyFitter      fEnergyFitter;      // Algorithm
170   AliFMDSharingFilter     fSharingFilter;     // Algorithm
171   AliFMDDensityCalculator fDensityCalculator; // Algorithm
172   AliFMDCorrections       fCorrections;       // Algorithm
173   AliFMDHistCollector     fHistCollector;     // Algorithm
174
175   TList* fList; // Output list 
176
177   ClassDef(AliForwardMultiplicity,1) // Forward multiplicity class
178 };
179
180 #endif
181 // Local Variables:
182 //  mode: C++
183 // End:
184