]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/dNdPt/AlidNdPtAnalysis.h
dNdPt analysis update for preliminary spectra
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtAnalysis.h
1 #ifndef ALIDNDPTANALYSIS_H
2 #define ALIDNDPTANALYSIS_H
3
4 //------------------------------------------------------------------------------
5 // AlidNdPtAnalysis class used for dNdPt analysis. 
6 // 
7 // Author: J.Otwinowski 04/11/2008 
8 //------------------------------------------------------------------------------
9
10 class iostream;
11
12 class TFile;
13 class TCint;
14 class TProfile;
15 class TFolder;
16 class TObjArray;
17 class TString;
18 class THnSparse;
19
20 class AliESDtrackCuts;
21 class AliVertexerTracks;
22 class AliESD;
23 class AliESDfriend;
24 class AliESDfriendTrack;
25 class AlidNdPtHelper;
26
27 #include "AlidNdPt.h"
28
29 class AlidNdPtAnalysis : public AlidNdPt {
30 public :
31   AlidNdPtAnalysis(); 
32   AlidNdPtAnalysis(Char_t* name, Char_t* title);
33   ~AlidNdPtAnalysis();
34
35   // Init data members
36   virtual void Init();
37
38   // Process events
39   virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
40
41   // Merge output objects (needed by PROOF) 
42   virtual Long64_t Merge(TCollection* const list);
43
44   // Analyse output histograms 
45   virtual void Analyse();
46
47   // Export objects to folder
48   virtual TFolder *ExportToFolder(TObjArray * const array=0);
49
50   // Get analysis folder
51   TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
52
53   // Fill control histograms
54   void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
55   Bool_t IsHistogramsOn() const {return fHistogramsOn;}
56
57   // Define 0-multiplicity bin for LHC
58   // background calculation
59   static Bool_t IsBinZeroSPDvtx(const AliESDEvent* esdEvent);
60   static Bool_t IsBinZeroTrackSPDvtx(const AliESDEvent* esdEvent);
61     
62   // Create folder for analysed histograms
63   TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
64
65   // Fill 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);
69
70   // Getters
71   THnSparseF *GetEventMultCorrelationMatrix() const {return fEventMultCorrelationMatrix;}
72   THnSparseF *GetTrackPtCorrelationMatrix()   const {return fTrackPtCorrelationMatrix;}
73
74   //
75   THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
76   THnSparseF *GetGenSDEventMatrix() const {return fGenSDEventMatrix;}
77   THnSparseF *GetGenDDEventMatrix() const {return fGenDDEventMatrix;}
78   THnSparseF *GetGenNDEventMatrix() const {return fGenNDEventMatrix;}
79   THnSparseF *GetGenNSDEventMatrix() const {return fGenNSDEventMatrix;}
80
81   THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
82   THnSparseF *GetTriggerSDEventMatrix() const {return fTriggerSDEventMatrix;}
83   THnSparseF *GetTriggerDDEventMatrix() const {return fTriggerDDEventMatrix;}
84   THnSparseF *GetTriggerNDEventMatrix() const {return fTriggerNDEventMatrix;}
85   THnSparseF *GetTriggerNSDEventMatrix() const {return fTriggerNSDEventMatrix;}
86
87   THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
88   THnSparseF *GetRecSDEventMatrix() const {return fRecSDEventMatrix;}
89   THnSparseF *GetRecDDEventMatrix() const {return fRecDDEventMatrix;}
90   THnSparseF *GetRecNDEventMatrix() const {return fRecNDEventMatrix;}
91   THnSparseF *GetRecNSDEventMatrix() const {return fRecNSDEventMatrix;}
92
93   // 
94   THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
95   THnSparseF *GetGenTrackSDEventMatrix() const {return fGenTrackSDEventMatrix;}
96   THnSparseF *GetGenTrackDDEventMatrix() const {return fGenTrackDDEventMatrix;}
97   THnSparseF *GetGenTrackNDEventMatrix() const {return fGenTrackNDEventMatrix;}
98   THnSparseF *GetGenTrackNSDEventMatrix() const {return fGenTrackNSDEventMatrix;}
99
100   THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
101   THnSparseF *GetTriggerTrackSDEventMatrix() const {return fTriggerTrackSDEventMatrix;}
102   THnSparseF *GetTriggerTrackDDEventMatrix() const {return fTriggerTrackDDEventMatrix;}
103   THnSparseF *GetTriggerTrackNDEventMatrix() const {return fTriggerTrackNDEventMatrix;}
104   THnSparseF *GetTriggerTrackNSDEventMatrix() const {return fTriggerTrackNSDEventMatrix;}
105
106   THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
107   THnSparseF *GetRecTrackSDEventMatrix() const {return fRecTrackSDEventMatrix;}
108   THnSparseF *GetRecTrackDDEventMatrix() const {return fRecTrackDDEventMatrix;}
109   THnSparseF *GetRecTrackNDEventMatrix() const {return fRecTrackNDEventMatrix;}
110   THnSparseF *GetRecTrackNSDEventMatrix() const {return fRecTrackNSDEventMatrix;}
111
112   //
113   THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
114   THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
115   THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
116
117   THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
118   THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
119   THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
120
121   //
122   // control histograms
123   //
124   THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
125   THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
126   THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
127   THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
128   THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
129   THnSparseF *GetRecMCEventHist3() const {return fRecMCEventHist3;}
130
131   THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
132   THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
133   THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
134   THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
135
136   THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
137   THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
138
139   THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
140   THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
141
142   THnSparseF *GetRecTrackHist2() const {return fRecTrackHist2;}
143
144 private:
145
146   // analysis folder 
147   TFolder *fAnalysisFolder; // folder for analysed histograms
148   Bool_t fHistogramsOn; // switch on/off filling of control histograms 
149
150   // 
151   // correlation matrices (histograms)
152   //
153
154   // event rec. track vs true track multiplicity correlation matrix 
155   THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks
156
157   // rec. track pt vs true track pt correlation matrix for given eta
158   THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
159
160   //
161   // event level correction 
162   //
163
164   // all genertated
165   THnSparseF *fGenEventMatrix; //-> mcZv:multMB (inelastic)
166   THnSparseF *fGenSDEventMatrix; //-> mcZv:multMB (single diffractive)
167   THnSparseF *fGenDDEventMatrix; //-> mcZv:multMB (single diffractive)
168   THnSparseF *fGenNDEventMatrix; //-> mcZv:multMB (non diffractive)
169   THnSparseF *fGenNSDEventMatrix; //-> mcZv:multMB (non single diffractive)
170
171   // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
172   THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB
173   THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multMB
174   THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multMB
175   THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multMB
176   THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multMB
177
178   // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
179   THnSparseF *fRecEventMatrix; //-> mcZv:multMB 
180   THnSparseF *fRecSDEventMatrix; //-> mcZv:multMB
181   THnSparseF *fRecDDEventMatrix; //-> mcZv:multMB
182   THnSparseF *fRecNDEventMatrix; //-> mcZv:multMB
183   THnSparseF *fRecNSDEventMatrix; //-> mcZv:multMB
184
185   //
186   // track-event level correction 
187   //
188
189   THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
190   THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
191   THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
192   THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
193   THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
194
195   // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
196   THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
197   THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
198   THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
199   THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
200   THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
201
202   // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
203   THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
204   THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta
205   THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta
206   THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta
207   THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta
208
209   //
210   // track level correction 
211   //
212
213   // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
214   THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta
215   THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
216   THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
217
218   // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
219   THnSparseF *fRecTrackMatrix;    //-> mcZv:mcPt:mcEta
220   THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
221
222   // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
223   THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
224
225   //
226   // ESD and MC control analysis histograms
227   //
228
229   // THnSparse event histograms
230   THnSparseF *fMCEventHist1;  //-> mcXv:mcYv:mcZv
231   THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
232   THnSparseF *fRecEventHist2; //-> Zv:multMB:mult
233   THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
234   THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult
235   THnSparseF *fRecMCEventHist3; //-> mult:EventType (ND, DD, SD)
236
237   // THnSparse track histograms
238   // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
239
240   THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps];     //-> mcPt:mcEta:mcPhi
241   THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
242   THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother
243   THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps];  //-> mcPt:mcEta:pid:mech:mother
244
245   THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps];     //-> Pt:Eta:Phi
246   THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult
247
248   THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)
249
250   //multple reconstructed tracks
251   THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid
252
253   // track control histograms
254   THnSparseF *fRecTrackHist2;  //-> nclust:chi2:Pt:Eta:Phi
255
256   AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
257   AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
258
259   ClassDef(AlidNdPtAnalysis,2);
260 };
261
262 #endif