]>
Commit | Line | Data |
---|---|---|
f7707400 | 1 | int drawPerformanceTPCQAMatch(const char* inFile = "perf.root") { |
2 | // | |
3 | // Draw control histograms | |
4 | // and generate output pictures | |
5 | // | |
6 | ||
7 | gSystem->Load("libSTAT"); | |
8 | gSystem->Load("libANALYSIS"); | |
9 | gSystem->Load("libANALYSISalice"); | |
10 | gSystem->Load("libANALYSIScalib"); | |
11 | gSystem->Load("libCORRFW"); | |
12 | gSystem->Load("libTPCcalib"); | |
13 | gSystem->Load("libTRDcalib"); | |
14 | gSystem->Load("libT0calib"); | |
15 | gSystem->Load("libTOFcalib"); | |
16 | gSystem->Load("libANALYSISalice.so"); | |
17 | gSystem->Load("libANALYSIScalib.so"); | |
af472fff | 18 | gSystem->Load("libTender.so"); |
f7707400 | 19 | gSystem->Load("libPWGPP.so"); |
20 | ||
21 | gROOT->Reset(); | |
22 | gROOT->SetStyle("Plain"); | |
23 | gStyle->SetPalette(1); | |
24 | gStyle->SetOptStat(0); | |
25 | gStyle->SetTitleSize(0.025); | |
26 | TH1::AddDirectory(kFALSE); | |
27 | ||
28 | // | |
29 | // set criteria | |
30 | // | |
31 | Float_t mineta = -0.8; | |
32 | Float_t maxeta = 0.799; | |
33 | Float_t minNclust = 70.0; | |
34 | Double_t ptMax = 10; | |
35 | // | |
36 | // open input file | |
37 | // | |
38 | TFile *file = TFile::Open(inFile); | |
39 | if(!file) | |
40 | return -9; | |
41 | cout<<"QA file opened"<<endl; | |
42 | file->cd(); | |
43 | // get the TPC list | |
44 | if(gROOT->FindObject("TPC_PerformanceQA")) TPC_PerformanceQA->cd(); | |
45 | cout<<"TPC_PerformanceQA opened"<<endl; | |
46 | TList *TPC = (TList*)gROOT->FindObject("TPCQA"); | |
47 | if(TPC==NULL) TPC = (TList*)gROOT->FindObject("TPCQA_v0_c0"); | |
48 | if(TPC==NULL) TPC = (TList*)gROOT->FindObject("TPCQA_v0_c30"); | |
49 | if(TPC==NULL) TPC = (TList*)gROOT->FindObject("TPCQA_v0_c70"); | |
50 | if(TPC==NULL) TPC = (TList*)gROOT->FindObject("TPC"); | |
51 | if(TPC==NULL) return(0); | |
52 | cout<<"TPCQA list found"<<endl; | |
53 | // get TPC performance object | |
54 | AliPerformanceTPC *obj = (AliPerformanceTPC*)TPC->FindObject("AliPerformanceTPC"); | |
55 | if(obj==NULL) return(0); | |
56 | cout<<"what about here after obj "<<endl; | |
57 | // get folder with histograms | |
58 | TFolder *fold = obj->GetAnalysisFolder(); | |
59 | if(!fold) return(0); | |
60 | cout<<"what about here after folder "<<endl; | |
61 | // | |
62 | // get the HLT list | |
63 | // file->cd(); | |
64 | // if(gROOT->FindObject("HLT_PerformanceQA")) HLT_PerformanceQA->cd(); | |
65 | // TList *HLT = (TList*)gROOT->FindObject("HLTQA"); | |
66 | ||
67 | ||
68 | // | |
69 | // Draw histograms | |
70 | // | |
71 | ||
72 | // | |
73 | // event level | |
74 | // | |
75 | ||
76 | TH1 *h1D = 0; | |
77 | TH2 *h2D = 0; | |
78 | TH3 *h3D = 0; | |
79 | ||
80 | h1D = (TH1*)fold->FindObject("h_tpc_event_1"); | |
81 | Double_t NEvents = h1D->GetEntries(); | |
82 | ||
83 | cout<<"number of events "<<NEvents<<endl; | |
84 | ||
85 | TCanvas *can1 = new TCanvas("can1","TPC event information",1200,800); | |
86 | can1->Divide(3,2); | |
87 | ||
88 | can1->cd(1); | |
89 | fold->FindObject("h_tpc_event_6")->Draw("histe"); | |
90 | ||
91 | can1->cd(2); | |
92 | gPad->SetLogy(); | |
93 | h1D = (TH1*)fold->FindObject("h_tpc_event_recvertex_0"); | |
94 | h1D->GetXaxis()->SetRangeUser(-1.,1.); | |
95 | h1D->Draw("histe"); | |
96 | ||
97 | can1->cd(3); | |
98 | gPad->SetLogy(); | |
99 | h1D = (TH1*)fold->FindObject("h_tpc_event_recvertex_1"); | |
100 | h1D->GetXaxis()->SetRangeUser(-1.,1.); | |
101 | h1D->Draw("histe"); | |
102 | ||
103 | can1->cd(4); | |
104 | gPad->SetLogy(); | |
105 | fold->FindObject("h_tpc_event_recvertex_2")->Draw("histe"); | |
106 | ||
107 | can1->cd(5); | |
108 | gPad->SetLogy(); | |
109 | TH1 *hp = fold->FindObject("h_tpc_event_recvertex_3"); | |
110 | hp->SetTitle("Track.Multi., ncl>70, |dcar|<3 cm, |dcaz|<3 cm"); | |
111 | hp->Draw("histe"); | |
112 | ||
113 | can1->cd(6); | |
114 | gPad->SetLogy(); | |
115 | hp = (TH1*)fold->FindObject("h_tpc_event_recvertex_4"); | |
116 | hp->SetTitle("Pos/neg(red) Track.Multi. ncl>70, |dcar|<3 cm, |dcaz|<3 cm"); | |
117 | hp->Draw("histe"); | |
118 | TH1* he = fold->FindObject("h_tpc_event_recvertex_5"); | |
119 | he->SetLineColor(kRed); | |
120 | he->Draw("histesame"); | |
121 | ||
122 | can1->SaveAs("TPC_event_info.png"); | |
123 | ||
124 | ||
125 | TCanvas *can2 = new TCanvas("can2","#eta , #phi and p_{t}",1200,800); | |
126 | ||
127 | can2->Divide(3,2); | |
128 | ||
129 | can2->cd(1); | |
130 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_0_5_6"); | |
131 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
132 | h3D->Project3D("yz")->Draw("colz"); | |
133 | h3D->Project3D("yz")->SetTitle("#eta vs #phi, positive tracks"); | |
134 | can2->Update(); | |
135 | ||
136 | can2->cd(4); | |
137 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_0_5_6"); | |
138 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
139 | h3D->Project3D("yz")->Draw("colz"); | |
140 | h3D->Project3D("yz")->SetTitle("#eta vs #phi, negative tracks"); | |
141 | can2->Update(); | |
142 | ||
143 | can2->cd(2); | |
144 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_0_5_6"); | |
145 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
146 | h1D = h3D->Project3D("y"); | |
147 | h1D->SetTitle("#eta of pos/neg(red) charged tracks, ncl>70"); | |
148 | h1D->Draw("histe"); | |
149 | ||
150 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_0_5_6"); | |
151 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
152 | h1D = h3D->Project3D("y"); | |
153 | h1D->SetLineColor(kRed); | |
154 | h1D->Draw("histesame"); | |
155 | ||
156 | can2->cd(5); | |
157 | gPad->SetLogy(); | |
158 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_0_5_7"); | |
159 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
160 | h3D->GetYaxis()->SetRangeUser(mineta,maxeta); | |
161 | h1D = h3D->Project3D("z"); | |
162 | h1D->Scale(1,"width"); | |
163 | h1D->SetTitle("p_{T} of pos/neg(red) charged tracks, ncl>70, |#eta|<0.8"); | |
164 | h1D->Draw("histe"); | |
165 | ||
166 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_0_5_7"); | |
167 | h3D->GetXaxis()->SetRangeUser(minNclust,160); | |
168 | h3D->GetYaxis()->SetRangeUser(mineta,maxeta); | |
169 | h1D = h3D->Project3D("z"); | |
170 | h1D->Scale(1,"width"); | |
171 | h1D->SetLineColor(kRed); | |
172 | h1D->Draw("histesame"); | |
173 | ||
174 | can2->cd(3); | |
175 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_5_6_7"); | |
176 | h3D->GetZaxis()->SetRangeUser(2,20); | |
177 | h3D->GetXaxis()->SetRangeUser(mineta,-0.00001); | |
178 | TH1 *h1D = h3D->Project3D("y"); | |
179 | h1D->SetTitle("#phi of pos/neg(red) charged tracks, pt>1GeV/c, -0.8<#eta<0.0"); | |
180 | h1D->Draw("histe"); | |
181 | ||
182 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_5_6_7"); | |
183 | h3D->GetZaxis()->SetRangeUser(2,20); | |
184 | h3D->GetXaxis()->SetRangeUser(mineta,-0.00001); | |
185 | h1D = h3D->Project3D("y"); | |
186 | h1D->SetLineColor(kRed); | |
187 | h1D->Draw("histesame"); | |
188 | ||
189 | can2->cd(6); | |
190 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_5_6_7"); | |
191 | TH3 *h3D1 = h3D->Clone("h3D1"); | |
192 | h3D1->GetXaxis()->SetRangeUser(0.0,maxeta); | |
193 | h3D1->GetZaxis()->SetRangeUser(2,20); | |
194 | h1D = h3D1->Project3D("y"); | |
195 | h1D->SetTitle("#phi of pos/neg(red) charged tracks, pt>1GeV/c, 0.0<#eta<0.8"); | |
196 | h1D->Draw("histe"); | |
197 | ||
198 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_5_6_7"); | |
199 | TH3 *h3D2 = h3D->Clone("h3D2"); | |
200 | h3D2->GetXaxis()->SetRangeUser(0.0,maxeta); | |
201 | h3D2->GetZaxis()->SetRangeUser(2,20); | |
202 | h1D = h3D2->Project3D("y"); | |
203 | h1D->SetLineColor(kRed); | |
204 | h1D->Draw("histesame"); | |
205 | ||
206 | can2->SaveAs("eta_phi_pt.png"); | |
207 | ||
208 | TCanvas *can3 = new TCanvas("can3","Cluster Occupancy",700,700); | |
209 | can3->Divide(1,2); | |
210 | ||
211 | can3->cd(1); | |
212 | TH3 *h3D_1 = (TH3*)fold->FindObject("h_tpc_clust_0_1_2"); | |
213 | TH3 *h3D_2 = (TH3*) h3D_1->Clone("h3D_2"); | |
214 | h3D_1->GetZaxis()->SetRangeUser(0,0.99); | |
215 | h3D_1->Project3D("xy")->Draw("colz"); | |
216 | h3D_1->Project3D("xy")->SetTitle("Cluster Occupancy A Side"); | |
217 | if(NEvents > 0) | |
218 | h3D_1->Project3D("xy")->Scale(1.0/NEvents); | |
219 | can3->Update(); | |
220 | ||
221 | can3->cd(2); | |
222 | h3D_2->GetZaxis()->SetRangeUser(1,2) ; | |
223 | h3D_2->Project3D("xy")->Draw("colz"); | |
224 | h3D_2->Project3D("xy")->SetTitle("Cluster Occupancy C Side"); | |
225 | if(NEvents>0) | |
226 | h3D_2->Project3D("xy")->Scale(1.0/NEvents); | |
227 | ||
228 | can3->SaveAs("cluster_occupancy.png"); | |
229 | ||
230 | TObjArray *arr1 = new TObjArray(); | |
231 | TObjArray *arr2 = new TObjArray(); | |
232 | TObjArray *arr3 = new TObjArray(); | |
233 | TObjArray *arr4 = new TObjArray(); | |
234 | TObjArray *arr5 = new TObjArray(); | |
235 | TObjArray *arr6 = new TObjArray(); | |
236 | ||
237 | TCanvas *can4 = new TCanvas("can4","Clusters in Detail",1200,800); | |
238 | can4->Divide(3,2); | |
239 | ||
240 | can4->cd(1); | |
241 | h3D = (TH3*)fold->FindObject("h_tpc_track_all_recvertex_0_5_7"); | |
242 | h2D = (TH2*)h3D->Project3D("xy"); | |
243 | h2D->SetTitle("nCluster vs #eta, |dcar|<3 cm, |dcaz|<3 cm"); | |
244 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr1); | |
245 | h2D->Draw("colz"); | |
246 | arr1->At(1)->Draw("same"); | |
247 | ||
248 | can4->cd(4); | |
249 | h3D = (TH3*)fold->FindObject("h_tpc_track_all_recvertex_2_5_7"); | |
250 | h2D = (TH2*)h3D->Project3D("xy"); | |
251 | h2D->SetTitle("Findable clusters, |dcar|<3 cm, |dcaz|<3 cm"); | |
252 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr2); | |
253 | h2D->Draw("colz"); | |
254 | arr2->At(1)->Draw("same"); | |
255 | ||
256 | can4->cd(2); | |
257 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_0_5_6"); | |
258 | TH3 *h3D11 = h3D->Clone("h3D11"); | |
259 | h3D11->Add(((TH3*)fold->FindObject("h_tpc_track_neg_recvertex_0_5_6")),1); | |
260 | h3D11->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
261 | h2D = (TH2*)h3D11->Project3D("xz"); | |
262 | h2D->SetTitle("nCluster vs #phi, -0.8<#eta<0.0, |dcar|<3 cm, |dcaz|<3 cm"); | |
263 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr3); | |
264 | h2D->Draw("colz"); | |
265 | arr3->At(1)->Draw("same"); | |
266 | ||
267 | can4->cd(5); | |
268 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_0_5_6"); | |
269 | TH3 *h3D22 = h3D->Clone("h3D22"); | |
270 | h3D22->Add(((TH3*)fold->FindObject("h_tpc_track_neg_recvertex_0_5_6")),1); | |
271 | h3D22->GetYaxis()->SetRangeUser(0.0,maxeta); | |
272 | h2D = (TH2*)h3D22->Project3D("xz"); | |
273 | h2D->SetTitle("nCluster vs #phi, 0.0<#eta<0.8, |dcar|<3 cm, |dcaz|<3 cm"); | |
274 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr4); | |
275 | h2D->Draw("colz"); | |
276 | arr4->At(1)->Draw("same"); | |
277 | ||
278 | can4->cd(3); | |
279 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_2_5_6"); | |
280 | TH3 *h3D33 = h3D->Clone("h3D33"); | |
281 | h3D33->Add(((TH3*)fold->FindObject("h_tpc_track_neg_recvertex_2_5_6")),1); | |
282 | h3D33->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
283 | h2D = (TH2*)h3D33->Project3D("xz"); | |
284 | h2D->SetTitle("Findable clusters vs #phi, -0.8<#eta<0.0, |dcar|<3 cm, |dcaz|<3 cm"); | |
285 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr5); | |
286 | h2D->Draw("colz"); | |
287 | arr5->At(1)->Draw("same"); | |
288 | ||
289 | can4->cd(6); | |
290 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_2_5_6"); | |
291 | TH3 *h3D44 = h3D->Clone("h3D44"); | |
292 | h3D44->Add(((TH3*)fold->FindObject("h_tpc_track_neg_recvertex_2_5_6")),1); | |
293 | h3D44->GetYaxis()->SetRangeUser(0.0,maxeta); | |
294 | h2D = (TH2*)h3D44->Project3D("xz"); | |
295 | h2D->SetTitle("Findalbe clusters vs #phi, 0.0<#eta<0.8, |dcar|<3 cm, |dcaz|<3 cm"); | |
296 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr6); | |
297 | h2D->Draw("colz"); | |
298 | arr6->At(1)->Draw("same"); | |
299 | ||
300 | can4->SaveAs("cluster_in_detail.png"); | |
301 | can4->Update(); | |
302 | ||
303 | TObjArray *arr7 = new TObjArray(); | |
304 | TObjArray *arr8 = new TObjArray(); | |
305 | ||
306 | TCanvas *can5 = new TCanvas("can5","DCA In Detail",1200,800); | |
307 | can5->Divide(3,2); | |
308 | ||
309 | can5->cd(1); | |
310 | h3D = (TH3*)fold->FindObject("h_tpc_track_all_recvertex_3_5_7"); | |
311 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
312 | h2D = (TH2*)h3D->Project3D("xy"); | |
313 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr7); | |
314 | h2D->SetTitle("DCAR vs #eta"); | |
315 | h2D->Draw("colz"); | |
316 | arr7->At(1)->Draw("same"); | |
317 | ||
318 | can5->cd(2); | |
319 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_3_5_7"); | |
320 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
321 | h3D->Project3D("xy")->Draw("colz"); | |
322 | h3D->Project3D("xy")->SetTitle("DCAR vs #eta of pos. charged tracks"); | |
323 | ||
324 | can5->cd(3); | |
325 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_3_5_7"); | |
326 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
327 | h3D->Project3D("xy")->Draw("colz"); | |
328 | h3D->Project3D("xy")->SetTitle("DCAR vs #eta of neg. charged tracks"); | |
329 | ||
330 | can5->cd(4); | |
331 | h3D = (TH3*)fold->FindObject("h_tpc_track_all_recvertex_4_5_7"); | |
332 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
333 | h2D = (TH2*)h3D->Project3D("xy"); | |
334 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr8); | |
335 | h2D->SetTitle("DCAZ vs #eta"); | |
336 | h2D->Draw("colz"); | |
337 | arr8->At(1)->Draw("same"); | |
338 | ||
339 | can5->cd(5); | |
340 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_4_5_7"); | |
341 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
342 | h3D->Project3D("xy")->Draw("colz"); | |
343 | h3D->Project3D("xy")->SetTitle("DCAZ vs #eta of pos. charged tracks"); | |
344 | ||
345 | can5->cd(6); | |
346 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_4_5_7"); | |
347 | h3D->GetYaxis()->SetRangeUser(-1,1); | |
348 | h3D->Project3D("xy")->Draw("colz"); | |
349 | h3D->Project3D("xy")->SetTitle("DCAZ vs #eta of neg. charged tracks"); | |
350 | ||
351 | can5->SaveAs("dca_in_detail.png"); | |
352 | ||
353 | TCanvas *can51 = new TCanvas("can51","DCAr versus pT",700,800); | |
354 | can51->Divide(2,2); | |
355 | ||
356 | TObjArray *arr9 = new TObjArray(); | |
357 | TObjArray *arr10 = new TObjArray(); | |
358 | TObjArray *arr11 = new TObjArray(); | |
359 | TObjArray *arr12 = new TObjArray(); | |
360 | ||
361 | can51->cd(1); | |
362 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_3_5_7"); | |
363 | TH3 *h3Dp = h3D->Clone("h3Dp"); | |
364 | h3D->SetAxisRange(0.25,ptMax,"Z"); | |
365 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
366 | h2D = (TH2*)h3D->Project3D("xz"); | |
367 | h2D->Draw("colz"); | |
368 | h2D->SetTitle("DCAR vs pT of pos. charged tracks(A Side)"); | |
369 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr9); | |
370 | TH1 *width1 = (TH1*)arr9->At(2); | |
371 | width1->Draw("same"); | |
372 | width1->SetLineColor(2); | |
373 | arr9->At(1)->Draw("same"); | |
374 | ||
375 | can51->cd(2); | |
376 | //h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_3_5_7"); | |
377 | h3Dp->SetAxisRange(0.25,ptMax,"Z"); | |
378 | h3Dp->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
379 | h2D = (TH2*)h3Dp->Project3D("xz"); | |
380 | h2D->Draw("colz"); | |
381 | h2D->SetTitle("DCAR vs pT of pos. charged tracks(C Side)"); | |
382 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr10); | |
383 | TH1 *width2 = (TH1*)arr10->At(2); | |
384 | width2->Draw("same"); | |
385 | width2->SetLineColor(2); | |
386 | arr10->At(1)->Draw("same"); | |
387 | ||
388 | can51->cd(3); | |
389 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_3_5_7"); | |
390 | TH3 *h3Dn = h3D->Clone("h3Dn"); | |
391 | h3D->SetAxisRange(0.25,ptMax,"Z"); | |
392 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
393 | h2D = (TH2*)h3D->Project3D("xz"); | |
394 | h2D->Draw("colz"); | |
395 | h2D->SetTitle("DCAR vs pT of neg. charged tracks(A Side)"); | |
396 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr11); | |
397 | TH1 *width3 = (TH1*)arr11->At(2); | |
398 | width3->Draw("same"); | |
399 | width3->SetLineColor(2); | |
400 | arr11->At(1)->Draw("same"); | |
401 | ||
402 | can51->cd(4); | |
403 | //h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_3_5_7"); | |
404 | h3Dn->SetAxisRange(0.25,ptMax,"Z"); | |
405 | h3Dn->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
406 | h2D = (TH2*)h3Dn->Project3D("xz"); | |
407 | h2D->Draw("colz"); | |
408 | h2D->SetTitle("DCAR vs pT of neg. charged tracks(C Side)"); | |
409 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr12); | |
410 | TH1 *width4 = (TH1*)arr12->At(2); | |
411 | width4->Draw("same"); | |
412 | width4->SetLineColor(2); | |
413 | arr12->At(1)->Draw("same"); | |
414 | ||
415 | can51->SaveAs("dcar_pT.png"); | |
416 | ||
417 | // get TPC dEdx performance object | |
418 | AliPerformanceDEdx *obj1 = TPC->FindObject("AliPerformanceDEdxTPCInner"); | |
419 | if(obj1==NULL) return(0); | |
420 | ||
421 | // get folder with histograms | |
422 | TFolder *fold1 = obj1->GetAnalysisFolder(); | |
423 | if(!fold1) return(0); | |
424 | ||
425 | TCanvas *can6 = new TCanvas("can6","TPC dEdX",1200,800); | |
426 | can6->Divide(3,2); | |
427 | ||
428 | can6->cd(1); | |
429 | gPad->SetLogz(); | |
430 | fold1->FindObject("h_tpc_dedx_0_1")->Draw("colz"); | |
431 | ||
432 | can6->cd(2); | |
433 | gPad->SetLogz(); | |
434 | fold1->FindObject("h_tpc_dedx_0_5")->Draw("colz"); | |
435 | ||
436 | can6->cd(3); | |
437 | gPad->SetLogz(); | |
438 | fold1->FindObject("h_tpc_dedx_0_6")->Draw("colz"); | |
439 | ||
440 | can6->cd(4); | |
441 | gPad->SetLogx(); | |
442 | gPad->SetLogz(); | |
443 | TH2 *h2 = fold1->FindObject("h_tpc_dedx_0_7"); | |
444 | h2->GetXaxis()->SetRangeUser(0.1,10); | |
445 | h2->Draw("colz"); | |
446 | //////////////////////////////////////////////////////////////////// | |
447 | can6->cd(5); | |
448 | gPad->SetLogz(); | |
449 | //fold1->FindObject("h_tpc_dedx_mips_a_0_1")->Draw("colz"); | |
450 | TH2 *htest = fold1->FindObject("h_tpc_dedx_mips_a_0_1"); | |
451 | htest->GetYaxis()->SetRangeUser(30,60); | |
452 | htest->Draw("colz"); | |
453 | can6->cd(6); | |
454 | gPad->SetLogz(); | |
455 | //fold1->FindObject("h_tpc_dedx_mips_c_0_1")->Draw("colz"); | |
456 | TH2 *htest1 = fold1->FindObject("h_tpc_dedx_mips_c_0_1"); | |
457 | htest1->GetYaxis()->SetRangeUser(30,60); | |
458 | htest1->Draw("colz"); | |
459 | ||
460 | ///////////////////////////////////////////////////////////////////// | |
461 | can6->SaveAs("TPC_dEdx_track_info.png"); | |
462 | ||
463 | TObjArray *arr9 = new TObjArray(); | |
464 | TObjArray *arr10 = new TObjArray(); | |
465 | ||
466 | TCanvas *can7 = new TCanvas("can7","DCA vs #phi",1200,800); | |
467 | can7->Divide(4,2); | |
468 | ||
469 | can7->cd(1); | |
470 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_3_5_6"); | |
471 | TH3 *h3D71 = h3D->Clone("h3D71"); | |
472 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
473 | h3D->Project3D("xz")->Draw("colz"); | |
474 | h3D->Project3D("xz")->SetTitle("DCAR vs #phi of pos. charged tracks(A)"); | |
475 | ||
476 | can7->cd(2); | |
477 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_3_5_6"); | |
478 | TH3 *h3D72 = h3D->Clone("h3D72"); | |
479 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
480 | h3D->Project3D("xz")->Draw("colz"); | |
481 | h3D->Project3D("xz")->SetTitle("DCAR vs #phi of neg. charged tracks(A)"); | |
482 | ||
483 | can7->cd(3); | |
484 | h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_4_5_6"); | |
485 | TH3 *h3D73 = h3D->Clone("h3D73"); | |
486 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
487 | h3D->Project3D("xz")->Draw("colz"); | |
488 | h3D->Project3D("xz")->SetTitle("DCAZ vs #phi of pos. charged tracks(A)"); | |
489 | ||
490 | can7->cd(4); | |
491 | h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_4_5_6"); | |
492 | TH3 *h3D74 = h3D->Clone("h3D74"); | |
493 | h3D->GetYaxis()->SetRangeUser(0.0,maxeta); | |
494 | h3D->Project3D("xz")->Draw("colz"); | |
495 | h3D->Project3D("xz")->SetTitle("DCAZ vs #phi of neg. charged tracks(A)"); | |
496 | ||
497 | can7->cd(5); | |
498 | //h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_3_5_6"); | |
499 | h3D71->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
500 | h3D71->Project3D("xz")->Draw("colz"); | |
501 | h3D71->Project3D("xz")->SetTitle("DCAR vs #phi of pos. charged tracks(C)"); | |
502 | ||
503 | can7->cd(6); | |
504 | //h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_3_5_6"); | |
505 | h3D72->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
506 | h3D72->Project3D("xz")->Draw("colz"); | |
507 | h3D72->Project3D("xz")->SetTitle("DCAR vs #phi of neg. charged tracks(C)"); | |
508 | ||
509 | can7->cd(7); | |
510 | //h3D = (TH3*)fold->FindObject("h_tpc_track_pos_recvertex_4_5_6"); | |
511 | h3D73->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
512 | h3D73->Project3D("xz")->Draw("colz"); | |
513 | h3D73->Project3D("xz")->SetTitle("DCAZ vs #phi of pos. charged tracks(C)"); | |
514 | ||
515 | can7->cd(8); | |
516 | //h3D = (TH3*)fold->FindObject("h_tpc_track_neg_recvertex_4_5_6"); | |
517 | h3D74->GetYaxis()->SetRangeUser(mineta,-0.00001); | |
518 | h3D74->Project3D("xz")->Draw("colz"); | |
519 | h3D74->Project3D("xz")->SetTitle("DCAZ vs #phi of neg. charged tracks(C)"); | |
520 | ||
521 | ||
522 | can7->SaveAs("dca_and_phi.png"); | |
523 | ||
524 | ||
525 | AliPerformanceMatch *obj2 = (AliPerformanceMatch*)TPC->FindObject("AliPerformanceMatchTPCITS"); | |
526 | TFolder *pMatch = obj2->GetAnalysisFolder(); | |
527 | ||
528 | AliPerformanceMatch *obj3 = (AliPerformanceMatch*)TPC->FindObject("AliPerformanceMatchITSTPC"); | |
529 | TFolder *pPull = obj3->GetAnalysisFolder(); | |
530 | ||
531 | // | |
532 | // event level | |
533 | // | |
534 | ||
535 | TH1 *h1D = 0; | |
536 | TH1 *h1D1 = 0; | |
537 | TH1 *h1D2 = 0; | |
538 | TH1 *h1D3 = 0; | |
539 | TH2 *h2D = 0; | |
540 | TH2 *h2D1 = 0; | |
541 | ||
542 | TCanvas *can8 = new TCanvas("can8","TPC-ITS Matching Efficiency",800,800); | |
543 | can8->Divide(2,2); | |
544 | ||
545 | can8->cd(1); | |
546 | h2D = (TH2*)(pMatch->FindObject("h_tpc_match_trackingeff_all_2_3")); | |
547 | h2D1 = (TH2*)(pMatch->FindObject("h_tpc_match_trackingeff_tpc_2_3")); | |
548 | TH2 *h2D2 = h2D->Clone("h2D2"); | |
549 | TH2 *h2D3 = h2D1->Clone("h2D3"); | |
550 | ||
551 | h2D->GetXaxis()->SetRangeUser(0,1.5); | |
552 | h2D1->GetXaxis()->SetRangeUser(0,1.5); | |
553 | h1D = h2D->ProjectionY(); | |
554 | h1D1 = h2D1->ProjectionY(); | |
555 | h1D1->Divide(h1D); | |
556 | h1D1->SetTitle("TPC-ITS Matching Efficiency (A)"); | |
557 | h1D1->Draw("e0"); | |
558 | ||
559 | can8->cd(2); | |
560 | h2D2->GetXaxis()->SetRangeUser(-1.5,0); | |
561 | h2D3->GetXaxis()->SetRangeUser(-1.5,0); | |
562 | h1D2 = h2D2->ProjectionY(); | |
563 | h1D3 = h2D3->ProjectionY(); | |
564 | h1D3->Divide(h1D2); | |
565 | h1D3->SetLineColor(2); | |
566 | h1D3->SetTitle("TPC-ITS Matching Efficiency (C)"); | |
567 | h1D3->Draw("e0"); | |
568 | ||
569 | can8->cd(3); | |
570 | h2D = (TH2*)(pMatch->FindObject("h_tpc_match_trackingeff_all_1_3")); | |
571 | h2D1 = (TH2*)(pMatch->FindObject("h_tpc_match_trackingeff_tpc_1_3")); | |
572 | TH2 *h2D4 = h2D->Clone("h2D4"); | |
573 | TH2 *h2D5 = h2D1->Clone("h2D5"); | |
574 | ||
575 | h2D->GetXaxis()->SetRangeUser(0,1.5); | |
576 | h2D1->GetXaxis()->SetRangeUser(0,1.5); | |
577 | h1D = h2D->ProjectionY(); | |
578 | h1D1 = h2D1->ProjectionY(); | |
579 | h1D1->Divide(h1D); | |
580 | h1D1->SetTitle("TPC-ITS Matching Efficiency (A)"); | |
581 | h1D1->Draw("e0"); | |
582 | ||
583 | can8->cd(4); | |
584 | h2D4->GetXaxis()->SetRangeUser(-1.5,0); | |
585 | h2D5->GetXaxis()->SetRangeUser(-1.5,0); | |
586 | h1D2 = h2D4->ProjectionY(); | |
587 | h1D3 = h2D5->ProjectionY(); | |
588 | h1D3->Divide(h1D2); | |
589 | h1D3->SetLineColor(2); | |
590 | h1D3->SetTitle("TPC-ITS Matching Efficiency (C)"); | |
591 | h1D3->Draw("e0"); | |
592 | ||
593 | can8->SaveAs("TPC-ITS.png"); | |
594 | // TH2 *h2D = 0; | |
595 | ||
596 | TCanvas *can9 = new TCanvas("can9","Pulls of TPC Tracks vs 1/pT",1200,800); | |
597 | can9->Divide(3,2); | |
598 | ||
599 | TObjArray *arr1 = new TObjArray(); | |
600 | TObjArray *arr2 = new TObjArray(); | |
601 | TObjArray *arr3 = new TObjArray(); | |
602 | TObjArray *arr4 = new TObjArray(); | |
603 | TObjArray *arr5 = new TObjArray(); | |
604 | ||
605 | can9->cd(1); | |
606 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_0_7")); | |
607 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr1); | |
608 | h2D->Draw("colz"); | |
609 | arr1->At(1)->Draw("same"); | |
610 | ||
611 | can9->cd(2); | |
612 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_1_7")); | |
613 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr2); | |
614 | h2D->Draw("colz"); | |
615 | arr2->At(1)->Draw("same"); | |
616 | ||
617 | can9->cd(3); | |
618 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_2_7")); | |
619 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr3); | |
620 | h2D->Draw("colz"); | |
621 | arr3->At(1)->Draw("same"); | |
622 | ||
623 | can9->cd(4); | |
624 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_3_7")); | |
625 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr4); | |
626 | h2D->Draw("colz"); | |
627 | arr4->At(1)->Draw("same"); | |
628 | ||
629 | can9->cd(5); | |
630 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_4_7")); | |
631 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr5); | |
632 | h2D->Draw("colz"); | |
633 | arr5->At(1)->Draw("same"); | |
634 | ||
635 | can9->SaveAs("pull-pt.png"); | |
636 | ||
637 | TCanvas *can10 = new TCanvas("can10","Pulls of TPC Tracks vs Eta",1200,800); | |
638 | can10->Divide(3,2); | |
639 | ||
640 | TObjArray *arr6 = new TObjArray(); | |
641 | TObjArray *arr7 = new TObjArray(); | |
642 | TObjArray *arr8 = new TObjArray(); | |
643 | TObjArray *arr9 = new TObjArray(); | |
644 | TObjArray *arr10 = new TObjArray(); | |
645 | ||
646 | can10->cd(1); | |
647 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_0_6")); | |
648 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr6); | |
649 | h2D->Draw("colz"); | |
650 | arr6->At(1)->Draw("same"); | |
651 | ||
652 | can10->cd(2); | |
653 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_1_6")); | |
654 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr7); | |
655 | h2D->Draw("colz"); | |
656 | arr7->At(1)->Draw("same"); | |
657 | ||
658 | can10->cd(3); | |
659 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_2_6")); | |
660 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr8); | |
661 | h2D->Draw("colz"); | |
662 | arr8->At(1)->Draw("same"); | |
663 | ||
664 | can10->cd(4); | |
665 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_3_6")); | |
666 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr9); | |
667 | h2D->Draw("colz"); | |
668 | arr9->At(1)->Draw("same"); | |
669 | ||
670 | can10->cd(5); | |
671 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_4_6")); | |
672 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr10); | |
673 | h2D->Draw("colz"); | |
674 | arr10->At(1)->Draw("same"); | |
675 | ||
676 | can10->SaveAs("pull-eta.png"); | |
677 | ||
678 | TCanvas *can11 = new TCanvas("can11","Pulls of TPC Tracks vs Phi",1200,800); | |
679 | can11->Divide(3,2); | |
680 | ||
681 | TObjArray *arr11 = new TObjArray(); | |
682 | TObjArray *arr12 = new TObjArray(); | |
683 | TObjArray *arr13 = new TObjArray(); | |
684 | TObjArray *arr14 = new TObjArray(); | |
685 | TObjArray *arr15 = new TObjArray(); | |
686 | ||
687 | can11->cd(1); | |
688 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_0_5")); | |
689 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr11); | |
690 | h2D->Draw("colz"); | |
691 | arr11->At(1)->Draw("same"); | |
692 | ||
693 | can11->cd(2); | |
694 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_1_5")); | |
695 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr12); | |
696 | h2D->Draw("colz"); | |
697 | arr12->At(1)->Draw("same"); | |
698 | ||
699 | can11->cd(3); | |
700 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_2_5")); | |
701 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr13); | |
702 | h2D->Draw("colz"); | |
703 | arr13->At(1)->Draw("same"); | |
704 | ||
705 | can11->cd(4); | |
706 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_3_5")); | |
707 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr14); | |
708 | h2D->Draw("colz"); | |
709 | arr14->At(1)->Draw("same"); | |
710 | ||
711 | can11->cd(5); | |
712 | h2D = (TH2*)(pPull->FindObject("h_tpc_match_pull_4_5")); | |
713 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr15); | |
714 | h2D->Draw("colz"); | |
715 | arr15->At(1)->Draw("same"); | |
716 | ||
717 | can11->SaveAs("pull-phi.png"); | |
718 | ||
719 | AliPerformanceMatch *obj4 = (AliPerformanceMatch*)TPC->FindObject("AliPerformanceMatchTPCConstrain"); | |
720 | TFolder *pConstrain = obj4->GetAnalysisFolder(); | |
721 | ||
722 | TCanvas *can12 = new TCanvas("can12","#delta_{sin#phi}/#sigma_{sin#phi}",800,800); | |
723 | can12->Divide(2,2); | |
724 | ||
725 | h3D = (TH3*)pConstrain->FindObject("h_tpc_constrain_tpc_0_2_3"); | |
726 | TH3 *h31 = h3D->Clone("h31"); | |
727 | ||
728 | can12->cd(1); | |
729 | h3D->GetZaxis()->SetRangeUser(0,maxeta); | |
730 | // h3D->GetYaxis()->SetRangeUser(0.25,10); | |
731 | h2D = (TH2*)h3D->Project3D("xy"); | |
732 | h2D->Draw("colz"); | |
733 | h2D->SetTitle("A Side"); | |
734 | h2D->SetYTitle("(sin#phi_{TPC} - sin#phi_{Global})/#sigma"); | |
735 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr11); | |
736 | arr11->At(1)->Draw("same"); | |
737 | TH1 *width1 = (TH1*)arr11->At(2); | |
738 | width1->Draw("same"); | |
739 | width1->SetLineColor(2); | |
740 | ||
741 | /* h3D->Project3D("xy")->Draw("colz"); | |
742 | h3D->Project3D("xy")->SetTitle("A Side"); | |
743 | h3D->Project3D("xy")->SetYTitle("#delta_{sin#phi}/#sigma_{sin#phi}"); | |
744 | h3D->Project3D("xy")->FitSlicesY(0,0,-1,0,"QNR",arr11); | |
745 | arr11->At(1)->Draw("same"); */ | |
746 | ||
747 | can12->cd(2); | |
748 | h31->GetZaxis()->SetRangeUser(mineta,-0.001); | |
749 | // h31->GetYaxis()->SetRangeUser(0.25,10); | |
750 | h2D = (TH2*)h31->Project3D("xy"); | |
751 | h2D->Draw("colz"); | |
752 | h2D->SetTitle("C Side"); | |
753 | h2D->SetYTitle("(sin#phi_{TPC} - sin#phi_{Global})/#sigma"); | |
754 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr12); | |
755 | arr12->At(1)->Draw("same"); | |
756 | TH1 *width2 = (TH1*)arr12->At(2); | |
757 | width2->Draw("same"); | |
758 | width2->SetLineColor(2); | |
759 | ||
760 | /* h31->Project3D("xy")->Draw("colz"); | |
761 | h31->Project3D("xy")->SetTitle("C Side"); | |
762 | h31->Project3D("xy")->SetYTitle("#delta_{sin#phi}/#sigma_{sin#phi}"); | |
763 | h31->Project3D("xy")->FitSlicesY(0,0,-1,0,"QNR",arr12); | |
764 | arr12->At(1)->Draw("same"); */ | |
765 | ||
766 | can12->cd(3); | |
767 | h3D = (TH3*)pConstrain->FindObject("h_tpc_constrain_tpc_0_1_3"); | |
768 | h3D->GetZaxis()->SetRangeUser(0,maxeta); | |
769 | TH3 *h32 = h3D->Clone("h32"); | |
770 | h2D = (TH2*)h3D->Project3D("xy"); | |
771 | h2D->Draw("colz"); | |
772 | h2D->SetTitle("A Side"); | |
773 | h2D->SetYTitle("(sin#phi_{TPC} - sin#phi_{Global})/#sigma"); | |
774 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr13); | |
775 | arr13->At(1)->Draw("same"); | |
776 | TH1 *width3 = (TH1*)arr13->At(2); | |
777 | width3->Draw("same"); | |
778 | width3->SetLineColor(2); | |
779 | ||
780 | /* h3D->Project3D("xy")->Draw("colz"); | |
781 | h3D->Project3D("xy")->SetTitle("A Side"); | |
782 | h3D->Project3D("xy")->SetYTitle("#delta_{sin#phi}/#sigma_{sin#phi}"); | |
783 | h3D->Project3D("xy")->FitSlicesY(0,0,-1,0,"QNR",arr13); | |
784 | arr13->At(1)->Draw("same"); */ | |
785 | ||
786 | can12->cd(4); | |
787 | h32->GetZaxis()->SetRangeUser(mineta,-0.001); | |
788 | h2D = (TH2*)h32->Project3D("xy"); | |
789 | h2D->Draw("colz"); | |
790 | h2D->SetTitle("C Side"); | |
791 | h2D->SetYTitle("(sin#phi_{TPC} - sin#phi_{Global})/#sigma"); | |
792 | h2D->FitSlicesY(0,0,-1,0,"QNR",arr14); | |
793 | arr14->At(1)->Draw("same"); | |
794 | TH1 *width4 = (TH1*)arr14->At(2); | |
795 | width4->Draw("same"); | |
796 | width4->SetLineColor(2); | |
797 | ||
798 | /* h32->Project3D("xy")->Draw("colz"); | |
799 | h32->Project3D("xy")->SetTitle("C Side"); | |
800 | h32->Project3D("xy")->SetYTitle("#delta_{sin#phi}/#sigma_{sin#phi}"); | |
801 | h32->Project3D("xy")->FitSlicesY(0,0,-1,0,"QNR",arr14); | |
802 | arr14->At(1)->Draw("same"); */ | |
803 | ||
804 | can12->SaveAs("pullPhiConstrain.png"); | |
805 | ||
806 | // | |
807 | // resolution and efficiency plots from David - added by Patrick | |
808 | // | |
809 | /* | |
810 | AliPerformanceRes *objPerfRes = (AliPerformanceRes*) TPC->FindObject("AliPerformanceRes"); | |
811 | if (objPerfRes == NULL) {printf("Error getting AliPerformanceRes\n");} | |
812 | TFolder *folderRes = objPerfRes->GetAnalysisFolder(); | |
813 | TH1F* h_resPt_vs_Pt = (TH1F*)folderRes->FindObject("h_res_4_vs_9"); | |
814 | TH1F* h_mean_resPt_vs_Pt = (TH1F*)folderRes->FindObject("h_mean_res_4_vs_9"); | |
815 | TH1F* h_pullPt_vs_Pt = (TH1F*)folderRes->FindObject("h_pull_4_vs_9"); | |
816 | TH1F* h_mean_pullPt_vs_Pt = (TH1F*)folderRes->FindObject("h_mean_pull_4_vs_9"); | |
817 | ||
818 | TCanvas *can13 = new TCanvas("can13","Resolution p_{T}",800,800); | |
819 | can13->Divide(2,2); | |
820 | can13->cd(1); | |
821 | h_resPt_vs_Pt ->Draw(); | |
822 | can13->cd(2); | |
823 | h_mean_resPt_vs_Pt ->Draw(); | |
824 | can13->cd(3); | |
825 | h_pullPt_vs_Pt ->Draw(); | |
826 | can13->cd(4); | |
827 | h_mean_pullPt_vs_Pt->Draw(); | |
828 | ||
829 | can13->SaveAs("res_pT_1overpT.png"); | |
830 | ||
831 | AliPerformanceEff *objPerfEff = (AliPerformanceEff*) TPC->FindObject("AliPerformanceEff"); | |
832 | if (objPerfEff == NULL) {printf("Error getting AliPerformanceEff\n");} | |
833 | TFolder *folderEff = objPerfEff->GetAnalysisFolder(); | |
834 | TH1F* eta_all = (TH1F*)folderEff->FindObject("etaRecEff"); | |
835 | TH1F* eta_all_neg = (TH1F*)folderEff->FindObject("etaRecEffNeg"); | |
836 | TH1F* eta_all_pos = (TH1F*)folderEff->FindObject("etaRecEffPos"); | |
837 | TH1F* phi_all = (TH1F*)folderEff->FindObject("phiRecEff"); | |
838 | TH1F* phi_all_neg = (TH1F*)folderEff->FindObject("phiRecEffNeg"); | |
839 | TH1F* phi_all_pos = (TH1F*)folderEff->FindObject("phiRecEffPos"); | |
840 | TH1F* pt_all = (TH1F*)folderEff->FindObject("ptRecEff"); | |
841 | TH1F* pt_all_neg = (TH1F*)folderEff->FindObject("ptRecEffNeg"); | |
842 | TH1F* pt_all_pos = (TH1F*)folderEff->FindObject("ptRecEffPos"); | |
843 | TH1F* eta_all_findable = (TH1F*)folderEff->FindObject("etaRecEffF"); | |
844 | TH1F* eta_all_findable_neg = (TH1F*)folderEff->FindObject("etaRecEffFNeg"); | |
845 | TH1F* eta_all_findable_pos = (TH1F*)folderEff->FindObject("etaRecEffFPos"); | |
846 | TH1F* phi_all_findable = (TH1F*)folderEff->FindObject("phiRecEffF"); | |
847 | TH1F* phi_all_findable_neg = (TH1F*)folderEff->FindObject("phiRecEffFNeg"); | |
848 | TH1F* phi_all_findable_pos = (TH1F*)folderEff->FindObject("phiRecEffFPos"); | |
849 | TH1F* pt_all_findable = (TH1F*)folderEff->FindObject("ptRecEffF"); | |
850 | TH1F* pt_all_findable_neg = (TH1F*)folderEff->FindObject("ptRecEffFNeg"); | |
851 | TH1F* pt_all_findable_pos = (TH1F*)folderEff->FindObject("ptRecEffFPos"); | |
852 | TH1F* eta_Pi = (TH1F*)folderEff->FindObject("etaRecEffPi"); | |
853 | TH1F* eta_Pi_neg = (TH1F*)folderEff->FindObject("etaRecEffPiNeg"); | |
854 | TH1F* eta_Pi_pos = (TH1F*)folderEff->FindObject("etaRecEffPiPos"); | |
855 | TH1F* phi_Pi = (TH1F*)folderEff->FindObject("phiRecEffPi"); | |
856 | TH1F* phi_Pi_neg = (TH1F*)folderEff->FindObject("phiRecEffPiNeg"); | |
857 | TH1F* phi_Pi_pos = (TH1F*)folderEff->FindObject("phiRecEffPiPos"); | |
858 | TH1F* pt_Pi = (TH1F*)folderEff->FindObject("ptRecEffPi"); | |
859 | TH1F* pt_Pi_neg = (TH1F*)folderEff->FindObject("ptRecEffPiNeg"); | |
860 | TH1F* pt_Pi_pos = (TH1F*)folderEff->FindObject("ptRecEffPiPos"); | |
861 | TH1F* eta_K = (TH1F*)folderEff->FindObject("etaRecEffK"); | |
862 | TH1F* eta_K_neg = (TH1F*)folderEff->FindObject("etaRecEffKNeg"); | |
863 | TH1F* eta_K_pos = (TH1F*)folderEff->FindObject("etaRecEffKPos"); | |
864 | TH1F* phi_K = (TH1F*)folderEff->FindObject("phiRecEffK"); | |
865 | TH1F* phi_K_neg = (TH1F*)folderEff->FindObject("phiRecEffKNeg"); | |
866 | TH1F* phi_K_pos = (TH1F*)folderEff->FindObject("phiRecEffKPos"); | |
867 | TH1F* pt_K = (TH1F*)folderEff->FindObject("ptRecEffK"); | |
868 | TH1F* pt_K_neg = (TH1F*)folderEff->FindObject("ptRecEffKNeg"); | |
869 | TH1F* pt_K_pos = (TH1F*)folderEff->FindObject("ptRecEffKPos"); | |
870 | TH1F* eta_P = (TH1F*)folderEff->FindObject("etaRecEffP"); | |
871 | TH1F* eta_P_neg = (TH1F*)folderEff->FindObject("etaRecEffPNeg"); | |
872 | TH1F* eta_P_pos = (TH1F*)folderEff->FindObject("etaRecEffPPos"); | |
873 | TH1F* phi_P = (TH1F*)folderEff->FindObject("phiRecEffP"); | |
874 | TH1F* phi_P_neg = (TH1F*)folderEff->FindObject("phiRecEffPNeg"); | |
875 | TH1F* phi_P_pos = (TH1F*)folderEff->FindObject("phiRecEffPPos"); | |
876 | TH1F* pt_P = (TH1F*)folderEff->FindObject("ptRecEffP"); | |
877 | TH1F* pt_P_neg = (TH1F*)folderEff->FindObject("ptRecEffPNeg"); | |
878 | TH1F* pt_P_pos = (TH1F*)folderEff->FindObject("ptRecEffPPos"); | |
879 | eta_all ->SetLineWidth(2); | |
880 | eta_all_neg ->SetLineColor(kRed); | |
881 | eta_all_pos ->SetLineColor(kBlue); | |
882 | phi_all ->SetLineWidth(2); | |
883 | phi_all_neg ->SetLineColor(kRed); | |
884 | phi_all_pos ->SetLineColor(kBlue); | |
885 | pt_all ->SetLineWidth(2); | |
886 | pt_all_neg ->SetLineColor(kRed); | |
887 | pt_all_pos ->SetLineColor(kBlue); | |
888 | eta_all_findable ->SetLineWidth(2); | |
889 | eta_all_findable_neg->SetLineColor(kRed); | |
890 | eta_all_findable_pos->SetLineColor(kBlue); | |
891 | phi_all_findable ->SetLineWidth(2); | |
892 | phi_all_findable_neg->SetLineColor(kRed); | |
893 | phi_all_findable_pos->SetLineColor(kBlue); | |
894 | pt_all_findable ->SetLineWidth(2); | |
895 | pt_all_findable_neg ->SetLineColor(kRed); | |
896 | pt_all_findable_pos ->SetLineColor(kBlue); | |
897 | eta_Pi ->SetLineWidth(2); | |
898 | eta_Pi_neg ->SetLineColor(kRed); | |
899 | eta_Pi_pos ->SetLineColor(kBlue); | |
900 | phi_Pi ->SetLineWidth(2); | |
901 | phi_Pi_neg ->SetLineColor(kRed); | |
902 | phi_Pi_pos ->SetLineColor(kBlue); | |
903 | pt_Pi ->SetLineWidth(2); | |
904 | pt_Pi_neg ->SetLineColor(kRed); | |
905 | pt_Pi_pos ->SetLineColor(kBlue); | |
906 | eta_K ->SetLineWidth(2); | |
907 | eta_K_neg ->SetLineColor(kRed); | |
908 | eta_K_pos ->SetLineColor(kBlue); | |
909 | phi_K ->SetLineWidth(2); | |
910 | phi_K_neg ->SetLineColor(kRed); | |
911 | phi_K_pos ->SetLineColor(kBlue); | |
912 | pt_K ->SetLineWidth(2); | |
913 | pt_K_neg ->SetLineColor(kRed); | |
914 | pt_K_pos ->SetLineColor(kBlue); | |
915 | eta_P ->SetLineWidth(2); | |
916 | eta_P_neg ->SetLineColor(kRed); | |
917 | eta_P_pos ->SetLineColor(kBlue); | |
918 | phi_P ->SetLineWidth(2); | |
919 | phi_P_neg ->SetLineColor(kRed); | |
920 | phi_P_pos ->SetLineColor(kBlue); | |
921 | pt_P ->SetLineWidth(2); | |
922 | pt_P_neg ->SetLineColor(kRed); | |
923 | pt_P_pos ->SetLineColor(kBlue); | |
924 | ||
925 | TCanvas *can14 = new TCanvas("can14","Efficiency All",1000,800); | |
926 | can14->Divide(3, 2); | |
927 | can14->cd(1); | |
928 | eta_all ->Draw(); | |
929 | eta_all_neg ->Draw("same"); | |
930 | eta_all_pos ->Draw("same"); | |
931 | can14->cd(2); | |
932 | phi_all ->Draw(); | |
933 | phi_all_neg ->Draw("same"); | |
934 | phi_all_pos ->Draw("same"); | |
935 | can14->cd(3); | |
936 | pt_all ->Draw(); | |
937 | pt_all_neg ->Draw("same"); | |
938 | pt_all_pos ->Draw("same"); | |
939 | can14->cd(4); | |
940 | eta_all_findable ->Draw(); | |
941 | eta_all_findable_neg->Draw("same"); | |
942 | eta_all_findable_pos->Draw("same"); | |
943 | can14->cd(5); | |
944 | phi_all_findable ->Draw(); | |
945 | phi_all_findable_neg->Draw("same"); | |
946 | phi_all_findable_pos->Draw("same"); | |
947 | can14->cd(6); | |
948 | pt_all_findable ->Draw(); | |
949 | pt_all_findable_neg ->Draw("same"); | |
950 | pt_all_findable_pos ->Draw("same"); | |
951 | ||
952 | can14->SaveAs("eff_all+all_findable.png"); | |
953 | ||
954 | TCanvas *can15 = new TCanvas("can15","Efficiency Pi K P",1000,1000); | |
955 | can15->Divide(3, 3); | |
956 | can15->cd(1); | |
957 | eta_Pi ->Draw(); | |
958 | eta_Pi_neg ->Draw("same"); | |
959 | eta_Pi_pos ->Draw("same"); | |
960 | can15->cd(2); | |
961 | phi_Pi ->Draw(); | |
962 | phi_Pi_neg ->Draw("same"); | |
963 | phi_Pi_pos ->Draw("same"); | |
964 | can15->cd(3); | |
965 | pt_Pi ->Draw(); | |
966 | pt_Pi_neg ->Draw("same"); | |
967 | pt_Pi_pos ->Draw("same"); | |
968 | can15->cd(4); | |
969 | eta_K ->Draw(); | |
970 | eta_K_neg ->Draw("same"); | |
971 | eta_K_pos ->Draw("same"); | |
972 | can15->cd(5); | |
973 | phi_K ->Draw(); | |
974 | phi_K_neg ->Draw("same"); | |
975 | phi_K_pos ->Draw("same"); | |
976 | can15->cd(6); | |
977 | pt_K ->Draw(); | |
978 | pt_K_neg ->Draw("same"); | |
979 | pt_K_pos ->Draw("same"); | |
980 | can15->cd(7); | |
981 | eta_P ->Draw(); | |
982 | eta_P_neg ->Draw("same"); | |
983 | eta_P_pos ->Draw("same"); | |
984 | can15->cd(8); | |
985 | phi_P ->Draw(); | |
986 | phi_P_neg ->Draw("same"); | |
987 | phi_P_pos ->Draw("same"); | |
988 | can15->cd(9); | |
989 | pt_P ->Draw(); | |
990 | pt_P_neg ->Draw("same"); | |
991 | pt_P_pos ->Draw("same"); | |
992 | ||
993 | can15->SaveAs("eff_Pi_K_P.png"); | |
994 | ||
995 | //get more histos from THnSparse... | |
996 | THnSparseF* EffHisto = (THnSparseF*) objPerfEff->GetEffHisto(); | |
997 | //mceta:mcphi:mcpt:pid:recStatus:findable:charge:nclones:nfakes | |
998 | //pid:e-=0,mu-=1,pi+=2,K+=3,p+=4 | |
999 | TH1* h_pid = (TH1*) EffHisto->Projection(3); | |
1000 | TH1* h_charge = (TH1*) EffHisto->Projection(6); | |
1001 | //TH1* h_find = (TH1*) EffHisto->Projection(5); | |
1002 | //TH1* eta_All = (TH1*) EffHisto->Projection(0); | |
1003 | ||
1004 | cout<<"before setrange"<<endl; | |
1005 | EffHisto->GetAxis(5)->SetRangeUser(1, 1.999); //set findable | |
1006 | EffHisto->GetAxis(3)->SetRangeUser(2, 2.999); //set pion | |
1007 | cout<<"after setrange"<<endl; | |
1008 | TH1* h_charge_sel = (TH1*) EffHisto->Projection(6); | |
1009 | cout<<"after projection"<<endl; | |
1010 | EffHisto->GetAxis(6)->UnZoom(); //set all charges | |
1011 | TH1* eta_Pi_findable = (TH1*) EffHisto->Projection(0); | |
1012 | TH1* phi_Pi_findable = (TH1*) EffHisto->Projection(1); | |
1013 | TH1* pt_Pi_findable = (TH1*) EffHisto->Projection(2); | |
1014 | EffHisto->GetAxis(6)->SetRangeUser(-1.5, -0.499); //set negative | |
1015 | TH1* eta_Pi_findable_neg = (TH1*) EffHisto->Projection(0); | |
1016 | TH1* phi_Pi_findable_neg = (TH1*) EffHisto->Projection(1); | |
1017 | TH1* pt_Pi_findable_neg = (TH1*) EffHisto->Projection(2); | |
1018 | EffHisto->GetAxis(6)->SetRangeUser(0.5, 1.499); //set positive | |
1019 | TH1* eta_Pi_findable_pos = (TH1*) EffHisto->Projection(0); | |
1020 | TH1* phi_Pi_findable_pos = (TH1*) EffHisto->Projection(1); | |
1021 | TH1* pt_Pi_findable_pos = (TH1*) EffHisto->Projection(2); | |
1022 | //EffHisto->GetAxis(3)->SetRangeUser(3, 3.999); //set kaon | |
1023 | //EffHisto->GetAxis(6)->UnZoom(); //set all charges | |
1024 | ||
1025 | //EffHisto->GetAxis(3)->SetRangeUser(4, 4.999); //set proton | |
1026 | ||
1027 | eta_Pi_findable ->SetLineWidth(2); | |
1028 | eta_Pi_findable_neg ->SetLineColor(kRed); | |
1029 | eta_Pi_findable_pos ->SetLineColor(kBlue); | |
1030 | phi_Pi_findable ->SetLineWidth(2); | |
1031 | phi_Pi_findable_neg ->SetLineColor(kRed); | |
1032 | phi_Pi_findable_pos ->SetLineColor(kBlue); | |
1033 | pt_Pi_findable ->SetLineWidth(2); | |
1034 | pt_Pi_findable_neg ->SetLineColor(kRed); | |
1035 | pt_Pi_findable_pos ->SetLineColor(kBlue); | |
1036 | //eta_K_findable ->SetLineWidth(2); | |
1037 | //eta_K_findable_neg ->SetLineColor(kRed); | |
1038 | //eta_K_findable_pos ->SetLineColor(kBlue); | |
1039 | //phi_K_findable ->SetLineWidth(2); | |
1040 | //phi_K_findable_neg ->SetLineColor(kRed); | |
1041 | //phi_K_findable_pos ->SetLineColor(kBlue); | |
1042 | //pt_K_findable ->SetLineWidth(2); | |
1043 | //pt_K_findable_neg ->SetLineColor(kRed); | |
1044 | //pt_K_findable_pos ->SetLineColor(kBlue); | |
1045 | //eta_P_findable ->SetLineWidth(2); | |
1046 | //eta_P_findable_neg ->SetLineColor(kRed); | |
1047 | //eta_P_findable_pos ->SetLineColor(kBlue); | |
1048 | //phi_P_findable ->SetLineWidth(2); | |
1049 | //phi_P_findable_neg ->SetLineColor(kRed); | |
1050 | //phi_P_findable_pos ->SetLineColor(kBlue); | |
1051 | //pt_P_findable ->SetLineWidth(2); | |
1052 | //pt_P_findable_neg ->SetLineColor(kRed); | |
1053 | //pt_P_findable_pos ->SetLineColor(kBlue); | |
1054 | ||
1055 | TCanvas *can16 = new TCanvas("can16","Efficiency Pi K P findable",1000,1000); | |
1056 | can16->Divide(3,3); | |
1057 | can16->cd(7); | |
1058 | h_pid->Draw(); | |
1059 | can16->cd(8); | |
1060 | h_charge->Draw(); | |
1061 | can16->cd(9); | |
1062 | h_charge_sel->Draw(); | |
1063 | can16->cd(1); | |
1064 | eta_Pi_findable->Draw(); | |
1065 | eta_Pi_findable_neg->Draw("same"); | |
1066 | eta_Pi_findable_pos->Draw("same"); | |
1067 | can16->cd(2); | |
1068 | phi_Pi_findable->Draw(); | |
1069 | phi_Pi_findable_neg->Draw("same"); | |
1070 | phi_Pi_findable_pos->Draw("same"); | |
1071 | can16->cd(3); | |
1072 | pt_Pi_findable->Draw(); | |
1073 | pt_Pi_findable_neg->Draw("same"); | |
1074 | pt_Pi_findable_pos->Draw("same"); | |
1075 | ||
1076 | can16->SaveAs("eff_Pi_K_P_findable.png"); | |
1077 | */ | |
1078 | ||
1079 | ofstream fout("runqa_exist"); | |
1080 | //if(NEvents>0) | |
1081 | fout.precision(10); | |
1082 | fout<<NEvents<<endl; | |
1083 | fout.close(); | |
1084 | ||
1085 | } |