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