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