]>
Commit | Line | Data |
---|---|---|
96b3109a | 1 | //------------------------------------------------------------------------------ |
2 | // Implementation of AliComparisonRes class. It keeps information from | |
3 | // comparison of reconstructed and MC particle tracks. In addtion, | |
4 | // it keeps selection cuts used during comparison. The comparison | |
5 | // information is stored in the ROOT histograms. Analysis of these | |
6 | // histograms can be done by using Analyse() class function. The result of | |
3baa4bfd | 7 | // the analysis (histograms/graphs) are stored in the folder which is |
8 | // a data member of AliComparisonRes. | |
9 | // | |
96b3109a | 10 | // Author: J.Otwinowski 04/02/2008 |
11 | //------------------------------------------------------------------------------ | |
12 | ||
13 | /* | |
3baa4bfd | 14 | |
15 | // after running comparison task, read the file, and get component | |
26e10df5 | 16 | gROOT->LoadMacro("$ALICE_ROOT/PWG1/Macros/LoadMyLibs.C"); |
17 | LoadMyLibs(); | |
18 | ||
96b3109a | 19 | TFile f("Output.root"); |
35771050 | 20 | //AliComparisonRes * compObj = (AliComparisonRes*)f.Get("AliComparisonRes"); |
21 | AliComparisonRes * compObj = (AliComparisonRes*)cOutput->FindObject("AliComparisonRes"); | |
22 | ||
3baa4bfd | 23 | // analyse comparison data |
24 | compObj->Analyse(); | |
25 | ||
26 | // the output histograms/graphs will be stored in the folder "folderRes" | |
27 | compObj->GetAnalysisFolder()->ls("*"); | |
28 | ||
29 | // user can save whole comparison object (or only folder with anlysed histograms) | |
30 | // in the seperate output file (e.g.) | |
31 | TFile fout("Analysed_Res.root","recreate"); | |
32 | compObj->Write(); // compObj->GetAnalysisFolder()->Write(); | |
33 | fout.Close(); | |
96b3109a | 34 | |
96b3109a | 35 | */ |
36 | ||
37 | #include <iostream> | |
38 | ||
39 | #include "TFile.h" | |
40 | #include "TCint.h" | |
41 | #include "TH3F.h" | |
42 | #include "TH2F.h" | |
43 | #include "TF1.h" | |
44 | #include "TProfile.h" | |
45 | #include "TProfile2D.h" | |
46 | #include "TGraph2D.h" | |
47 | #include "TCanvas.h" | |
48 | #include "TGraph.h" | |
49 | ||
50 | #include "AliESDEvent.h" | |
51 | #include "AliESD.h" | |
52 | #include "AliESDfriend.h" | |
53 | #include "AliESDfriendTrack.h" | |
54 | #include "AliESDVertex.h" | |
55 | #include "AliRecInfoCuts.h" | |
56 | #include "AliMCInfoCuts.h" | |
57 | #include "AliLog.h" | |
58 | #include "AliTracker.h" | |
59 | ||
60 | #include "AliMathBase.h" | |
61 | #include "AliTreeDraw.h" | |
62 | ||
63 | #include "AliMCInfo.h" | |
64 | #include "AliESDRecInfo.h" | |
65 | #include "AliComparisonRes.h" | |
66 | ||
67 | using namespace std; | |
68 | ||
69 | ClassImp(AliComparisonRes) | |
70 | ||
71 | //_____________________________________________________________________________ | |
72 | AliComparisonRes::AliComparisonRes(): | |
3baa4bfd | 73 | AliComparisonObject("AliComparisonRes"), |
96b3109a | 74 | |
35771050 | 75 | // Vertices |
76 | fMCVertex(0), //-> MC primary vertex | |
77 | fRecVertex(0), //-> Reconstructed primary vertex | |
78 | ||
79 | // global observables | |
80 | fPhiTanPtTPC(0), | |
81 | fPhiTanPtTPCITS(0), | |
82 | ||
96b3109a | 83 | // Resolution |
35771050 | 84 | |
85 | // TPC only | |
86 | fPtResolTPC(0), | |
87 | fPtPullTPC(0), | |
88 | fPhiResolTanTPC(0), | |
89 | fTanResolTanTPC(0), | |
90 | fPhiPullTanTPC(0), | |
91 | fTanPullTanTPC(0), | |
92 | ||
93 | // TPC+ITS | |
94 | fPtResolTPCITS(0), | |
95 | fPtPullTPCITS(0), | |
96 | fPhiResolTanTPCITS(0), | |
97 | fTanResolTanTPCITS(0), | |
98 | fPhiPullTanTPCITS(0), | |
99 | fTanPullTanTPCITS(0), | |
decf0997 | 100 | |
96b3109a | 101 | // |
102 | // Resolution constrained param | |
103 | // | |
104 | fCPhiResolTan(0), // angular resolution - constrained | |
105 | fCTanResolTan(0), // angular resolution - constrained | |
106 | fCPtResolTan(0), // pt resolution - constrained | |
107 | fCPhiPullTan(0), // angular resolution - constrained | |
108 | fCTanPullTan(0), // angular resolution - constrained | |
109 | fCPtPullTan(0), // pt resolution - constrained | |
110 | ||
111 | // | |
112 | // Parametrisation histograms | |
113 | // | |
114 | ||
3baa4bfd | 115 | f1Pt2ResolS1PtTPC(0), |
116 | f1Pt2ResolS1PtTPCITS(0), | |
117 | fYResolS1PtTPC(0), | |
118 | fYResolS1PtTPCITS(0), | |
119 | fZResolS1PtTPC(0), | |
120 | fZResolS1PtTPCITS(0), | |
121 | fPhiResolS1PtTPC(0), | |
122 | fPhiResolS1PtTPCITS(0), | |
123 | fThetaResolS1PtTPC(0), | |
124 | fThetaResolS1PtTPCITS(0), | |
96b3109a | 125 | |
126 | // constrained | |
3baa4bfd | 127 | fC1Pt2ResolS1PtTPC(0), |
128 | fC1Pt2ResolS1PtTPCITS(0), | |
129 | fCYResolS1PtTPC(0), | |
130 | fCYResolS1PtTPCITS(0), | |
131 | fCZResolS1PtTPC(0), | |
132 | fCZResolS1PtTPCITS(0), | |
133 | fCPhiResolS1PtTPC(0), | |
134 | fCPhiResolS1PtTPCITS(0), | |
135 | fCThetaResolS1PtTPC(0), | |
136 | fCThetaResolS1PtTPCITS(0), | |
96b3109a | 137 | |
96b3109a | 138 | // Cuts |
139 | fCutsRC(0), | |
3baa4bfd | 140 | fCutsMC(0), |
141 | ||
142 | // histogram folder | |
143 | fAnalysisFolder(0) | |
96b3109a | 144 | { |
3baa4bfd | 145 | Init(); |
96b3109a | 146 | } |
147 | ||
148 | //_____________________________________________________________________________ | |
149 | AliComparisonRes::~AliComparisonRes(){ | |
150 | ||
35771050 | 151 | // Vertices |
152 | if(fMCVertex) delete fMCVertex; fMCVertex=0; | |
153 | if(fRecVertex) delete fRecVertex; fRecVertex=0; | |
96b3109a | 154 | |
35771050 | 155 | // Global observables |
156 | // | |
157 | if(fPhiTanPtTPC) delete fPhiTanPtTPC; fPhiTanPtTPC=0; | |
158 | if(fPhiTanPtTPCITS) delete fPhiTanPtTPCITS; fPhiTanPtTPCITS=0; | |
decf0997 | 159 | |
35771050 | 160 | // Resolution histograms |
161 | if(fPtResolTPC) delete fPtResolTPC; fPtResolTPC=0; | |
162 | if(fPtPullTPC) delete fPtPullTPC; fPtPullTPC=0; | |
163 | if(fPhiResolTanTPC) delete fPhiResolTanTPC; fPhiResolTanTPC=0; | |
164 | if(fTanResolTanTPC) delete fTanResolTanTPC; fTanResolTanTPC=0; | |
165 | if(fPhiPullTanTPC) delete fPhiPullTanTPC; fPhiPullTanTPC=0; | |
166 | if(fTanPullTanTPC) delete fTanPullTanTPC; fTanPullTanTPC=0; | |
167 | ||
168 | if(fPtResolTPCITS) delete fPtResolTPCITS; fPtResolTPCITS=0; | |
169 | if(fPtPullTPCITS) delete fPtPullTPCITS; fPtPullTPCITS=0; | |
170 | if(fPhiResolTanTPCITS) delete fPhiResolTanTPCITS; fPhiResolTanTPCITS=0; | |
171 | if(fTanResolTanTPCITS) delete fTanResolTanTPCITS; fTanResolTanTPCITS=0; | |
172 | if(fPhiPullTanTPCITS) delete fPhiPullTanTPCITS; fPhiPullTanTPCITS=0; | |
173 | if(fTanPullTanTPCITS) delete fTanPullTanTPCITS; fTanPullTanTPCITS=0; | |
174 | ||
96b3109a | 175 | // Resolution histograms (constrained param) |
176 | if(fCPhiResolTan) delete fCPhiResolTan; fCPhiResolTan=0; | |
177 | if(fCTanResolTan) delete fCTanResolTan; fCTanResolTan=0; | |
178 | if(fCPtResolTan) delete fCPtResolTan; fCPtResolTan=0; | |
179 | if(fCPhiPullTan) delete fCPhiPullTan; fCPhiPullTan=0; | |
180 | if(fCTanPullTan) delete fCTanPullTan; fCTanPullTan=0; | |
181 | if(fCPtPullTan) delete fCPtPullTan; fCPtPullTan=0; | |
182 | ||
183 | // Parametrisation histograms | |
184 | // | |
3baa4bfd | 185 | if(f1Pt2ResolS1PtTPC) delete f1Pt2ResolS1PtTPC; f1Pt2ResolS1PtTPC=0; |
186 | if(f1Pt2ResolS1PtTPCITS) delete f1Pt2ResolS1PtTPCITS; f1Pt2ResolS1PtTPCITS=0; | |
187 | if(fYResolS1PtTPC) delete fYResolS1PtTPC; fYResolS1PtTPC=0; | |
188 | if(fYResolS1PtTPCITS) delete fYResolS1PtTPCITS; fYResolS1PtTPCITS=0; | |
189 | if(fZResolS1PtTPC) delete fZResolS1PtTPC; fZResolS1PtTPC=0; | |
190 | if(fZResolS1PtTPCITS) delete fZResolS1PtTPCITS; fZResolS1PtTPCITS=0; | |
191 | if(fPhiResolS1PtTPC) delete fPhiResolS1PtTPC; fPhiResolS1PtTPC=0; | |
192 | if(fPhiResolS1PtTPCITS) delete fPhiResolS1PtTPCITS; fPhiResolS1PtTPCITS=0; | |
193 | if(fThetaResolS1PtTPC) delete fThetaResolS1PtTPC; fThetaResolS1PtTPC=0; | |
194 | if(fThetaResolS1PtTPCITS) delete fThetaResolS1PtTPCITS; fThetaResolS1PtTPCITS=0; | |
96b3109a | 195 | |
196 | // constrained | |
3baa4bfd | 197 | if(fC1Pt2ResolS1PtTPC) delete fC1Pt2ResolS1PtTPC; fC1Pt2ResolS1PtTPC=0; |
198 | if(fC1Pt2ResolS1PtTPCITS) delete fC1Pt2ResolS1PtTPCITS; fC1Pt2ResolS1PtTPCITS=0; | |
199 | if(fCYResolS1PtTPC) delete fCYResolS1PtTPC; fCYResolS1PtTPC=0; | |
200 | if(fCYResolS1PtTPCITS) delete fCYResolS1PtTPCITS; fCYResolS1PtTPCITS=0; | |
201 | if(fCZResolS1PtTPC) delete fCZResolS1PtTPC; fCZResolS1PtTPC=0; | |
202 | if(fCZResolS1PtTPCITS) delete fCZResolS1PtTPCITS; fCZResolS1PtTPCITS=0; | |
203 | if(fCPhiResolS1PtTPC) delete fCPhiResolS1PtTPC; fCPhiResolS1PtTPC=0; | |
204 | if(fCPhiResolS1PtTPCITS) delete fCPhiResolS1PtTPCITS; fCPhiResolS1PtTPCITS=0; | |
205 | if(fCThetaResolS1PtTPC) delete fCThetaResolS1PtTPC; fCThetaResolS1PtTPC=0; | |
206 | if(fCThetaResolS1PtTPCITS) delete fCThetaResolS1PtTPCITS; fCThetaResolS1PtTPCITS=0; | |
96b3109a | 207 | |
3baa4bfd | 208 | if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0; |
96b3109a | 209 | } |
210 | ||
211 | //_____________________________________________________________________________ | |
3baa4bfd | 212 | void AliComparisonRes::Init(){ |
96b3109a | 213 | |
35771050 | 214 | // Control histograms |
215 | fMCVertex = new TH3F("MCVertex","MC vertex Xv:Yv:Zv",100,-0.05,0.05,100,-0.05,0.05,100,-10,10); | |
216 | fMCVertex->SetXTitle("Xv [cm]"); | |
217 | fMCVertex->SetYTitle("Yv [cm]"); | |
218 | fMCVertex->SetZTitle("Zv [cm]"); | |
219 | ||
220 | fRecVertex = new TH3F("RecVertex","Rec prim. vertex Xv:Yv:Zv",100,-0.01,0.01,100,-0.01,0.01,100,-0.5,0.5); | |
221 | fRecVertex->SetXTitle("Xv [cm]"); | |
222 | fRecVertex->SetYTitle("Yv [cm]"); | |
223 | fRecVertex->SetZTitle("Zv [cm]"); | |
224 | ||
225 | // | |
226 | fPhiTanPtTPC = new TH3F("PhiTanPtTPC","phi vs tan#theta vs pt - TPC only",200,-3.5,3.5,50,-2,2,100,0.1,3.0); | |
227 | fPhiTanPtTPC->SetXTitle("#phi [rad]"); | |
228 | fPhiTanPtTPC->SetYTitle("tan#theta"); | |
229 | fPhiTanPtTPC->SetZTitle("p_{t} [GeV]"); | |
230 | ||
231 | fPhiTanPtTPCITS = new TH3F("PhiTanPtTPCITS","phi vs tan#theta vs pt - TPC+ITS",200,-3.5,3.5,50,-2,2,100,0.1,3.0); | |
232 | fPhiTanPtTPCITS->SetXTitle("#phi [rad]"); | |
233 | fPhiTanPtTPCITS->SetYTitle("tan#theta"); | |
234 | fPhiTanPtTPCITS->SetZTitle("p_{t} [GeV]"); | |
235 | ||
236 | // | |
237 | fPtResolTPC = new TH2F("PtResolTPC","pt resol",10, 0.1,3,200,-0.2,0.2); | |
238 | fPtResolTPC->SetXTitle("p_{t} [GeV]"); | |
239 | fPtResolTPC->SetYTitle("#Deltap_{t}/p_{t}"); | |
240 | ||
241 | fPtPullTPC = new TH2F("fPtPullTPC","pt pull",10, 0.1,3,200,-6,6); | |
242 | fPtPullTPC->SetXTitle("p_{t} [GeV]"); | |
243 | fPtPullTPC->SetYTitle("#Deltap_{t}/#Sigma"); | |
244 | ||
245 | fPhiResolTanTPC = new TH2F("PhiResolTanTPC","PhiResolTanTPC",50, -2,2,200,-0.025,0.025); | |
246 | fPhiResolTanTPC->SetXTitle("tan(#theta)"); | |
247 | fPhiResolTanTPC->SetYTitle("#Delta#phi [rad]"); | |
248 | ||
249 | fTanResolTanTPC = new TH2F("TanResolTanTPC","TanResolTanTPC",50, -2,2,200,-0.025,0.025); | |
250 | fTanResolTanTPC->SetXTitle("tan(#theta)"); | |
251 | fTanResolTanTPC->SetYTitle("#Delta#theta [rad]"); | |
252 | ||
253 | fPhiPullTanTPC = new TH2F("PhiPullTanTPC","PhiPullTanTPC",50, -2,2,200,-5,5); | |
254 | fPhiPullTanTPC->SetXTitle("Tan(#theta)"); | |
255 | fPhiPullTanTPC->SetYTitle("#Delta#phi/#Sigma"); | |
256 | ||
257 | fTanPullTanTPC = new TH2F("TanPullTanTPC","TanPullTanTPC",50, -2,2,200,-5,5); | |
258 | fTanPullTanTPC->SetXTitle("Tan(#theta)"); | |
259 | fTanPullTanTPC->SetYTitle("#Delta#theta/#Sigma"); | |
260 | ||
261 | fPtResolTPCITS = new TH2F("PtResolTPCITS","pt resol",10, 0.1,3,200,-0.2,0.2); | |
262 | fPtResolTPCITS->SetXTitle("p_{t} [GeV]"); | |
263 | fPtResolTPCITS->SetYTitle("#Deltap_{t}/p_{t}"); | |
264 | ||
265 | fPtPullTPCITS = new TH2F("fPtPullTPCITS","pt pull",10, 0.1,3,200,-6,6); | |
266 | fPtPullTPCITS->SetXTitle("p_{t} [GeV]"); | |
267 | fPtPullTPCITS->SetYTitle("#Deltap_{t}/#Sigma"); | |
268 | ||
269 | fPhiResolTanTPCITS = new TH2F("PhiResolTanTPCITS","PhiResolTanTPCITS",50, -2,2,200,-0.025,0.025); | |
270 | fPhiResolTanTPCITS->SetXTitle("tan(#theta)"); | |
271 | fPhiResolTanTPCITS->SetYTitle("#Delta#phi [rad]"); | |
272 | ||
273 | fTanResolTanTPCITS = new TH2F("TanResolTanTPCITS","TanResolTanTPCITS",50, -2,2,200,-0.025,0.025); | |
274 | fTanResolTanTPCITS->SetXTitle("tan(#theta)"); | |
275 | fTanResolTanTPCITS->SetYTitle("#Delta#theta [rad]"); | |
276 | ||
277 | fPhiPullTanTPCITS = new TH2F("PhiPullTanTPCITS","PhiPullTanTPCITS",50, -2,2,200,-5,5); | |
278 | fPhiPullTanTPCITS->SetXTitle("Tan(#theta)"); | |
279 | fPhiPullTanTPCITS->SetYTitle("#Delta#phi/#Sigma"); | |
280 | ||
281 | fTanPullTanTPCITS = new TH2F("TanPullTanTPCITS","TanPullTanTPCITS",50, -2,2,200,-5,5); | |
282 | fTanPullTanTPCITS->SetXTitle("Tan(#theta)"); | |
283 | fTanPullTanTPCITS->SetYTitle("#Delta#theta/#Sigma"); | |
284 | ||
285 | // Resolution constrained param | |
96b3109a | 286 | fCPhiResolTan = new TH2F("CPhiResolTan","CPhiResolTan",50, -2,2,200,-0.025,0.025); |
287 | fCPhiResolTan->SetXTitle("tan(#theta)"); | |
35771050 | 288 | fCPhiResolTan->SetYTitle("#Delta#phi [rad]"); |
96b3109a | 289 | |
290 | fCTanResolTan = new TH2F("CTanResolTan","CTanResolTan",50, -2,2,200,-0.025,0.025); | |
291 | fCTanResolTan->SetXTitle("tan(#theta)"); | |
35771050 | 292 | fCTanResolTan->SetYTitle("#Delta#theta [rad]"); |
96b3109a | 293 | |
294 | fCPtResolTan=new TH2F("CPtResol","CPtResol",50, -2,2,200,-0.2,0.2); | |
295 | fCPtResolTan->SetXTitle("Tan(#theta)"); | |
296 | fCPtResolTan->SetYTitle("#Deltap_{t}/p_{t}"); | |
297 | ||
298 | fCPhiPullTan = new TH2F("CPhiPullTan","CPhiPullTan",50, -2,2,200,-5,5); | |
299 | fCPhiPullTan->SetXTitle("Tan(#theta)"); | |
300 | fCPhiPullTan->SetYTitle("#Delta#phi/#Sigma"); | |
301 | ||
302 | fCTanPullTan = new TH2F("CTanPullTan","CTanPullTan",50, -2,2,200,-5,5); | |
303 | fCTanPullTan->SetXTitle("Tan(#theta)"); | |
304 | fCTanPullTan->SetYTitle("#Delta#theta/#Sigma"); | |
305 | ||
306 | fCPtPullTan=new TH2F("CPtPull","CPtPull",50, -2,2,200,-5,5); | |
307 | fCPtPullTan->SetXTitle("Tan(#theta)"); | |
308 | fCPtPullTan->SetYTitle("(1/mcp_{t}-1/p_{t})/#Sigma"); | |
decf0997 | 309 | |
96b3109a | 310 | // |
311 | // Parametrisation histograms | |
312 | // | |
313 | ||
3baa4bfd | 314 | f1Pt2ResolS1PtTPC = new TH2F("f1Pt2ResolS1PtTPC","(1/mcpt-1/pt)/(1+1/mcpt)^2 vs sqrt(1/pt))",100,0,3,200,-0.010,0.010); |
315 | f1Pt2ResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
316 | f1Pt2ResolS1PtTPC->SetYTitle("(1/mcp_{t}-1/p_{t})/(1+1/mcp_{t})^2)"); | |
96b3109a | 317 | |
3baa4bfd | 318 | f1Pt2ResolS1PtTPCITS = new TH2F("f1Pt2ResolS1PtTPCITS","(1/mcpt-1/pt)/(1+1/mcpt)^2 vs sqrt(1/pt))",100,0,3,200,-0.010,0.010); |
319 | f1Pt2ResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
320 | f1Pt2ResolS1PtTPCITS->SetYTitle("(1/mcp_{t}-1/p_{t})/(1+1/mcp_{t})^2)"); | |
96b3109a | 321 | |
3baa4bfd | 322 | fYResolS1PtTPC = new TH2F("fYResolS1PtTPC","fYResolS1PtTPC",100, 0,3,200,-1.0,1.0); |
323 | fYResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
324 | fYResolS1PtTPC->SetYTitle("#DeltaY"); | |
96b3109a | 325 | |
3baa4bfd | 326 | fYResolS1PtTPCITS = new TH2F("fYResolS1PtTPCITS","fYResolS1PtTPCITS",100, 0,3,200,-0.05,0.05); |
327 | fYResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
328 | fYResolS1PtTPCITS->SetYTitle("#DeltaY"); | |
96b3109a | 329 | |
3baa4bfd | 330 | fZResolS1PtTPC = new TH2F("fZResolS1PtTPC","fZResolS1PtTPC",100, 0,3,200,-1.0,1.0); |
331 | fZResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
332 | fZResolS1PtTPC->SetYTitle("#DeltaZ"); | |
96b3109a | 333 | |
3baa4bfd | 334 | fZResolS1PtTPCITS = new TH2F("fZResolS1PtTPCITS","fZResolS1PtTPCITS",100, 0,3,200,-0.05,0.05); |
335 | fZResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
336 | fZResolS1PtTPCITS->SetYTitle("#DeltaZ"); | |
96b3109a | 337 | |
3baa4bfd | 338 | fPhiResolS1PtTPC = new TH2F("fPhiResolS1PtTPC","fPhiResolS1PtTPC",100, 0,3,200,-0.025,0.025); |
339 | fPhiResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
340 | fPhiResolS1PtTPC->SetYTitle("#Delta#phi"); | |
96b3109a | 341 | |
3baa4bfd | 342 | fPhiResolS1PtTPCITS = new TH2F("fPhiResolS1PtTPCITS","fPhiResolS1PtTPCITS",100, 0,3,200,-0.01,0.01); |
343 | fPhiResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
344 | fPhiResolS1PtTPCITS->SetYTitle("#Delta#phi"); | |
96b3109a | 345 | |
3baa4bfd | 346 | fThetaResolS1PtTPC = new TH2F("fThetaResolS1PtTPC","fThetaResolS1PtTPC",100, 0,3,200,-0.025,0.025); |
347 | fThetaResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
348 | fThetaResolS1PtTPC->SetYTitle("#Delta#theta"); | |
96b3109a | 349 | |
3baa4bfd | 350 | fThetaResolS1PtTPCITS = new TH2F("fThetaResolS1PtTPCITS","fThetaResolS1PtTPCITS",100, 0,3,200,-0.01,0.01); |
351 | fThetaResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
352 | fThetaResolS1PtTPCITS->SetYTitle("#Delta#theta"); | |
96b3109a | 353 | |
354 | // constrained | |
3baa4bfd | 355 | fC1Pt2ResolS1PtTPC = new TH2F("fC1Pt2ResolS1PtTPC","(1/mcpt-1/pt)/(1+1/mcpt)^2 vs 1/pt)",100,0,3,200,-0.010,0.010); |
356 | fC1Pt2ResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
357 | fC1Pt2ResolS1PtTPC->SetYTitle("(1/mcp_{t}-1/p_{t})/(1+1/mcp_{t})^2)"); | |
96b3109a | 358 | |
3baa4bfd | 359 | fC1Pt2ResolS1PtTPCITS = new TH2F("fC1Pt2ResolS1PtTPCITS","(1/mcpt-1/pt)/(1+1/mcpt)^2 vs 1/pt)",100,0,3,200,-0.010,0.010); |
360 | fC1Pt2ResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
361 | fC1Pt2ResolS1PtTPCITS->SetYTitle("(1/mcp_{t}-1/p_{t})/(1+1/mcp_{t})^2)"); | |
96b3109a | 362 | |
3baa4bfd | 363 | fCYResolS1PtTPC = new TH2F("fCYResolS1PtTPC","fCYResolS1PtTPC",100, 0,3,200,-1.0,1.0); |
364 | fCYResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
365 | fCYResolS1PtTPC->SetYTitle("#DeltaY"); | |
96b3109a | 366 | |
3baa4bfd | 367 | fCYResolS1PtTPCITS = new TH2F("fCYResolS1PtTPCITS","fCYResolS1PtTPCITS",100, 0,3,200,-0.01,0.01); |
368 | fCYResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
369 | fCYResolS1PtTPCITS->SetYTitle("#DeltaY"); | |
96b3109a | 370 | |
3baa4bfd | 371 | fCZResolS1PtTPC = new TH2F("fCZResolS1PtTPC","fCZResolS1PtTPC",100, 0,3,200,-1.0,1.0); |
372 | fCZResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
373 | fCZResolS1PtTPC->SetYTitle("#DeltaZ"); | |
96b3109a | 374 | |
3baa4bfd | 375 | fCZResolS1PtTPCITS = new TH2F("fCZResolS1PtTPCITS","fCZResolS1PtTPCITS",100, 0,3,200,-0.025,0.025); |
376 | fCZResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
377 | fCZResolS1PtTPCITS->SetYTitle("#DeltaZ"); | |
96b3109a | 378 | |
3baa4bfd | 379 | fCPhiResolS1PtTPC = new TH2F("fCPhiResolS1PtTPC","fCPhiResolS1PtTPC",100, 0,3,200,-0.025,0.025); |
380 | fCPhiResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
381 | fCPhiResolS1PtTPC->SetYTitle("#Delta#phi"); | |
96b3109a | 382 | |
3baa4bfd | 383 | fCPhiResolS1PtTPCITS = new TH2F("fCPhiResolS1PtTPCITS","fCPhiResolS1PtTPCITS",100, 0,3,200,-0.003,0.003); |
384 | fCPhiResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
385 | fCPhiResolS1PtTPCITS->SetYTitle("#Delta#phi"); | |
96b3109a | 386 | |
3baa4bfd | 387 | fCThetaResolS1PtTPC = new TH2F("fCThetaResolS1PtTPC","fCThetaResolS1PtTPC",100, 0,3,200,-0.025,0.025); |
388 | fCThetaResolS1PtTPC->SetXTitle("#sqrt{1/mcp_{t}}"); | |
389 | fCThetaResolS1PtTPC->SetYTitle("#Delta#theta"); | |
96b3109a | 390 | |
3baa4bfd | 391 | fCThetaResolS1PtTPCITS = new TH2F("fCThetaResolS1PtTPCITS","fCThetaResolS1PtTPCITS",100, 0,3,200,-0.005,0.005); |
392 | fCThetaResolS1PtTPCITS->SetXTitle("#sqrt{1/mcp_{t}}"); | |
393 | fCThetaResolS1PtTPCITS->SetYTitle("#Delta#theta"); | |
96b3109a | 394 | |
96b3109a | 395 | // Init cuts |
396 | if(!fCutsMC) | |
397 | AliDebug(AliLog::kError, "ERROR: Cannot find AliMCInfoCuts object"); | |
398 | if(!fCutsRC) | |
399 | AliDebug(AliLog::kError, "ERROR: Cannot find AliRecInfoCuts object"); | |
3baa4bfd | 400 | |
401 | // init folder | |
402 | fAnalysisFolder = CreateFolder("folderRes","Analysis Resolution Folder"); | |
96b3109a | 403 | } |
404 | ||
405 | //_____________________________________________________________________________ | |
406 | void AliComparisonRes::Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC) | |
407 | { | |
408 | // Fill resolution comparison information | |
409 | AliExternalTrackParam *track = 0; | |
96b3109a | 410 | Double_t field = AliTracker::GetBz(); // nominal Bz field [kG] |
411 | Double_t kMaxD = 123456.0; // max distance | |
35771050 | 412 | AliESDVertex vertexMC; // MC primary vertex |
96b3109a | 413 | |
414 | Int_t clusterITS[200]; | |
415 | Double_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z | |
416 | ||
decf0997 | 417 | Float_t deltaPt, pullPt, deltaPhi,pullPhi, deltaTan, pullTan, delta1Pt2, deltaY1Pt, deltaZ1Pt, deltaPhi1Pt, deltaTheta1Pt; |
35771050 | 418 | Float_t deltaPtTPC, pullPtTPC, deltaPhiTPC, pullPhiTPC, deltaTanTPC, pullTanTPC, delta1Pt2TPC, deltaY1PtTPC, deltaZ1PtTPC, deltaPhi1PtTPC, deltaTheta1PtTPC; |
96b3109a | 419 | |
420 | Float_t mcpt = infoMC->GetParticle().Pt(); | |
3baa4bfd | 421 | Float_t s1mcpt = TMath::Sqrt(1./infoMC->GetParticle().Pt()); |
decf0997 | 422 | Float_t tantheta = TMath::Tan(infoMC->GetParticle().Theta()-TMath::Pi()*0.5); |
35771050 | 423 | Float_t eta = infoMC->GetParticle().Eta(); |
96b3109a | 424 | |
425 | // distance to Prim. vertex | |
426 | const Double_t* dv = infoMC->GetVDist(); | |
427 | Bool_t isPrim = TMath::Sqrt(dv[0]*dv[0] + dv[1]*dv[1])<fCutsMC->GetMaxR() && TMath::Abs(dv[2])<fCutsMC->GetMaxVz(); | |
428 | ||
429 | // Check selection cuts | |
430 | if (fCutsMC->IsPdgParticle(TMath::Abs(infoMC->GetParticle().GetPdgCode())) == kFALSE) return; | |
431 | if (!isPrim) return; | |
96b3109a | 432 | if (infoRC->GetStatus(1)!=3) return; // TPC refit |
433 | if (!infoRC->GetESDtrack()) return; | |
434 | if (infoRC->GetESDtrack()->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return; | |
435 | ||
436 | // calculate and set prim. vertex | |
35771050 | 437 | vertexMC.SetXv( infoMC->GetParticle().Vx() - dv[0] ); |
438 | vertexMC.SetYv( infoMC->GetParticle().Vy() - dv[1] ); | |
439 | vertexMC.SetZv( infoMC->GetParticle().Vz() - dv[2] ); | |
440 | ||
441 | // Fill MC vertex histo | |
442 | fMCVertex->Fill(vertexMC.GetXv(),vertexMC.GetYv(),vertexMC.GetZv()); | |
443 | ||
444 | ||
445 | // Fill Rec vertex histo | |
446 | //fRecVertex->Fill(infoRC->GetESDvertex()->GetXv(),infoRC->GetESDvertex()->GetYv(),infoRC->GetESDvertex()->GetZv()); | |
447 | //printf("Rec vertex xv %f, yv %f, zv %f \n",infoRC->GetESDvertex()->GetXv(),infoRC->GetESDvertex()->GetYv(),infoRC->GetESDvertex()->GetZv()); | |
96b3109a | 448 | |
449 | deltaPt= (mcpt-infoRC->GetESDtrack()->Pt())/mcpt; | |
450 | pullPt= (1/mcpt-infoRC->GetESDtrack()->OneOverPt())/TMath::Sqrt(infoRC->GetESDtrack()->GetSigma1Pt2()); | |
451 | deltaPhi = TMath::ATan2(infoRC->GetESDtrack()->Py(),infoRC->GetESDtrack()->Px())- | |
452 | TMath::ATan2(infoMC->GetParticle().Py(),infoMC->GetParticle().Px()); | |
decf0997 | 453 | pullPhi = deltaPhi/TMath::Sqrt(infoRC->GetESDtrack()->GetSigmaSnp2()); |
96b3109a | 454 | |
455 | deltaTan = TMath::ATan2(infoRC->GetESDtrack()->Pz(),infoRC->GetESDtrack()->Pt())- | |
456 | TMath::ATan2(infoMC->GetParticle().Pz(),infoMC->GetParticle().Pt()); | |
35771050 | 457 | pullTan = deltaTan/TMath::Sqrt(infoRC->GetESDtrack()->GetSigmaTgl2()); |
96b3109a | 458 | |
459 | delta1Pt2 = (1/mcpt-infoRC->GetESDtrack()->OneOverPt())/TMath::Power(1+1/mcpt,2); | |
460 | deltaY1Pt = (infoMC->GetParticle().Vy()-infoRC->GetESDtrack()->GetY()) / (0.2+1/mcpt); | |
461 | deltaZ1Pt = (infoMC->GetParticle().Vz()-infoRC->GetESDtrack()->GetZ()) / (0.2+1/mcpt); | |
462 | deltaPhi1Pt = deltaPhi / (0.1+1/mcpt); | |
463 | deltaTheta1Pt = deltaTan / (0.1+1/mcpt); | |
464 | ||
96b3109a | 465 | // calculate track parameters at vertex |
466 | const AliExternalTrackParam *innerTPC = 0; | |
467 | if ((innerTPC = infoRC->GetESDtrack()->GetTPCInnerParam()) != 0) | |
468 | { | |
469 | if ((track = new AliExternalTrackParam(*infoRC->GetESDtrack()->GetTPCInnerParam())) != 0 ) | |
470 | { | |
35771050 | 471 | Bool_t bDCAStatus = track->PropagateToDCA(&vertexMC,field,kMaxD,dca,cov); |
96b3109a | 472 | |
473 | // Fill parametrisation histograms (only TPC track) | |
3baa4bfd | 474 | if(bDCAStatus) |
96b3109a | 475 | { |
35771050 | 476 | |
96b3109a | 477 | deltaPtTPC= (mcpt-innerTPC->Pt())/mcpt; |
478 | pullPtTPC= (1/mcpt-innerTPC->OneOverPt())/TMath::Sqrt(innerTPC->GetSigma1Pt2()); | |
479 | deltaPhiTPC = TMath::ATan2(innerTPC->Py(),innerTPC->Px())- | |
480 | TMath::ATan2(infoMC->GetParticle().Py(),infoMC->GetParticle().Px()); | |
35771050 | 481 | pullPhiTPC = deltaPhiTPC/TMath::Sqrt(innerTPC->GetSigmaSnp2()); |
96b3109a | 482 | |
483 | deltaTanTPC = TMath::ATan2(innerTPC->Pz(),innerTPC->Pt())- | |
484 | TMath::ATan2(infoMC->GetParticle().Pz(),infoMC->GetParticle().Pt()); | |
35771050 | 485 | pullTanTPC = deltaTanTPC/TMath::Sqrt(infoRC->GetESDtrack()->GetSigmaTgl2()); |
96b3109a | 486 | |
487 | delta1Pt2TPC = (1/mcpt-innerTPC->OneOverPt())/TMath::Power(1+1/mcpt,2); | |
488 | deltaY1PtTPC= (infoMC->GetParticle().Vy()-innerTPC->GetY()) / (0.2+1/mcpt); | |
489 | deltaZ1PtTPC = (infoMC->GetParticle().Vz()-innerTPC->GetZ()) / (0.2+1/mcpt); | |
490 | deltaPhi1PtTPC = deltaPhiTPC / (0.1+1/mcpt); | |
491 | deltaTheta1PtTPC = deltaTanTPC / (0.1+1/mcpt); | |
492 | ||
35771050 | 493 | fPhiTanPtTPC->Fill(TMath::ATan2(innerTPC->Py(),innerTPC->Px()), |
494 | TMath::ATan2(innerTPC->Pz(),innerTPC->Pt()), | |
495 | innerTPC->Pt()); | |
496 | ||
3baa4bfd | 497 | f1Pt2ResolS1PtTPC->Fill(s1mcpt,delta1Pt2TPC); |
498 | fYResolS1PtTPC->Fill(s1mcpt,deltaY1PtTPC); | |
499 | fZResolS1PtTPC->Fill(s1mcpt,deltaZ1PtTPC); | |
500 | fPhiResolS1PtTPC->Fill(s1mcpt,deltaPhi1PtTPC); | |
501 | fThetaResolS1PtTPC->Fill(s1mcpt,deltaTheta1PtTPC); | |
35771050 | 502 | |
503 | fPtResolTPC->Fill(mcpt,deltaPtTPC); | |
504 | fPtPullTPC->Fill(mcpt,pullPtTPC); | |
505 | fPhiResolTanTPC->Fill(tantheta,deltaPhiTPC); | |
506 | fPhiPullTanTPC->Fill(tantheta,pullPhiTPC); | |
507 | fTanResolTanTPC->Fill(tantheta,deltaTanTPC); | |
508 | fTanPullTanTPC->Fill(tantheta,pullTanTPC); | |
96b3109a | 509 | } |
510 | delete track; | |
511 | } | |
512 | } | |
513 | ||
35771050 | 514 | // TPC and ITS clusters in the system |
515 | if(infoRC->GetESDtrack()->GetITSclusters(clusterITS)>fCutsRC->GetMinNClustersITS()) | |
96b3109a | 516 | { |
35771050 | 517 | fPhiTanPtTPCITS->Fill(TMath::ATan2(infoRC->GetESDtrack()->Py(),infoRC->GetESDtrack()->Px()), |
518 | TMath::ATan2(infoRC->GetESDtrack()->Pz(),infoRC->GetESDtrack()->Pt()), | |
519 | infoRC->GetESDtrack()->Pt()); | |
520 | ||
3baa4bfd | 521 | f1Pt2ResolS1PtTPCITS->Fill(s1mcpt,delta1Pt2); |
522 | fYResolS1PtTPCITS->Fill(s1mcpt,deltaY1Pt); | |
523 | fZResolS1PtTPCITS->Fill(s1mcpt,deltaZ1Pt); | |
524 | fPhiResolS1PtTPCITS->Fill(s1mcpt,deltaPhi1Pt); | |
525 | fThetaResolS1PtTPCITS->Fill(s1mcpt,deltaTheta1Pt); | |
decf0997 | 526 | |
35771050 | 527 | fPtResolTPCITS->Fill(mcpt,deltaPt); |
528 | fPtPullTPCITS->Fill(mcpt,pullPt); | |
decf0997 | 529 | |
35771050 | 530 | fPhiResolTanTPCITS->Fill(tantheta,deltaPhi); |
531 | fPhiPullTanTPCITS->Fill(tantheta,pullPhi); | |
532 | fTanResolTanTPCITS->Fill(tantheta,deltaTan); | |
533 | fTanPullTanTPCITS->Fill(tantheta,pullTan); | |
534 | } | |
96b3109a | 535 | } |
536 | ||
537 | //_____________________________________________________________________________ | |
538 | void AliComparisonRes::ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC) | |
539 | { | |
540 | // Fill resolution comparison information (constarained parameters) | |
541 | // | |
542 | AliExternalTrackParam *track = 0; | |
96b3109a | 543 | Double_t field = AliTracker::GetBz(); // nominal Bz field [kG] |
544 | Double_t kMaxD = 123456.0; // max distance | |
35771050 | 545 | AliESDVertex vertexMC; // MC primary vertex |
96b3109a | 546 | |
547 | Int_t clusterITS[200]; | |
548 | Double_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z | |
549 | ||
550 | Float_t deltaPt, pullPt, deltaPhi, pullPhi, deltaTan, pullTan, delta1Pt2, deltaY1Pt, deltaZ1Pt, deltaPhi1Pt, deltaTheta1Pt; | |
551 | Float_t deltaPtTPC, pullPtTPC, deltaPhiTPC, deltaTanTPC, delta1Pt2TPC, deltaY1PtTPC, deltaZ1PtTPC, deltaPhi1PtTPC, deltaTheta1PtTPC; | |
552 | ||
553 | Float_t mcpt = infoMC->GetParticle().Pt(); | |
3baa4bfd | 554 | Float_t s1mcpt = TMath::Sqrt(1./infoMC->GetParticle().Pt()); |
96b3109a | 555 | Float_t tantheta = TMath::Tan(infoMC->GetParticle().Theta()-TMath::Pi()*0.5); |
556 | ||
557 | // distance to Prim. vertex | |
558 | const Double_t* dv = infoMC->GetVDist(); | |
559 | Bool_t isPrim = TMath::Sqrt(dv[0]*dv[0] + dv[1]*dv[1])<fCutsMC->GetMaxR() && TMath::Abs(dv[2])<fCutsMC->GetMaxVz(); | |
560 | ||
561 | // Check selection cuts | |
35771050 | 562 | |
96b3109a | 563 | if (fCutsMC->IsPdgParticle(TMath::Abs(infoMC->GetParticle().GetPdgCode())) == kFALSE) return; |
564 | if (!isPrim) return; | |
565 | if (infoRC->GetStatus(1)!=3) return; | |
566 | if (!infoRC->GetESDtrack()) return; | |
567 | if (infoRC->GetESDtrack()->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return; | |
568 | if (!infoRC->GetESDtrack()->GetConstrainedParam()) return; | |
569 | ||
570 | // calculate and set prim. vertex | |
35771050 | 571 | vertexMC.SetXv( infoMC->GetParticle().Vx() - dv[0] ); |
572 | vertexMC.SetYv( infoMC->GetParticle().Vy() - dv[1] ); | |
573 | vertexMC.SetZv( infoMC->GetParticle().Vz() - dv[2] ); | |
96b3109a | 574 | |
575 | // constrained parameters resolution | |
576 | const AliExternalTrackParam * cparam = infoRC->GetESDtrack()->GetConstrainedParam(); | |
577 | deltaPt= (mcpt-cparam->Pt())/mcpt; | |
578 | pullPt= (1/mcpt-cparam->OneOverPt())/TMath::Sqrt(cparam->GetSigma1Pt2()); | |
579 | deltaPhi = TMath::ATan2(cparam->Py(),cparam->Px())- | |
580 | TMath::ATan2(infoMC->GetParticle().Py(),infoMC->GetParticle().Px()); | |
581 | pullPhi = deltaPhi/TMath::Sqrt(cparam->GetSigmaSnp2()); | |
582 | deltaTan = TMath::ATan2(cparam->Pz(),cparam->Pt())-TMath::ATan2(infoMC->GetParticle().Pz(),infoMC->GetParticle().Pt()); | |
583 | pullTan = deltaPhi/TMath::Sqrt(cparam->GetSigmaSnp2()); | |
584 | ||
585 | ||
586 | delta1Pt2 = (1/mcpt-cparam->OneOverPt())/TMath::Power(1+1/mcpt,2); | |
587 | ||
588 | deltaY1Pt = (infoMC->GetParticle().Vy()-cparam->GetY()) / (0.2+1/mcpt); | |
589 | deltaZ1Pt = (infoMC->GetParticle().Vz()-cparam->GetZ()) / (0.2+1/mcpt); | |
590 | deltaPhi1Pt = deltaPhi / (0.1+1/mcpt); | |
591 | deltaTheta1Pt = deltaTan / (0.1+1/mcpt); | |
592 | ||
593 | // calculate track parameters at vertex | |
594 | const AliExternalTrackParam *innerTPC = 0; | |
595 | if ((innerTPC = infoRC->GetESDtrack()->GetTPCInnerParam()) != 0) | |
596 | { | |
597 | if ((track = new AliExternalTrackParam(*infoRC->GetESDtrack()->GetTPCInnerParam())) != 0 ) | |
598 | { | |
35771050 | 599 | Bool_t bDCAStatus = track->PropagateToDCA(&vertexMC,field,kMaxD,dca,cov); |
96b3109a | 600 | |
601 | // Fill parametrisation histograms (only TPC track) | |
3baa4bfd | 602 | if(bDCAStatus) |
96b3109a | 603 | { |
604 | deltaPtTPC= (mcpt-innerTPC->Pt())/mcpt; | |
605 | pullPtTPC= (1/mcpt-innerTPC->OneOverPt())/TMath::Sqrt(innerTPC->GetSigma1Pt2()); | |
606 | deltaPhiTPC = TMath::ATan2(innerTPC->Py(),innerTPC->Px())- | |
607 | TMath::ATan2(infoMC->GetParticle().Py(),infoMC->GetParticle().Px()); | |
608 | ||
609 | deltaTanTPC = TMath::ATan2(innerTPC->Pz(),innerTPC->Pt())- | |
610 | TMath::ATan2(infoMC->GetParticle().Pz(),infoMC->GetParticle().Pt()); | |
611 | ||
612 | delta1Pt2TPC = (1/mcpt-innerTPC->OneOverPt())/TMath::Power(1+1/mcpt,2); | |
613 | deltaY1PtTPC= (infoMC->GetParticle().Vy()-innerTPC->GetY()) / (0.2+1/mcpt); | |
614 | deltaZ1PtTPC = (infoMC->GetParticle().Vz()-innerTPC->GetZ()) / (0.2+1/mcpt); | |
615 | deltaPhi1PtTPC = deltaPhiTPC / (0.1+1/mcpt); | |
616 | deltaTheta1PtTPC = deltaTanTPC / (0.1+1/mcpt); | |
617 | ||
3baa4bfd | 618 | fC1Pt2ResolS1PtTPC->Fill(s1mcpt,delta1Pt2TPC); |
619 | fCYResolS1PtTPC->Fill(s1mcpt,deltaY1PtTPC); | |
620 | fCZResolS1PtTPC->Fill(s1mcpt,deltaZ1PtTPC); | |
621 | fCPhiResolS1PtTPC->Fill(s1mcpt,deltaPhi1PtTPC); | |
622 | fCThetaResolS1PtTPC->Fill(s1mcpt,deltaTheta1PtTPC); | |
96b3109a | 623 | } |
624 | delete track; | |
625 | } | |
626 | } | |
627 | ||
35771050 | 628 | // TPC and ITS in the system |
629 | if(infoRC->GetESDtrack()->GetITSclusters(clusterITS)>fCutsRC->GetMinNClustersITS()) | |
96b3109a | 630 | { |
3baa4bfd | 631 | fC1Pt2ResolS1PtTPCITS->Fill(s1mcpt,delta1Pt2); |
632 | fCYResolS1PtTPCITS->Fill(s1mcpt,deltaY1Pt); | |
633 | fCZResolS1PtTPCITS->Fill(s1mcpt,deltaZ1Pt); | |
634 | fCPhiResolS1PtTPCITS->Fill(s1mcpt,deltaPhi1Pt); | |
635 | fCThetaResolS1PtTPCITS->Fill(s1mcpt,deltaTheta1Pt); | |
96b3109a | 636 | |
35771050 | 637 | // Fill histograms |
638 | fCPtResolTan->Fill(tantheta,deltaPt); | |
639 | fCPtPullTan->Fill(tantheta,pullPt); | |
640 | fCPhiResolTan->Fill(tantheta,deltaPhi); | |
641 | fCPhiPullTan->Fill(tantheta,pullPhi); | |
642 | fCTanResolTan->Fill(tantheta,deltaTan); | |
643 | fCTanPullTan->Fill(tantheta,pullTan); | |
644 | } | |
96b3109a | 645 | } |
646 | ||
647 | //_____________________________________________________________________________ | |
648 | void AliComparisonRes::Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC){ | |
649 | ||
650 | // Process comparison information | |
651 | Process(infoMC,infoRC); | |
652 | ProcessConstrained(infoMC,infoRC); | |
653 | } | |
654 | ||
655 | //_____________________________________________________________________________ | |
656 | TH1F* AliComparisonRes::MakeResol(TH2F * his, Int_t integ, Bool_t type){ | |
657 | // Create resolution histograms | |
658 | ||
659 | TH1F *hisr, *hism; | |
660 | if (!gPad) new TCanvas; | |
661 | hisr = AliTreeDraw::CreateResHistoI(his,&hism,integ); | |
662 | if (type) return hism; | |
663 | else | |
664 | return hisr; | |
665 | } | |
666 | ||
667 | //_____________________________________________________________________________ | |
668 | void AliComparisonRes::Analyse(){ | |
3baa4bfd | 669 | // Analyse comparison information and store output histograms |
670 | // in the folder "folderRes" | |
671 | // | |
672 | ||
673 | TH1::AddDirectory(kFALSE); | |
674 | ||
96b3109a | 675 | AliComparisonRes * comp=this; |
676 | TH1F *hiss=0; | |
b4126c69 | 677 | TObjArray *aFolderObj = new TObjArray; |
3baa4bfd | 678 | |
679 | // write results in the folder | |
96b3109a | 680 | |
681 | TCanvas * c = new TCanvas("Phi resol Tan","Phi resol Tan"); | |
682 | c->cd(); | |
683 | // | |
35771050 | 684 | hiss = comp->MakeResol(comp->fPtResolTPC,1,0); |
685 | hiss->SetXTitle("p_{t} (GeV)"); | |
96b3109a | 686 | hiss->SetYTitle("#sigmap_{t}/p_{t}"); |
687 | hiss->Draw(); | |
35771050 | 688 | hiss->SetName("PtResolPtTPC"); |
3baa4bfd | 689 | |
b4126c69 | 690 | aFolderObj->Add(hiss); |
3baa4bfd | 691 | |
96b3109a | 692 | // |
35771050 | 693 | hiss = comp->MakeResol(comp->fPtResolTPC,1,1); |
decf0997 | 694 | hiss->SetXTitle("p_{t} (GeV)"); |
35771050 | 695 | hiss->SetYTitle("mean #Deltap_{t}/p_{t}"); |
696 | hiss->Draw(); | |
697 | hiss->SetName("PtMeanPtTPC"); | |
698 | ||
699 | aFolderObj->Add(hiss); | |
700 | ||
701 | // | |
702 | hiss = comp->MakeResol(comp->fPhiResolTanTPC,1,0); | |
703 | hiss->SetXTitle("Tan(#theta)"); | |
704 | hiss->SetYTitle("#sigma#phi (rad)"); | |
705 | hiss->Draw(); | |
706 | hiss->SetName("PhiResolTanTPC"); | |
707 | ||
708 | aFolderObj->Add(hiss); | |
709 | ||
710 | // | |
711 | hiss = comp->MakeResol(comp->fPhiResolTanTPC,1,1); | |
712 | hiss->SetXTitle("Tan(#theta)"); | |
713 | hiss->SetYTitle("mean #Delta#phi (rad)"); | |
714 | hiss->Draw(); | |
715 | hiss->SetName("PhiMeanTanTPC"); | |
716 | ||
717 | ||
718 | aFolderObj->Add(hiss); | |
719 | // | |
720 | hiss = comp->MakeResol(comp->fTanResolTanTPC,1,0); | |
721 | hiss->SetXTitle("Tan(#theta)"); | |
722 | hiss->SetYTitle("#sigma#theta (rad)"); | |
723 | hiss->Draw(); | |
724 | hiss->SetName("ThetaResolTanTPC"); | |
725 | ||
726 | aFolderObj->Add(hiss); | |
727 | ||
728 | // | |
729 | hiss = comp->MakeResol(comp->fTanResolTanTPC,1,1); | |
730 | hiss->SetXTitle("Tan(#theta)"); | |
731 | hiss->SetYTitle("mean #Delta#theta (rad)"); | |
732 | hiss->Draw(); | |
733 | hiss->SetName("ThetaMeanTanTPC"); | |
734 | ||
735 | aFolderObj->Add(hiss); | |
736 | ||
737 | // | |
738 | // | |
739 | hiss = comp->MakeResol(comp->fPtResolTPCITS,1,0); | |
740 | hiss->SetXTitle("p_{t}"); | |
decf0997 | 741 | hiss->SetYTitle("#sigmap_{t}/p_{t}"); |
742 | hiss->Draw(); | |
35771050 | 743 | hiss->SetName("PtResolPtTPCITS"); |
decf0997 | 744 | |
745 | aFolderObj->Add(hiss); | |
746 | ||
747 | // | |
35771050 | 748 | hiss = comp->MakeResol(comp->fPtResolTPCITS,1,1); |
749 | hiss->SetXTitle("p_{t}"); | |
decf0997 | 750 | hiss->SetYTitle("mean #Deltap_{t}/p_{t}"); |
751 | hiss->Draw(); | |
35771050 | 752 | hiss->SetName("PtMeanPtTPCITS"); |
decf0997 | 753 | |
754 | aFolderObj->Add(hiss); | |
755 | ||
756 | // | |
35771050 | 757 | hiss = comp->MakeResol(comp->fPhiResolTanTPCITS,1,0); |
96b3109a | 758 | hiss->SetXTitle("Tan(#theta)"); |
759 | hiss->SetYTitle("#sigma#phi (rad)"); | |
760 | hiss->Draw(); | |
35771050 | 761 | hiss->SetName("PhiResolTanTPCITS"); |
3baa4bfd | 762 | |
b4126c69 | 763 | aFolderObj->Add(hiss); |
35771050 | 764 | |
96b3109a | 765 | // |
35771050 | 766 | hiss = comp->MakeResol(comp->fPhiResolTanTPCITS,1,1); |
96b3109a | 767 | hiss->SetXTitle("Tan(#theta)"); |
35771050 | 768 | hiss->SetYTitle("mean #Delta#phi (rad)"); |
96b3109a | 769 | hiss->Draw(); |
35771050 | 770 | hiss->SetName("PhiMeanTanTPCITS"); |
3baa4bfd | 771 | |
decf0997 | 772 | aFolderObj->Add(hiss); |
773 | ||
774 | // | |
35771050 | 775 | hiss = comp->MakeResol(comp->fTanResolTanTPCITS,1,0); |
decf0997 | 776 | hiss->SetXTitle("Tan(#theta)"); |
35771050 | 777 | hiss->SetYTitle("#sigma#theta (rad)"); |
decf0997 | 778 | hiss->Draw(); |
35771050 | 779 | hiss->SetName("ThetaResolTanTPCITS"); |
decf0997 | 780 | |
781 | aFolderObj->Add(hiss); | |
35771050 | 782 | |
decf0997 | 783 | // |
35771050 | 784 | hiss = comp->MakeResol(comp->fTanResolTanTPCITS,1,1); |
decf0997 | 785 | hiss->SetXTitle("Tan(#theta)"); |
786 | hiss->SetYTitle("mean #Delta#theta (rad)"); | |
787 | hiss->Draw(); | |
35771050 | 788 | hiss->SetName("ThetaMeanTanTPCITS"); |
decf0997 | 789 | |
790 | aFolderObj->Add(hiss); | |
791 | ||
792 | // | |
35771050 | 793 | // |
794 | hiss = comp->MakeResol(comp->fCPtResolTan,1,0); | |
795 | hiss->SetXTitle("Tan(#theta)"); | |
796 | hiss->SetYTitle("#sigmap_{t}/p_{t}"); | |
797 | hiss->Draw(); | |
798 | hiss->SetName("CptResolTan"); | |
799 | ||
800 | aFolderObj->Add(hiss); | |
801 | ||
decf0997 | 802 | hiss = comp->MakeResol(comp->fCPhiResolTan,1,0); |
803 | hiss->SetXTitle("Tan(#theta)"); | |
804 | hiss->SetYTitle("#sigma#phi (rad)"); | |
805 | hiss->Draw(); | |
806 | hiss->SetName("CPhiResolTan"); | |
807 | ||
808 | aFolderObj->Add(hiss); | |
809 | // | |
810 | hiss = comp->MakeResol(comp->fCTanResolTan,1,0); | |
811 | hiss->SetXTitle("Tan(#theta)"); | |
812 | hiss->SetYTitle("#sigma#theta (rad)"); | |
813 | hiss->Draw(); | |
814 | hiss->SetName("CThetaResolTan"); | |
815 | ||
b4126c69 | 816 | aFolderObj->Add(hiss); |
96b3109a | 817 | // |
818 | hiss = comp->MakeResol(comp->fCPtPullTan,1,0); | |
819 | hiss->SetXTitle("Tan(#theta)"); | |
820 | hiss->SetYTitle("1/mcp_{t}-1/p_{t}/#Sigma(1/p_{t})"); | |
821 | hiss->Draw(); | |
3baa4bfd | 822 | hiss->SetName("CptPullTan"); |
823 | ||
b4126c69 | 824 | aFolderObj->Add(hiss); |
96b3109a | 825 | // |
3baa4bfd | 826 | hiss = comp->MakeResol(comp->fC1Pt2ResolS1PtTPC,1,0); |
b4126c69 | 827 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 828 | hiss->SetYTitle("1/mcp_{t}-1/p_{t}/(1+1/p_{t})^2"); |
829 | hiss->Draw(); | |
3baa4bfd | 830 | hiss->SetName("C1Pt2ResolS1PtTPC"); |
831 | ||
b4126c69 | 832 | aFolderObj->Add(hiss); |
96b3109a | 833 | |
3baa4bfd | 834 | hiss = comp->MakeResol(comp->fC1Pt2ResolS1PtTPCITS,1,0); |
b4126c69 | 835 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 836 | hiss->SetYTitle("1/mcp_{t}-1/p_{t}/(1+1/p_{t})^2"); |
837 | hiss->Draw(); | |
3baa4bfd | 838 | hiss->SetName("C1Pt2ResolS1PtTPCITS"); |
839 | ||
b4126c69 | 840 | aFolderObj->Add(hiss); |
96b3109a | 841 | // |
3baa4bfd | 842 | hiss = comp->MakeResol(comp->fCYResolS1PtTPC,1,0); |
b4126c69 | 843 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 844 | hiss->SetYTitle("(mcy-y)/(0.2+1/mcp_{t})"); |
845 | hiss->Draw(); | |
3baa4bfd | 846 | hiss->SetName("CYResolS1PtTPC"); |
847 | ||
b4126c69 | 848 | aFolderObj->Add(hiss); |
96b3109a | 849 | |
3baa4bfd | 850 | hiss = comp->MakeResol(comp->fCYResolS1PtTPCITS,1,0); |
b4126c69 | 851 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 852 | hiss->SetYTitle("(mcy-y)/(0.2+1/mcp_{t})"); |
853 | hiss->Draw(); | |
3baa4bfd | 854 | hiss->SetName("CYResolS1PtTPCITS"); |
855 | ||
b4126c69 | 856 | aFolderObj->Add(hiss); |
96b3109a | 857 | // |
3baa4bfd | 858 | hiss = comp->MakeResol(comp->fCZResolS1PtTPC,1,0); |
b4126c69 | 859 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 860 | hiss->SetYTitle("(mcz-z)/(0.2+1/mcp_{t})"); |
861 | hiss->Draw(); | |
3baa4bfd | 862 | hiss->SetName("CZResolS1PtTPC"); |
863 | ||
b4126c69 | 864 | aFolderObj->Add(hiss); |
96b3109a | 865 | |
3baa4bfd | 866 | hiss = comp->MakeResol(comp->fCZResolS1PtTPCITS,1,0); |
b4126c69 | 867 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 868 | hiss->SetYTitle("(mcz-z)/(0.2+1/mcp_{t})"); |
869 | hiss->Draw(); | |
3baa4bfd | 870 | hiss->SetName("CZResolS1PtTPCITS"); |
871 | ||
b4126c69 | 872 | aFolderObj->Add(hiss); |
96b3109a | 873 | // |
3baa4bfd | 874 | hiss = comp->MakeResol(comp->fCPhiResolS1PtTPC,1,0); |
b4126c69 | 875 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 876 | hiss->SetYTitle("(mc#phi-#phi)/(0.1+1/mcp_{t})"); |
877 | hiss->Draw(); | |
3baa4bfd | 878 | hiss->SetName("CPhiResolS1PtTPC"); |
879 | ||
b4126c69 | 880 | aFolderObj->Add(hiss); |
96b3109a | 881 | |
3baa4bfd | 882 | hiss = comp->MakeResol(comp->fCPhiResolS1PtTPCITS,1,0); |
b4126c69 | 883 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 884 | hiss->SetYTitle("(mc#phi-#phi)/(0.1+1/mcp_{t})"); |
885 | hiss->Draw(); | |
3baa4bfd | 886 | hiss->SetName("CPhiResolS1PtTPCITS"); |
887 | ||
b4126c69 | 888 | aFolderObj->Add(hiss); |
96b3109a | 889 | // |
3baa4bfd | 890 | hiss = comp->MakeResol(comp->fCThetaResolS1PtTPC,1,0); |
b4126c69 | 891 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 892 | hiss->SetYTitle("(mc#theta-#theta)/(0.1+1/mcp_{t})"); |
893 | hiss->Draw(); | |
3baa4bfd | 894 | hiss->SetName("CThetaResolS1PtTPC"); |
895 | ||
b4126c69 | 896 | aFolderObj->Add(hiss); |
96b3109a | 897 | |
3baa4bfd | 898 | hiss = comp->MakeResol(comp->fCThetaResolS1PtTPCITS,1,0); |
b4126c69 | 899 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 900 | hiss->SetYTitle("(mc#theta-#theta)/(0.1+1/mcp_{t})"); |
901 | hiss->Draw(); | |
3baa4bfd | 902 | hiss->SetName("CThetaResolS1PtTPCITS"); |
903 | ||
b4126c69 | 904 | aFolderObj->Add(hiss); |
96b3109a | 905 | |
906 | // | |
3baa4bfd | 907 | hiss = comp->MakeResol(comp->f1Pt2ResolS1PtTPC,1,0); |
b4126c69 | 908 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 909 | hiss->SetYTitle("1/mcp_{t}-1/p_{t}/(1+1/p_{t})^2"); |
910 | hiss->Draw(); | |
3baa4bfd | 911 | hiss->SetName("OnePt2ResolS1PtTPC"); |
912 | ||
b4126c69 | 913 | aFolderObj->Add(hiss); |
96b3109a | 914 | |
3baa4bfd | 915 | hiss = comp->MakeResol(comp->f1Pt2ResolS1PtTPCITS,1,0); |
b4126c69 | 916 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 917 | hiss->SetYTitle("1/mcp_{t}-1/p_{t}/(1+1/p_{t})^2"); |
918 | hiss->Draw(); | |
3baa4bfd | 919 | hiss->SetName("OnePt2ResolS1PtTPCITS"); |
920 | ||
b4126c69 | 921 | aFolderObj->Add(hiss); |
96b3109a | 922 | // |
3baa4bfd | 923 | hiss = comp->MakeResol(comp->fYResolS1PtTPC,1,0); |
b4126c69 | 924 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 925 | hiss->SetYTitle("(mcy-y)/(0.2+1/mcp_{t})"); |
926 | hiss->Draw(); | |
3baa4bfd | 927 | hiss->SetName("YResolS1PtTPC"); |
928 | ||
b4126c69 | 929 | aFolderObj->Add(hiss); |
96b3109a | 930 | |
3baa4bfd | 931 | hiss = comp->MakeResol(comp->fYResolS1PtTPCITS,1,0); |
b4126c69 | 932 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 933 | hiss->SetYTitle("(mcy-y)/(0.2+1/mcp_{t})"); |
934 | hiss->Draw(); | |
3baa4bfd | 935 | hiss->SetName("YResolS1PtTPCITS"); |
936 | ||
b4126c69 | 937 | aFolderObj->Add(hiss); |
96b3109a | 938 | // |
3baa4bfd | 939 | hiss = comp->MakeResol(comp->fZResolS1PtTPC,1,0); |
b4126c69 | 940 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 941 | hiss->SetYTitle("(mcz-z)/(0.2+1/mcp_{t})"); |
942 | hiss->Draw(); | |
3baa4bfd | 943 | hiss->SetName("ZResolS1PtTPC"); |
944 | ||
b4126c69 | 945 | aFolderObj->Add(hiss); |
96b3109a | 946 | |
3baa4bfd | 947 | hiss = comp->MakeResol(comp->fZResolS1PtTPCITS,1,0); |
b4126c69 | 948 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 949 | hiss->SetYTitle("(mcz-z)/(0.2+1/mcp_{t})"); |
950 | hiss->Draw(); | |
3baa4bfd | 951 | hiss->SetName("ZResolS1PtTPCITS"); |
952 | ||
b4126c69 | 953 | aFolderObj->Add(hiss); |
96b3109a | 954 | // |
3baa4bfd | 955 | hiss = comp->MakeResol(comp->fPhiResolS1PtTPC,1,0); |
b4126c69 | 956 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 957 | hiss->SetYTitle("(mc#phi-#phi)/(0.1+1/mcp_{t})"); |
958 | hiss->Draw(); | |
3baa4bfd | 959 | hiss->SetName("PhiResolS1PtTPC"); |
960 | ||
b4126c69 | 961 | aFolderObj->Add(hiss); |
96b3109a | 962 | |
3baa4bfd | 963 | hiss = comp->MakeResol(comp->fPhiResolS1PtTPCITS,1,0); |
b4126c69 | 964 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 965 | hiss->SetYTitle("(mc#phi-#phi)/(0.1+1/mcp_{t})"); |
966 | hiss->Draw(); | |
3baa4bfd | 967 | hiss->SetName("PhiResolS1PtTPCITS"); |
968 | ||
b4126c69 | 969 | aFolderObj->Add(hiss); |
96b3109a | 970 | // |
3baa4bfd | 971 | hiss = comp->MakeResol(comp->fThetaResolS1PtTPC,1,0); |
b4126c69 | 972 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 973 | hiss->SetYTitle("(mc#theta-#theta)/(0.1+1/mcp_{t})"); |
974 | hiss->Draw(); | |
3baa4bfd | 975 | hiss->SetName("ThetaResolS1PtTPC"); |
976 | ||
b4126c69 | 977 | aFolderObj->Add(hiss); |
96b3109a | 978 | |
3baa4bfd | 979 | hiss = comp->MakeResol(comp->fThetaResolS1PtTPCITS,1,0); |
b4126c69 | 980 | hiss->SetXTitle("#sqrt(1/mcp_{t})"); |
96b3109a | 981 | hiss->SetYTitle("(mc#theta-#theta)/(0.1+1/mcp_{t})"); |
982 | hiss->Draw(); | |
3baa4bfd | 983 | hiss->SetName("ThetaResolS1PtTPCITS"); |
984 | ||
b4126c69 | 985 | aFolderObj->Add(hiss); |
986 | ||
987 | // export objects to analysis folder | |
988 | fAnalysisFolder = ExportToFolder(aFolderObj); | |
989 | ||
990 | // delete only TObjArray | |
991 | if(aFolderObj) delete aFolderObj; | |
992 | } | |
993 | ||
994 | //_____________________________________________________________________________ | |
995 | TFolder* AliComparisonRes::ExportToFolder(TObjArray * array) | |
996 | { | |
997 | // recreate folder avery time and export objects to new one | |
998 | // | |
999 | AliComparisonRes * comp=this; | |
1000 | TFolder *folder = comp->GetAnalysisFolder(); | |
1001 | ||
1002 | TString name, title; | |
1003 | TFolder *newFolder = 0; | |
1004 | Int_t i = 0; | |
1005 | Int_t size = array->GetSize(); | |
1006 | ||
1007 | if(folder) { | |
1008 | // get name and title from old folder | |
1009 | name = folder->GetName(); | |
1010 | title = folder->GetTitle(); | |
1011 | ||
1012 | // delete old one | |
1013 | delete folder; | |
1014 | ||
1015 | // create new one | |
1016 | newFolder = CreateFolder(name.Data(),title.Data()); | |
1017 | newFolder->SetOwner(); | |
1018 | ||
1019 | // add objects to folder | |
1020 | while(i < size) { | |
1021 | newFolder->Add(array->At(i)); | |
1022 | i++; | |
1023 | } | |
1024 | } | |
96b3109a | 1025 | |
b4126c69 | 1026 | return newFolder; |
96b3109a | 1027 | } |
1028 | ||
1029 | //_____________________________________________________________________________ | |
1030 | Long64_t AliComparisonRes::Merge(TCollection* list) | |
1031 | { | |
1032 | // Merge list of objects (needed by PROOF) | |
1033 | ||
1034 | if (!list) | |
1035 | return 0; | |
1036 | ||
1037 | if (list->IsEmpty()) | |
1038 | return 1; | |
1039 | ||
1040 | TIterator* iter = list->MakeIterator(); | |
1041 | TObject* obj = 0; | |
1042 | ||
1043 | // collection of generated histograms | |
1044 | Int_t count=0; | |
1045 | while((obj = iter->Next()) != 0) | |
1046 | { | |
1047 | AliComparisonRes* entry = dynamic_cast<AliComparisonRes*>(obj); | |
1048 | if (entry == 0) continue; | |
35771050 | 1049 | |
1050 | fMCVertex->Add(entry->fMCVertex); | |
1051 | fRecVertex->Add(entry->fRecVertex); | |
1052 | ||
1053 | fPhiTanPtTPC->Add(entry->fPhiTanPtTPC); | |
1054 | fPhiTanPtTPCITS->Add(entry->fPhiTanPtTPCITS); | |
1055 | ||
1056 | fPtResolTPC->Add(entry->fPtResolTPC); | |
1057 | fPtPullTPC->Add(entry->fPtPullTPC); | |
1058 | fPhiResolTanTPC->Add(entry->fPhiResolTanTPC); | |
1059 | fTanResolTanTPC->Add(entry->fTanResolTanTPC); | |
1060 | fPhiPullTanTPC->Add(entry->fPhiPullTanTPC); | |
1061 | fTanPullTanTPC->Add(entry->fTanPullTanTPC); | |
1062 | ||
1063 | fPtResolTPCITS->Add(entry->fPtResolTPCITS); | |
1064 | fPtPullTPCITS->Add(entry->fPtPullTPCITS); | |
1065 | fPhiResolTanTPCITS->Add(entry->fPhiResolTanTPCITS); | |
1066 | fTanResolTanTPCITS->Add(entry->fTanResolTanTPCITS); | |
1067 | fPhiPullTanTPCITS->Add(entry->fPhiPullTanTPCITS); | |
1068 | fTanPullTanTPCITS->Add(entry->fTanPullTanTPCITS); | |
96b3109a | 1069 | |
1070 | // Histograms for 1/pt parameterisation | |
3baa4bfd | 1071 | f1Pt2ResolS1PtTPC->Add(entry->f1Pt2ResolS1PtTPC); |
1072 | fYResolS1PtTPC->Add(entry->fYResolS1PtTPC); | |
1073 | fZResolS1PtTPC->Add(entry->fZResolS1PtTPC); | |
1074 | fPhiResolS1PtTPC->Add(entry->fPhiResolS1PtTPC); | |
1075 | fThetaResolS1PtTPC->Add(entry->fThetaResolS1PtTPC); | |
1076 | ||
1077 | f1Pt2ResolS1PtTPCITS->Add(entry->f1Pt2ResolS1PtTPCITS); | |
1078 | fYResolS1PtTPCITS->Add(entry->fYResolS1PtTPCITS); | |
1079 | fZResolS1PtTPCITS->Add(entry->fZResolS1PtTPCITS); | |
1080 | fPhiResolS1PtTPCITS->Add(entry->fPhiResolS1PtTPCITS); | |
1081 | fThetaResolS1PtTPCITS->Add(entry->fThetaResolS1PtTPCITS); | |
96b3109a | 1082 | |
1083 | // Resolution histograms (constrained param) | |
1084 | fCPhiResolTan->Add(entry->fCPhiResolTan); | |
1085 | fCTanResolTan->Add(entry->fCTanResolTan); | |
1086 | fCPtResolTan->Add(entry->fCPtResolTan); | |
1087 | fCPhiPullTan->Add(entry->fCPhiPullTan); | |
1088 | fCTanPullTan->Add(entry->fCTanPullTan); | |
1089 | fCPtPullTan->Add(entry->fCPtPullTan); | |
1090 | ||
1091 | // Histograms for 1/pt parameterisation (constrained) | |
3baa4bfd | 1092 | fC1Pt2ResolS1PtTPC->Add(entry->fC1Pt2ResolS1PtTPC); |
1093 | fCYResolS1PtTPC->Add(entry->fCYResolS1PtTPC); | |
1094 | fCZResolS1PtTPC->Add(entry->fCZResolS1PtTPC); | |
1095 | fCPhiResolS1PtTPC->Add(entry->fCPhiResolS1PtTPC); | |
1096 | fCThetaResolS1PtTPC->Add(entry->fCThetaResolS1PtTPC); | |
1097 | ||
1098 | fC1Pt2ResolS1PtTPCITS->Add(entry->fC1Pt2ResolS1PtTPCITS); | |
1099 | fCYResolS1PtTPCITS->Add(entry->fCYResolS1PtTPCITS); | |
1100 | fCZResolS1PtTPCITS->Add(entry->fCZResolS1PtTPCITS); | |
1101 | fCPhiResolS1PtTPCITS->Add(entry->fCPhiResolS1PtTPCITS); | |
1102 | fCThetaResolS1PtTPCITS->Add(entry->fCThetaResolS1PtTPCITS); | |
96b3109a | 1103 | |
1104 | count++; | |
1105 | } | |
1106 | ||
1107 | return count; | |
1108 | } | |
3baa4bfd | 1109 | |
1110 | //_____________________________________________________________________________ | |
1111 | TFolder* AliComparisonRes::CreateFolder(TString name,TString title) { | |
1112 | // create folder for analysed histograms | |
1113 | // | |
1114 | TFolder *folder = 0; | |
1115 | folder = new TFolder(name.Data(),title.Data()); | |
1116 | ||
1117 | return folder; | |
1118 | } |