BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnTrackingQaOfflineDraw.cxx
Go to the documentation of this file.
2
4 : h(nullptr)
5 , h2(nullptr)
6 , h3(nullptr)
7 , h4(nullptr)
8 , h5(nullptr)
9{
10 usedOutExtension = "pdf";
11}
12
14{
15 gStyle->SetOptStat(0);
16 gStyle->SetTitleFontSize(0.1);
17 gStyle->SetTitleY(1.0);
18 gStyle->SetPaintTextFormat("4.3f");
19
20 const Int_t nBeams = fBeams.size();
21 const Int_t nTargets = fTargets.size();
22 const Int_t nTriggers = fTriggers.size();
23 const Int_t nHistos = 5;
24
25 const Int_t nResidHistos = 8; // tof400, toff700, csc, dch x 2 (x, y)
26
27 enum
28 {
29 Vz,
30 TotMult,
31 PosMult,
32 NegMult,
33 Momentum
34 };
35
36 enum
37 {
38 matchOneToOne,
39 matchTwoToOne,
40 matchThreeToOne,
41 beta400,
42 beta700
43 };
44
45 enum
46 {
47 xResTof400,
48 yResTof400,
49 xResTof700,
50 yResTof700,
51 xResCsc,
52 yResCsc,
53 xResDch,
54 yResDch
55 };
56
57 h = new TH1F****[nBeams];
58 h4 = new TH2F****[nBeams];
59 h5 = new TH1F****[nBeams];
60
61 h2 = new TH2F("h2", "Num of event per target / trigger (Argon run) [MEvents]", nTriggers, 0., nTriggers, nTargets,
62 0., nTargets);
63 h3 = new TH2F("h3", "Num of event per target / trigger (Argon run) [MEvents], nRecoTracks > 1", nTriggers, 0.,
64 nTriggers, nTargets, 0., nTargets);
65
66 TH2F* hArr[2] = {h2, h3};
67
68 for (Int_t iHisto = 0; iHisto < 2; iHisto++) {
69 TAxis* xAxis = hArr[iHisto]->GetXaxis();
70 TAxis* yAxis = hArr[iHisto]->GetYaxis();
71
72 for (size_t iBin = 0; iBin < fTriggers.size(); iBin++)
73 xAxis->SetBinLabel(iBin + 1, Form("%s", fTriggers[iBin].Data()));
74 for (size_t iBin = 0; iBin < fTargets.size(); iBin++)
75 yAxis->SetBinLabel(iBin + 1, Form("%s", fTargets[iBin].Data()));
76
77 // h2->GetXaxis()->SetLabelSize(0.07);
78 hArr[iHisto]->GetYaxis()->SetLabelSize(0.07);
79
80 hArr[iHisto]->GetXaxis()->SetTitleSize(0.06);
81 hArr[iHisto]->GetYaxis()->SetTitleSize(0.06);
82
83 hArr[iHisto]->GetXaxis()->SetTitleOffset(.43);
84 hArr[iHisto]->GetYaxis()->SetTitleOffset(.77);
85 }
86
87 // h2->SetMarkerSize(2.3);
88
89 for (Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
90 h[iBeam] = new TH1F***[nTargets];
91 h4[iBeam] = new TH2F***[nTargets];
92 h5[iBeam] = new TH1F***[nTargets];
93
94 for (Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
95 h[iBeam][iTarget] = new TH1F**[nTriggers];
96 h4[iBeam][iTarget] = new TH2F**[nTriggers];
97 h5[iBeam][iTarget] = new TH1F**[nTriggers];
98
99 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
100
101 h[iBeam][iTarget][iTrigger] = new TH1F*[nHistos];
102 h4[iBeam][iTarget][iTrigger] = new TH2F*[nHistos];
103 h5[iBeam][iTarget][iTrigger] = new TH1F*[nResidHistos];
104
105 for (Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
106
107 if (iHisto == Vz)
108 h[iBeam][iTarget][iTrigger][Vz] =
109 new TH1F(Form("Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
110 Form("Target: %s; V_{z} [cm]; N", fTargets[iTarget].Data()), 200, -10., +10.);
111
112 else if (iHisto == TotMult)
113 h[iBeam][iTarget][iTrigger][TotMult] = new TH1F(
114 Form("Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
115 Form("Target: %s; N_{tracks per event}; N", fTargets[iTarget].Data()), 30, 0., 30.);
116
117 else if (iHisto == PosMult)
118 h[iBeam][iTarget][iTrigger][PosMult] =
119 new TH1F(Form("Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
120 Form("Target: %s; N_{positive tracks per event}; N", fTargets[iTarget].Data()), 30,
121 0., 30.);
122
123 else if (iHisto == NegMult)
124 h[iBeam][iTarget][iTrigger][NegMult] =
125 new TH1F(Form("Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
126 Form("Target: %s; N_{negative tracks per event}; N", fTargets[iTarget].Data()), 30,
127 0., 30.);
128
129 else if (iHisto == Momentum)
130 h[iBeam][iTarget][iTrigger][Momentum] =
131 new TH1F(Form("Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
132 Form("Target: %s; P / q [GeV/c]; N", fTargets[iTarget].Data()), 500, -10., +10.);
133
134 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.07);
135 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.07);
136
137 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
138 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.07);
139
140 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
141 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
142 }
143
144 for (Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
145 if (iHisto == matchOneToOne || iHisto == matchTwoToOne || iHisto == matchThreeToOne) {
146 TString* xArr = nullptr;
147 TString* yArr = nullptr;
148
149 Int_t sizeX = -1;
150 Int_t sizeY = -1;
151
152 if (iHisto == matchOneToOne) {
153 sizeX = sizeY = 4;
154 xArr = new TString[sizeX];
155 yArr = new TString[sizeY];
156
157 xArr[0] = yArr[0] = "tof400";
158 xArr[1] = yArr[1] = "tof700";
159 xArr[2] = yArr[2] = "csc";
160 xArr[3] = yArr[3] = "dch";
161 } else if (iHisto == matchTwoToOne) {
162 sizeX = 3;
163 sizeY = 2;
164
165 xArr = new TString[sizeX];
166 yArr = new TString[sizeY];
167
168 xArr[0] = "tof400 + tof700";
169 xArr[1] = "tof700 + csc";
170 xArr[2] = "tof400 + csc";
171
172 yArr[0] = "csc";
173 yArr[1] = "dch";
174 } else if (iHisto == matchThreeToOne) {
175 sizeX = sizeY = 1;
176
177 xArr = new TString[sizeX];
178 yArr = new TString[sizeY];
179
180 xArr[0] = "tof400 + tof700 + csc";
181 yArr[0] = "dch";
182 }
183
184 h4[iBeam][iTarget][iTrigger][iHisto] = new TH2F(
185 Form(" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
186 Form("Target: %s [%%]", fTargets[iTarget].Data()), sizeX, 0., sizeX, sizeY, 0., sizeY);
187
188 TAxis* xAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis();
189 TAxis* yAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis();
190
191 for (Int_t iBin = 0; iBin < sizeX; iBin++)
192 xAxis->SetBinLabel(iBin + 1, Form("%s", xArr[iBin].Data()));
193 for (Int_t iBin = 0; iBin < sizeY; iBin++)
194 yAxis->SetBinLabel(iBin + 1, Form("%s", yArr[iBin].Data()));
195
196 delete[] xArr;
197 delete[] yArr;
198 } else if (iHisto == beta400)
199 h4[iBeam][iTarget][iTrigger][iHisto] =
200 new TH2F(Form(" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
201 Form("Target: %s; P / q [GeV / c]; #beta_{400}", fTargets[iTarget].Data()), 250,
202 0., 10., 100, 0., 1.2);
203
204 else if (iHisto == beta700)
205 h4[iBeam][iTarget][iTrigger][iHisto] =
206 new TH2F(Form(" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
207 Form("Target: %s; P / q [GeV / c]; #beta_{700}", fTargets[iTarget].Data()), 250,
208 0., 10., 100, 0., 1.2);
209
210 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
211 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
212
213 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
214 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(iHisto < 3 ? 0.07 : 0.09);
215
216 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
217 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
218
219 h4[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
220 }
221
222 // Resid. histos ...
223 for (Int_t iHisto = 0; iHisto < nResidHistos; iHisto++) {
224 if (iHisto == xResTof400) {
225 h5[iBeam][iTarget][iTrigger][xResTof400] = new TH1F(
226 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
227 Form("Target: %s (TOF400); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -15.,
228 +15.);
229 h5[iBeam][iTarget][iTrigger][xResTof400]->SetLineColor(kRed);
230 } else if (iHisto == yResTof400) {
231 h5[iBeam][iTarget][iTrigger][yResTof400] = new TH1F(
232 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
233 Form("Target: %s (TOF400); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -15.,
234 +15.);
235 h5[iBeam][iTarget][iTrigger][yResTof400]->SetLineColor(kBlue);
236 } else if (iHisto == xResTof700) {
237 h5[iBeam][iTarget][iTrigger][xResTof700] = new TH1F(
238 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
239 Form("Target: %s (TOF700); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -50.,
240 +50.);
241 h5[iBeam][iTarget][iTrigger][xResTof700]->SetLineColor(kRed);
242 } else if (iHisto == yResTof700) {
243 h5[iBeam][iTarget][iTrigger][yResTof700] = new TH1F(
244 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
245 Form("Target: %s (TOF700); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -30.,
246 +30.);
247 h5[iBeam][iTarget][iTrigger][yResTof700]->SetLineColor(kBlue);
248 } else if (iHisto == xResCsc) {
249 h5[iBeam][iTarget][iTrigger][xResCsc] = new TH1F(
250 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
251 Form("Target: %s (CSC); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -30.,
252 +30.);
253 h5[iBeam][iTarget][iTrigger][xResCsc]->SetLineColor(kRed);
254 } else if (iHisto == yResCsc) {
255 h5[iBeam][iTarget][iTrigger][yResCsc] = new TH1F(
256 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
257 Form("Target: %s (CSC); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -20.,
258 +20.);
259 h5[iBeam][iTarget][iTrigger][yResCsc]->SetLineColor(kBlue);
260 } else if (iHisto == xResDch) {
261 h5[iBeam][iTarget][iTrigger][xResDch] = new TH1F(
262 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
263 Form("Target: %s (DCH); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -10.,
264 +10.);
265 h5[iBeam][iTarget][iTrigger][xResDch]->SetLineColor(kRed);
266 } else if (iHisto == yResDch) {
267 h5[iBeam][iTarget][iTrigger][yResDch] = new TH1F(
268 Form(" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
269 Form("Target: %s (DCH); Resid. (blue - Y) [cm]; N", fTargets[iTarget].Data()), 500, -10.,
270 +10.);
271 h5[iBeam][iTarget][iTrigger][yResDch]->SetLineColor(kBlue);
272 }
273
274 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
275 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
276
277 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
278 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.09);
279
280 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
281 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.57);
282
283 // h5[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
284 }
285 }
286 }
287 }
288}
289
291{
292 if (anal3) {
293 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
294 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++) {
295 TCanvas* c = new TCanvas("c", "c", 1200, 800);
296 c->Divide(5, 5);
297
298 const Int_t nPads = 25;
299
300 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
301 TVirtualPad* pad = c->cd(iPad);
302
303 if ((iPad - 1) % 5 < 3)
304 pad->SetGrid();
305
306 if ((iPad - 1) % 5 > 2) {
307 pad->SetLogz();
308 pad->SetLeftMargin(0.2);
309 }
310
311 if ((iPad - 1) % 5 == 0)
312 pad->SetLeftMargin(0.2);
313
314 Int_t idx = iPad - 1;
315
316 Int_t currTarget = idx / 5;
317
318 if (currTarget + 1 > (Int_t)fTargets.size())
319 continue;
320
321 Int_t currDist = idx % 5;
322
323 TH2F* histo = h4[iBeam][currTarget][iTrigger][currDist];
324
325 if (currDist == 3 || currDist == 4)
326 histo->Draw("colz");
327 else
328 histo->Draw("TEXT");
329 }
330
331 TString targPath = "";
332 for (auto it : fTargets)
333 targPath += it;
334
335 c->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matching.%s", fBeams[iBeam].Data(), targPath.Data(),
336 fTriggers[iTrigger].Data(), usedOutExtension.Data()));
337 delete c;
338 }
339
340 const Int_t nBeams = fBeams.size();
341 const Int_t nTargets = fTargets.size();
342 const Int_t nTriggers = fTriggers.size();
343
344 const Int_t nDets = 4; // tof400, tof700, csc, dch
345
346 TH2F***** fitResults = new TH2F****[nBeams];
347 for (Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
348 fitResults[iBeam] = new TH2F***[nTargets];
349
350 for (Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
351 fitResults[iBeam][iTarget] = new TH2F**[nTriggers];
352
353 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
354 fitResults[iBeam][iTarget][iTrigger] = new TH2F*[nDets];
355
356 for (Int_t iDet = 0; iDet < nDets; iDet++) {
357 TString titlePart = (iDet == 0) ? "(TOF400)"
358 : (iDet == 1) ? "(TOF700)"
359 : (iDet == 2) ? "(CSC)"
360 : "(DCH)";
361
362 fitResults[iBeam][iTarget][iTrigger][iDet] = new TH2F(
363 Form("Beam %d Target %d Trigger %d Det %d", iBeam, iTarget, iTrigger, iDet),
364 Form("Target: %s %s", fTargets[iTarget].Data(), titlePart.Data()), 2., 0., 2., 2, 0., 2.);
365
366 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleSize(0.09);
367 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleSize(0.09);
368
369 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleOffset(-5.);
370 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleOffset(.57);
371
372 fitResults[iBeam][iTarget][iTrigger][iDet]->SetMarkerSize(4.);
373
374 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetLabelSize(.15);
375 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetLabelSize(.15);
376
377 const Int_t nBins = 2;
378 TString xArr[nBins] = {"X", "Y"};
379 TString yArr[nBins] = {"#sigma [cm]", "#mu [cm]"};
380
381 for (Int_t iBin = 0; iBin < nBins; iBin++)
382 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetBinLabel(
383 iBin + 1, Form("%s", xArr[iBin].Data()));
384 for (Int_t iBin = 0; iBin < nBins; iBin++)
385 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetBinLabel(
386 iBin + 1, Form("%s", yArr[iBin].Data()));
387 }
388 }
389 }
390 }
391
392 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
393 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++) {
394 TCanvas* d = new TCanvas("d", "d", 1200, 800);
395 TCanvas* e = new TCanvas("e", "e", 1200, 800);
396 d->Divide(4, 5);
397 e->Divide(4, 5);
398
399 const Int_t nPads = 20;
400
401 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
402 Int_t idx = (iPad - 1) % 4;
403 Int_t currTarget = (iPad - 1) / 4;
404
405 if (currTarget + 1 > (Int_t)fTargets.size())
406 continue;
407
408 TH1F* histo1 = h5[iBeam][currTarget][iTrigger][2 * idx];
409 TH1F* histo2 = h5[iBeam][currTarget][iTrigger][2 * idx + 1];
410
411 Double_t max1 = histo1->GetMaximum();
412 Double_t max2 = histo2->GetMaximum();
413
414 d->cd(iPad);
415 if (max1 > max2) {
416 histo1->Draw();
417 histo2->Draw("same");
418 } else {
419 histo2->Draw();
420 histo1->Draw("same");
421 }
422
423 TFitResultPtr resX = histo1->Fit("gaus", "RSQww", "", -3., +3.);
424 if (resX) {
425 histo1->GetFunction("gaus")->SetLineColor(kBlack);
426 histo1->GetFunction("gaus")->SetLineStyle(kDashed);
427 }
428
429 TFitResultPtr resY = histo2->Fit("gaus", "RSQww", "", -3., +3.);
430 if (resY) {
431 histo2->GetFunction("gaus")->SetLineColor(kBlack);
432 histo2->GetFunction("gaus")->SetLineStyle(kDashed);
433 }
434
435 TH2F* histo3 = fitResults[iBeam][currTarget][iTrigger][idx];
436
437 if (resX && resY) {
438 histo3->SetBinContent(1, 2, resX->Parameter(1));
439 histo3->SetBinContent(2, 2, resY->Parameter(1));
440 histo3->SetBinContent(1, 1, resX->Parameter(2));
441 histo3->SetBinContent(2, 1, resY->Parameter(2));
442 }
443
444 e->cd(iPad)->SetLeftMargin(0.2);
445 histo3->Draw("TEXT");
446 }
447
448 TString targPath = "";
449 for (auto it : fTargets)
450 targPath += it;
451
452 d->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matchingResiduals.%s", fBeams[iBeam].Data(), targPath.Data(),
453 fTriggers[iTrigger].Data(), usedOutExtension.Data()));
454 delete d;
455
456 e->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matchingFitResults.%s", fBeams[iBeam].Data(),
457 targPath.Data(), fTriggers[iTrigger].Data(), usedOutExtension.Data()));
458 delete e;
459 }
460 }
461
462 if (anal2)
463 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
464 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++) {
465 TCanvas* a = new TCanvas("a", "a", 1200, 800);
466 a->Divide(5, 5);
467
468 // const Int_t nPads = 5 * fTargets.size();
469 const Int_t nPads = 25;
470
471 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
472 a->cd(iPad);
473
474 Int_t idx = iPad - 1;
475
476 Int_t currTarget = idx / 5;
477
478 if (currTarget + 1 > (Int_t)fTargets.size())
479 continue;
480
481 Int_t currDist = idx % 5;
482
483 TH1F* histo = h[iBeam][currTarget][iTrigger][currDist];
484
485 if (histo) {
486 histo->Draw();
487 Double_t integral = histo->Integral();
488
489 if (integral > 0.)
490 for (Int_t iBin = 1; iBin < histo->GetNbinsX() + 1; iBin++)
491 histo->SetBinContent(iBin, 1. * histo->GetBinContent(iBin) / integral);
492 }
493 }
494
495 TString targPath = "";
496 for (auto it : fTargets)
497 targPath += it;
498
499 a->SaveAs(Form("beam_%s_targ_%s_trigger_%s.%s", fBeams[iBeam].Data(), targPath.Data(),
500 fTriggers[iTrigger].Data(), usedOutExtension.Data()));
501 delete a;
502 }
503
504 if (anal1) {
505 TCanvas* b = new TCanvas("b", "b", 1200, 800);
506 b->Divide(2, 1);
507
508 b->cd(1)->SetGrid();
509 h2->Draw("TEXT");
510
511 b->cd(2)->SetGrid();
512 h3->Draw("TEXT");
513
514 b->SaveAs(Form("tmp.%s", usedOutExtension.Data()));
515 }
516}
bool Bool_t
int Int_t
double Double_t
kRed
kBlack
kBlue
kDashed
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
void ProcessHistos(Bool_t anal1, Bool_t anal2, Bool_t anal3)
double Parameter(unsigned int i) const
virtual void SetTitleOffset(Float_t offset=1)
virtual void SetLabelSize(Float_t size=0.04)
virtual void SetTitleSize(Float_t size=0.04)
virtual void SetLineStyle(Style_t lstyle)
virtual void SetLineColor(Color_t lcolor)
virtual void SetMarkerSize(Size_t msize=1)
virtual void SetLeftMargin(Float_t leftmargin)
virtual void SetBinLabel(Int_t bin, const char *label)
TVirtualPad * cd(Int_t subpadnumber=0) override
TAxis * GetXaxis()
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
virtual Int_t GetNbinsX() const
TAxis * GetYaxis()
void Draw(Option_t *option="") override
virtual void SetBinContent(Int_t bin, Double_t content)
virtual TF1 * GetFunction(const char *name) const
virtual Double_t Integral(Int_t binx1, Int_t binx2, Option_t *option="") const
virtual Double_t GetBinContent(Int_t bin) const
void SetBinContent(Int_t bin, Double_t content) override
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
void SaveAs(const char *filename="", Option_t *option="") const override
const char * Data() const
virtual void SetGrid(Int_t valuex=1, Int_t valuey=1)=0
virtual void SetLogz(Int_t value=1)=0