26b8de944105737dc86f285b1a1dcd7fd5451aca
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliFMDCorrections.h
1 #ifndef ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDCORRECTIONS_H
2 #define ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDCORRECTIONS_H
3 #include <TNamed.h>
4 #include <TList.h>
5 #include "AliForwardUtil.h"
6 class AliESDFMD;
7 class TH2D;
8
9 /** 
10  * This class calculates the inclusive charged particle density
11  * in each for the 5 FMD rings. 
12  *
13  * @par Input:
14  *   - AliESDFMD object possibly corrected for sharing
15  *
16  * @par Output:
17  *   - 5 RingHistos objects - each with a number of vertex dependent 
18  *     2D histograms of the inclusive charge particle density 
19  * 
20  * @par Corrections used: 
21  *   - AliFMDAnaCalibBackgroundCorrection
22  *   - AliFMDAnaCalibEventSelectionEfficiency
23  *   - AliFMDAnaCalibSharingEfficiency
24  *
25  * @ingroup pwg2_forward_analysis 
26  */
27 class AliFMDCorrections : public TNamed
28 {
29 public:
30   /** 
31    * Constructor 
32    */
33   AliFMDCorrections();
34   /** 
35    * Constructor 
36    * 
37    * @param name Name of object
38    */
39   AliFMDCorrections(const char* name);
40   /** 
41    * Copy constructor 
42    * 
43    * @param o Object to copy from 
44    */
45   AliFMDCorrections(const AliFMDCorrections& o);
46   /** 
47    * Destructor 
48    */
49   virtual ~AliFMDCorrections();
50   /** 
51    * Assignement operator
52    * 
53    * @param o Object to assign from 
54    * 
55    * @return Reference to this object
56    */
57   AliFMDCorrections& operator=(const AliFMDCorrections&);
58   /** 
59    * Do the calculations 
60    * 
61    * @param hists    Cache of histograms 
62    * @param vtxBin   Vertex bin 
63    * 
64    * @return true on successs 
65    */
66   virtual Bool_t Correct(AliForwardUtil::Histos& hists, UShort_t vtxBin);
67   /** 
68    * Scale the histograms to the total number of events 
69    * 
70    * @param dir     Where the output is stored
71    * @param nEvents Number of events 
72    */
73   void ScaleHistograms(TList* dir, Int_t nEvents);
74   /** 
75    * Output diagnostic histograms to directory 
76    * 
77    * @param dir List to write in
78    */  
79   void DefineOutput(TList* dir);
80   /** 
81    * Set the debug level.  The higher the value the more output 
82    * 
83    * @param dbg Debug level 
84    */
85   void SetDebug(Int_t dbg=1) { fDebug = dbg; }
86   /** 
87    * Print information
88    * 
89    * @param option Not used 
90    */
91   void Print(Option_t* option="") const;
92 protected:
93   /** 
94    * Internal data structure to keep track of the histograms
95    */
96   struct RingHistos : public AliForwardUtil::RingHistos 
97   { 
98     /** 
99      * Default CTOR
100      */
101     RingHistos();
102     /** 
103      * Constructor
104      * 
105      * @param d detector
106      * @param r ring 
107      */
108     RingHistos(UShort_t d, Char_t r);
109     /** 
110      * Copy constructor 
111      * 
112      * @param o Object to copy from 
113      */
114     RingHistos(const RingHistos& o);
115     /** 
116      * Assignment operator 
117      * 
118      * @param o Object to assign from 
119      * 
120      * @return Reference to this 
121      */
122     RingHistos& operator=(const RingHistos& o);
123     /** 
124      * Destructor 
125      */
126     ~RingHistos();
127     /** 
128      * Make output 
129      * 
130      * @param dir Where to put it 
131      */
132     void Output(TList* dir);
133     /** 
134      * Scale the histograms to the total number of events 
135      * 
136      * @param dir     where the output is stored
137      * @param nEvents Number of events 
138      */
139     void ScaleHistograms(TList* dir, Int_t nEvents);
140     TH2D*     fDensity;      // Distribution primary Nch
141     ClassDef(RingHistos,1);
142   };
143   /** 
144    * Get the ring histogram container 
145    * 
146    * @param d Detector
147    * @param r Ring 
148    * 
149    * @return Ring histogram container 
150    */
151   RingHistos* GetRingHistos(UShort_t d, Char_t r) const;
152
153   TList    fRingHistos;    // List of histogram containers
154   Int_t    fDebug;         //  Debug level 
155
156   ClassDef(AliFMDCorrections,1); // Calculate Nch density 
157 };
158
159 #endif
160 // Local Variables:
161 //   mode: C++
162 // End:
163