BmnRoot
Loading...
Searching...
No Matches
BmnTrackingQaOfflineDraw.cxx
Go to the documentation of this file.
2
4h(nullptr),
5h2(nullptr),
6h3(nullptr),
7h4(nullptr),
8h5(nullptr) {
9 usedOutExtension = "pdf";
10
11}
12
14 gStyle->SetOptStat(0);
15 gStyle->SetTitleFontSize(0.1);
16 gStyle->SetTitleY(1.0);
17 gStyle->SetPaintTextFormat("4.3f");
18
19 const Int_t nBeams = fBeams.size();
20 const Int_t nTargets = fTargets.size();
21 const Int_t nTriggers = fTriggers.size();
22 const Int_t nHistos = 5;
23
24 const Int_t nResidHistos = 8; // tof400, toff700, csc, dch x 2 (x, y)
25
26 enum {
27 Vz, TotMult, PosMult, NegMult, Momentum
28 };
29
30 enum {
31 matchOneToOne, matchTwoToOne, matchThreeToOne, beta400, beta700
32 };
33
34 enum {
35 xResTof400, yResTof400,
36 xResTof700, yResTof700,
37 xResCsc, yResCsc,
38 xResDch, yResDch
39 };
40
41 h = new TH1F****[nBeams];
42 h4 = new TH2F****[nBeams];
43 h5 = new TH1F****[nBeams];
44
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);
47
48 TH2F * hArr[2] = {h2, h3};
49
50 for (Int_t iHisto = 0; iHisto < 2; iHisto++) {
51 TAxis* xAxis = hArr[iHisto]->GetXaxis();
52 TAxis* yAxis = hArr[iHisto]->GetYaxis();
53
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()));
58
59 //h2->GetXaxis()->SetLabelSize(0.07);
60 hArr[iHisto]->GetYaxis()->SetLabelSize(0.07);
61
62 hArr[iHisto]->GetXaxis()->SetTitleSize(0.06);
63 hArr[iHisto]->GetYaxis()->SetTitleSize(0.06);
64
65 hArr[iHisto]->GetXaxis()->SetTitleOffset(.43);
66 hArr[iHisto]->GetYaxis()->SetTitleOffset(.77);
67 }
68
69 //h2->SetMarkerSize(2.3);
70
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];
75
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];
80
81 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
82
83 h[iBeam][iTarget][iTrigger] = new TH1F*[nHistos];
84 h4[iBeam][iTarget][iTrigger] = new TH2F*[nHistos];
85 h5[iBeam][iTarget][iTrigger] = new TH1F*[nResidHistos];
86
87 for (Int_t iHisto = 0; iHisto < nHistos; iHisto++) {
88
89 if (iHisto == Vz)
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.);
92
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.);
96
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.);
100
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.);
104
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.);
108
109 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.07);
110 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.07);
111
112 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
113 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.07);
114
115 h[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
116 h[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
117 }
118
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;
123
124 Int_t sizeX = -1;
125 Int_t sizeY = -1;
126
127 if (iHisto == matchOneToOne) {
128 sizeX = sizeY = 4;
129 xArr = new TString[sizeX];
130 yArr = new TString[sizeY];
131
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) {
137 sizeX = 3;
138 sizeY = 2;
139
140 xArr = new TString[sizeX];
141 yArr = new TString[sizeY];
142
143 xArr[0] = "tof400 + tof700";
144 xArr[1] = "tof700 + csc";
145 xArr[2] = "tof400 + csc";
146
147 yArr[0] = "csc";
148 yArr[1] = "dch";
149 } else if (iHisto == matchThreeToOne) {
150 sizeX = sizeY = 1;
151
152 xArr = new TString[sizeX];
153 yArr = new TString[sizeY];
154
155 xArr[0] = "tof400 + tof700 + csc";
156 yArr[0] = "dch";
157 }
158
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);
161
162 TAxis* xAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis();
163 TAxis* yAxis = h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis();
164
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()));
169
170 delete [] xArr;
171 delete [] yArr;
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);
175
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);
179
180 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
181 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
182
183 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
184 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(iHisto < 3 ? 0.07 : 0.09);
185
186 h4[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
187 h4[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.77);
188
189 h4[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
190 }
191
192 // Resid. histos ...
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);
226 }
227
228 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetLabelSize(0.095);
229 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetLabelSize(0.1);
230
231 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleSize(0.09);
232 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleSize(0.09);
233
234 h5[iBeam][iTarget][iTrigger][iHisto]->GetXaxis()->SetTitleOffset(-5.);
235 h5[iBeam][iTarget][iTrigger][iHisto]->GetYaxis()->SetTitleOffset(.57);
236
237 // h5[iBeam][iTarget][iTrigger][iHisto]->SetMarkerSize(3.);
238 }
239 }
240 }
241 }
242
243
244}
245
246void BmnTrackingQaOfflineDraw::ProcessHistos(Bool_t anal1, Bool_t anal2, Bool_t anal3) {
247 if (anal3) {
248 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
249 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++)
250 {
251 TCanvas* c = new TCanvas("c", "c", 1200, 800);
252 c->Divide(5, 5);
253
254 const Int_t nPads = 25;
255
256 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
257 TVirtualPad* pad = c->cd(iPad);
258
259 if ((iPad - 1) % 5 < 3)
260 pad->SetGrid();
261
262 if ((iPad - 1) % 5 > 2) {
263 pad->SetLogz();
264 pad->SetLeftMargin(0.2);
265 }
266
267 if ((iPad - 1) % 5 == 0)
268 pad->SetLeftMargin(0.2);
269
270 Int_t idx = iPad - 1;
271
272 Int_t currTarget = idx / 5;
273
274 if (currTarget + 1 > (Int_t)fTargets.size())
275 continue;
276
277 Int_t currDist = idx % 5;
278
279 TH2F* histo = h4[iBeam][currTarget][iTrigger][currDist];
280
281 if (currDist == 3 || currDist == 4)
282 histo->Draw("colz");
283 else
284 histo->Draw("TEXT");
285 }
286
287 TString targPath = "";
288 for (auto it : fTargets)
289 targPath += it;
290
291 c->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matching.%s", fBeams[iBeam].Data(), targPath.Data(), fTriggers[iTrigger].Data(), usedOutExtension.Data()));
292 delete c;
293 }
294
295 const Int_t nBeams = fBeams.size();
296 const Int_t nTargets = fTargets.size();
297 const Int_t nTriggers = fTriggers.size();
298
299 const Int_t nDets = 4; // tof400, tof700, csc, dch
300
301 TH2F***** fitResults = new TH2F****[nBeams];
302 for (Int_t iBeam = 0; iBeam < nBeams; iBeam++) {
303 fitResults[iBeam] = new TH2F***[nTargets];
304
305 for (Int_t iTarget = 0; iTarget < nTargets; iTarget++) {
306 fitResults[iBeam][iTarget] = new TH2F**[nTriggers];
307
308 for (Int_t iTrigger = 0; iTrigger < nTriggers; iTrigger++) {
309 fitResults[iBeam][iTarget][iTrigger] = new TH2F*[nDets];
310
311 for (Int_t iDet = 0; iDet < nDets; iDet++) {
312 TString titlePart = (iDet == 0) ? "(TOF400)" : (iDet == 1) ? "(TOF700)" : (iDet == 2) ? "(CSC)" : "(DCH)";
313
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.);
317
318 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleSize(0.09);
319 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleSize(0.09);
320
321 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetTitleOffset(-5.);
322 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetTitleOffset(.57);
323
324 fitResults[iBeam][iTarget][iTrigger][iDet]->SetMarkerSize(4.);
325
326 fitResults[iBeam][iTarget][iTrigger][iDet]->GetYaxis()->SetLabelSize(.15);
327 fitResults[iBeam][iTarget][iTrigger][iDet]->GetXaxis()->SetLabelSize(.15);
328
329 const Int_t nBins = 2;
330 TString xArr[nBins] = {"X", "Y"};
331 TString yArr[nBins] = {"#sigma [cm]", "#mu [cm]"};
332
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()));
337
338 }
339 }
340 }
341 }
342
343 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
344 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++)
345 {
346 TCanvas* d = new TCanvas("d", "d", 1200, 800);
347 TCanvas* e = new TCanvas("e", "e", 1200, 800);
348 d->Divide(4, 5);
349 e->Divide(4, 5);
350
351 const Int_t nPads = 20;
352
353 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
354 Int_t idx = (iPad - 1) % 4;
355 Int_t currTarget = (iPad - 1) / 4;
356
357 if (currTarget + 1 > (Int_t)fTargets.size())
358 continue;
359
360 TH1F* histo1 = h5[iBeam][currTarget][iTrigger][2 * idx];
361 TH1F* histo2 = h5[iBeam][currTarget][iTrigger][2 * idx + 1];
362
363 Double_t max1 = histo1->GetMaximum();
364 Double_t max2 = histo2->GetMaximum();
365
366 d->cd(iPad);
367 if (max1 > max2) {
368 histo1->Draw();
369 histo2->Draw("same");
370 } else {
371 histo2->Draw();
372 histo1->Draw("same");
373 }
374
375 TFitResultPtr resX = histo1->Fit("gaus", "RSQww", "", -3., +3.);
376 if (resX) {
377 histo1->GetFunction("gaus")->SetLineColor(kBlack);
378 histo1->GetFunction("gaus")->SetLineStyle(kDashed);
379 }
380
381 TFitResultPtr resY = histo2->Fit("gaus", "RSQww", "", -3., +3.);
382 if (resY) {
383 histo2->GetFunction("gaus")->SetLineColor(kBlack);
384 histo2->GetFunction("gaus")->SetLineStyle(kDashed);
385 }
386
387 TH2F* histo3 = fitResults[iBeam][currTarget][iTrigger][idx];
388
389 if (resX && resY) {
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));
394 }
395
396
397 e->cd(iPad)->SetLeftMargin(0.2);
398 histo3->Draw("TEXT");
399 }
400
401 TString targPath = "";
402 for (auto it : fTargets)
403 targPath += it;
404
405 d->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matchingResiduals.%s", fBeams[iBeam].Data(), targPath.Data(), fTriggers[iTrigger].Data(), usedOutExtension.Data()));
406 delete d;
407
408 e->SaveAs(Form("beam_%s_targ_%s_trigger_%s_matchingFitResults.%s", fBeams[iBeam].Data(), targPath.Data(), fTriggers[iTrigger].Data(), usedOutExtension.Data()));
409 delete e;
410 }
411
412 }
413
414 if (anal2)
415 for (size_t iBeam = 0; iBeam < fBeams.size(); iBeam++)
416 for (size_t iTrigger = 0; iTrigger < fTriggers.size(); iTrigger++)
417 {
418 TCanvas* a = new TCanvas("a", "a", 1200, 800);
419 a->Divide(5, 5);
420
421 // const Int_t nPads = 5 * fTargets.size();
422 const Int_t nPads = 25;
423
424 for (Int_t iPad = 1; iPad < nPads + 1; iPad++) {
425 a->cd(iPad);
426
427 Int_t idx = iPad - 1;
428
429 Int_t currTarget = idx / 5;
430
431 if (currTarget + 1 > (Int_t)fTargets.size())
432 continue;
433
434 Int_t currDist = idx % 5;
435
436 TH1F* histo = h[iBeam][currTarget][iTrigger][currDist];
437
438 if (histo) {
439 histo->Draw();
440 Double_t integral = histo->Integral();
441
442 if (integral > 0.)
443 for (Int_t iBin = 1; iBin < histo->GetNbinsX() + 1; iBin++)
444 histo->SetBinContent(iBin, 1. * histo->GetBinContent(iBin) / integral);
445 }
446 }
447
448 TString targPath = "";
449 for (auto it : fTargets)
450 targPath += it;
451
452 a->SaveAs(Form("beam_%s_targ_%s_trigger_%s.%s", fBeams[iBeam].Data(), targPath.Data(), fTriggers[iTrigger].Data(), usedOutExtension.Data()));
453 delete a;
454 }
455
456 if (anal1) {
457 TCanvas* b = new TCanvas("b", "b", 1200, 800);
458 b->Divide(2, 1);
459
460 b->cd(1)->SetGrid();
461 h2->Draw("TEXT");
462
463 b->cd(2)->SetGrid();
464 h3->Draw("TEXT");
465
466 b->SaveAs(Form("tmp.%s", usedOutExtension.Data()));
467 }
468}
const Float_t d
Z-ccordinate of the first GEM-station.
Definition BmnMwpcHit.cxx:7
void ProcessHistos(Bool_t anal1, Bool_t anal2, Bool_t anal3)