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