]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPb2011.h
Added AlidNdPtAnalysisPbPb2011.h,cxx
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / ChargedHadrons / dNdPt / AlidNdPtAnalysisPbPb2011.h
CommitLineData
1a6352a5 1
2#ifndef AlidNdPtAnalysisPbPb2011_H
3#define AlidNdPtAnalysisPbPb2011_H
4
5
6//------------------------------------------------------------------------------
7// AlidNdPtAnalysisPbPb2011 class used for dNdPt analysis.in PbPb collision
8//
9// Author: J.Otwinowski 04/11/2008
10// last change: 2012-09-04 by P. Luettig
11//------------------------------------------------------------------------------
12
13class iostream;
14
15class TFile;
16class TCint;
17class TProfile;
18class TFolder;
19class TObjArray;
20class TString;
21class THnSparse;
22
23class AliESDtrackCuts;
24class AliVertexerTracks;
25class AliESD;
26class AliESDfriend;
27class AliESDfriendTrack;
28class AlidNdPtHelper;
29class AliTriggerAnalysis;
30
31#include "AlidNdPt.h"
32
33class AlidNdPtAnalysisPbPb2011 : public AlidNdPt {
34public :
35 AlidNdPtAnalysisPbPb2011();
36 AlidNdPtAnalysisPbPb2011(Char_t* name, Char_t* title);
37 ~AlidNdPtAnalysisPbPb2011();
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)
46 virtual Long64_t Merge(TCollection* const list);
47
48 // Analyse output histograms
49 virtual void Analyse();
50
51 // Export objects to folder
52 virtual TFolder *ExportToFolder(TObjArray * const array=0);
53
54 // Get analysis folder
55 TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
56
57 // Fill control histograms
58 void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
59 Bool_t IsHistogramsOn() const {return fHistogramsOn;}
60
61 // Create folder for analysed histograms
62 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
63
64 // Set binning for Histograms (if not set default binning is used)
65 void SetBinsMult(Int_t nbins, Double_t* edges) { fMultNbins = nbins; fBinsMult = CloneArray(nbins+1,edges); }
66 void SetBinsPt(Int_t nbins, Double_t* edges) { fPtNbins = nbins; fBinsPt = CloneArray(nbins+1,edges); }
67 void SetBinsPtCorr(Int_t nbins, Double_t* edges) { fPtCorrNbins = nbins; fBinsPtCorr = CloneArray(nbins+1,edges); }
68 void SetBinsEta(Int_t nbins, Double_t* edges) { fEtaNbins = nbins; fBinsEta = CloneArray(nbins+1,edges); }
69 void SetBinsZv(Int_t nbins, Double_t* edges) { fZvNbins = nbins; fBinsZv= CloneArray(nbins+1,edges); }
70 void SetBinsCentrality(Int_t nbins, Double_t* edges) { fCentralityNbins = nbins; fBinsCentrality = CloneArray(nbins+1,edges); }
71
72 // Fill histograms
73 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj, Float_t centralityF);
74 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj, Float_t centralityF);
75 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, Float_t centralityF);
76
77 // Getters
78 THnSparseF *GetTrackPtCorrelationMatrix() const {return fTrackPtCorrelationMatrix;}
79 //
80 THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
81 THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
82 THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
83 //
84 THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
85 THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
86 THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
87 //
88 THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
89 THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
90 THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
91
92 THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
93 THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
94 THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
95 //
96 // control histograms
97 //
98 THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
99 THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
100 THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
101
102
103 THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
104 THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
105
106 THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
107
108 THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
109 THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
110 THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
111 THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
112
113 THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
114 THnSparseF *GetRecTrackHist2(Int_t i) const {return fRecTrackHist2[i];}
115 THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
116
117
118 THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
119
120 THnSparseF *GetRecTrackHist3() const {return fRecTrackHist3;}
121
122 TString GetCentralityEstimator() const {return fCentralityEstimator; }
123
124 void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; }
125
126private:
127
128 // analysis folder
129 TFolder *fAnalysisFolder; // folder for analysed histograms
130 Bool_t fHistogramsOn; // switch on/off filling of control histograms
131
132 //
133 // correlation matrices (histograms)
134 //
135 // rec. track pt vs true track pt correlation matrix for given eta
136 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta:centrality
137
138 //
139 // event level correction
140 //
141 // all generated
142 THnSparseF *fGenEventMatrix; //-> mcZv:multMB:centrality
143
144 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
145 THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB:centrality
146
147 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
148 THnSparseF *fRecEventMatrix; //-> mcZv:multMB:centrality
149
150 // track-event level correction
151 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta:centrality
152
153 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
154 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta:centrality
155
156 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
157 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta:centrality
158
159 //
160 // track level correction
161 //
162 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
163 THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
164 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
165 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
166 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
167 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
168 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
169 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
170 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta:centrality
171
172 //
173 // ESD and MC control analysis histograms
174 //
175 // THnSparse event histograms
176 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv:centrality
177 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv:centrality
178 THnSparseF *fRecEventHist2; //-> Zv:multMB:mult:centrality
179 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv:centrality
180 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult:centrality
181
182 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
183 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi:centrality
184 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother:centrality
185 THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother:centrality
186 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother:centrality
187
188 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi:centrality
189 THnSparseF *fRecTrackHist2[AlidNdPtHelper::kCutSteps]; //-> Zv:Pt:Eta:centrality
190 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult:centrality
191 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta):centrality
192
193 //multple reconstructed tracks
194 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid:centrality
195 // track control histograms
196 THnSparseF *fRecTrackHist3; //-> nclust:chi2:Pt:Eta:Phi:centrality
197
198 AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis object;
199 TString fCentralityEstimator; // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"
200
201 //binning for THNsparse
202 Int_t fMultNbins;
203 Int_t fPtNbins;
204 Int_t fPtCorrNbins;
205 Int_t fEtaNbins;
206 Int_t fZvNbins;
207 Int_t fCentralityNbins;
208 Double_t* fBinsMult;
209 Double_t* fBinsPt;
210 Double_t* fBinsPtCorr;
211 Double_t* fBinsEta;
212 Double_t* fBinsZv;
213 Double_t* fBinsCentrality;
214
215 Bool_t fIsInit;
216
217
218 AlidNdPtAnalysisPbPb2011(const AlidNdPtAnalysisPbPb2011&); // not implemented
219 AlidNdPtAnalysisPbPb2011& operator=(const AlidNdPtAnalysisPbPb2011&); // not implemented
220
221 ClassDef(AlidNdPtAnalysisPbPb2011,6);
222};
223
224#endif