]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdPt/AlidNdPtAnalysisPbPb.h
change histogram bining
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtAnalysisPbPb.h
CommitLineData
e2ddd2da 1
2#ifndef AlidNdPtAnalysisPbPb_H
3#define AlidNdPtAnalysisPbPb_H
4
5
6//------------------------------------------------------------------------------
7// AlidNdPtAnalysisPbPb class used for dNdPt analysis.in PbPb collision
8//
9// Author: J.Otwinowski 04/11/2008
10//------------------------------------------------------------------------------
11
12class iostream;
13
14class TFile;
15class TCint;
16class TProfile;
17class TFolder;
18class TObjArray;
19class TString;
20class THnSparse;
21
22class AliESDtrackCuts;
23class AliVertexerTracks;
24class AliESD;
25class AliESDfriend;
26class AliESDfriendTrack;
27class AlidNdPtHelper;
3e0c3624 28class AliTriggerAnalysis;
e2ddd2da 29
30#include "AlidNdPt.h"
31
32class AlidNdPtAnalysisPbPb : public AlidNdPt {
33public :
34 AlidNdPtAnalysisPbPb();
35 AlidNdPtAnalysisPbPb(Char_t* name, Char_t* title);
36 ~AlidNdPtAnalysisPbPb();
37
38 // Init data members
39 virtual void Init();
40
41 // Process events
42 virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
43
44 // Merge output objects (needed by PROOF)
45 virtual Long64_t Merge(TCollection* const list);
46
47 // Analyse output histograms
48 virtual void Analyse();
49
50 // Export objects to folder
51 virtual TFolder *ExportToFolder(TObjArray * const array=0);
52
53 // Get analysis folder
54 TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
55
56 // Fill control histograms
57 void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
58 Bool_t IsHistogramsOn() const {return fHistogramsOn;}
59
60 // Create folder for analysed histograms
61 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
62
63 // Fill histograms
64 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj);
65 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj);
66 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);
67
68 // Getters
69 THnSparseF *GetTrackPtCorrelationMatrix() const {return fTrackPtCorrelationMatrix;}
70 //
71 THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
72 THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
73 THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
74 //
75 THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
76 THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
77 THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
78 //
79 THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
80 THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
81 THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
82
83 THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
84 THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
85 THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
86 //
87 // control histograms
88 //
89 THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
90 THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
91 THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
92
93
94 THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
95 THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
96
97 THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
98
99 THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
100 THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
101 THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
102 THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
103
104 THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
51ce74a4 105 THnSparseF *GetRecTrackHist2(Int_t i) const {return fRecTrackHist2[i];}
e2ddd2da 106 THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
107
108
109 THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
110
51ce74a4 111 THnSparseF *GetRecTrackHist3() const {return fRecTrackHist3;}
e2ddd2da 112
113private:
114
115 // analysis folder
116 TFolder *fAnalysisFolder; // folder for analysed histograms
117 Bool_t fHistogramsOn; // switch on/off filling of control histograms
118
119 //
120 // correlation matrices (histograms)
121 //
122 // rec. track pt vs true track pt correlation matrix for given eta
123 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
124
125 //
126 // event level correction
127 //
128 // all generated
129 THnSparseF *fGenEventMatrix; //-> mcZv:multMB
130
131 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
132 THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB
133
134 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
135 THnSparseF *fRecEventMatrix; //-> mcZv:multMB
136
137 // track-event level correction
138 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
139
140 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
141 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
142
143 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
144 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
145
146 //
147 // track level correction
148 //
149 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
150 THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta
151 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
152 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
153 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
154 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta
155 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
156 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
157 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
158
159 //
160 // ESD and MC control analysis histograms
161 //
162 // THnSparse event histograms
163 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv
164 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
165 THnSparseF *fRecEventHist2; //-> Zv:multMB:mult
166 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
167 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult
168
169 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
170 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi
171 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
172 THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother
173 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
174
175 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi
51ce74a4 176 THnSparseF *fRecTrackHist2[AlidNdPtHelper::kCutSteps]; //-> Zv:Pt:Eta
e2ddd2da 177 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult
178 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)
179
180 //multple reconstructed tracks
181 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid
182 // track control histograms
51ce74a4 183 THnSparseF *fRecTrackHist3; //-> nclust:chi2:Pt:Eta:Phi
e2ddd2da 184
3e0c3624 185 AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis object;
186
e2ddd2da 187 AlidNdPtAnalysisPbPb(const AlidNdPtAnalysisPbPb&); // not implemented
188 AlidNdPtAnalysisPbPb& operator=(const AlidNdPtAnalysisPbPb&); // not implemented
189
51ce74a4 190 ClassDef(AlidNdPtAnalysisPbPb,3);
e2ddd2da 191};
192
193#endif