]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/AliFMDMCCorrector.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliFMDMCCorrector.h
CommitLineData
7984e5f7 1//
2// This class calculates the exclusive charged particle density
3// in each for the 5 FMD rings.
4//
72cc12cd 5#ifndef ALIFMDMCCORRECTOR_H
6#define ALIFMDMCCORRECTOR_H
ffca499d 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 *
bd6f5206 15 * @ingroup pwglf_forward_aod
ffca499d 16 */
72cc12cd 17#include "AliFMDCorrector.h"
886dd429 18#include <TList.h>
19class TProfile2D;
20class TH2;
21
22/**
bd6f5206 23 * @defgroup pwglf_forward_mc Monte-carlo code
886dd429 24 *
290052e7 25 * Sub-algorithms specific to Monte-carlo (simulation) productions
26 *
bd6f5206 27 * @ingroup pwglf_forward
886dd429 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 *
bd6f5206 46 * @ingroup pwglf_forward_algo
47 * @ingroup pwglf_forward_mc
48 * @ingroup pwglf_forward_aod
886dd429 49 */
72cc12cd 50class AliFMDMCCorrector : public AliFMDCorrector
886dd429 51{
52public:
53 /**
54 * Constructor
55 */
72cc12cd 56 AliFMDMCCorrector()
57 : AliFMDCorrector(),
886dd429 58 fFMD1i(0),
59 fFMD2i(0),
60 fFMD2o(0),
61 fFMD3i(0),
62 fFMD3o(0),
5bb5d1f6 63 fComps(0),
64 fSecondaryForMC(true)
886dd429 65 {}
66 /**
67 * Constructor
68 *
69 * @param name Name of object
70 */
72cc12cd 71 AliFMDMCCorrector(const char* name)
72 : AliFMDCorrector(name),
886dd429 73 fFMD1i(0),
74 fFMD2i(0),
75 fFMD2o(0),
76 fFMD3i(0),
77 fFMD3o(0),
5bb5d1f6 78 fComps(0),
79 fSecondaryForMC(true)
886dd429 80 {}
81 /**
82 * Copy constructor
83 *
84 * @param o Object to copy from
85 */
72cc12cd 86 AliFMDMCCorrector(const AliFMDMCCorrector& o)
87 : AliFMDCorrector(o),
886dd429 88 fFMD1i(o.fFMD1i),
89 fFMD2i(o.fFMD2i),
90 fFMD2o(o.fFMD2o),
91 fFMD3i(o.fFMD3i),
92 fFMD3o(o.fFMD3o),
5bb5d1f6 93 fComps(0),
94 fSecondaryForMC(o.fSecondaryForMC)
886dd429 95 {}
96 /**
97 * Destructor
98 */
72cc12cd 99 virtual ~AliFMDMCCorrector();
886dd429 100 /**
101 * Assignement operator
102 *
103 * @param o Object to assign from
104 *
105 * @return Reference to this object
106 */
72cc12cd 107 AliFMDMCCorrector& operator=(const AliFMDMCCorrector&);
5bb5d1f6 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; }
886dd429 114 /**
115 * Initialize this object
116 *
117 * @param etaAxis Eta axis to use
118 */
5934a3e3 119 void SetupForData(const TAxis& etaAxis);
886dd429 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 */
5934a3e3 146 void CreateOutputObjects(TList* dir);
5bb5d1f6 147
148 /**
149 * Print information
150 *
151 * @param option Not used
152 */
153 void Print(Option_t* option="") const;
886dd429 154protected:
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
5bb5d1f6 181 Bool_t fSecondaryForMC; // Whether to correct MC data
182
5934a3e3 183 ClassDef(AliFMDMCCorrector,2); // Calculate Nch density
886dd429 184};
185
186#endif
187// Local Variables:
188// mode: C++
189// End:
190