16 gStyle->SetTitleFontSize(0.1);
18 gStyle->SetPaintTextFormat(
"4.3f");
23 const Int_t nHistos = 5;
25 const Int_t nResidHistos = 8;
57 h =
new TH1F****[nBeams];
61 h2 =
new TH2F(
"h2",
"Num of event per target / trigger (Argon run) [MEvents]", nTriggers, 0., nTriggers, nTargets,
63 h3 =
new TH2F(
"h3",
"Num of event per target / trigger (Argon run) [MEvents], nRecoTracks > 1", nTriggers, 0.,
64 nTriggers, nTargets, 0., nTargets);
68 for (
Int_t iHisto = 0; iHisto < 2; iHisto++) {
72 for (
size_t iBin = 0; iBin <
fTriggers.size(); iBin++)
74 for (
size_t iBin = 0; iBin <
fTargets.size(); iBin++)
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];
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];
99 for (
Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
101 h[iBeam][iTarget][iTrigger] =
new TH1F*[nHistos];
102 h4[iBeam][iTarget][iTrigger] =
new TH2F*[nHistos];
103 h5[iBeam][iTarget][iTrigger] =
new TH1F*[nResidHistos];
105 for (
Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
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.);
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.);
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,
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,
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.);
134 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.07);
135 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.07);
137 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
138 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.07);
140 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
141 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
144 for (
Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
145 if (iHisto == matchOneToOne || iHisto == matchTwoToOne || iHisto == matchThreeToOne) {
152 if (iHisto == matchOneToOne) {
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) {
168 xArr[0] =
"tof400 + tof700";
169 xArr[1] =
"tof700 + csc";
170 xArr[2] =
"tof400 + csc";
174 }
else if (iHisto == matchThreeToOne) {
180 xArr[0] =
"tof400 + tof700 + csc";
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);
188 TAxis* xAxis =
h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis();
189 TAxis* yAxis =
h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis();
191 for (
Int_t iBin = 0; iBin < sizeX; iBin++)
193 for (
Int_t iBin = 0; iBin < sizeY; iBin++)
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);
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);
210 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
211 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
213 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
214 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(iHisto < 3 ? 0.07 : 0.09);
216 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
217 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
219 h4[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
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.,
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.,
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.,
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.,
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.,
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.,
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.,
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.,
271 h5[iBeam][iTarget][iTrigger][yResDch]->SetLineColor(
kBlue);
274 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
275 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
277 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
278 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.09);
280 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
281 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.57);
293 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
294 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++) {
298 const Int_t nPads = 25;
300 for (
Int_t iPad = 1; iPad < nPads + 1; iPad++) {
303 if ((iPad - 1) % 5 < 3)
306 if ((iPad - 1) % 5 > 2) {
311 if ((iPad - 1) % 5 == 0)
314 Int_t idx = iPad - 1;
316 Int_t currTarget = idx / 5;
321 Int_t currDist = idx % 5;
323 TH2F* histo =
h4[iBeam][currTarget][iTrigger][currDist];
325 if (currDist == 3 || currDist == 4)
344 const Int_t nDets = 4;
346 TH2F***** fitResults =
new TH2F****[nBeams];
347 for (
Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
348 fitResults[iBeam] =
new TH2F***[nTargets];
350 for (
Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
351 fitResults[iBeam][iTarget] =
new TH2F**[nTriggers];
353 for (
Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
354 fitResults[iBeam][iTarget][iTrigger] =
new TH2F*[nDets];
356 for (
Int_t iDet = 0; iDet < nDets; iDet++) {
357 TString titlePart = (iDet == 0) ?
"(TOF400)"
358 : (iDet == 1) ?
"(TOF700)"
359 : (iDet == 2) ?
"(CSC)"
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.);
372 fitResults[iBeam][iTarget][iTrigger][iDet]->
SetMarkerSize(4.);
377 const Int_t nBins = 2;
378 TString xArr[nBins] = {
"X",
"Y"};
379 TString yArr[nBins] = {
"#sigma [cm]",
"#mu [cm]"};
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()));
392 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
393 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++) {
399 const Int_t nPads = 20;
401 for (
Int_t iPad = 1; iPad < nPads + 1; iPad++) {
402 Int_t idx = (iPad - 1) % 4;
403 Int_t currTarget = (iPad - 1) / 4;
408 TH1F* histo1 =
h5[iBeam][currTarget][iTrigger][2 * idx];
409 TH1F* histo2 =
h5[iBeam][currTarget][iTrigger][2 * idx + 1];
417 histo2->
Draw(
"same");
420 histo1->
Draw(
"same");
435 TH2F* histo3 = fitResults[iBeam][currTarget][iTrigger][idx];
445 histo3->
Draw(
"TEXT");
452 d->SaveAs(
Form(
"beam_%s_targ_%s_trigger_%s_matchingResiduals.%s",
fBeams[iBeam].Data(), targPath.
Data(),
456 e->
SaveAs(
Form(
"beam_%s_targ_%s_trigger_%s_matchingFitResults.%s",
fBeams[iBeam].Data(),
463 for (
size_t iBeam = 0; iBeam <
fBeams.size(); iBeam++)
464 for (
size_t iTrigger = 0; iTrigger <
fTriggers.size(); iTrigger++) {
469 const Int_t nPads = 25;
471 for (
Int_t iPad = 1; iPad < nPads + 1; iPad++) {
474 Int_t idx = iPad - 1;
476 Int_t currTarget = idx / 5;
481 Int_t currDist = idx % 5;
483 TH1F* histo =
h[iBeam][currTarget][iTrigger][currDist];
499 a->SaveAs(
Form(
"beam_%s_targ_%s_trigger_%s.%s",
fBeams[iBeam].Data(), targPath.
Data(),