]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliFMDMCCorrector.h
Updates
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliFMDMCCorrector.h
1 // 
2 // This class calculates the exclusive charged particle density
3 // in each for the 5 FMD rings. 
4 //
5 #ifndef ALIFMDMCCORRECTOR_H
6 #define ALIFMDMCCORRECTOR_H
7 /**
8  * @file   AliFMDMCCorrector.h
9  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
10  * @date   Wed Mar 23 14:03:15 2011
11  * 
12  * @brief  
13  * 
14  * 
15  * @ingroup pwglf_forward_aod
16  */
17 #include "AliFMDCorrector.h"
18 #include <TList.h>
19 class TProfile2D;
20 class TH2;
21
22 /** 
23  * @defgroup pwglf_forward_mc  Monte-carlo code
24  * 
25  * Sub-algorithms specific to Monte-carlo (simulation) productions 
26  *
27  * @ingroup pwglf_forward
28  */
29 /** 
30  * This class calculates the exclusive charged particle density
31  * in each for the 5 FMD rings. 
32  *
33  * @par Input:
34  *   - 5 RingHistos objects - each with a number of vertex dependent 
35  *     2D histograms of the inclusive charge particle density 
36  *
37  * @par Output:
38  *   - 5 RingHistos objects - each with a number of vertex dependent 
39  *     2D histograms of the exclusive charge particle density 
40  * 
41  * @par Corrections used: 
42  *   - AliFMDCorrSecondaryMap;
43  *   - AliFMDCorrVertexBias
44  *   - AliFMDCorrMergingEfficiency
45  *
46  * @ingroup pwglf_forward_algo
47  * @ingroup pwglf_forward_mc
48  * @ingroup pwglf_forward_aod
49  */
50 class AliFMDMCCorrector : public AliFMDCorrector
51 {
52 public:
53   /** 
54    * Constructor 
55    */
56   AliFMDMCCorrector()
57     : AliFMDCorrector(),
58       fFMD1i(0), 
59       fFMD2i(0),
60       fFMD2o(0),
61       fFMD3i(0),
62       fFMD3o(0),
63       fComps(0),
64       fSecondaryForMC(true)
65   {}
66   /** 
67    * Constructor 
68    * 
69    * @param name Name of object
70    */
71   AliFMDMCCorrector(const char* name)
72     : AliFMDCorrector(name),
73       fFMD1i(0), 
74       fFMD2i(0),
75       fFMD2o(0),
76       fFMD3i(0),
77       fFMD3o(0),
78       fComps(0),
79       fSecondaryForMC(true)
80   {}
81   /** 
82    * Copy constructor 
83    * 
84    * @param o Object to copy from 
85    */
86   AliFMDMCCorrector(const AliFMDMCCorrector& o)
87     : AliFMDCorrector(o),
88       fFMD1i(o.fFMD1i), 
89       fFMD2i(o.fFMD2i),
90       fFMD2o(o.fFMD2o),
91       fFMD3i(o.fFMD3i),
92       fFMD3o(o.fFMD3o),
93       fComps(0),
94       fSecondaryForMC(o.fSecondaryForMC)
95   {}
96   /** 
97    * Destructor 
98    */
99   virtual ~AliFMDMCCorrector();
100   /** 
101    * Assignement operator
102    * 
103    * @param o Object to assign from 
104    * 
105    * @return Reference to this object
106    */
107   AliFMDMCCorrector& operator=(const AliFMDMCCorrector&);
108   /** 
109    * If set, then do not do the secondary correction for MC data
110    * 
111    * @param use 
112    */
113   void SetSecondaryForMC(Bool_t use) { fSecondaryForMC = use; }
114   /** 
115    * Initialize this object 
116    * 
117    * @param etaAxis Eta axis to use 
118    */
119   void SetupForData(const TAxis& etaAxis);
120   /** 
121    * Do the calculations 
122    * 
123    * @param hists    Cache of histograms 
124    * @param vtxBin   Vertex bin 
125    * 
126    * @return true on successs 
127    */
128   virtual Bool_t CorrectMC(AliForwardUtil::Histos& hists, UShort_t vtxBin);
129   /** 
130    * Compare the result of analysing the ESD for 
131    * the inclusive charged particle density to analysing 
132    * MC truth 
133    * 
134    * @param esd 
135    * @param mc 
136    * 
137    * @return 
138    */
139   virtual Bool_t CompareResults(AliForwardUtil::Histos& esd, 
140                                 AliForwardUtil::Histos& mc);
141   /** 
142    * Output diagnostic histograms to directory 
143    * 
144    * @param dir List to write in
145    */  
146   void CreateOutputObjects(TList* dir);
147
148   /**
149    * Print information
150    * 
151    * @param option Not used 
152    */
153   void Print(Option_t* option="") const;
154 protected:
155   /** 
156    * MAke comparison profiles
157    * 
158    * @param d     Detector 
159    * @param r     Ring 
160    * @param axis  Eta axis 
161    * 
162    * @return Newly allocated profile object
163    */
164   TProfile2D* Make(UShort_t d, Char_t r, const TAxis& axis) const;
165   /** 
166    * Fill comparison profiles
167    * 
168    * @param d    Detector 
169    * @param r    Ring 
170    * @param esd  ESD histogram
171    * @param mc   MC histogram
172    */
173   void Fill(UShort_t d, Char_t r, TH2* esd, TH2* mc);
174
175   TProfile2D* fFMD1i; // Comparison
176   TProfile2D* fFMD2i; // Comparison
177   TProfile2D* fFMD2o; // Comparison
178   TProfile2D* fFMD3i; // Comparison
179   TProfile2D* fFMD3o; // Comparison
180   TList*      fComps; // List of comparisons 
181   Bool_t      fSecondaryForMC;  // Whether to correct MC data 
182
183   ClassDef(AliFMDMCCorrector,2); // Calculate Nch density 
184 };
185
186 #endif
187 // Local Variables:
188 //   mode: C++
189 // End:
190