]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysis.h
Added distributions in phi, updated AddTask accordingly
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / ChargedHadrons / dNdPt / AlidNdPtAnalysis.h
CommitLineData
00b81913 1#ifndef ALIDNDPTANALYSIS_H
2#define ALIDNDPTANALYSIS_H
0aaa8b91 3
4//------------------------------------------------------------------------------
00b81913 5// AlidNdPtAnalysis class used for dNdPt analysis.
0aaa8b91 6//
0aaa8b91 7// Author: J.Otwinowski 04/11/2008
df1c0513 8// last change: 2013-06-13 by M.Knichel
0aaa8b91 9//------------------------------------------------------------------------------
10
00b81913 11class iostream;
12
13class TFile;
14class TCint;
0aaa8b91 15class TProfile;
16class TFolder;
17class TObjArray;
18class TString;
00b81913 19class THnSparse;
0aaa8b91 20
21class AliESDtrackCuts;
22class AliVertexerTracks;
23class AliESD;
24class AliESDfriend;
25class AliESDfriendTrack;
bad4ba69 26class AlidNdPtHelper;
27
0aaa8b91 28#include "AlidNdPt.h"
0aaa8b91 29
30class AlidNdPtAnalysis : public AlidNdPt {
31public :
32 AlidNdPtAnalysis();
33 AlidNdPtAnalysis(Char_t* name, Char_t* title);
34 ~AlidNdPtAnalysis();
35
36 // Init data members
37 virtual void Init();
38
39 // Process events
40 virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
41
42 // Merge output objects (needed by PROOF)
00b81913 43 virtual Long64_t Merge(TCollection* const list);
0aaa8b91 44
45 // Analyse output histograms
46 virtual void Analyse();
47
48 // Export objects to folder
c931948b 49 virtual TFolder *ExportToFolder(TObjArray * const array=0);
0aaa8b91 50
51 // Get analysis folder
00b81913 52 TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
0aaa8b91 53
54 // Fill control histograms
00b81913 55 void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
56 Bool_t IsHistogramsOn() const {return fHistogramsOn;}
0aaa8b91 57
791aaf54 58 // Define 0-multiplicity bin for LHC
59 // background calculation
60 static Bool_t IsBinZeroSPDvtx(const AliESDEvent* esdEvent);
61 static Bool_t IsBinZeroTrackSPDvtx(const AliESDEvent* esdEvent);
62
0aaa8b91 63 // Create folder for analysed histograms
64 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
65
68f10917 66 // Set binning for Histograms (if not set default binning is used)
fc98fbb5 67 void SetBinsMult(Int_t nbins, Double_t* edges) { fMultNbins = nbins; fBinsMult = CloneArray(nbins+1,edges); }
68 void SetBinsPt(Int_t nbins, Double_t* edges) { fPtNbins = nbins; fBinsPt = CloneArray(nbins+1,edges); }
69 void SetBinsPtCorr(Int_t nbins, Double_t* edges) { fPtCorrNbins = nbins; fBinsPtCorr = CloneArray(nbins+1,edges); }
70 void SetBinsEta(Int_t nbins, Double_t* edges) { fEtaNbins = nbins; fBinsEta = CloneArray(nbins+1,edges); }
71 void SetBinsZv(Int_t nbins, Double_t* edges) { fZvNbins = nbins; fBinsZv = CloneArray(nbins+1,edges); }
68f10917 72
73
0aaa8b91 74 // Fill histograms
fff1caf5 75 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multMB);
0aaa8b91 76 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj);
77 void FillHistograms(TObjArray *const allChargedTracks,Int_t *const labelsAll,Int_t multAll,Int_t *const labelsAcc,Int_t multAcc,Int_t *const labelsRec,Int_t multRec);
78
79 // Getters
00b81913 80 THnSparseF *GetEventMultCorrelationMatrix() const {return fEventMultCorrelationMatrix;}
81 THnSparseF *GetTrackPtCorrelationMatrix() const {return fTrackPtCorrelationMatrix;}
0aaa8b91 82
83 //
00b81913 84 THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
85 THnSparseF *GetGenSDEventMatrix() const {return fGenSDEventMatrix;}
86 THnSparseF *GetGenDDEventMatrix() const {return fGenDDEventMatrix;}
87 THnSparseF *GetGenNDEventMatrix() const {return fGenNDEventMatrix;}
88 THnSparseF *GetGenNSDEventMatrix() const {return fGenNSDEventMatrix;}
89
90 THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
91 THnSparseF *GetTriggerSDEventMatrix() const {return fTriggerSDEventMatrix;}
92 THnSparseF *GetTriggerDDEventMatrix() const {return fTriggerDDEventMatrix;}
93 THnSparseF *GetTriggerNDEventMatrix() const {return fTriggerNDEventMatrix;}
94 THnSparseF *GetTriggerNSDEventMatrix() const {return fTriggerNSDEventMatrix;}
95
96 THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
97 THnSparseF *GetRecSDEventMatrix() const {return fRecSDEventMatrix;}
98 THnSparseF *GetRecDDEventMatrix() const {return fRecDDEventMatrix;}
99 THnSparseF *GetRecNDEventMatrix() const {return fRecNDEventMatrix;}
100 THnSparseF *GetRecNSDEventMatrix() const {return fRecNSDEventMatrix;}
0aaa8b91 101
55468faf 102 //
103 THnSparseF *GetRecCandleEventMatrix() const {return fRecCandleEventMatrix;}
104
0aaa8b91 105 //
00b81913 106 THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
107 THnSparseF *GetGenTrackSDEventMatrix() const {return fGenTrackSDEventMatrix;}
108 THnSparseF *GetGenTrackDDEventMatrix() const {return fGenTrackDDEventMatrix;}
109 THnSparseF *GetGenTrackNDEventMatrix() const {return fGenTrackNDEventMatrix;}
110 THnSparseF *GetGenTrackNSDEventMatrix() const {return fGenTrackNSDEventMatrix;}
111
112 THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
113 THnSparseF *GetTriggerTrackSDEventMatrix() const {return fTriggerTrackSDEventMatrix;}
114 THnSparseF *GetTriggerTrackDDEventMatrix() const {return fTriggerTrackDDEventMatrix;}
115 THnSparseF *GetTriggerTrackNDEventMatrix() const {return fTriggerTrackNDEventMatrix;}
116 THnSparseF *GetTriggerTrackNSDEventMatrix() const {return fTriggerTrackNSDEventMatrix;}
117
118 THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
119 THnSparseF *GetRecTrackSDEventMatrix() const {return fRecTrackSDEventMatrix;}
120 THnSparseF *GetRecTrackDDEventMatrix() const {return fRecTrackDDEventMatrix;}
121 THnSparseF *GetRecTrackNDEventMatrix() const {return fRecTrackNDEventMatrix;}
122 THnSparseF *GetRecTrackNSDEventMatrix() const {return fRecTrackNSDEventMatrix;}
0aaa8b91 123
124 //
00b81913 125 THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
126 THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
127 THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
0aaa8b91 128
00b81913 129 THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
130 THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
131 THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
0aaa8b91 132
133 //
134 // control histograms
135 //
00b81913 136 THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
137 THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
138 THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
139 THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
140 THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
141 THnSparseF *GetRecMCEventHist3() const {return fRecMCEventHist3;}
0aaa8b91 142
00b81913 143 THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
144 THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
7f7dd416 145 THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
00b81913 146 THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
0aaa8b91 147
00b81913 148 THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
149 THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
0aaa8b91 150
00b81913 151 THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
152 THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
0aaa8b91 153
00b81913 154 THnSparseF *GetRecTrackHist2() const {return fRecTrackHist2;}
24c88fc4 155 THnSparseF *GetEventCount() const {return fEventCount;}
f4f8cae4 156
157 //
158 // Generic histograms to be corrected
159 //
160 THnSparseF *GetRecEventHist() const {return fRecEventHist;}
161 THnSparseF *GetRecTrackHist() const {return fRecTrackHist;}
df1c0513 162 THnSparseF* GetMCPrimTrackHist() const {return fMCPrimTrackHist;}
f4f8cae4 163
0aaa8b91 164private:
165
166 // analysis folder
167 TFolder *fAnalysisFolder; // folder for analysed histograms
00b81913 168 Bool_t fHistogramsOn; // switch on/off filling of control histograms
0aaa8b91 169
170 //
171 // correlation matrices (histograms)
172 //
173
174 // event rec. track vs true track multiplicity correlation matrix
df1c0513 175 THnSparseF *fEventMultCorrelationMatrix; //-> multRecMult:multTrueMC:multMB
0aaa8b91 176
177 // rec. track pt vs true track pt correlation matrix for given eta
178 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
179
180 //
181 // event level correction
182 //
183
184 // all genertated
df1c0513 185 THnSparseF *fGenEventMatrix; //-> mcZv:multTrueMC (inelastic)
186 THnSparseF *fGenSDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
187 THnSparseF *fGenDDEventMatrix; //-> mcZv:multTrueMC (single diffractive)
188 THnSparseF *fGenNDEventMatrix; //-> mcZv:multTrueMC (non diffractive)
189 THnSparseF *fGenNSDEventMatrix; //-> mcZv:multTrueMC (non single diffractive)
0aaa8b91 190
191 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
df1c0513 192 THnSparseF *fTriggerEventMatrix; //-> mcZv:multTrueMC
193 THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multTrueMC
194 THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multTrueMC
195 THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multTrueMC
196 THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multTrueMC
0aaa8b91 197
198 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
df1c0513 199 THnSparseF *fRecEventMatrix; //-> mcZv:multTrueMC
200 THnSparseF *fRecSDEventMatrix; //-> mcZv:multTrueMC
201 THnSparseF *fRecDDEventMatrix; //-> mcZv:multTrueMC
202 THnSparseF *fRecNDEventMatrix; //-> mcZv:multTrueMC
203 THnSparseF *fRecNSDEventMatrix; //-> mcZv:multTrueMC
0aaa8b91 204
55468faf 205
0aaa8b91 206 //
207 // track-event level correction
208 //
209
df1c0513 210 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
211 THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
212 THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
213 THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
214 THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
0aaa8b91 215
216 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
df1c0513 217 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
218 THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
219 THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
220 THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
221 THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta:multTrueMC
0aaa8b91 222
223 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
df1c0513 224 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
225 THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
226 THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
227 THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
228 THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta:multTrueMC
0aaa8b91 229
230 //
231 // track level correction
232 //
233
234 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
985bdfd5 235 THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta
0aaa8b91 236 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
237 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
238
239 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
240 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta
241 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
242
243 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
244 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
245
246 //
247 // ESD and MC control analysis histograms
248 //
249
250 // THnSparse event histograms
251 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv
252 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
df1c0513 253 THnSparseF *fRecEventHist2; //-> Zv:multMB:multRecMult
0aaa8b91 254 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
df1c0513 255 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:multMB
256 THnSparseF *fRecMCEventHist3; //-> multRecMult:EventType (ND, DD, SD)
0aaa8b91 257
258 // THnSparse track histograms
259 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
260
261 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi
262 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
7f7dd416 263 THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother
0aaa8b91 264 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
265
266 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi
bad4ba69 267 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult
0aaa8b91 268
269 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)
270
271 //multple reconstructed tracks
272 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid
273
985bdfd5 274 // track control histograms
275 THnSparseF *fRecTrackHist2; //-> nclust:chi2:Pt:Eta:Phi
276
f4f8cae4 277 //
278 // Generic histograms to be corrected
279 //
24c88fc4 280 THnSparseF *fRecEventHist; //-> Zv:multMB
df1c0513 281 THnSparseF *fRecTrackHist; //-> Zv:pT:eta:multRecMult
24c88fc4 282 THnSparseF *fEventCount; //-> trig, trig + vertex, selected event
df1c0513 283 THnSparseF *fMCPrimTrackHist; //-> Zv:mcpT:mceta:multTrueMC
f4f8cae4 284
55468faf 285 //
286 // candle events track corrections
287 //
df1c0513 288 THnSparseF *fRecCandleEventMatrix; //-> Zv:multTrueMC
55468faf 289
68f10917 290 //binning for THNsparse
291 Int_t fMultNbins;
292 Int_t fPtNbins;
293 Int_t fPtCorrNbins;
294 Int_t fEtaNbins;
295 Int_t fZvNbins;
296 Double_t* fBinsMult;
297 Double_t* fBinsPt;
298 Double_t* fBinsPtCorr;
299 Double_t* fBinsEta;
300 Double_t* fBinsZv;
301
302 Bool_t fIsInit;
303
0aaa8b91 304 AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
305 AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
306
df1c0513 307 ClassDef(AlidNdPtAnalysis,7);
0aaa8b91 308};
309
310#endif