1 #ifndef ALICOMPARISONRES_H
2 #define ALICOMPARISONRES_H
4 //------------------------------------------------------------------------------
5 // Class to keep information from comparison of
6 // reconstructed and MC particle tracks (TPC resolution).
8 // Author: J.Otwinowski 04/02/2008
9 //------------------------------------------------------------------------------
28 #include "AliComparisonObject.h"
30 class AliComparisonRes : public AliComparisonObject {
33 virtual ~AliComparisonRes();
39 virtual void Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
41 // Merge output objects (needed by PROOF)
42 virtual Long64_t Merge(TCollection* list);
44 // Analyse output histograms
45 virtual void Analyse();
47 // Get analysis folder
48 virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;}
51 void ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
52 void Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC);
54 // Create folder for analysed histograms
55 TFolder *CreateFolder(TString folder = "folderRes",TString title = "Analysed Resolution histograms");
57 // Export objects to folder
58 TFolder *ExportToFolder(TObjArray * array=0);
61 void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;}
62 void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0) {fCutsMC = cuts;}
64 AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;}
65 AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;}
67 static TH1F* MakeResol(TH2F * his, Int_t integ, Bool_t type);
70 TH3F *GetMCVertex() { return fMCVertex; }
71 TH3F *GetRecVertex() { return fRecVertex; }
73 TH3F *GetPhiTanPtTPC() { return fPhiTanPtTPC; }
74 TH3F *GetPhiTanPtTPCITS() { return fPhiTanPtTPCITS; }
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; }
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; }
91 // Resolution constrained param
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; }
101 // Histograms for track resolution parameterisation
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; }
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; }
129 // Control histograms
132 TH3F *fMCVertex; //-> MC primary vertex
133 TH3F *fRecVertex; //-> Reconstructed primary vertex
135 TH3F *fPhiTanPtTPC; //-> phi vs tantheta vs pt
136 TH3F *fPhiTanPtTPCITS; //-> phi vs tantheta vs pt
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
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
155 // Resolution constrained param
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
165 // Histograms for track resolution parameterisation
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)
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)
191 // Global cuts objects
192 AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks
193 AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks
196 TFolder *fAnalysisFolder; // folder for analysed histograms
198 AliComparisonRes(const AliComparisonRes&); // not implemented
199 AliComparisonRes& operator=(const AliComparisonRes&); // not implemented
201 ClassDef(AliComparisonRes,1);