]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/macros/Train/TwoTrackQA/FemtoQAPlots.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / TwoTrackQA / FemtoQAPlots.C
CommitLineData
76ce4b5b 1void preparepad()
2{
3 gPad->SetFillColor(0);
4 gPad->SetFillStyle(4000);
5
6 gPad->SetTopMargin(0.02);
7 // gPad->SetRightMargin(0.02);
8}
9
10void preparehist(TH1D *hist)
11{
12 hist->SetMarkerSize(0.8);
13 hist->SetMarkerStyle(8);
14 hist->SetMarkerColor(2);
15}
16
17TH2D *plot2ddtpc(TH2D *numdtpc, TH2D *dendtpc, const char *suff)
18{
19 // Create a 2D CF vs minimum separation distance in the TPC
20
21
22
23 int nslices = numdtpc->GetNbinsY();
24 int nrange = numdtpc->GetNbinsX();
25 char hname[200];
26
27 sprintf(hname,"numdtpc%s",suff);
28 TH2D *nums = new TH2D(hname, ";q_{inv} [GeV/c];nominal TPC entrance sep - lower cut-off [cm]",
29 numdtpc->GetNbinsX(), numdtpc->GetXaxis()->GetXmin(), numdtpc->GetXaxis()->GetXmax(),
30 numdtpc->GetNbinsY(), numdtpc->GetYaxis()->GetXmin(), numdtpc->GetYaxis()->GetXmax());
31 sprintf(hname,"dendtpc%s",suff);
32 TH2D *dens = new TH2D(hname, ";q_{inv} [GeV/c];nominal TPC entrance sep - lower cut-off [cm]",
33 numdtpc->GetNbinsX(), numdtpc->GetXaxis()->GetXmin(), numdtpc->GetXaxis()->GetXmax(),
34 numdtpc->GetNbinsY(), numdtpc->GetYaxis()->GetXmin(), numdtpc->GetYaxis()->GetXmax());
35 sprintf(hname,"ratdtpc%s",suff);
36 TH2D *rats = new TH2D(hname, ";q_{inv} [GeV/c];nominal TPC entrance sep - lower cut-off [cm]",
37 numdtpc->GetNbinsX(), numdtpc->GetXaxis()->GetXmin(), numdtpc->GetXaxis()->GetXmax(),
38 numdtpc->GetNbinsY(), numdtpc->GetYaxis()->GetXmin(), numdtpc->GetYaxis()->GetXmax());
39
40 sprintf(hname,"chi2toone%s",suff);
41 TH1D *chi2toone = new TH1D(hname,";nominal TPC entrance sep - lower cut-off [cm];\\chi^2",
42 numdtpc->GetNbinsY(), numdtpc->GetYaxis()->GetXmin(), numdtpc->GetYaxis()->GetXmax());
43
44 char bufname[100];
45 for (int iter=0; iter<nslices; iter++) {
46 sprintf(bufname, "numbuf%i", iter);
47 TH1D *numbuf = numdtpc->ProjectionX(bufname, (iter+1), nslices, "e");
48 sprintf(bufname, "denbuf%i", iter);
49 TH1D *denbuf = dendtpc->ProjectionX(bufname, (iter+1), nslices, "e");
50
51 TH1D *ratbuf = new TH1D(*numbuf);
52 ratbuf->Divide(denbuf);
53 Double_t scale = ratbuf->Integral(nrange-9,nrange)/10.0;
54
55 if (scale > 0.0)
56 ratbuf->Scale(1.0/scale);
57
58 double chi2 = 0.0;
59 for (int ibin = 1; ibin<=ratbuf->GetNbinsX(); ibin++) {
60 rats->SetBinContent(ibin, iter+1, ratbuf->GetBinContent(ibin));
61 if (ratbuf->GetBinError(ibin) > 0.0) {
62 chi2 += (TMath::Power(ratbuf->GetBinContent(ibin)-1.0,2)/
63 TMath::Power(ratbuf->GetBinError(ibin),2));
64 }
65 }
66 chi2toone->SetBinContent(iter+1, chi2);
67 }
68
69 rats->GetXaxis()->SetTitleOffset(0.9);
70 rats->GetYaxis()->SetTitleOffset(0.95);
71
72 return rats;
73}
74
75TH2D * plot2dshare(TH2D *numshare, TH2D *denshare, const char *suff)
76{
77 // Create a 2D CF vs minimum separation distance in the TPC
78 int nrange = numshare->GetNbinsX();
79 char hname[200];
80
81 sprintf(hname,"numshare%s",suff);
82 TH2D *nums = new TH2D(hname, ";q_{inv} [GeV/c];fraction of shared hits - upper cut-off",
83 numshare->GetNbinsX(), numshare->GetXaxis()->GetXmin(), numshare->GetXaxis()->GetXmax(),
84 numshare->GetNbinsY(), numshare->GetYaxis()->GetXmin(), numshare->GetYaxis()->GetXmax());
85
86 sprintf(hname,"denshare%s",suff);
87 TH2D *dens = new TH2D(hname, ";q_{inv} [GeV/c];fraction of shared hits - upper cut-off",
88 numshare->GetNbinsX(), numshare->GetXaxis()->GetXmin(), numshare->GetXaxis()->GetXmax(),
89 numshare->GetNbinsY(), numshare->GetYaxis()->GetXmin(), numshare->GetYaxis()->GetXmax());
90
91 sprintf(hname,"ratshare%s",suff);
92 TH2D *rats = new TH2D(hname, ";q_{inv} [GeV/c];fraction of shared hits - upper cut-off",
93 numshare->GetNbinsX(), numshare->GetXaxis()->GetXmin(), numshare->GetXaxis()->GetXmax(),
94 numshare->GetNbinsY(), numshare->GetYaxis()->GetXmin(), numshare->GetYaxis()->GetXmax());
95
96 char bufname[100];
97 for (int iter=0; iter<numshare->GetNbinsY(); iter++) {
98 sprintf(bufname, "numbuf%i", iter);
99 TH1D *numbuf = numshare->ProjectionX(bufname, 1, iter+1, "e");
100 sprintf(bufname, "denbuf%i", iter);
101 TH1D *denbuf = denshare->ProjectionX(bufname, 1, iter+1, "e");
102
103 ratbuf = new TH1D(*numbuf);
104 ratbuf->Divide(denbuf);
105 Double_t scale = ratbuf->Integral(nrange-24,nrange)/25.0;
106 ratbuf->Scale(1.0/scale);
107
108 for (int ibin = 1; ibin<=ratbuf->GetNbinsX(); ibin++) {
109 rats->SetBinContent(ibin, iter+1, ratbuf->GetBinContent(ibin));
110 }
111 }
112
113 rats->GetXaxis()->SetTitleOffset(0.95);
114 rats->GetYaxis()->SetTitleOffset(0.9);
115
116 return rats;
117}
118
119TH2D *plot2dquality(TH2D *numqual, TH2D *denqual, const char *suff)
120{
121 // Create a 2D CF vs pair quality
122 int nrange = numqual->GetNbinsX();
123 char hname[200];
124
125 sprintf(hname,"numqual%s",suff);
126 TH2D *nums = new TH2D(hname, ";q_{inv} [GeV/c];pair quality - upper cut-off",
127 numqual->GetNbinsX(), numqual->GetXaxis()->GetXmin(), numqual->GetXaxis()->GetXmax(),
128 numqual->GetNbinsY(), numqual->GetYaxis()->GetXmin(), numqual->GetYaxis()->GetXmax());
129 sprintf(hname,"denqual%s",suff);
130 TH2D *dens = new TH2D(hname, ";q_{inv} [GeV/c];pair quality - upper cut-off",
131 numqual->GetNbinsX(), numqual->GetXaxis()->GetXmin(), numqual->GetXaxis()->GetXmax(),
132 numqual->GetNbinsY(), numqual->GetYaxis()->GetXmin(), numqual->GetYaxis()->GetXmax());
133 sprintf(hname,"ratqual%s",suff);
134 TH2D *rats = new TH2D(hname, ";q_{inv} [GeV/c];pair quality - upper cut-off",
135 numqual->GetNbinsX(), numqual->GetXaxis()->GetXmin(), numqual->GetXaxis()->GetXmax(),
136 numqual->GetNbinsY(), numqual->GetYaxis()->GetXmin(), numqual->GetYaxis()->GetXmax());
137
138 char bufname[100];
139 for (int iter=0; iter<numqual->GetNbinsY(); iter++) {
140 sprintf(bufname, "numbuf%i", iter);
141 TH1D *numbuf = numqual->ProjectionX(bufname, 1, iter+1, "e");
142 sprintf(bufname, "denbuf%i", iter);
143 TH1D *denbuf = denqual->ProjectionX(bufname, 1, iter+1, "e");
144
145 ratbuf = new TH1D(*numbuf);
146 ratbuf->Divide(denbuf);
147 Double_t scale = ratbuf->Integral(nrange-24,nrange)/25.0;
148 if (scale > 0.0)
149 ratbuf->Scale(1.0/scale);
150
151 for (int ibin = 1; ibin<=ratbuf->GetNbinsX(); ibin++) {
152 rats->SetBinContent(ibin, iter+1, ratbuf->GetBinContent(ibin));
153 }
154 }
155
156 rats->GetXaxis()->SetTitleOffset(0.95);
157 rats->GetYaxis()->SetTitleOffset(0.9);
158
159 return rats;
160}
161
162TH1D *getcf(TH1D *numq, TH1D *denq, const char *suff)
163{
164 char hname[200];
165
166 TH1D *rats = new TH1D(*numq);
167 rats->Reset("ICE");
168 rats->Divide(numq, denq, 1.0*denq->Integral()/numq->Integral(), 1.0);
169
170 sprintf(hname, "ratqinv%s", suff);
171 rats->SetName(hname);
172 rats->SetTitle(";q_{inv} [GeV/c];C(q_{inv})");
173 preparehist(rats);
174
175 return rats;
176}
177
178void FemtoQAPlots(const char *infname)
179{
180 gStyle->SetStatX(0.8);
181 gStyle->SetStatW(0.25);
182 gStyle->SetOptStat(11);
183
184 TFile *ifile = new TFile(infname);
185
186 gStyle->SetPalette(1,0);
187
188 // Make plot for TPC entrance separation - positive
189
190 TCanvas *candtpcp = new TCanvas("candtpcp","candtpcp",1200,300);
191 preparepad();
192 candtpcp->Divide(3,1,0.0001,0.0001);
193
194 candtpcp->cd(1); preparepad();
195 TH2D *ratdtpcpipstd = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpipstd"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpipstd"), "pipstd");
196 ratdtpcpipstd->Draw("COLZ");
197
198 candtpcp->cd(2); preparepad();
199 TH2D *ratdtpcpipnct = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpipnct"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpipnct"), "pipnct");
200 ratdtpcpipnct->Draw("COLZ");
201
202 candtpcp->cd(3); preparepad();
203 TH2D *ratdtpcpiptpc = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpiptpc"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpiptpc"), "piptpc");
204 ratdtpcpiptpc->Draw("COLZ");
205
206 // Make plot for TPC entrance separation - negative
207
208 TCanvas *candtpcm = new TCanvas("candtpcm","candtpcm",1200,300);
209 preparepad();
210 candtpcm->Divide(3,1,0.0001,0.0001);
211
212 candtpcm->cd(1); preparepad();
213 TH2D *ratdtpcpimstd = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpimstd"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpimstd"), "pimstd");
214 ratdtpcpimstd->Draw("COLZ");
215
216 candtpcm->cd(2); preparepad();
217 TH2D *ratdtpcpimnct = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpimnct"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpimnct"), "pimnct");
218 ratdtpcpimnct->Draw("COLZ");
219
220 candtpcm->cd(3); preparepad();
221 TH2D *ratdtpcpimtpc = plot2ddtpc((TH2D *) gDirectory->Get("NumTPCSepsqqinvcfpimtpc"), (TH2D *) gDirectory->Get("DenTPCSepsqqinvcfpimtpc"), "pimtpc");
222 ratdtpcpimtpc->Draw("COLZ");
223
224 // Make plot for pair fraction of shared hits - positive
225
226 TCanvas *cansharep = new TCanvas("cansharep","cansharep",1200,300);
227 preparepad();
228 cansharep->Divide(3,1,0.0001,0.0001);
229
230 cansharep->cd(1); preparepad();
231 TH2D *ratsharepipstd = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpipstd"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpipstd"), "pipstd");
232 ratsharepipstd->Draw("COLZ");
233
234 cansharep->cd(2); preparepad();
235 TH2D *ratsharepipnct = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpipnct"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpipnct"), "pipnct");
236 ratsharepipnct->Draw("COLZ");
237
238 cansharep->cd(3); preparepad();
239 TH2D *ratsharepiptpc = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpiptpc"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpiptpc"), "piptpc");
240 ratsharepiptpc->Draw("COLZ");
241
242 // Make plot for pair fraction of shared hits - negative
243
244 TCanvas *cansharem = new TCanvas("cansharem","cansharem",1200,300);
245 preparepad();
246 cansharem->Divide(3,1,0.0001,0.0001);
247
248 cansharem->cd(1); preparepad();
249 TH2D *ratsharepimstd = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpimstd"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpimstd"), "pimstd");
250 ratsharepimstd->Draw("COLZ");
251
252 cansharem->cd(2); preparepad();
253 TH2D *ratsharepimnct = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpimnct"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpimnct"), "pimnct");
254 ratsharepimnct->Draw("COLZ");
255
256 cansharem->cd(3); preparepad();
257 TH2D *ratsharepimtpc = plot2dshare((TH2D *) gDirectory->Get("NumSharesqqinvcfpimtpc"), (TH2D *) gDirectory->Get("DenSharesqqinvcfpimtpc"), "pimtpc");
258 ratsharepimtpc->Draw("COLZ");
259
260 // Make signal pair fraction of shared hits - positive
261
262 TCanvas *cansharesignalp = new TCanvas("cansharesignalp","cansharesignalp",1200,300);
263 preparepad();
264 cansharesignalp->Divide(3,1,0.0001,0.0001);
265
266 cansharesignalp->cd(1); preparepad();
267 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpipstd"))->Draw("COLZ");
268
269 cansharesignalp->cd(2); preparepad();
270 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpipnct"))->Draw("COLZ");
271
272 cansharesignalp->cd(3); preparepad();
273 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpiptpc"))->Draw("COLZ");
274
275 // Make signal pair fraction of shared hits - negative
276
277 TCanvas *cansharesignalm = new TCanvas("cansharesignalm","cansharesignalm",1200,300);
278 preparepad();
279 cansharesignalm->Divide(3,1,0.0001,0.0001);
280
281 cansharesignalm->cd(1); preparepad();
282 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpimstd"))->Draw("COLZ");
283
284 cansharesignalm->cd(2); preparepad();
285 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpimnct"))->Draw("COLZ");
286
287 cansharesignalm->cd(3); preparepad();
288 ((TH2D *) gDirectory->Get("NumSharesqqinvcfpimtpc"))->Draw("COLZ");
289
290 // Make background pair fraction of shared hits - positive
291
292 TCanvas *cansharebackp = new TCanvas("cansharebackp","cansharebackp",1200,300);
293 preparepad();
294 cansharebackp->Divide(3,1,0.0001,0.0001);
295
296 cansharebackp->cd(1); preparepad();
297 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpipstd"))->Draw("COLZ");
298
299 cansharebackp->cd(2); preparepad();
300 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpipnct"))->Draw("COLZ");
301
302 cansharebackp->cd(3); preparepad();
303 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpiptpc"))->Draw("COLZ");
304
305 // Make background pair fraction of shared hits - negative
306
307 TCanvas *cansharebackm = new TCanvas("cansharebackm","cansharebackm",1200,300);
308 preparepad();
309 cansharebackm->Divide(3,1,0.0001,0.0001);
310
311 cansharebackm->cd(1); preparepad();
312 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpimstd"))->Draw("COLZ");
313
314 cansharebackm->cd(2); preparepad();
315 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpimnct"))->Draw("COLZ");
316
317 cansharebackm->cd(3); preparepad();
318 ((TH2D *) gDirectory->Get("DenSharesqqinvcfpimtpc"))->Draw("COLZ");
319
320 // Make plot for pair quality - positive
321
322 TCanvas *canqualp = new TCanvas("canqualp","canqualp",1200,300);
323 preparepad();
324 canqualp->Divide(3,1,0.0001,0.0001);
325
326 canqualp->cd(1); preparepad();
327 TH2D *ratqualpipstd = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpipstd"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpipstd"), "pipstd");
328 ratqualpipstd->Draw("COLZ");
329
330 canqualp->cd(2); preparepad();
331 TH2D *ratqualpipnct = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpipnct"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpipnct"), "pipnct");
332 ratqualpipnct->Draw("COLZ");
333
334 canqualp->cd(3); preparepad();
335 TH2D *ratqualpiptpc = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpiptpc"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpiptpc"), "piptpc");
336 ratqualpiptpc->Draw("COLZ");
337
338 // Make plot for pair quality - negative
339
340 TCanvas *canqualm = new TCanvas("canqualm","canqualm",1200,300);
341 preparepad();
342 canqualm->Divide(3,1,0.0001,0.0001);
343
344 canqualm->cd(1); preparepad();
345 TH2D *ratqualpimstd = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimstd"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpimstd"), "pimstd");
346 ratqualpimstd->Draw("COLZ");
347
348 canqualm->cd(2); preparepad();
349 TH2D *ratqualpimnct = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimnct"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpimnct"), "pimnct");
350 ratqualpimnct->Draw("COLZ");
351
352 canqualm->cd(3); preparepad();
353 TH2D *ratqualpimtpc = plot2dquality((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimtpc"), (TH2D *) gDirectory->Get("DenQualitysqqinvcfpimtpc"), "pimtpc");
354 ratqualpimtpc->Draw("COLZ");
355
356 // Make signal pair quality - positive
357
358 TCanvas *canqualitysignalp = new TCanvas("canqualitysignalp","canqualitysignalp",1200,300);
359 preparepad();
360 canqualitysignalp->Divide(3,1,0.0001,0.0001);
361
362 canqualitysignalp->cd(1); preparepad();
363 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpipstd"))->Draw("COLZ");
364
365 canqualitysignalp->cd(2); preparepad();
366 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpipnct"))->Draw("COLZ");
367
368 canqualitysignalp->cd(3); preparepad();
369 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpiptpc"))->Draw("COLZ");
370
371 // Make signal pair quality - negative
372
373 TCanvas *canqualitysignalm = new TCanvas("canqualitysignalm","canqualitysignalm",1200,300);
374 preparepad();
375 canqualitysignalm->Divide(3,1,0.0001,0.0001);
376
377 canqualitysignalm->cd(1); preparepad();
378 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimstd"))->Draw("COLZ");
379
380 canqualitysignalm->cd(2); preparepad();
381 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimnct"))->Draw("COLZ");
382
383 canqualitysignalm->cd(3); preparepad();
384 ((TH2D *) gDirectory->Get("NumQualitysqqinvcfpimtpc"))->Draw("COLZ");
385
386 // Make plot for pair quality - positive
387
388 TCanvas *canqinvp = new TCanvas("canqinvp","canqinvp",1200,300);
389 preparepad();
390 canqinvp->Divide(3,1,0.0001,0.0001);
391
392 canqinvp->cd(1); preparepad();
393 TH1D *ratqinvpipstd = getcf((TH1D *) gDirectory->Get("Numqinvcfpipstd"), (TH1D *) gDirectory->Get("Denqinvcfpipstd"), "pipstd");
394 ratqinvpipstd->Draw();
395
396 canqinvp->cd(2); preparepad();
397 TH1D *ratqinvpipnct = getcf((TH1D *) gDirectory->Get("Numqinvcfpipnct"), (TH1D *) gDirectory->Get("Denqinvcfpipnct"), "pipnct");
398 ratqinvpipnct->Draw("");
399
400 canqinvp->cd(3); preparepad();
401 TH1D *ratqinvpiptpc = getcf((TH1D *) gDirectory->Get("Numqinvcfpiptpc"), (TH1D *) gDirectory->Get("Denqinvcfpiptpc"), "piptpc");
402 ratqinvpiptpc->Draw("");
403
404 // Make plot for pair quality - negative
405
406 TCanvas *canqinvm = new TCanvas("canqinvm","canqinvm",1200,300);
407 preparepad();
408 canqinvm->Divide(3,1,0.0001,0.0001);
409
410 canqinvm->cd(1); preparepad();
411 TH1D *ratqinvpimstd = getcf((TH1D *) gDirectory->Get("Numqinvcfpimstd"), (TH1D *) gDirectory->Get("Denqinvcfpimstd"), "pimstd");
412 ratqinvpimstd->Draw("");
413
414 canqinvm->cd(2); preparepad();
415 TH1D *ratqinvpimnct = getcf((TH1D *) gDirectory->Get("Numqinvcfpimnct"), (TH1D *) gDirectory->Get("Denqinvcfpimnct"), "pimnct");
416 ratqinvpimnct->Draw("");
417
418 canqinvm->cd(3); preparepad();
419 TH1D *ratqinvpimtpc = getcf((TH1D *) gDirectory->Get("Numqinvcfpimtpc"), (TH1D *) gDirectory->Get("Denqinvcfpimtpc"), "pimtpc");
420 ratqinvpimtpc->Draw("");
421
422
423}