14 gStyle->SetOptStat(0);
15 gStyle->SetTitleFontSize(0.1);
16 gStyle->SetTitleY(1.0);
17 gStyle->SetPaintTextFormat(
"4.3f");
19 const Int_t nBeams =
fBeams.size();
20 const Int_t nTargets =
fTargets.size();
22 const Int_t nHistos = 5;
24 const Int_t nResidHistos = 8;
27 Vz, TotMult, PosMult, NegMult, Momentum
31 matchOneToOne, matchTwoToOne, matchThreeToOne, beta400, beta700
35 xResTof400, yResTof400,
36 xResTof700, yResTof700,
41 h =
new TH1F****[nBeams];
42 h4 =
new TH2F****[nBeams];
43 h5 =
new TH1F****[nBeams];
45 h2 =
new TH2F(
"h2",
"Num of event per target / trigger (Argon run) [MEvents]", nTriggers, 0., nTriggers, nTargets, 0., nTargets);
46 h3 =
new TH2F(
"h3",
"Num of event per target / trigger (Argon run) [MEvents], nRecoTracks > 1", nTriggers, 0., nTriggers, nTargets, 0., nTargets);
48 TH2F * hArr[2] = {h2, h3};
50 for (Int_t iHisto = 0; iHisto < 2; iHisto++) {
51 TAxis* xAxis = hArr[iHisto]->GetXaxis();
52 TAxis* yAxis = hArr[iHisto]->GetYaxis();
54 for (
size_t iBin = 0; iBin <
fTriggers.size(); iBin++)
55 xAxis->SetBinLabel(iBin + 1, Form(
"%s",
fTriggers[iBin].Data()));
56 for (
size_t iBin = 0; iBin <
fTargets.size(); iBin++)
57 yAxis->SetBinLabel(iBin + 1, Form(
"%s",
fTargets[iBin].Data()));
60 hArr[iHisto]->GetYaxis()->SetLabelSize(0.07);
62 hArr[iHisto]->GetXaxis()->SetTitleSize(0.06);
63 hArr[iHisto]->GetYaxis()->SetTitleSize(0.06);
65 hArr[iHisto]->GetXaxis()->SetTitleOffset(.43);
66 hArr[iHisto]->GetYaxis()->SetTitleOffset(.77);
71 for (Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
72 h[iBeam] =
new TH1F***[nTargets];
73 h4[iBeam] =
new TH2F***[nTargets];
74 h5[iBeam] =
new TH1F***[nTargets];
76 for (Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
77 h[iBeam][iTarget] =
new TH1F**[nTriggers];
78 h4[iBeam][iTarget] =
new TH2F**[nTriggers];
79 h5[iBeam][iTarget] =
new TH1F**[nTriggers];
81 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
83 h[iBeam][iTarget][iTrigger] =
new TH1F*[nHistos];
84 h4[iBeam][iTarget][iTrigger] =
new TH2F*[nHistos];
85 h5[iBeam][iTarget][iTrigger] =
new TH1F*[nResidHistos];
87 for (Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
90 h[iBeam][iTarget][iTrigger][Vz] =
new TH1F(Form(
"Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
91 Form(
"Target: %s; V_{z} [cm]; N",
fTargets[iTarget].Data()), 200, -10., +10.);
93 else if (iHisto == TotMult)
94 h[iBeam][iTarget][iTrigger][TotMult] =
new TH1F(Form(
"Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
95 Form(
"Target: %s; N_{tracks per event}; N",
fTargets[iTarget].Data()), 30, 0., 30.);
97 else if (iHisto == PosMult)
98 h[iBeam][iTarget][iTrigger][PosMult] =
new TH1F(Form(
"Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
99 Form(
"Target: %s; N_{positive tracks per event}; N",
fTargets[iTarget].Data()), 30, 0., 30.);
101 else if (iHisto == NegMult)
102 h[iBeam][iTarget][iTrigger][NegMult] =
new TH1F(Form(
"Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
103 Form(
"Target: %s; N_{negative tracks per event}; N",
fTargets[iTarget].Data()), 30, 0., 30.);
105 else if (iHisto == Momentum)
106 h[iBeam][iTarget][iTrigger][Momentum] =
new TH1F(Form(
"Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
107 Form(
"Target: %s; P / q [GeV/c]; N",
fTargets[iTarget].Data()), 500, -10., +10.);
109 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.07);
110 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.07);
112 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
113 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.07);
115 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
116 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
119 for (Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
120 if (iHisto == matchOneToOne || iHisto == matchTwoToOne || iHisto == matchThreeToOne) {
121 TString* xArr =
nullptr;
122 TString* yArr =
nullptr;
127 if (iHisto == matchOneToOne) {
129 xArr =
new TString[sizeX];
130 yArr =
new TString[sizeY];
132 xArr[0] = yArr[0] =
"tof400";
133 xArr[1] = yArr[1] =
"tof700";
134 xArr[2] = yArr[2] =
"csc";
135 xArr[3] = yArr[3] =
"dch";
136 }
else if (iHisto == matchTwoToOne) {
140 xArr =
new TString[sizeX];
141 yArr =
new TString[sizeY];
143 xArr[0] =
"tof400 + tof700";
144 xArr[1] =
"tof700 + csc";
145 xArr[2] =
"tof400 + csc";
149 }
else if (iHisto == matchThreeToOne) {
152 xArr =
new TString[sizeX];
153 yArr =
new TString[sizeY];
155 xArr[0] =
"tof400 + tof700 + csc";
159 h4[iBeam][iTarget][iTrigger][iHisto] =
new TH2F(Form(
" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
160 Form(
"Target: %s [%%]",
fTargets[iTarget].Data()), sizeX, 0., sizeX, sizeY, 0., sizeY);
162 TAxis* xAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis();
163 TAxis* yAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis();
165 for (Int_t iBin = 0; iBin < sizeX; iBin++)
166 xAxis->SetBinLabel(iBin + 1, Form(
"%s", xArr[iBin].Data()));
167 for (Int_t iBin = 0; iBin < sizeY; iBin++)
168 yAxis->SetBinLabel(iBin + 1, Form(
"%s", yArr[iBin].Data()));
172 }
else if (iHisto == beta400)
173 h4[iBeam][iTarget][iTrigger][iHisto] =
new TH2F(Form(
" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
174 Form(
"Target: %s; P / q [GeV / c]; #beta_{400}",
fTargets[iTarget].Data()), 250, 0., 10., 100, 0., 1.2);
176 else if (iHisto == beta700)
177 h4[iBeam][iTarget][iTrigger][iHisto] =
new TH2F(Form(
" Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
178 Form(
"Target: %s; P / q [GeV / c]; #beta_{700}",
fTargets[iTarget].Data()), 250, 0., 10., 100, 0., 1.2);
180 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
181 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
183 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
184 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(iHisto < 3 ? 0.07 : 0.09);
186 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
187 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
189 h4[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
193 for (Int_t iHisto = 0; iHisto < nResidHistos; iHisto++) {
194 if (iHisto == xResTof400) {
195 h5[iBeam][iTarget][iTrigger][xResTof400] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
196 Form(
"Target: %s (TOF400); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -15., +15.);
197 h5[iBeam][iTarget][iTrigger][xResTof400]->SetLineColor(kRed);
198 }
else if (iHisto == yResTof400) {
199 h5[iBeam][iTarget][iTrigger][yResTof400] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
200 Form(
"Target: %s (TOF400); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -15., +15.);
201 h5[iBeam][iTarget][iTrigger][yResTof400]->SetLineColor(kBlue);
202 }
else if (iHisto == xResTof700) {
203 h5[iBeam][iTarget][iTrigger][xResTof700] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
204 Form(
"Target: %s (TOF700); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -50., +50.);
205 h5[iBeam][iTarget][iTrigger][xResTof700]->SetLineColor(kRed);
206 }
else if (iHisto == yResTof700) {
207 h5[iBeam][iTarget][iTrigger][yResTof700] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
208 Form(
"Target: %s (TOF700); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -30., +30.);
209 h5[iBeam][iTarget][iTrigger][yResTof700]->SetLineColor(kBlue);
210 }
else if (iHisto == xResCsc) {
211 h5[iBeam][iTarget][iTrigger][xResCsc] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
212 Form(
"Target: %s (CSC); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -30., +30.);
213 h5[iBeam][iTarget][iTrigger][xResCsc]->SetLineColor(kRed);
214 }
else if (iHisto == yResCsc) {
215 h5[iBeam][iTarget][iTrigger][yResCsc] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
216 Form(
"Target: %s (CSC); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -20., +20.);
217 h5[iBeam][iTarget][iTrigger][yResCsc]->SetLineColor(kBlue);
218 }
else if (iHisto == xResDch) {
219 h5[iBeam][iTarget][iTrigger][xResDch] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
220 Form(
"Target: %s (DCH); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -10., +10.);
221 h5[iBeam][iTarget][iTrigger][xResDch]->SetLineColor(kRed);
222 }
else if (iHisto == yResDch) {
223 h5[iBeam][iTarget][iTrigger][yResDch] =
new TH1F(Form(
" Resid Beam %d Target %d Trigger %d Histo %d", iBeam, iTarget, iTrigger, iHisto),
224 Form(
"Target: %s (DCH); Resid. (blue - Y) [cm]; N",
fTargets[iTarget].Data()), 500, -10., +10.);
225 h5[iBeam][iTarget][iTrigger][yResDch]->SetLineColor(kBlue);
228 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
229 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
231 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
232 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.09);
234 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
235 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.57);
248 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
249 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++)
251 TCanvas* c =
new TCanvas(
"c",
"c", 1200, 800);
254 const Int_t nPads = 25;
256 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
257 TVirtualPad* pad = c->cd(iPad);
259 if ((iPad - 1) % 5 < 3)
262 if ((iPad - 1) % 5 > 2) {
264 pad->SetLeftMargin(0.2);
267 if ((iPad - 1) % 5 == 0)
268 pad->SetLeftMargin(0.2);
270 Int_t idx = iPad - 1;
272 Int_t currTarget = idx / 5;
274 if (currTarget + 1 > (Int_t)
fTargets.size())
277 Int_t currDist = idx % 5;
279 TH2F* histo = h4[iBeam][currTarget][iTrigger][currDist];
281 if (currDist == 3 || currDist == 4)
287 TString targPath =
"";
295 const Int_t nBeams =
fBeams.size();
296 const Int_t nTargets =
fTargets.size();
297 const Int_t nTriggers =
fTriggers.size();
299 const Int_t nDets = 4;
301 TH2F***** fitResults =
new TH2F****[nBeams];
302 for (Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
303 fitResults[iBeam] =
new TH2F***[nTargets];
305 for (Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
306 fitResults[iBeam][iTarget] =
new TH2F**[nTriggers];
308 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
309 fitResults[iBeam][iTarget][iTrigger] =
new TH2F*[nDets];
311 for (Int_t iDet = 0; iDet < nDets; iDet++) {
312 TString titlePart = (iDet == 0) ?
"(TOF400)" : (iDet == 1) ?
"(TOF700)" : (iDet == 2) ?
"(CSC)" :
"(DCH)";
314 fitResults[iBeam][iTarget][iTrigger][iDet] =
315 new TH2F(Form(
"Beam %d Target %d Trigger %d Det %d", iBeam, iTarget, iTrigger, iDet),
316 Form(
"Target: %s %s",
fTargets[iTarget].Data(), titlePart.Data()), 2., 0., 2., 2, 0., 2.);
318 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleSize(0.09);
319 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleSize(0.09);
321 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleOffset(-5.);
322 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleOffset(.57);
324 fitResults[iBeam][iTarget][iTrigger][iDet]->SetMarkerSize(4.);
326 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetLabelSize(.15);
327 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetLabelSize(.15);
329 const Int_t nBins = 2;
330 TString xArr[nBins] = {
"X",
"Y"};
331 TString yArr[nBins] = {
"#sigma [cm]",
"#mu [cm]"};
333 for (Int_t iBin = 0; iBin < nBins; iBin++)
334 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetBinLabel(iBin + 1, Form(
"%s", xArr[iBin].Data()));
335 for (Int_t iBin = 0; iBin < nBins; iBin++)
336 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetBinLabel(iBin + 1, Form(
"%s", yArr[iBin].Data()));
343 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
344 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++)
346 TCanvas*
d =
new TCanvas(
"d",
"d", 1200, 800);
347 TCanvas* e =
new TCanvas(
"e",
"e", 1200, 800);
351 const Int_t nPads = 20;
353 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
354 Int_t idx = (iPad - 1) % 4;
355 Int_t currTarget = (iPad - 1) / 4;
357 if (currTarget + 1 > (Int_t)
fTargets.size())
360 TH1F* histo1 = h5[iBeam][currTarget][iTrigger][2 * idx];
361 TH1F* histo2 = h5[iBeam][currTarget][iTrigger][2 * idx + 1];
363 Double_t max1 = histo1->GetMaximum();
364 Double_t max2 = histo2->GetMaximum();
369 histo2->Draw(
"same");
372 histo1->Draw(
"same");
375 TFitResultPtr resX = histo1->Fit(
"gaus",
"RSQww",
"", -3., +3.);
377 histo1->GetFunction(
"gaus")->SetLineColor(kBlack);
378 histo1->GetFunction(
"gaus")->SetLineStyle(kDashed);
381 TFitResultPtr resY = histo2->Fit(
"gaus",
"RSQww",
"", -3., +3.);
383 histo2->GetFunction(
"gaus")->SetLineColor(kBlack);
384 histo2->GetFunction(
"gaus")->SetLineStyle(kDashed);
387 TH2F* histo3 = fitResults[iBeam][currTarget][iTrigger][idx];
390 histo3->SetBinContent(1, 2, resX->Parameter(1));
391 histo3->SetBinContent(2, 2, resY->Parameter(1));
392 histo3->SetBinContent(1, 1, resX->Parameter(2));
393 histo3->SetBinContent(2, 1, resY->Parameter(2));
397 e->cd(iPad)->SetLeftMargin(0.2);
398 histo3->Draw(
"TEXT");
401 TString targPath =
"";
405 d->SaveAs(Form(
"beam_%s_targ_%s_trigger_%s_matchingResiduals.%s",
fBeams[iBeam].Data(), targPath.Data(),
fTriggers[iTrigger].Data(),
usedOutExtension.Data()));
408 e->SaveAs(Form(
"beam_%s_targ_%s_trigger_%s_matchingFitResults.%s",
fBeams[iBeam].Data(), targPath.Data(),
fTriggers[iTrigger].Data(),
usedOutExtension.Data()));
415 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
416 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++)
418 TCanvas* a =
new TCanvas(
"a",
"a", 1200, 800);
422 const Int_t nPads = 25;
424 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
427 Int_t idx = iPad - 1;
429 Int_t currTarget = idx / 5;
431 if (currTarget + 1 > (Int_t)
fTargets.size())
434 Int_t currDist = idx % 5;
436 TH1F* histo = h[iBeam][currTarget][iTrigger][currDist];
440 Double_t integral = histo->Integral();
443 for (Int_t iBin = 1; iBin < histo->GetNbinsX() + 1; iBin++)
444 histo->SetBinContent(iBin, 1. * histo->GetBinContent(iBin) / integral);
448 TString targPath =
"";
457 TCanvas* b =
new TCanvas(
"b",
"b", 1200, 800);