1 #ifndef ALIDEDPTANALYSIS_H
2 #define ALIDEDPTANALYSIS_H
4 //------------------------------------------------------------------------------
5 // AlidNdPtAnalysis class.
8 // - fills analysis control histograms
9 // - fills generic correction matrices
10 // - generates correction matrices
13 // - generic correction matrices
14 // - control histograms
16 // Author: J.Otwinowski 04/11/2008
17 //------------------------------------------------------------------------------
24 class AliESDtrackCuts;
25 class AliVertexerTracks;
28 class AliESDfriendTrack;
30 #include "THnSparse.h"
32 #include "AlidNdPtHelper.h"
34 class AlidNdPtAnalysis : public AlidNdPt {
37 AlidNdPtAnalysis(Char_t* name, Char_t* title);
44 virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
46 // Merge output objects (needed by PROOF)
47 virtual Long64_t Merge(TCollection* list);
49 // Analyse output histograms
50 virtual void Analyse();
52 // Export objects to folder
53 virtual TFolder *ExportToFolder(TObjArray * array=0);
55 // Get analysis folder
56 TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
58 // Fill control histograms
59 void SetHistogramsOn(Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
60 Bool_t IsHistogramsOn() {return fHistogramsOn;}
62 // Create folder for analysed histograms
63 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
66 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj);
67 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj);
68 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);
71 THnSparseF *GetEventMultCorrelationMatrix() {return fEventMultCorrelationMatrix;}
72 THnSparseF *GetTrackPtCorrelationMatrix() {return fTrackPtCorrelationMatrix;}
75 THnSparseF *GetGenEventMatrix() {return fGenEventMatrix;}
76 THnSparseF *GetGenSDEventMatrix() {return fGenSDEventMatrix;}
77 THnSparseF *GetGenDDEventMatrix() {return fGenDDEventMatrix;}
78 THnSparseF *GetGenNDEventMatrix() {return fGenNDEventMatrix;}
79 THnSparseF *GetGenNSDEventMatrix() {return fGenNSDEventMatrix;}
81 THnSparseF *GetTriggerEventMatrix() {return fTriggerEventMatrix;}
82 THnSparseF *GetTriggerSDEventMatrix() {return fTriggerSDEventMatrix;}
83 THnSparseF *GetTriggerDDEventMatrix() {return fTriggerDDEventMatrix;}
84 THnSparseF *GetTriggerNDEventMatrix() {return fTriggerNDEventMatrix;}
85 THnSparseF *GetTriggerNSDEventMatrix() {return fTriggerNSDEventMatrix;}
87 THnSparseF *GetRecEventMatrix() {return fRecEventMatrix;}
88 THnSparseF *GetRecSDEventMatrix() {return fRecSDEventMatrix;}
89 THnSparseF *GetRecDDEventMatrix() {return fRecDDEventMatrix;}
90 THnSparseF *GetRecNDEventMatrix() {return fRecNDEventMatrix;}
91 THnSparseF *GetRecNSDEventMatrix() {return fRecNSDEventMatrix;}
94 THnSparseF *GetGenTrackEventMatrix() {return fGenTrackEventMatrix;}
95 THnSparseF *GetGenTrackSDEventMatrix() {return fGenTrackSDEventMatrix;}
96 THnSparseF *GetGenTrackDDEventMatrix() {return fGenTrackDDEventMatrix;}
97 THnSparseF *GetGenTrackNDEventMatrix() {return fGenTrackNDEventMatrix;}
98 THnSparseF *GetGenTrackNSDEventMatrix() {return fGenTrackNSDEventMatrix;}
100 THnSparseF *GetTriggerTrackEventMatrix() {return fTriggerTrackEventMatrix;}
101 THnSparseF *GetTriggerTrackSDEventMatrix() {return fTriggerTrackSDEventMatrix;}
102 THnSparseF *GetTriggerTrackDDEventMatrix() {return fTriggerTrackDDEventMatrix;}
103 THnSparseF *GetTriggerTrackNDEventMatrix() {return fTriggerTrackNDEventMatrix;}
104 THnSparseF *GetTriggerTrackNSDEventMatrix() {return fTriggerTrackNSDEventMatrix;}
106 THnSparseF *GetRecTrackEventMatrix() {return fRecTrackEventMatrix;}
107 THnSparseF *GetRecTrackSDEventMatrix() {return fRecTrackSDEventMatrix;}
108 THnSparseF *GetRecTrackDDEventMatrix() {return fRecTrackDDEventMatrix;}
109 THnSparseF *GetRecTrackNDEventMatrix() {return fRecTrackNDEventMatrix;}
110 THnSparseF *GetRecTrackNSDEventMatrix() {return fRecTrackNSDEventMatrix;}
113 THnSparseF *GetGenPrimTrackMatrix() {return fGenPrimTrackMatrix;}
114 THnSparseF *GetRecPrimTrackMatrix() {return fRecPrimTrackMatrix;}
116 THnSparseF *GetRecTrackMatrix() {return fRecTrackMatrix;}
117 THnSparseF *GetRecSecTrackMatrix() {return fRecSecTrackMatrix;}
118 THnSparseF *GetRecMultTrackMatrix() {return fRecMultTrackMatrix;}
121 // control histograms
123 THnSparseF *GetMCEventHist1() {return fMCEventHist1;}
124 THnSparseF *GetRecEventHist1() {return fRecEventHist1;}
125 THnSparseF *GetRecEventHist2() {return fRecEventHist2;}
126 THnSparseF *GetRecMCEventHist1() {return fRecMCEventHist1;}
127 THnSparseF *GetRecMCEventHist2() {return fRecMCEventHist2;}
128 THnSparseF *GetRecMCEventHist3() {return fRecMCEventHist3;}
130 THnSparseF *GetMCTrackHist1(Int_t i) {return fMCTrackHist1[i];}
131 THnSparseF *GetMCPrimTrackHist1(Int_t i) {return fMCPrimTrackHist1[i];}
132 THnSparseF *GetMCSecTrackHist1(Int_t i) {return fMCSecTrackHist1[i];}
134 THnSparseF *GetRecTrackHist1(Int_t i) {return fRecTrackHist1[i];}
135 THnSparseF *GetRecTrackMultHist1(Int_t i) {return fRecTrackMultHist1[i];}
137 THnSparseF *GetRecMCTrackHist1() {return fRecMCTrackHist1;}
138 THnSparseF *GetMCMultRecTrackHist1() {return fMCMultRecTrackHist1;}
143 TFolder *fAnalysisFolder; // folder for analysed histograms
145 // switch on/off filling of control histograms
146 Bool_t fHistogramsOn;
149 // correlation matrices (histograms)
152 // event rec. track vs true track multiplicity correlation matrix
153 THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks
155 // rec. track pt vs true track pt correlation matrix for given eta
156 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
159 // event level correction
163 THnSparseF *fGenEventMatrix; //-> mcZv:mult (inelastic)
164 THnSparseF *fGenSDEventMatrix; //-> mcZv:mult (single diffractive)
165 THnSparseF *fGenDDEventMatrix; //-> mcZv:mult (single diffractive)
166 THnSparseF *fGenNDEventMatrix; //-> mcZv:mult (non diffractive)
167 THnSparseF *fGenNSDEventMatrix; //-> mcZv:mult (non single diffractive)
169 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
170 THnSparseF *fTriggerEventMatrix; //-> mcZv:mult
171 THnSparseF *fTriggerSDEventMatrix; //-> mcZv:mult
172 THnSparseF *fTriggerDDEventMatrix; //-> mcZv:mult
173 THnSparseF *fTriggerNDEventMatrix; //-> mcZv:mult
174 THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:mult
176 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
177 THnSparseF *fRecEventMatrix; //-> mcZv:mult
178 THnSparseF *fRecSDEventMatrix; //-> mcZv:mult
179 THnSparseF *fRecDDEventMatrix; //-> mcZv:mult
180 THnSparseF *fRecNDEventMatrix; //-> mcZv:mult
181 THnSparseF *fRecNSDEventMatrix; //-> mcZv:mult
184 // track-event level correction
187 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
188 THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
189 THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
190 THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
191 THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
193 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
194 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
195 THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
196 THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
197 THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
198 THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
200 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
201 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
202 THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta
203 THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta
204 THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta
205 THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta
208 // track level correction
211 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
212 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
213 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
215 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
216 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta
217 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
219 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
220 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
223 // ESD and MC control analysis histograms
226 // THnSparse event histograms
227 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv
228 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
229 THnSparseF *fRecEventHist2; //-> Zv:multMB
230 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
231 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:Mult
232 THnSparseF *fRecMCEventHist3; //-> Mult:EventType (ND, DD, SD)
234 // THnSparse track histograms
235 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
237 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi
238 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
239 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
241 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi
242 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Mult
244 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)
246 //multple reconstructed tracks
247 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid
249 AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
250 AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
252 ClassDef(AlidNdPtAnalysis,1);