64f2f8fcc71cf2718aade29f73e4f6be5891667d
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonRes.h
1 #ifndef ALICOMPARISONRES_H
2 #define ALICOMPARISONRES_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of 
6 // reconstructed and MC particle tracks (TPC resolution).   
7 // 
8 // Author: J.Otwinowski 04/02/2008 
9 //------------------------------------------------------------------------------
10
11 class TFile;
12 class AliMCInfo;
13 class AliESDRecInfo;
14 class AliESDEvent; 
15 class AliESD;
16 class AliESDfriend;
17 class AliMCInfoCuts;
18 class AliRecInfoCuts;
19 class TH1I;
20 class TH3F;
21 class TH3;
22 class TProfile;
23 class TProfile2D;
24 class TString;
25 class AliESDVertex;
26
27 #include "TNamed.h"
28 #include "AliComparisonObject.h"
29
30 class AliComparisonRes : public AliComparisonObject {
31 public :
32   AliComparisonRes(); 
33   virtual ~AliComparisonRes();
34
35   // Init data members
36   virtual void     Init();
37
38   // Execute analysis
39   virtual void      Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
40
41   // Merge output objects (needed by PROOF) 
42   virtual Long64_t Merge(TCollection* list);
43
44   // Analyse output histograms
45   virtual void Analyse();
46
47   // Get analysis folder
48   virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
49
50   // Process events
51   void      ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
52   void      Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
53
54   // Create folder for analysed histograms
55   TFolder *CreateFolder(TString folder = "folderRes",TString title = "Analysed Resolution histograms");
56
57   // Export objects to folder
58   TFolder *ExportToFolder(TObjArray * array=0);
59
60   // Selection cuts
61   void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;}   
62   void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0) {fCutsMC = cuts;}  
63    
64   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}  
65   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}  
66
67   static TH1F*       MakeResol(TH2F * his, Int_t integ, Bool_t type); 
68
69   // getters
70   TH3F *GetMCVertex()  { return fMCVertex; }
71   TH3F *GetRecVertex() { return fRecVertex; } 
72
73   TH3F *GetPhiTanPtTPC() { return fPhiTanPtTPC; } 
74   TH3F *GetPhiTanPtTPCITS() { return fPhiTanPtTPCITS; } 
75
76   TH2F *GetPtResolTPC()     { return fPtResolTPC; } 
77   TH2F *GetPtPullTPC()      { return fPtPullTPC; } 
78   TH2F *GetPhiResolTanTPC() { return fPhiResolTanTPC; } 
79   TH2F *GetTanResolTanTPC() { return fTanResolTanTPC; } 
80   TH2F *GetPhiPullTanTPC()  { return fPhiPullTanTPC; } 
81   TH2F *GetTanPullTanTPC()  { return fTanPullTanTPC; } 
82
83   TH2F *GetPtResolTPCITS()     { return fPtResolTPCITS; } 
84   TH2F *GetPtPullTPCITS()      { return fPtPullTPCITS; } 
85   TH2F *GetPhiResolTanTPCITS() { return fPhiResolTanTPCITS; } 
86   TH2F *GetTanResolTanTPCITS() { return fTanResolTanTPCITS; } 
87   TH2F *GetPhiPullTanTPCITS()  { return fPhiPullTanTPCITS; } 
88   TH2F *GetTanPullTanTPCITS()  { return fTanPullTanTPCITS; } 
89
90   //
91   // Resolution constrained param
92   //
93   TH2F *GetCPhiResolTan() { return fCPhiResolTan; } 
94   TH2F *GetCTanResolTan() { return fCTanResolTan; } 
95   TH2F *GetCPtResolTan()  { return fCPtResolTan; } 
96   TH2F *GetCPhiPullTan()  { return fCPhiPullTan; } 
97   TH2F *GetCTanPullTan()  { return fCTanPullTan; } 
98   TH2F *GetCPtPullTan()   { return fCPtPullTan; } 
99
100   //
101   // Histograms for track resolution parameterisation
102   //
103   TH2F *Get1Pt2ResolS1PtTPC()    { return f1Pt2ResolS1PtTPC; } 
104   TH2F *Get1Pt2ResolS1PtTPCITS() { return f1Pt2ResolS1PtTPCITS; } 
105   TH2F *GetYResolS1PtTPC()       { return fYResolS1PtTPC; } 
106   TH2F *GetYResolS1PtTPCITS()    { return fYResolS1PtTPCITS; } 
107   TH2F *GetZResolS1PtTPC()       { return fZResolS1PtTPC; } 
108   TH2F *GetZResolS1PtTPCITS()    { return fZResolS1PtTPCITS; } 
109   TH2F *GetPhiResolS1PtTPC()     { return fPhiResolS1PtTPC; } 
110   TH2F *GetPhiResolS1PtTPCITS()  { return fPhiResolS1PtTPCITS; } 
111   TH2F *GetThetaResolS1PtTPC()   { return fThetaResolS1PtTPC; } 
112   TH2F *GetThetaResolS1PtTPCITS(){ return fThetaResolS1PtTPCITS; } 
113
114   // constrained
115   //
116   TH2F *GetC1Pt2ResolS1PtTPC()    { return fC1Pt2ResolS1PtTPC; } 
117   TH2F *GetC1Pt2ResolS1PtTPCITS() { return fC1Pt2ResolS1PtTPCITS; } 
118   TH2F *GetCYResolS1PtTPC()       { return fCYResolS1PtTPC; } 
119   TH2F *GetCYResolS1PtTPCITS()    { return fCYResolS1PtTPCITS; } 
120   TH2F *GetCZResolS1PtTPC()       { return fCZResolS1PtTPC; } 
121   TH2F *GetCZResolS1PtTPCITS()    { return fCZResolS1PtTPCITS; } 
122   TH2F *GetCPhiResolS1PtTPC()     { return fCPhiResolS1PtTPC; } 
123   TH2F *GetCPhiResolS1PtTPCITS()  { return fCPhiResolS1PtTPCITS; } 
124   TH2F *GetCThetaResolS1PtTPC()   { return fCThetaResolS1PtTPC; } 
125   TH2F *GetCThetaResolS1PtTPCITS(){ return fCThetaResolS1PtTPCITS; } 
126
127 private:
128   //
129   // Control histograms
130   //
131
132   TH3F *fMCVertex;  //-> MC primary vertex 
133   TH3F *fRecVertex; //-> Reconstructed primary vertex
134
135   TH3F *fPhiTanPtTPC; //-> phi vs tantheta vs pt
136   TH3F *fPhiTanPtTPCITS; //-> phi vs tantheta vs pt
137
138   // TPC only
139   TH2F *fPtResolTPC;        //-> pt resolution
140   TH2F *fPtPullTPC;         //-> pt pull
141   TH2F *fPhiResolTanTPC;       //-> angular resolution 
142   TH2F *fTanResolTanTPC;       //-> angular resolution
143   TH2F *fPhiPullTanTPC;        //-> angular resolution
144   TH2F *fTanPullTanTPC;        //-> angular resolution
145
146   // TPC+ITS
147   TH2F *fPtResolTPCITS;        //-> pt resolution
148   TH2F *fPtPullTPCITS;         //-> pt pull
149   TH2F *fPhiResolTanTPCITS;       //-> angular resolution 
150   TH2F *fTanResolTanTPCITS;       //-> angular resolution
151   TH2F *fPhiPullTanTPCITS;        //-> angular resolution
152   TH2F *fTanPullTanTPCITS;        //-> angular resolution
153
154   //
155   // Resolution constrained param
156   //
157   TH2F   *fCPhiResolTan;   //-> angular resolution -  constrained
158   TH2F   *fCTanResolTan;   //-> angular resolution -  constrained
159   TH2F   *fCPtResolTan;    //-> pt resolution      -  constrained
160   TH2F   *fCPhiPullTan;    //-> angular resolution -  constrained
161   TH2F   *fCTanPullTan;    //-> angular resolution -  constrained
162   TH2F   *fCPtPullTan;     //-> pt resolution      -  constrained
163
164   //
165   // Histograms for track resolution parameterisation
166   //
167
168   TH2F* f1Pt2ResolS1PtTPC;      //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC)
169   TH2F* f1Pt2ResolS1PtTPCITS;   //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS)
170   TH2F* fYResolS1PtTPC;         //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) 
171   TH2F* fYResolS1PtTPCITS;      //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) 
172   TH2F* fZResolS1PtTPC;         //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC)
173   TH2F* fZResolS1PtTPCITS;      //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS)
174   TH2F* fPhiResolS1PtTPC;       //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
175   TH2F* fPhiResolS1PtTPCITS;    //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
176   TH2F* fThetaResolS1PtTPC;     //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
177   TH2F* fThetaResolS1PtTPCITS;  //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
178   
179   // constrained
180   TH2F* fC1Pt2ResolS1PtTPC;      //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC)
181   TH2F* fC1Pt2ResolS1PtTPCITS;   //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS)
182   TH2F* fCYResolS1PtTPC;         //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) 
183   TH2F* fCYResolS1PtTPCITS;      //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) 
184   TH2F* fCZResolS1PtTPC;         //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC)
185   TH2F* fCZResolS1PtTPCITS;      //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS)
186   TH2F* fCPhiResolS1PtTPC;       //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
187   TH2F* fCPhiResolS1PtTPCITS;    //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
188   TH2F* fCThetaResolS1PtTPC;     //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC)
189   TH2F* fCThetaResolS1PtTPCITS;  //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS)
190
191   // Global cuts objects
192   AliRecInfoCuts*  fCutsRC;      // selection cuts for reconstructed tracks
193   AliMCInfoCuts*  fCutsMC;       // selection cuts for MC tracks
194
195   // analysis folder 
196   TFolder *fAnalysisFolder; // folder for analysed histograms
197
198   AliComparisonRes(const AliComparisonRes&); // not implemented
199   AliComparisonRes& operator=(const AliComparisonRes&); // not implemented
200
201   ClassDef(AliComparisonRes,1);
202 };
203
204 #endif