]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdPt/AlidNdPtCorrection.h
removed duplications in AlidNdPtHelper and AliPWG0Helper and small changes
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtCorrection.h
CommitLineData
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 21class TFolder;
22class TObjArray;
23class TString;
24
25class AliESDtrackCuts;
26class AliVertexerTracks;
27class AliESD;
28class AliESDfriend;
29class AliESDfriendTrack;
30
31class AlidNdPtEventCuts;
32class AlidNdPtAcceptanceCuts;
33class AlidNdPtCorrection;
34class AlidNdPt;
bad4ba69 35class AlidNdPtHelper;
0aaa8b91 36
37#include "THnSparse.h"
38#include "AlidNdPt.h"
0aaa8b91 39
40class AlidNdPtCorrection : public AlidNdPt {
41public :
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
147private:
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