]>
Commit | Line | Data |
---|---|---|
0aaa8b91 | 1 | #ifndef ALIDEDPTCORRECTION_H |
2 | #define ALIDEDPTCORRECTION_H | |
3 | ||
4 | //------------------------------------------------------------------------------ | |
5 | // AlidNdPtCorrection class: | |
6 | // | |
7 | // a. functionality: | |
8 | // - applies corrections on dNdPt spectra | |
9 | // - fills corrected dNdPt histograms | |
10 | // - fills correction control histograms | |
11 | // | |
12 | // b. data members: | |
13 | // - dNdPt spectra before and after correction procedure | |
14 | // - control histograms | |
15 | // - correction matrices (must be loaded) | |
16 | // | |
17 | // Author: J.Otwinowski 04/11/2008 | |
18 | //------------------------------------------------------------------------------ | |
19 | ||
20 | ||
0aaa8b91 | 21 | class TFolder; |
22 | class TObjArray; | |
23 | class TString; | |
24 | ||
25 | class AliESDtrackCuts; | |
26 | class AliVertexerTracks; | |
27 | class AliESD; | |
28 | class AliESDfriend; | |
29 | class AliESDfriendTrack; | |
30 | ||
31 | class AlidNdPtEventCuts; | |
32 | class AlidNdPtAcceptanceCuts; | |
33 | class AlidNdPtCorrection; | |
34 | class AlidNdPt; | |
bad4ba69 | 35 | class AlidNdPtHelper; |
0aaa8b91 | 36 | |
37 | #include "THnSparse.h" | |
38 | #include "AlidNdPt.h" | |
0aaa8b91 | 39 | |
40 | class AlidNdPtCorrection : public AlidNdPt { | |
41 | public : | |
42 | AlidNdPtCorrection(); | |
43 | AlidNdPtCorrection(Char_t* name, Char_t* title, TString corrMatrixFileName="ala.root"); | |
44 | ~AlidNdPtCorrection(); | |
45 | ||
46 | // Init data members | |
47 | virtual void Init(); | |
48 | ||
49 | // Process events | |
50 | virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0); | |
51 | ||
52 | // Merge output objects (needed by PROOF) | |
53 | virtual Long64_t Merge(TCollection* list); | |
54 | ||
55 | // Analyse output histograms | |
56 | virtual void Analyse(); | |
57 | ||
58 | // Export objects to folder | |
59 | virtual TFolder *ExportToFolder(TObjArray * array=0); | |
60 | ||
61 | // Get analysis folder | |
62 | TFolder* GetCorrectionFolder() {return fCorrectionFolder;} | |
63 | ||
64 | // Create folder for analysed histograms | |
65 | TFolder *CreateFolder(TString folder = "folderdNdPtCorrection",TString title = "Analysed dNdPt histograms"); | |
66 | ||
67 | // Fill histograms | |
68 | void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj, Double_t zv, Int_t multRec); | |
69 | void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj, Int_t multRec); | |
70 | void FillHistograms(AlidNdPtHelper::EventObject eventObj, Double_t zv, Int_t multMBRec); | |
71 | ||
72 | // Get correction factors | |
73 | Double_t GetCorrFactZvPtEta(THnSparse *const hist=0, Double_t zv =0, Double_t pt=0, Double_t eta=0) const; | |
74 | Double_t GetContFactZvPtEta(THnSparse *const hist=0, Double_t zv =0, Double_t pt=0, Double_t eta=0) const; | |
75 | Double_t GetCorrFactZvMult(THnSparse *const hist=0, Double_t zv =0, Int_t mult=0) const; | |
76 | Double_t GetContFactZvMult(THnSparse *const hist=0, Double_t zv =0, Int_t mult=0) const; | |
77 | ||
78 | // Getters | |
79 | THnSparseF *GetMCAllEventMultHist1() {return fMCAllEventMultHist1;}; | |
80 | THnSparseF *GetMCAllNDEventMultHist1() {return fMCAllNDEventMultHist1;}; | |
81 | THnSparseF *GetMCAllNSDEventMultHist1() {return fMCAllNSDEventMultHist1;}; | |
82 | THnSparseF *GetMCTriggerMultHist1() {return fMCTriggerMultHist1;}; | |
83 | THnSparseF *GetMCEventMultHist1() {return fMCEventMultHist1;}; | |
84 | ||
85 | THnSparseF *GetMCAllPrimTrackMultHist1() {return fMCAllPrimTrackMultHist1;}; | |
86 | THnSparseF *GetMCNDEventAllPrimTrackMultHist1() {return fMCNDEventAllPrimTrackMultHist1;}; | |
87 | THnSparseF *GetMCNSDEventAllPrimTrackMultHist1() {return fMCNSDEventAllPrimTrackMultHist1;}; | |
88 | THnSparseF *GetMCTriggerPrimTrackMultHist1() {return fMCTriggerPrimTrackMultHist1;}; | |
89 | THnSparseF *GetMCEventPrimTrackMultHist1() {return fMCEventPrimTrackMultHist1;}; | |
90 | ||
91 | THnSparseF *GetCorrRecTrackMultHist1(Int_t i) {return fCorrRecTrackMultHist1[i];} | |
92 | THnSparseF *GetCorrRecEventHist1(Int_t i) {return fCorrRecEventHist1[i];} | |
93 | THnSparseF *GetCorrRecEventHist2(Int_t i) {return fCorrRecEventHist2[i];} | |
94 | ||
bad4ba69 | 95 | THnSparseF *GetPtvsPt(Int_t i) {return fPtvsPt[i];} |
0aaa8b91 | 96 | |
97 | // correlation matrix | |
98 | void SetEventMultCorrelationMatrix(THnSparseF *const matrix=0) {fEventMultCorrelationMatrix = matrix;} | |
99 | THnSparseF *GetEventMultCorrelationMatrix() {return fEventMultCorrelationMatrix;} | |
100 | ||
101 | // | |
102 | void SetZvNorm(TH1D *const matrix=0) {fZvNorm = matrix;} | |
103 | TH1D *GetZvNorm() {return fZvNorm;} | |
104 | ||
105 | void SetZvEmptyEventsNorm(TH1D *const matrix=0) {fZvEmptyEventsNorm = matrix;} | |
106 | TH1D *GetZvEmptyEventsNorm() {return fZvEmptyEventsNorm;} | |
107 | ||
108 | // | |
109 | void SetCorrEventMatrix(THnSparseF *const matrix=0) {fCorrEventMatrix = matrix;} | |
110 | THnSparseF *GetCorrEventMatrix() {return fCorrEventMatrix;} | |
111 | ||
112 | void SetCorrTriggerMBtoInelEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoInelEventMatrix = matrix;} | |
113 | THnSparseF *GetCorrTriggerMBtoInelEventMatrix() {return fCorrTriggerMBtoInelEventMatrix;} | |
114 | ||
115 | void SetCorrTriggerMBtoNDEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNDEventMatrix = matrix;} | |
116 | THnSparseF *GetCorrTriggerMBtoNDEventMatrix() {return fCorrTriggerMBtoNDEventMatrix;} | |
117 | ||
118 | void SetCorrTriggerMBtoNSDEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNSDEventMatrix = matrix;} | |
119 | THnSparseF *GetCorrTriggerMBtoNSDEventMatrix() {return fCorrTriggerMBtoNSDEventMatrix;} | |
120 | ||
121 | // | |
122 | void SetCorrTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTrackEventMatrix = matrix;} | |
123 | THnSparseF *GetCorrTrackEventMatrix() {return fCorrTrackEventMatrix;} | |
124 | ||
125 | void SetCorrTriggerMBtoInelTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoInelTrackEventMatrix = matrix;} | |
126 | THnSparseF *GetCorrTriggerMBtoInelTrackEventMatrix() {return fCorrTriggerMBtoInelTrackEventMatrix;} | |
127 | ||
128 | void SetCorrTriggerMBtoNDTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNDTrackEventMatrix = matrix;} | |
129 | THnSparseF *GetCorrTriggerMBtoNDTrackEventMatrix() {return fCorrTriggerMBtoNDTrackEventMatrix;} | |
130 | ||
131 | void SetCorrTriggerMBtoNSDTrackEventMatrix(THnSparseF *const matrix=0) {fCorrTriggerMBtoNSDTrackEventMatrix = matrix;} | |
132 | THnSparseF *GetCorrTriggerMBtoNSDTrackEventMatrix() {return fCorrTriggerMBtoNSDTrackEventMatrix;} | |
133 | ||
134 | void SetCorrTrackMatrix(THnSparseF *const matrix=0) {fCorrTrackMatrix = matrix;} | |
135 | THnSparseF *GetCorrTrackMatrix() {return fCorrTrackMatrix;} | |
136 | ||
137 | void SetContTrackMatrix(THnSparseF *const matrix=0) {fContTrackMatrix = matrix;} | |
138 | THnSparseF *GetContTrackMatrix() {return fContTrackMatrix;} | |
139 | ||
140 | void SetContMultTrackMatrix(THnSparseF *const matrix=0) {fContMultTrackMatrix = matrix;} | |
141 | THnSparseF *GetContMultTrackMatrix() {return fContMultTrackMatrix;} | |
142 | ||
143 | void SetCorrMatrixFileName(TString name="") { fCorrMatrixFileName = name; } | |
144 | ||
145 | Int_t GetTrueMult(THnSparse *const hist=0, Int_t mult=0); | |
146 | ||
147 | private: | |
148 | ||
149 | // analysis folder | |
150 | TFolder *fCorrectionFolder; // folder for analysed histograms | |
151 | ||
152 | // | |
153 | // event histograms | |
154 | // | |
155 | THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv | |
156 | THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv | |
157 | ||
158 | // all MC events | |
159 | THnSparseF *fMCAllEventMultHist1; //-> mcZv:multiplicity | |
160 | ||
161 | // all ND MC events | |
162 | THnSparseF *fMCAllNDEventMultHist1; //-> mcZv:multiplicity | |
163 | ||
164 | // all NSD MC events | |
165 | THnSparseF *fMCAllNSDEventMultHist1; //-> mcZv:multiplicity | |
166 | ||
167 | // MC triggered events | |
168 | THnSparseF *fMCTriggerMultHist1; //-> mcZv:multiplicity | |
169 | ||
170 | // MC triggered and event vertex | |
171 | THnSparseF *fMCEventMultHist1; //-> mcZv:multiplicity | |
172 | ||
173 | // | |
174 | // track histograms | |
175 | // | |
176 | ||
177 | // all mc primary tracks in acceptance (INEL) | |
178 | THnSparseF *fMCAllPrimTrackMultHist1; //-> mcPt:mcEta:multiplicity | |
179 | ||
180 | // all mc primary tracks in acceptance (ND events) | |
181 | THnSparseF *fMCNDEventAllPrimTrackMultHist1; //-> mcPt:mcEta:multiplicity | |
182 | ||
183 | // all mc primary tracks in acceptance (NSD events) | |
184 | THnSparseF *fMCNSDEventAllPrimTrackMultHist1; //-> mcPt:mcEta:multiplicity | |
185 | ||
186 | //all mc primary tracks in acceptance (triggered events) | |
187 | THnSparseF *fMCTriggerPrimTrackMultHist1; //-> mcPt:mcEta:multiplicity | |
188 | ||
189 | //mc primary tracks in acceptance (triggered and event vertex reconstructed) | |
190 | THnSparseF *fMCEventPrimTrackMultHist1; //-> mcPt:mcEta:multiplicity | |
191 | ||
0aaa8b91 | 192 | |
193 | // track histograms | |
194 | // [0]=all charged tracks, | |
195 | // [1]=[0]+fiducual volume, | |
196 | // [2]=[1]+after esd track cuts | |
197 | THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi | |
198 | ||
199 | // corrected track histograms | |
200 | // ([0]-not corrected, | |
201 | // [1]=track cont., | |
202 | // [2]=[1]+track eff., | |
203 | // [3]=[2]+multple track, | |
204 | // [4]=[3]+event vertex, | |
205 | // [5]=[4]+trigger MBtoInel, | |
206 | // [6]=[4]+trigger MBtoND, | |
207 | // [7]=[4]+trigger MBToNSD) | |
208 | THnSparseF *fCorrRecTrackMultHist1[8]; //-> Pt:Eta:mult corrected histograms | |
209 | ||
bad4ba69 | 210 | // pt vs pt to get proper pt bin (center of gravity) |
211 | THnSparseF *fPtvsPt[8]; //-> pt:pt | |
212 | ||
0aaa8b91 | 213 | // corrected event histograms |
214 | // [0]-not corrected, | |
215 | // [1]=event vertex, | |
216 | // [2]=[1]+trigger MBtoInel, | |
217 | // [3]=[1]+trigger MBtoND, | |
218 | // [4]=[1]+trigger MBtoNSD | |
219 | THnSparseF *fCorrRecEventHist1[5]; //-> mcZv:multMB | |
220 | ||
bad4ba69 | 221 | |
0aaa8b91 | 222 | // corrected event histograms (empty events) |
223 | // [0]=not corrected, | |
224 | // [1]=trigger/trigger+vertex correction, | |
225 | // [2]=[1]+trigger MBtoInel, | |
226 | // [3]=[1]+trigger MBtoND, | |
227 | // [4]=[1]+trigger MBtoNSD | |
228 | THnSparseF *fCorrRecEventHist2[5]; //-> mcZv:multMB | |
229 | ||
230 | ||
231 | // | |
232 | // correction matrices (histograms) | |
233 | // must be loaded | |
234 | // | |
235 | ||
236 | // event rec. track vs true track multiplicity correlation matrix | |
237 | THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks | |
238 | ||
239 | // histograms needed for empty events corrections | |
240 | TH1D *fZvNorm; //-> normalised reconstructed zv distribution | |
241 | TH1D *fZvEmptyEventsNorm; //-> trigger/trigger+vertex empty event correction | |
242 | ||
243 | // trigger bias corrections | |
244 | THnSparseF *fCorrTriggerMBtoInelEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerEventMatrix / fGenEventMatrix) | |
245 | THnSparseF *fCorrTriggerMBtoNDEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerEventMatrix / fGenNDEventMatrix) | |
246 | THnSparseF *fCorrTriggerMBtoNSDEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerEventMatrix / fGenNSDEventMatrix) | |
247 | ||
248 | // event vertex corrections | |
249 | THnSparseF *fCorrEventMatrix; //-> mcVz:mcPt:mcEta (fRecEventMatrix/fTriggerEventMatrix) | |
250 | ||
251 | // track-event trigger bias corrections | |
252 | THnSparseF *fCorrTriggerMBtoInelTrackEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerTrackEventMatrix / fGenTrackEventMatrix) | |
253 | THnSparseF *fCorrTriggerMBtoNDTrackEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerTrackEventMatrix / fGenTrackEventNDMatrix) | |
254 | THnSparseF *fCorrTriggerMBtoNSDTrackEventMatrix; //-> mcVz:mcPt:mcEta (fTriggerTrackEventMatrix / fGenTrackEventNSDMatrix) | |
255 | ||
256 | // track-event vertex corrections | |
257 | THnSparseF *fCorrTrackEventMatrix; //-> mcVz:mcPt:mcEta (fRecTrackEventMatrix/fTriggerTrackEventMatrix) | |
258 | ||
259 | // track-level corrections | |
260 | THnSparseF *fCorrTrackMatrix; //-> mcVz:mcPt:mcEta (fRecPrimTrackMatrix / fGenPrimTrackMatrix) | |
261 | THnSparseF *fContTrackMatrix; //-> mcVz:mcPt:mcEta (fRecSecTrackMatrix / fRecTrackMatrix) | |
262 | THnSparseF *fContMultTrackMatrix; //-> mcVz:mcPt:mcEta (fRecMultTrackMatrix / fRecTrackMatrix) | |
263 | ||
264 | TString fCorrMatrixFileName; // file with efficiency correction matrices | |
265 | ||
266 | AlidNdPtCorrection(const AlidNdPtCorrection&); // not implemented | |
267 | AlidNdPtCorrection& operator=(const AlidNdPtCorrection&); // not implemented | |
268 | ||
269 | ClassDef(AlidNdPtCorrection,1); | |
270 | }; | |
271 | ||
272 | #endif |