]>
Commit | Line | Data |
---|---|---|
becfe989 | 1 | #include <Riostream.h> |
2 | ||
3 | extern TRandom *gRandom; | |
4 | extern TBenchmark *gBenchmark; | |
5 | extern TSystem *gSystem; | |
6 | ||
7 | void ReadCFHeavyFlavourOutput(){ | |
8 | ||
9 | // example macro for reading a container coming from a CF analysis | |
10 | // the generated and reconstructed distributions are got, | |
11 | // the efficiencies are calculated, | |
12 | // the reco distributions are corrected, | |
13 | // the results plotted | |
14 | ||
15 | gROOT->SetStyle("Plain"); | |
16 | gStyle->SetPalette(1); | |
17 | gStyle->SetOptStat(1110); | |
18 | gStyle->SetPalette(1); | |
19 | gStyle->SetCanvasColor(0); | |
20 | gStyle->SetFrameFillColor(0); | |
21 | gStyle->SetOptTitle(0); | |
22 | ||
23 | gSystem->SetIncludePath("-I. -I$ALICE_ROOT/include -I$ROOTSYS/include"); | |
24 | gSystem->Load("libANALYSIS.so"); | |
25 | gSystem->Load("libANALYSISalice.so"); | |
a273622f | 26 | gSystem->Load("libCORRFW.so") ; |
becfe989 | 27 | |
28 | //Setting up the container grid... | |
29 | ||
30 | const Int_t nstep=2; //number of selection steps (just 2 in this ex) | |
31 | ||
32 | const Int_t nvar=6; //number of variables on the grid: pt, y, cosThetaStar, ptPi, ptK, cT | |
33 | ||
34 | // Flag the sel steps. In this example, we have two, may be any nstep | |
35 | Int_t stepGen=0; | |
36 | Int_t stepRec=1; | |
37 | ||
38 | // the sensitive variables, their indeces | |
39 | UInt_t ipt =0; | |
40 | UInt_t iy =1; | |
41 | UInt_t icTS = 2; // cTS stands for cosThetaStar | |
42 | UInt_t iptPi= 3; | |
43 | UInt_t iptK = 4; | |
44 | UInt_t icT = 5; | |
45 | ||
46 | // Read the container from file | |
47 | TFile *file = new TFile("output.root"); | |
48 | AliCFContainer *data = (AliCFContainer*) (file->Get("container")); | |
49 | ||
50 | // Make some 1 & 2-D projections.. | |
51 | // MC level | |
52 | TCanvas *cmc1 = new TCanvas("cmc1","The MC distributions",0,800,900,1200); | |
53 | TCanvas *cmc2 = new TCanvas("cmc2","The MC distributions",0,800,900,1200); | |
54 | TCanvas *cmcpt = new TCanvas("cmcpt","pt distribution from MC",50,50,550,550); | |
55 | TCanvas *cmcy = new TCanvas("cmcy","y distribution from MC",50,50,550,550); | |
56 | TCanvas *cmccTS = new TCanvas("cmcTS","cosThetaStar distribution from MC",50,50,550,550); // cTS stands for cosThetaStar | |
57 | TCanvas *cmcptPi = new TCanvas("cmcptPi","pt_pi distribution from MC",50,50,550,550); | |
58 | TCanvas *cmcptK = new TCanvas("cmcptK","pt_K distribution from MC",50,50,550,550); | |
59 | TCanvas *cmccT = new TCanvas("cmccT","cT distribution from MC",50,50,550,550); | |
60 | ||
61 | // Reco-aod level | |
62 | TCanvas *cpt = new TCanvas("cpt","pt distribution from reco aod",50,50,550,550); | |
63 | TCanvas *cy = new TCanvas("cy","y distribution from reco aod",50,50,550,550); | |
64 | TCanvas *ccTS = new TCanvas("cTS","cosThetaStar distribution from reco aod",50,50,550,550); | |
65 | TCanvas *cptPi = new TCanvas("cptPi","pt_pi distribution from reco aod",50,50,550,550); | |
66 | TCanvas *cptK = new TCanvas("cptK","pt_K distribution from reco aod",50,50,550,550); | |
67 | TCanvas *ccT = new TCanvas("ccT","cT distribution from reco aod",50,50,550,550); | |
68 | ||
69 | // some 2D distributions in pt and y | |
70 | TCanvas *cGen2d = new TCanvas("cGen2d","2D distribution from MC ",50,50,550,550); | |
71 | TCanvas *cRec2d = new TCanvas("cRec2d","2D distribution from reco aod",50,50,550,550); | |
72 | ||
73 | // 2D plots | |
74 | TH2D *hMCpty2d = data->ShowProjection(ipt, iy, stepGen); | |
75 | hMCpty2d->SetLineColor(2); | |
76 | hMCpty2d->SetLineWidth(3); | |
77 | hMCpty2d->SetMarkerColor(2); | |
78 | hMCpty2d->SetMarkerStyle(20); | |
79 | hMCpty2d->GetXaxis()->SetTitleOffset(1.2); | |
80 | hMCpty2d->GetYaxis()->SetTitleOffset(1.5); | |
81 | hMCpty2d->GetXaxis()->SetTitle("p_{T} (GeV/c), MC data"); | |
82 | hMCpty2d->GetYaxis()->SetTitle("y, MC data"); | |
83 | hMCpty2d->Draw("text"); | |
84 | cGen2d->cd(); | |
85 | cGen2d->SetLeftMargin(0.15); | |
86 | cGen2d->SetRightMargin(0.05); | |
87 | cGen2d->Update(); | |
88 | ||
89 | TH2D *hRECpty2d = data->ShowProjection(ipt, iy, stepRec); | |
90 | hRECpty2d->Sumw2(); | |
91 | hRECpty2d->SetLineColor(4); | |
92 | hRECpty2d->SetLineWidth(3); | |
93 | hRECpty2d->SetMarkerColor(4); | |
94 | hRECpty2d->SetMarkerStyle(20); | |
95 | hRECpty2d->GetXaxis()->SetTitleOffset(1.2); | |
96 | hRECpty2d->GetYaxis()->SetTitleOffset(1.5); | |
97 | hRECpty2d->GetXaxis()->SetTitle("p_{T} (GeV/c), AOD"); | |
98 | hRECpty2d->GetYaxis()->SetTitle("y, AOD"); | |
99 | hRECpty2d->Draw("text"); | |
100 | cRec2d->cd(); | |
101 | cRec2d->SetLeftMargin(0.15); | |
102 | cRec2d->SetRightMargin(0.05); | |
103 | cRec2d->Update(); | |
104 | ||
105 | // MC + REC 1D plots | |
106 | // pt, y, cosThetaStar | |
107 | cmc1->Divide(2,3); | |
108 | ||
109 | cmc1->cd(1); | |
110 | TH1D *hMCpt1D = data->ShowProjection(ipt, stepGen); | |
111 | Double_t maxpt = hMCpt1D->GetMaximum(); | |
112 | hMCpt1D->GetYaxis()->SetRangeUser(0,maxpt*1.2); | |
113 | hMCpt1D->Sumw2(); | |
114 | hMCpt1D->SetMinimum(0.01); | |
115 | hMCpt1D->SetLineColor(2); | |
116 | hMCpt1D->SetLineWidth(3); | |
117 | hMCpt1D->SetMarkerColor(2); | |
118 | hMCpt1D->SetFillColor(2); | |
119 | hMCpt1D->SetFillStyle(3005); | |
120 | hMCpt1D->SetMarkerStyle(20); | |
121 | hMCpt1D->GetXaxis()->SetTitleOffset(1.2); | |
122 | hMCpt1D->GetXaxis()->SetTitle("p_{T} (GeV/c), MC data"); | |
123 | hMCpt1D->Draw("hist"); | |
124 | cmcpt->cd(); | |
125 | cmcpt->SetLeftMargin(0.15); | |
126 | cmcpt->SetRightMargin(0.05); | |
127 | hMCpt1D->Draw("hist"); | |
128 | hMCpt1D->Draw("err same"); | |
129 | cmcpt->Update(); | |
130 | ||
131 | cmc1->cd(2); | |
132 | TH1D *hRECpt1D = data->ShowProjection(ipt, stepRec); | |
133 | hRECpt1D->GetYaxis()->SetRangeUser(0,maxpt*1.2); | |
134 | hRECpt1D->SetLineColor(4); | |
135 | hRECpt1D->SetLineWidth(3); | |
136 | hRECpt1D->SetMarkerColor(4); | |
137 | hRECpt1D->SetFillColor(4); | |
138 | hRECpt1D->SetFillStyle(3004); | |
139 | hRECpt1D->SetMarkerStyle(20); | |
140 | hRECpt1D->GetXaxis()->SetTitleOffset(1.2); | |
141 | hRECpt1D->Sumw2(); | |
142 | hRECpt1D->SetMinimum(0.01); | |
143 | hRECpt1D->GetXaxis()->SetTitle("p_{T} (GeV/c), AOD"); | |
144 | hRECpt1D->Draw("hist"); | |
145 | cpt->cd(); | |
146 | cpt->SetLeftMargin(0.15); | |
147 | cpt->SetRightMargin(0.05); | |
148 | hRECpt1D->Draw("hist"); | |
149 | hRECpt1D->Draw("err same"); | |
150 | cpt->Update(); | |
151 | ||
152 | cmc1->cd(3); | |
153 | TH1D *hMCy1D = data->ShowProjection(iy, stepGen); | |
154 | Double_t maxy = hMCy1D->GetMaximum(); | |
155 | hMCy1D->GetYaxis()->SetRangeUser(0,maxy*1.2); | |
156 | hMCy1D->SetLineColor(2); | |
157 | hMCy1D->SetLineWidth(3); | |
158 | hMCy1D->SetMarkerColor(2); | |
159 | hMCy1D->SetFillColor(2); | |
160 | hMCy1D->SetFillStyle(3005); | |
161 | hMCy1D->SetMarkerStyle(20); | |
162 | hMCy1D->GetXaxis()->SetTitleOffset(1.2); | |
163 | hMCy1D->Sumw2(); | |
164 | hMCy1D->SetMinimum(0.01); | |
165 | hMCy1D->GetXaxis()->SetTitle("y, MC data"); | |
166 | hMCy1D->Draw("hist"); | |
167 | cmcy->cd(); | |
168 | cmcy->SetLeftMargin(0.15); | |
169 | cmcy->SetRightMargin(0.05); | |
170 | hMCy1D->Draw("hist"); | |
171 | hMCy1D->Draw("err same"); | |
172 | cmcy->Update(); | |
173 | ||
174 | cmc1->cd(4); | |
175 | TH1D *hRECy1D = data->ShowProjection(iy, stepRec); | |
176 | hRECy1D->GetYaxis()->SetRangeUser(0,maxy*1.2); | |
177 | hRECy1D->SetLineColor(4); | |
178 | hRECy1D->SetLineWidth(3); | |
179 | hRECy1D->SetMarkerColor(4); | |
180 | hRECy1D->SetFillColor(4); | |
181 | hRECy1D->SetFillStyle(3004); | |
182 | hRECy1D->SetMarkerStyle(20); | |
183 | hRECy1D->GetXaxis()->SetTitleOffset(1.2); | |
184 | hRECy1D->Sumw2(); | |
185 | hRECy1D->SetMinimum(0.01); | |
186 | hRECy1D->Draw("hist"); | |
187 | cy->cd(); | |
188 | cy->SetLeftMargin(0.15); | |
189 | cy->SetRightMargin(0.05); | |
190 | hRECy1D->GetXaxis()->SetTitle("y, AOD"); | |
191 | hRECy1D->Draw("hist"); | |
192 | hRECy1D->Draw("err same"); | |
193 | cy->Update(); | |
194 | ||
195 | cmc1->cd(5); | |
196 | TH1D *hMCcTS1D = data->ShowProjection(icTS, stepGen); | |
197 | Double_t maxcTS = hMCcTS1D->GetMaximum(); | |
198 | hMCcTS1D->GetYaxis()->SetRangeUser(0,maxcTS*1.2); | |
199 | hMCcTS1D->SetLineColor(2); | |
200 | hMCcTS1D->SetLineWidth(3); | |
201 | hMCcTS1D->SetMarkerColor(2); | |
202 | hMCcTS1D->SetFillColor(2); | |
203 | hMCcTS1D->SetFillStyle(3005); | |
204 | hMCcTS1D->SetMarkerStyle(20); | |
205 | hMCcTS1D->GetXaxis()->SetTitleOffset(1.2); | |
206 | hMCcTS1D->Sumw2(); | |
207 | hMCcTS1D->SetMinimum(0.01); | |
208 | hMCcTS1D->GetXaxis()->SetTitle("cosThetaStar, MC data"); | |
209 | hMCcTS1D->Draw("hist"); | |
210 | cmccTS->cd(); | |
211 | cmccTS->SetLeftMargin(0.15); | |
212 | cmccTS->SetRightMargin(0.05); | |
213 | hMCcTS1D->Draw("hist"); | |
214 | hMCcTS1D->Draw("err same"); | |
215 | cmccTS->Update(); | |
216 | ||
217 | cmc1->cd(6); | |
218 | TH1D *hRECcTS1D = data->ShowProjection(icTS, stepRec); | |
219 | hRECcTS1D->GetYaxis()->SetRangeUser(0,maxcTS*1.2); | |
220 | hRECcTS1D->SetLineColor(4); | |
221 | hRECcTS1D->SetLineWidth(3); | |
222 | hRECcTS1D->SetMarkerColor(4); | |
223 | hRECcTS1D->SetFillColor(4); | |
224 | hRECcTS1D->SetFillStyle(3004); | |
225 | hRECcTS1D->SetMarkerStyle(20); | |
226 | hRECcTS1D->GetXaxis()->SetTitleOffset(1.2); | |
227 | hRECcTS1D->Sumw2(); | |
228 | hRECcTS1D->SetMinimum(0.01); | |
229 | hRECcTS1D->Draw("hist"); | |
230 | ccTS->cd(); | |
231 | ccTS->SetLeftMargin(0.15); | |
232 | ccTS->SetRightMargin(0.05); | |
233 | hRECcTS1D->GetXaxis()->SetTitle("cosThetaStar, AOD"); | |
234 | hRECcTS1D->Draw("hist"); | |
235 | hRECcTS1D->Draw("err same"); | |
236 | ccTS->Update(); | |
237 | ||
238 | // ptPi, ptK, cT | |
239 | cmc2->Divide(2,3); | |
240 | ||
241 | cmc2->cd(1); | |
242 | TH1D *hMCptPi1D = data->ShowProjection(iptPi, stepGen); | |
243 | Double_t maxptPi = hMCptPi1D->GetMaximum(); | |
244 | hMCptPi1D->GetYaxis()->SetRangeUser(0,maxptPi*1.2); | |
245 | hMCptPi1D->Sumw2(); | |
246 | hMCptPi1D->SetMinimum(0.01); | |
247 | hMCptPi1D->SetLineColor(2); | |
248 | hMCptPi1D->SetLineWidth(3); | |
249 | hMCptPi1D->SetMarkerColor(2); | |
250 | hMCptPi1D->SetFillColor(2); | |
251 | hMCptPi1D->SetFillStyle(3005); | |
252 | hMCptPi1D->SetMarkerStyle(20); | |
253 | hMCptPi1D->GetXaxis()->SetTitleOffset(1.2); | |
254 | hMCptPi1D->GetXaxis()->SetTitle("p_{T, #pi} (GeV/c), MC data"); | |
255 | hMCptPi1D->Draw("hist"); | |
256 | cmcptPi->cd(); | |
257 | cmcptPi->SetLeftMargin(0.15); | |
258 | cmcptPi->SetRightMargin(0.05); | |
259 | hMCptPi1D->Draw("hist"); | |
260 | hMCptPi1D->Draw("err same"); | |
261 | cmcptPi->Update(); | |
262 | ||
263 | cmc2->cd(2); | |
264 | TH1D *hRECptPi1D = data->ShowProjection(iptPi, stepRec); | |
265 | hRECptPi1D->GetYaxis()->SetRangeUser(0,maxptPi*1.2); | |
266 | hRECptPi1D->SetLineColor(4); | |
267 | hRECptPi1D->SetLineWidth(3); | |
268 | hRECptPi1D->SetMarkerColor(4); | |
269 | hRECptPi1D->SetFillColor(4); | |
270 | hRECptPi1D->SetFillStyle(3004); | |
271 | hRECptPi1D->SetMarkerStyle(20); | |
272 | hRECptPi1D->GetXaxis()->SetTitleOffset(1.2); | |
273 | hRECptPi1D->Sumw2(); | |
274 | hRECptPi1D->SetMinimum(0.01); | |
275 | hRECptPi1D->GetXaxis()->SetTitle("p_{T, #pi} (GeV/c), AOD"); | |
276 | hRECptPi1D->Draw("hist"); | |
277 | cptPi->cd(); | |
278 | cptPi->SetLeftMargin(0.15); | |
279 | cptPi->SetRightMargin(0.05); | |
280 | hRECptPi1D->Draw("hist"); | |
281 | hRECptPi1D->Draw("err same"); | |
282 | cptPi->Update(); | |
283 | ||
284 | cmc2->cd(3); | |
285 | TH1D *hMCptK1D = data->ShowProjection(iptK, stepGen); | |
286 | Double_t maxptK = hMCptK1D->GetMaximum(); | |
287 | hMCptK1D->GetYaxis()->SetRangeUser(0,maxptK*1.2); | |
288 | hMCptK1D->SetLineColor(2); | |
289 | hMCptK1D->SetLineWidth(3); | |
290 | hMCptK1D->SetMarkerColor(2); | |
291 | hMCptK1D->SetFillColor(2); | |
292 | hMCptK1D->SetFillStyle(3005); | |
293 | hMCptK1D->SetMarkerStyle(20); | |
294 | hMCptK1D->GetXaxis()->SetTitleOffset(1.2); | |
295 | hMCptK1D->Sumw2(); | |
296 | hMCptK1D->SetMinimum(0.01); | |
297 | hMCptK1D->GetXaxis()->SetTitle("p_{T, K} (GeV/c), MC data"); | |
298 | hMCptK1D->Draw("hist"); | |
299 | cmcptK->cd(); | |
300 | cmcptK->SetLeftMargin(0.15); | |
301 | cmcptK->SetRightMargin(0.05); | |
302 | hMCptK1D->Draw("hist"); | |
303 | hMCptK1D->Draw("err same"); | |
304 | cmcptK->Update(); | |
305 | ||
306 | cmc2->cd(4); | |
307 | TH1D *hRECptK1D = data->ShowProjection(iptK, stepRec); | |
308 | hRECptK1D->GetYaxis()->SetRangeUser(0,maxptK*1.2); | |
309 | hRECptK1D->SetLineColor(4); | |
310 | hRECptK1D->SetLineWidth(3); | |
311 | hRECptK1D->SetMarkerColor(4); | |
312 | hRECptK1D->SetFillColor(4); | |
313 | hRECptK1D->SetFillStyle(3004); | |
314 | hRECptK1D->SetMarkerStyle(20); | |
315 | hRECptK1D->GetXaxis()->SetTitleOffset(1.2); | |
316 | hRECptK1D->Sumw2(); | |
317 | hRECptK1D->SetMinimum(0.01); | |
318 | hRECptK1D->Draw("hist"); | |
319 | cptK->cd(); | |
320 | cptK->SetLeftMargin(0.15); | |
321 | cptK->SetRightMargin(0.05); | |
322 | hRECptK1D->GetXaxis()->SetTitle("p_{T, K} (GeV/c), AOD"); | |
323 | hRECptK1D->Draw("hist"); | |
324 | hRECptK1D->Draw("err same"); | |
325 | cptK->Update(); | |
326 | ||
327 | cmc2->cd(5); | |
328 | TH1D *hMCcT1D = data->ShowProjection(icT, stepGen); | |
329 | Double_t maxcT = hMCcT1D->GetMaximum(); | |
330 | hMCcT1D->GetYaxis()->SetRangeUser(0,maxcT*1.2); | |
331 | hMCcT1D->SetLineColor(2); | |
332 | hMCcT1D->SetLineWidth(3); | |
333 | hMCcT1D->SetMarkerColor(2); | |
334 | hMCcT1D->SetFillColor(2); | |
335 | hMCcT1D->SetFillStyle(3005); | |
336 | hMCcT1D->SetMarkerStyle(20); | |
337 | hMCcT1D->GetXaxis()->SetTitleOffset(1.2); | |
338 | hMCcT1D->Sumw2(); | |
339 | hMCcT1D->SetMinimum(0.01); | |
340 | hMCcT1D->GetXaxis()->SetTitle("ct (#mum), MC data"); | |
341 | hMCcT1D->Draw("hist"); | |
342 | cmccT->cd(); | |
343 | cmccT->SetLeftMargin(0.15); | |
344 | cmccT->SetRightMargin(0.05); | |
345 | hMCcT1D->Draw("hist"); | |
346 | hMCcT1D->Draw("err same"); | |
347 | cmccT->Update(); | |
348 | ||
349 | cmc2->cd(6); | |
350 | TH1D *hRECcT1D = data->ShowProjection(icT, stepRec); | |
351 | hRECcT1D->GetYaxis()->SetRangeUser(0,maxcT*1.2); | |
352 | hRECcT1D->SetLineColor(4); | |
353 | hRECcT1D->SetLineWidth(3); | |
354 | hRECcT1D->SetMarkerColor(4); | |
355 | hRECcT1D->SetFillColor(4); | |
356 | hRECcT1D->SetFillStyle(3004); | |
357 | hRECcT1D->SetMarkerStyle(20); | |
358 | hRECcT1D->GetXaxis()->SetTitleOffset(1.2); | |
359 | hRECcT1D->Sumw2(); | |
360 | hRECcT1D->SetMinimum(0.01); | |
361 | hRECcT1D->Draw("hist"); | |
362 | ccT->cd(); | |
363 | ccT->SetLeftMargin(0.15); | |
364 | ccT->SetRightMargin(0.05); | |
365 | hRECcT1D->GetXaxis()->SetTitle("c#t (#mum), AOD"); | |
366 | hRECcT1D->Draw("hist"); | |
367 | hRECcT1D->Draw("err same"); | |
368 | ccT->Update(); | |
369 | ||
370 | /* | |
371 | // printing on eps files | |
372 | cmc1->Print("Plots/dataMC_pt_y_cTS.gif"); | |
373 | cmc2->Print("Plots/dataMC_ptPi_ptK_cT.gif"); | |
374 | cmcpt->Print("Plots/pt_Gen.eps"); | |
375 | cmcy->Print("Plots/y_Gen.eps"); | |
376 | cmccTS->Print("Plots/cTS_Gen.eps"); | |
377 | cmcptPi->Print("Plots/ptPi_Gen.eps"); | |
378 | cmcptK->Print("Plots/ptK_Gen.eps"); | |
379 | cmccT->Print("Plots/cT_Gen.eps"); | |
380 | cpt->Print("Plots/pt_Rec.eps"); | |
381 | cy->Print("Plots/y_Rec.eps"); | |
382 | ccTS->Print("Plots/cTS_Rec.eps"); | |
383 | cptPi->Print("Plots/ptPi_Rec.eps"); | |
384 | cptK->Print("Plots/ptK_Rec.eps"); | |
385 | ccT->Print("Plots/cT_Rec.eps"); | |
386 | cGen2d->Print("Plots/pt_y_Gen_2D.eps"); | |
387 | cRec2d->Print("Plots/pt_y_Rec_2D.eps"); | |
388 | ||
389 | // printing on gif files | |
390 | cmc1->Print("Plots/dataMC_pt_y_cTS.gif"); | |
391 | cmc2->Print("Plots/dataMC_ptPi_ptK_cT.gif"); | |
392 | cmcpt->Print("Plots/pt_Gen.eps"); | |
393 | cmcy->Print("Plots/y_Gen.eps"); | |
394 | cmccTS->Print("Plots/cTS_Gen.eps"); | |
395 | cmcptPi->Print("Plots/ptPi_Gen.eps"); | |
396 | cmcptK->Print("Plots/ptK_Gen.eps"); | |
397 | cmccT->Print("Plots/cT_Gen.eps"); | |
398 | cpt->Print("Plots/pt_Rec.eps"); | |
399 | cy->Print("Plots/y_Rec.eps"); | |
400 | ccTS->Print("Plots/cTS_Rec.eps"); | |
401 | cptPi->Print("Plots/ptPi_Rec.eps"); | |
402 | cptK->Print("Plots/ptK_Rec.eps"); | |
403 | ccT->Print("Plots/cT_Rec.eps"); | |
404 | cGen2d->Print("Plots/pt_y_Gen_2D.eps"); | |
405 | cRec2d->Print("Plots/pt_y_Rec_2D.eps"); | |
406 | */ | |
407 | ||
408 | //construct the efficiency grid from the data container | |
409 | AliCFEffGrid *eff = new AliCFEffGrid("eff"," The efficiency",*data); | |
410 | eff->CalculateEfficiency(stepRec,stepGen); //eff= step1/step0 | |
411 | ||
412 | //The efficiency along the variables, and some 2-D projections | |
413 | TCanvas *ceff =new TCanvas("ceff"," Efficiency",0,0,1600,1200); | |
414 | ceff->Divide(3,2); | |
415 | TCanvas *ceff2D =new TCanvas("ceff2D"," Efficiency for pt and y",50,50,550,550); | |
416 | TCanvas *ceffpt = new TCanvas("ceffpt","Efficiency vs pt",50,50,550,550); | |
417 | TCanvas *ceffy = new TCanvas("ceffy","Efficiency vs y",50,50,550,550); | |
418 | TCanvas *ceffcTS = new TCanvas("ceffcTS","Efficiency vs cosThetaStar",50,50,550,550); | |
419 | TCanvas *ceffptPi = new TCanvas("ceffptPi","Efficiency vs ptPi",50,50,550,550); | |
420 | TCanvas *ceffptK = new TCanvas("ceffptK","Efficiency vs ptK",50,50,550,550); | |
421 | TCanvas *ceffcT = new TCanvas("ceffcT","Efficiency vs cT",50,50,550,550); | |
422 | TCanvas *ceff2Dtext = new TCanvas("ceff2Dtext","Text plot for efficiency in pt and y",50,50,550,550); | |
423 | ||
424 | ceff->cd(1); | |
425 | TH1D *hpteffCF = eff->Project(ipt); //the efficiency vs pt | |
426 | hpteffCF->Sumw2(); | |
427 | //hpteffCF->SetMinimum(0.01); | |
428 | hpteffCF->SetLineColor(8); | |
429 | hpteffCF->SetLineWidth(3); | |
430 | hpteffCF->SetMarkerColor(8); | |
431 | hpteffCF->SetMarkerStyle(20); | |
432 | hpteffCF->GetXaxis()->SetTitleOffset(1.2); | |
433 | hpteffCF->GetYaxis()->SetTitleOffset(1.5); | |
434 | hpteffCF->Draw("hist"); | |
435 | ceffpt->cd(); | |
436 | ceffpt->SetLeftMargin(0.15); | |
437 | ceffpt->SetRightMargin(0.05); | |
438 | hpteffCF->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
439 | hpteffCF->GetYaxis()->SetTitle("Efficiency"); | |
440 | hpteffCF->Draw("hist"); | |
441 | hpteffCF->Draw("err same"); | |
442 | ||
443 | ceff->cd(2); | |
444 | TH1D *hyeffCF = eff->Project(iy); //the efficiency vs y | |
445 | hyeffCF->Sumw2(); | |
446 | //hyeffCF->SetMinimum(0.01); | |
447 | hyeffCF->SetLineColor(8); | |
448 | hyeffCF->SetLineWidth(3); | |
449 | hyeffCF->SetMarkerColor(8); | |
450 | hyeffCF->SetMarkerStyle(20); | |
451 | hyeffCF->GetXaxis()->SetTitleOffset(1.2); | |
452 | hyeffCF->GetYaxis()->SetTitleOffset(1.5); | |
453 | hyeffCF->Draw("hist"); | |
454 | ceffy->cd(); | |
455 | ceffy->SetLeftMargin(0.15); | |
456 | ceffy->SetRightMargin(0.05); | |
457 | hyeffCF->GetXaxis()->SetTitle("y"); | |
458 | hyeffCF->GetYaxis()->SetTitle("Efficiency"); | |
459 | hyeffCF->Draw("hist"); | |
460 | hyeffCF->Draw("err same"); | |
461 | ||
462 | ceff->cd(3); | |
463 | TH1D *hcTSeffCF = eff->Project(icTS); //the efficiency vs cosThetaStar | |
464 | hcTSeffCF->Sumw2(); | |
465 | //hcTSeffCF->SetMinimum(0.01); | |
466 | hcTSeffCF->SetLineColor(8); | |
467 | hcTSeffCF->SetLineWidth(3); | |
468 | hcTSeffCF->SetMarkerColor(8); | |
469 | hcTSeffCF->SetMarkerStyle(20); | |
470 | hcTSeffCF->GetXaxis()->SetTitleOffset(1.2); | |
471 | hcTSeffCF->GetYaxis()->SetTitleOffset(1.5); | |
472 | hcTSeffCF->Draw("hist"); | |
473 | ceffcTS->cd(); | |
474 | ceffcTS->SetLeftMargin(0.15); | |
475 | ceffcTS->SetRightMargin(0.05); | |
476 | hcTSeffCF->GetXaxis()->SetTitle("cosThetaStar"); | |
477 | hcTSeffCF->GetYaxis()->SetTitle("Efficiency"); | |
478 | hcTSeffCF->Draw("hist"); | |
479 | hcTSeffCF->Draw("err same"); | |
480 | ||
481 | ceff->cd(4); | |
482 | TH1D *hptPieffCF = eff->Project(iptPi); //the efficiency vs ptPi | |
483 | hptPieffCF->Sumw2(); | |
484 | //hptPieffCF->SetMinimum(0.01); | |
485 | hptPieffCF->SetLineColor(8); | |
486 | hptPieffCF->SetLineWidth(3); | |
487 | hptPieffCF->SetMarkerColor(8); | |
488 | hptPieffCF->SetMarkerStyle(20); | |
489 | hptPieffCF->GetXaxis()->SetTitleOffset(1.2); | |
490 | hptPieffCF->GetYaxis()->SetTitleOffset(1.5); | |
491 | hptPieffCF->Draw("hist"); | |
492 | ceffptPi->cd(); | |
493 | ceffptPi->SetLeftMargin(0.15); | |
494 | ceffptPi->SetRightMargin(0.05); | |
495 | hptPieffCF->GetXaxis()->SetTitle("p_{T, #pi} (GeV/c)"); | |
496 | hptPieffCF->GetYaxis()->SetTitle("Efficiency"); | |
497 | hptPieffCF->Draw("hist"); | |
498 | hptPieffCF->Draw("err same"); | |
499 | ||
500 | ceff->cd(5); | |
501 | TH1D *hptKeffCF = eff->Project(iptK); //the efficiency vs ptK | |
502 | hptKeffCF->Sumw2(); | |
503 | //hptKeffCF->SetMinimum(0.01); | |
504 | hptKeffCF->SetLineColor(8); | |
505 | hptKeffCF->SetLineWidth(3); | |
506 | hptKeffCF->SetMarkerColor(8); | |
507 | hptKeffCF->SetMarkerStyle(20); | |
508 | hptKeffCF->GetXaxis()->SetTitleOffset(1.2); | |
509 | hptKeffCF->GetYaxis()->SetTitleOffset(1.5); | |
510 | hptKeffCF->Draw("hist"); | |
511 | ceffptK->cd(); | |
512 | ceffptK->SetLeftMargin(0.15); | |
513 | ceffptK->SetRightMargin(0.05); | |
514 | hptKeffCF->GetXaxis()->SetTitle("p_{T, K} (GeV/c)"); | |
515 | hptKeffCF->GetYaxis()->SetTitle("Efficiency"); | |
516 | hptKeffCF->Draw("hist"); | |
517 | hptKeffCF->Draw("err same"); | |
518 | ||
519 | ceff->cd(6); | |
520 | TH1D *hcTeffCF = eff->Project(icT); //the efficiency vs cT | |
521 | hcTeffCF->Sumw2(); | |
522 | //hcTeffCF->SetMinimum(0.01); | |
523 | hcTeffCF->SetLineColor(8); | |
524 | hcTeffCF->SetLineWidth(3); | |
525 | hcTeffCF->SetMarkerColor(8); | |
526 | hcTeffCF->SetMarkerStyle(20); | |
527 | hcTeffCF->GetXaxis()->SetTitleOffset(1.2); | |
528 | hcTeffCF->GetYaxis()->SetTitleOffset(1.5); | |
529 | hcTeffCF->Draw("hist"); | |
530 | ceffcT->cd(); | |
531 | ceffcT->SetLeftMargin(0.15); | |
532 | ceffcT->SetRightMargin(0.05); | |
533 | hcTeffCF->GetXaxis()->SetTitle("c#t (#mum)"); | |
534 | hcTeffCF->GetYaxis()->SetTitle("Efficiency"); | |
535 | hcTeffCF->Draw("hist"); | |
536 | hcTeffCF->Draw("err same"); | |
537 | ||
538 | ceff2D->cd(); | |
539 | TH2D *hptyeffCF = eff->Project(ipt,iy); //look at the numerator | |
540 | //hptyeffCF->SetMinimum(0.01); | |
541 | hptyeffCF->SetMarkerColor(8); | |
542 | hptyeffCF->SetLineColor(8); | |
543 | hptyeffCF->SetMinimum(0.01); | |
544 | hptyeffCF->Draw("lego"); | |
545 | ceff2Dtext->cd(); | |
546 | hptyeffCF->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
547 | hptyeffCF->GetXaxis()->SetTitleOffset(1.2); | |
548 | hptyeffCF->GetYaxis()->SetTitle("y"); | |
549 | hptyeffCF->GetYaxis()->SetTitleOffset(1.2); | |
550 | hptyeffCF->Draw("text"); | |
551 | ||
552 | /* | |
553 | // printing eps files | |
554 | ceff->Print("Plots/efficiencies.eps"); | |
555 | ceffpt->Print("Plots/effpt.eps"); | |
556 | ceffy->Print("Plots/effy.eps"); | |
557 | ceffcTS->Print("Plots/effcTS.eps"); | |
558 | ceffptPi->Print("Plots/effptPi.eps"); | |
559 | ceffptK->Print("Plots/effptK.eps"); | |
560 | ceffcT->Print("Plots/effcT.eps"); | |
561 | ceff2D->Print("Plots/eff2D_pt_y.eps"); | |
562 | ceff2Dtext->Print("Plots/eff2d_text_pt_y.eps"); | |
563 | ||
564 | // printing gif files | |
565 | ceff->Print("Plots/efficiencies.gif"); | |
566 | ceffpt->Print("Plots/effpt.gif"); | |
567 | ceffy->Print("Plots/effy.gif"); | |
568 | ceffcTS->Print("Plots/effcTS.gif"); | |
569 | ceffptPi->Print("Plots/effptPi.gif"); | |
570 | ceffptK->Print("Plots/effptK.gif"); | |
571 | ceffcT->Print("Plots/effcT.gif"); | |
572 | ceff2D->Print("Plots/eff2D_pt_y.gif"); | |
573 | ceff2Dtext->Print("Plots/eff2d_text_pt_y.gif"); | |
574 | */ | |
575 | ||
576 | // applying efficiencies - using projections, not the ApplyEffCorrection method | |
577 | ||
578 | TCanvas *cmultpiplypt = new TCanvas("cmultiplypt","Reco From Eff in pt distribution",50,50,550,550); | |
579 | TCanvas *cmultpiplyy = new TCanvas("cmultiplyy","Reco From Eff in y distribution",50,50,550,550); | |
580 | TCanvas *cmultpiplycTS = new TCanvas("cmultiplycTS","Reco From Eff in cTS distribution",50,50,550,550); | |
581 | TCanvas *cmultpiplyptPi = new TCanvas("cmultiplyptPi","Reco From Eff in ptPi distribution",50,50,550,550); | |
582 | TCanvas *cmultpiplyptK = new TCanvas("cmultiplyptK","Reco From Eff in ptK distribution",50,50,550,550); | |
583 | TCanvas *cmultpiplycT = new TCanvas("cmultiplycT","Reco From Eff in cT distribution",50,50,550,550); | |
584 | ||
585 | TH1D *hmultiplypt = new TH1D("hmultiplypt","hmultiplypt",13,0,10); | |
586 | cout << " bin for histo MC = " << hMCpt1D->GetNbinsX() << " while for RECO histo = " << hRECpt1D->GetNbinsX() << " while for efficiency histo = " << hpteffCF->GetNbinsX() << endl; | |
587 | ||
588 | const Double_t ptmin_0_4 = 0.0 ; | |
589 | const Double_t ptmax_0_4 = 4.0 ; | |
590 | const Double_t ptmin_4_8 = 4.0 ; | |
591 | const Double_t ptmax_4_8 = 8.0 ; | |
592 | const Double_t ptmin_8_10 = 8.0 ; | |
593 | const Double_t ptmax_8_10 = 10.0 ; | |
594 | const Int_t nbin0_0_4 = 8 ; //bins in pt | |
595 | const Int_t nbin0_4_8 = 4 ; //bins in pt | |
596 | const Int_t nbin0_8_10 = 1 ; //bins in pt | |
597 | const Int_t nbins = nbin0_0_4 + nbin0_4_8 + nbin0_8_10; | |
598 | Double_t binLim0[nbins+1]; | |
599 | for(Int_t i=0; i<=nbin0_0_4; i++) binLim0[i]=(Double_t)ptmin_0_4 + (ptmax_0_4-ptmin_0_4)/nbin0_0_4*(Double_t)i ; | |
600 | if (binLim0[nbin0_0_4] != ptmin_4_8) { | |
601 | printf("Calculated bin lim for pt - 1st range - differs from expected!\n"); | |
602 | } | |
603 | for(Int_t i=0; i<=nbin0_4_8; i++) binLim0[i+nbin0_0_4]=(Double_t)ptmin_4_8 + (ptmax_4_8-ptmin_4_8)/nbin0_4_8*(Double_t)i ; | |
604 | if (binLim0[nbin0_0_4+nbin0_4_8] != ptmin_8_10) { | |
605 | printf("Calculated bin lim for pt - 2nd range - differs from expected!\n"); | |
606 | } | |
607 | for(Int_t i=0; i<=nbin0_8_10; i++) binLim0[i+nbin0_0_4+nbin0_4_8]=(Double_t)ptmin_8_10 + (ptmax_8_10-ptmin_8_10)/nbin0_8_10*(Double_t)i ; | |
608 | ||
609 | hmultiplypt->SetBins(nbins,binLim0); | |
610 | hmultiplypt->Divide(hRECpt1D,hpteffCF,1,1,"b"); | |
611 | hmultiplypt->SetMinimum(0); | |
612 | hmultiplypt->SetMaximum(hMCpt1D->GetMaximum()); | |
613 | hmultiplypt->SetLineColor(38); | |
614 | hmultiplypt->SetLineWidth(3); | |
615 | hmultiplypt->SetMarkerColor(38); | |
616 | hmultiplypt->SetMarkerStyle(20); | |
617 | hmultiplypt->GetXaxis()->SetTitleOffset(1.2); | |
618 | hmultiplypt->GetYaxis()->SetTitleOffset(1.5); | |
619 | hmultiplypt->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
620 | cmultiplypt->SetLeftMargin(0.15); | |
621 | cmultiplypt->SetRightMargin(0.05); | |
622 | hmultiplypt->SetFillStyle(3004); | |
623 | hmultiplypt->SetFillColor(38); | |
624 | cmultiplypt->cd(); | |
625 | hmultiplypt->Draw("hist err"); | |
626 | hMCpt1D->Draw("hist same err"); | |
627 | ||
628 | TH1D *hmultiplyy = new TH1D("hmultiplyy","hmultiplyy",8,-2,2); | |
629 | hmultiplyy->Divide(hRECy1D,hyeffCF,1,1,"b"); | |
630 | hmultiplyy->SetMinimum(0); | |
631 | hmultiplyy->SetMaximum(hMCy1D->GetMaximum()); | |
632 | hmultiplyy->SetLineColor(38); | |
633 | hmultiplyy->SetLineWidth(3); | |
634 | hmultiplyy->SetMarkerColor(38); | |
635 | hmultiplyy->SetMarkerStyle(20); | |
636 | hmultiplyy->GetXaxis()->SetTitleOffset(1.2); | |
637 | hmultiplyy->GetXaxis()->SetTitle("y"); | |
638 | hmultiplyy->GetYaxis()->SetTitleOffset(1.5); | |
639 | cmultiplyy->SetLeftMargin(0.15); | |
640 | cmultiplyy->SetRightMargin(0.05); | |
641 | cmultiplyy->cd(); | |
642 | hmultiplyy->SetFillStyle(3004); | |
643 | hmultiplyy->SetFillColor(38); | |
644 | hmultiplyy->Draw("hist err"); | |
645 | hMCy1D->Draw("hist same err"); | |
646 | ||
647 | TH1D *hmultiplycTS = new TH1D("hmultiplycTS","hmultiplycTS",8,-1,1); | |
648 | hmultiplycTS->Divide(hRECcTS1D,hcTSeffCF,1,1,"b"); | |
649 | hmultiplycTS->SetMinimum(0); | |
650 | hmultiplycTS->SetMaximum(hMCcTS1D->GetMaximum()); | |
651 | hmultiplycTS->SetLineColor(38); | |
652 | hmultiplycTS->SetLineWidth(3); | |
653 | hmultiplycTS->SetMarkerColor(38); | |
654 | hmultiplycTS->SetMarkerStyle(20); | |
655 | hmultiplycTS->GetXaxis()->SetTitleOffset(1.2); | |
656 | hmultiplycTS->GetXaxis()->SetTitle("cosThetaStar"); | |
657 | hmultiplycTS->GetYaxis()->SetTitleOffset(1.5); | |
658 | cmultiplycTS->SetLeftMargin(0.15); | |
659 | cmultiplycTS->SetRightMargin(0.05); | |
660 | cmultiplycTS->cd(); | |
661 | hmultiplycTS->SetFillStyle(3004); | |
662 | hmultiplycTS->SetFillColor(38); | |
663 | hmultiplycTS->Draw("hist err"); | |
664 | hMCcTS1D->Draw("hist same err"); | |
665 | ||
666 | TH1D *hmultiplyptPi = new TH1D("hmultiplyptPi","hmultiplyptPi",13,0,10); | |
667 | hmultiplyptPi->SetBins(nbins,binLim0); | |
668 | hmultiplyptPi->Divide(hRECptPi1D,hptPieffCF,1,1,"b"); | |
669 | hmultiplyptPi->SetMinimum(0); | |
670 | hmultiplyptPi->SetMaximum(hMCptPi1D->GetMaximum()); | |
671 | hmultiplyptPi->SetLineColor(38); | |
672 | hmultiplyptPi->SetLineWidth(3); | |
673 | hmultiplyptPi->SetMarkerColor(38); | |
674 | hmultiplyptPi->SetMarkerStyle(20); | |
675 | hmultiplyptPi->GetXaxis()->SetTitleOffset(1.2); | |
676 | hmultiplyptPi->GetXaxis()->SetTitle("p_{T, #pi} (GeV/c)"); | |
677 | hmultiplyptPi->GetYaxis()->SetTitleOffset(1.5); | |
678 | cmultiplyptPi->SetLeftMargin(0.15); | |
679 | cmultiplyptPi->SetRightMargin(0.05); | |
680 | cmultiplyptPi->cd(); | |
681 | hmultiplyptPi->SetFillStyle(3004); | |
682 | hmultiplyptPi->SetFillColor(38); | |
683 | hmultiplyptPi->Draw("hist err"); | |
684 | hMCptPi1D->Draw("hist same err"); | |
685 | ||
686 | TH1D *hmultiplyptK = new TH1D("hmultiplyptK","hmultiplyptK",13,0,10); | |
687 | hmultiplyptK->SetBins(nbins,binLim0); | |
688 | hmultiplyptK->Divide(hRECptK1D,hptKeffCF,1,1,"b"); | |
689 | hmultiplyptK->SetMinimum(0); | |
690 | hmultiplyptK->SetMaximum(hMCptK1D->GetMaximum()); | |
691 | hmultiplyptK->SetLineColor(38); | |
692 | hmultiplyptK->SetLineWidth(3); | |
693 | hmultiplyptK->SetMarkerColor(38); | |
694 | hmultiplyptK->SetMarkerStyle(20); | |
695 | hmultiplyptK->GetXaxis()->SetTitleOffset(1.2); | |
696 | hmultiplyptK->GetXaxis()->SetTitle("p_{T, K} (GeV/c)"); | |
697 | hmultiplyptK->GetYaxis()->SetTitleOffset(1.5); | |
698 | cmultiplyptK->SetLeftMargin(0.15); | |
699 | cmultiplyptK->SetRightMargin(0.05); | |
700 | cmultiplyptK->cd(); | |
701 | hmultiplyptK->SetFillStyle(3004); | |
702 | hmultiplyptK->SetFillColor(38); | |
703 | hmultiplyptK->Draw("hist err"); | |
704 | hMCptK1D->Draw("hist same err"); | |
705 | ||
706 | TH1D *hmultiplycT = new TH1D("hmultiplycT","hmultiplycT",24,0,500); | |
707 | hmultiplycT->Divide(hRECcT1D,hcTeffCF,1,1,"b"); | |
708 | hmultiplycT->SetMinimum(0); | |
709 | hmultiplycT->SetMaximum(hMCcT1D->GetMaximum()); | |
710 | hmultiplycT->SetLineColor(38); | |
711 | hmultiplycT->SetLineWidth(3); | |
712 | hmultiplycT->SetMarkerColor(38); | |
713 | hmultiplycT->SetMarkerStyle(20); | |
714 | hmultiplycT->GetXaxis()->SetTitleOffset(1.2); | |
715 | hmultiplycT->GetXaxis()->SetTitle("c#t (#mum)"); | |
716 | hmultiplycT->GetYaxis()->SetTitleOffset(1.5); | |
717 | cmultiplycT->SetLeftMargin(0.15); | |
718 | cmultiplycT->SetRightMargin(0.05); | |
719 | cmultiplycT->cd(); | |
720 | hmultiplycT->SetFillStyle(3004); | |
721 | hmultiplycT->SetFillColor(38); | |
722 | hmultiplycT->Draw("hist err"); | |
723 | hMCcT1D->Draw("hist same err"); | |
724 | ||
725 | /* | |
726 | TFile* file_histo = new TFile("fileHisto_180004.root","RECREATE"); | |
727 | hMCpt1D->Write("hMCpt1D"); | |
728 | hRECpt1D->Write("hRECpt1D"); | |
729 | hMCy1D->Write("hMCy1D"); | |
730 | hRECy1D->Write("hRECy1D"); | |
731 | hMCcTS1D->Write("hMCcTS1D"); | |
732 | hRECcTS1D->Write("hRECcTS1D"); | |
733 | hMCptPi1D->Write("hMCptPi1D"); | |
734 | hRECptPi1D->Write("hRECptPi1D"); | |
735 | hMCptK1D->Write("hMCptK1D"); | |
736 | hRECptK1D->Write("hRECptK1D"); | |
737 | hMCcT1D->Write("hMCcT1D"); | |
738 | hRECcT1D->Write("hRECcT1D"); | |
739 | hpteffCF->Write("hpteffCF"); | |
740 | hyeffCF->Write("hyeffCF"); | |
741 | hcTSeffCF->Write("hcTSeffCF"); | |
742 | hptPieffCF->Write("hptPieffCF"); | |
743 | hptKeffCF->Write("hptKeffCF"); | |
744 | hcTeffCF->Write("hcTeffCF"); | |
745 | hmultiplypt->Write(""); | |
746 | hmultiplyy->Write(""); | |
747 | hmultiplycTS->Write(""); | |
748 | hmultiplyptPi->Write(""); | |
749 | hmultiplyptK->Write(""); | |
750 | hmultiplycT->Write(""); | |
751 | file_histo->Close(); | |
752 | */ | |
753 | ||
754 | Int_t nsliceVars = 5; | |
755 | Int_t sliceVars[5]; | |
756 | sliceVars[0] = 1; | |
757 | sliceVars[1] = 2; | |
758 | sliceVars[2] = 3; | |
759 | sliceVars[3] = 4; | |
760 | sliceVars[4] = 5; | |
761 | Double_t varMin[6] = {0.5, -2, -1, 0., 0., 0. }; | |
762 | Double_t varMax[6] = {1.5, 2, 1, 10., 10., 500.}; | |
763 | AliCFContainer* data_sliced = data->MakeSlice(nsliceVars, sliceVars, varMin, varMax); | |
764 | cout << " the container now has " << data_sliced->GetNVar() << " dimensions " << endl; | |
765 | ||
766 | } |