19 name = fTitle +
"_down_low";
21 new TH2F(name,
"Hodo signal in strips side DOWN gain LOW", kNstrips + 2, 0, kNstrips + 2, 250, 0, 5000);
22 h2d_EstripDL->GetXaxis()->SetTitle(
"Strip id");
23 h2d_EstripDL->GetXaxis()->SetTitleColor(kOrange + 10);
24 h2d_EstripDL->GetYaxis()->SetTitle(
"Z^2");
25 h2d_EstripDL->GetYaxis()->SetTitleColor(kOrange + 10);
26 h2d_EstripDL->SetStats(0);
27 name = fTitle +
"_up_low";
29 new TH2F(name,
"Hodo signal in strips side UP gain LOW", kNstrips + 2, 0, kNstrips + 2, 250, 0, 5000);
30 h2d_EstripUL->GetXaxis()->SetTitle(
"Strip id");
31 h2d_EstripUL->GetXaxis()->SetTitleColor(kOrange + 10);
32 h2d_EstripUL->GetYaxis()->SetTitle(
"Z^2");
33 h2d_EstripUL->GetYaxis()->SetTitleColor(kOrange + 10);
34 h2d_EstripUL->SetStats(0);
35 name = fTitle +
"_down_high";
37 new TH2F(name,
"Hodo signal in strips side DOWN gain HIGH", kNstrips + 2, 0, kNstrips + 2, 250, 0, 5000);
38 h2d_EstripDH->GetXaxis()->SetTitle(
"Strip id");
39 h2d_EstripDH->GetXaxis()->SetTitleColor(kOrange + 10);
40 h2d_EstripDH->GetYaxis()->SetTitle(
"Z^2");
41 h2d_EstripDH->GetYaxis()->SetTitleColor(kOrange + 10);
42 h2d_EstripDH->SetStats(0);
43 name = fTitle +
"_up_high";
45 new TH2F(name,
"Hodo signal in strips side UP gain HIGH", kNstrips + 2, 0, kNstrips + 2, 250, 0, 5000);
46 h2d_EstripUH->GetXaxis()->SetTitle(
"Strip id");
47 h2d_EstripUH->GetXaxis()->SetTitleColor(kOrange + 10);
48 h2d_EstripUH->GetYaxis()->SetTitle(
"Z^2");
49 h2d_EstripUH->GetYaxis()->SetTitleColor(kOrange + 10);
50 h2d_EstripUH->SetStats(0);
52 name = fTitle +
"Canvas_h2d";
59 puh2->
opt =
"colz logz";
60 canAmpsPads.at(0) = puh2;
61 NamesAmps.at(0) = puh2->
current->GetName();
64 pul2->
opt =
"colz logz";
65 canAmpsPads.at(1) = pul2;
66 NamesAmps.at(1) = pul2->
current->GetName();
69 pdh2->
opt =
"colz logz";
70 canAmpsPads.at(2) = pdh2;
71 NamesAmps.at(2) = pdh2->
current->GetName();
74 pdl2->
opt =
"colz logz";
75 canAmpsPads.at(3) = pdl2;
76 NamesAmps.at(3) = pdl2->
current->GetName();
78 name = fTitle +
"_profile_down_low";
79 h1d_profileDL =
new TH1F(name,
"Hodo signal in strips side DOWN gain LOW", kNstrips + 2, 0, kNstrips + 2);
80 h1d_profileDL->GetXaxis()->SetTitle(
"Strip id");
81 h1d_profileDL->GetXaxis()->SetTitleColor(kOrange + 10);
82 h1d_profileDL->GetYaxis()->SetTitle(
"dE/dx [Z^2]");
83 h1d_profileDL->GetYaxis()->SetTitleColor(kOrange + 10);
84 h1d_profileDL->SetStats(0);
85 name = fTitle +
"_profile_up_low";
86 h1d_profileUL =
new TH1F(name,
"Hodo signal in strips side UP gain LOW", kNstrips + 2, 0, kNstrips + 2);
87 h1d_profileUL->GetXaxis()->SetTitle(
"Strip id");
88 h1d_profileUL->GetXaxis()->SetTitleColor(kOrange + 10);
89 h1d_profileUL->GetYaxis()->SetTitle(
"dE/dx [Z^2]");
90 h1d_profileUL->GetYaxis()->SetTitleColor(kOrange + 10);
91 h1d_profileUL->SetStats(0);
92 name = fTitle +
"_profile_down_high";
93 h1d_profileDH =
new TH1F(name,
"Hodo signal in strips side DOWN gain HIGH", kNstrips + 2, 0, kNstrips + 2);
94 h1d_profileDH->GetXaxis()->SetTitle(
"Strip id");
95 h1d_profileDH->GetXaxis()->SetTitleColor(kOrange + 10);
96 h1d_profileDH->GetYaxis()->SetTitle(
"dE/dx [Z^2]");
97 h1d_profileDH->GetYaxis()->SetTitleColor(kOrange + 10);
98 h1d_profileDH->SetStats(0);
99 name = fTitle +
"_profile_up_high";
100 h1d_profileUH =
new TH1F(name,
"Hodo signal in strips side UP gain HIGH", kNstrips + 2, 0, kNstrips + 2);
101 h1d_profileUH->GetXaxis()->SetTitle(
"Strip id");
102 h1d_profileUH->GetXaxis()->SetTitleColor(kOrange + 10);
103 h1d_profileUH->GetYaxis()->SetTitle(
"dE/dx [Z^2]");
104 h1d_profileUH->GetYaxis()->SetTitleColor(kOrange + 10);
105 h1d_profileUH->SetStats(0);
107 name = fTitle +
"Canvas_h1d_prof";
115 canProfPads.at(0) = puh1;
116 NamesProf.at(0) = puh1->
current->GetName();
120 canProfPads.at(1) = pul1;
121 NamesProf.at(1) = pul1->
current->GetName();
125 canProfPads.at(2) = pdh1;
126 NamesProf.at(2) = pdh1->
current->GetName();
130 canProfPads.at(3) = pdl1;
131 NamesProf.at(3) = pdl1->
current->GetName();
134 name = fTitle +
"_canv_proj_UH";
135 canv_proj_UH =
new TCanvas(name, name, 1, 1);
136 canv_proj_UH->DivideSquare(kNstrips);
137 name = fTitle +
"_canv_proj_DH";
138 canv_proj_DH =
new TCanvas(name, name, 1, 1);
139 canv_proj_DH->DivideSquare(kNstrips);
140 name = fTitle +
"_canv_proj_UL";
141 canv_proj_UL =
new TCanvas(name, name, 1, 1);
142 canv_proj_UL->DivideSquare(kNstrips);
143 name = fTitle +
"_canv_proj_DL";
144 canv_proj_DL =
new TCanvas(name, name, 1, 1);
145 canv_proj_DL->DivideSquare(kNstrips);
146 for (uint32_t
i = 1;
i <= kNstrips;
i++)
147 for (uint32_t j = 0; j < kNsides; j++)
148 for (uint32_t k = 0; k < kNgains; k++) {
149 TString side, gain, nameH;
151 (j == 0) ? side =
"DOWN" : side =
"UP";
152 (k == 0) ? gain =
"LOW" : gain =
"HIGH";
153 nameH = fTitle + Form(
"_strip_%d_side_%s_gain_%s",
i, side.Data(), gain.Data());
154 vecProj[address] =
new TH1F(nameH, nameH, 250, 0, 5000);
157 p->
opt =
"hist logy";
158 canv_proj_Pads[address] = p;
159 Namescanv_proj[address] = p->
current->GetName();
162 name = fTitle +
"_hStripSideGain";
163 hStripSideGain =
new TH1F(name, name, 300, 0, 5000);
164 hStripSideGain->SetStats(0);
165 hStripSideGain->GetYaxis()->SetTitle(
"Counts");
166 hStripSideGain->GetXaxis()->SetTitle(
"Apml");
168 name = fTitle +
"_wfmStrip";
169 wfmStrip =
new TH1F(name, name, 200, 0, 200);
170 wfmStrip->SetMarkerStyle(31);
171 wfmStrip->SetMarkerSize(0.5);
172 wfmStrip->SetStats(0);
174 name = fTitle +
"CanvasSelection";
176 canSelect->Divide(1, 2);
177 canSelectPads.resize(1 * 2);
178 NamesSelect.resize(1 * 2);
182 canSelectPads.at(0) = ps1;
183 NamesSelect.at(0) = ps1->
current->GetName();
186 ps2->
opt =
"hist lp";
187 canSelectPads.at(1) = ps2;
188 NamesSelect.at(1) = ps2->
current->GetName();
190 name = fTitle +
"_hZ2_hodo";
191 hZ2_hodo =
new TH1F(name,
"hZ2_hodo", 250, 0, 5000);
192 hZ2_hodo->GetXaxis()->SetTitle(
"Z^2");
193 hZ2_hodo->GetXaxis()->SetTitleColor(kOrange + 10);
194 hZ2_hodo->GetYaxis()->SetTitle(
"Counts / event");
195 hZ2_hodo->GetYaxis()->SetTitleColor(kOrange + 10);
196 hZ2_hodo->SetOption(
"hist");
197 hZ2_hodo->SetStats(0);
199 name = fTitle +
"CanvasZ2";
200 canZ2 =
new TCanvas(name, name, 1, 1);
206 canZ2Pads.at(0) = pz;
207 NamesZ2.at(0) = pz->
current->GetName();
268 fSelectedStrip = Strip;
269 fSelectedSide = Side;
270 fSelectedGain = Gain;
271 fSelectedTrigger = Trigger;
272 TString command =
"(1)";
273 TString digiInTree =
"HodoDigi";
274 if (fSelectedStrip >= 0)
275 command = command + Form(
" && %s.GetStripId() == %d", digiInTree.Data(), fSelectedStrip);
276 if (fSelectedSide >= 0)
277 command = command + Form(
" && %s.GetStripSide() == %d", digiInTree.Data(), fSelectedSide);
278 if (fSelectedGain >= 0)
279 command = command + Form(
" && %s.GetGain() == %d", digiInTree.Data(), fSelectedGain);
280 TString triggerCondition =
"";
281 if (fSelectedTrigger >= 0)
282 triggerCondition = Form(
" && %s trigger bit == %d (bitBT=2, bitBC1=3, bitMBT=6, bitNiT=4, bitCCT1=5, "
283 "bitCCT2=8, bitCCT3=12, bitFHCAL=9)",
284 digiInTree.Data(), fSelectedTrigger);
285 TString titleSignal = Form(
"#splitline{Signal %s}{%s}", command.Data(), triggerCondition.Data());
286 hStripSideGain->SetTitle(titleSignal);
287 TString titleWfm = Form(
"#splitline{Wfm %s}{%s}", command.Data(), triggerCondition.Data());
288 wfmStrip->SetTitle(titleWfm);
289 hStripSideGain->Reset();
292 TString direction = Form(
"%s.fAmpl>>%s", digiInTree.Data(), hStripSideGain->GetName());
293 frecoTree->Draw(direction.Data(), command.Data(),
"goff");
294 wfmStrip->SetTitle(titleWfm);
335 TClonesArray* digits = fDigiArrays->
hodo;
339 float responses[kNstrips + 1][kNsides];
340 memset(responses, 0,
sizeof(responses[0][0]) * (kNstrips + 1) * kNsides);
341 hZ2_hodo->Scale(fEventCounter);
342 h1d_profileDL->Scale(fEventCounter);
343 h1d_profileDH->Scale(fEventCounter);
344 h1d_profileUL->Scale(fEventCounter);
345 h1d_profileUH->Scale(fEventCounter);
348 for (Int_t iDig = 0; iDig < digits->GetEntriesFast(); iDig++) {
356 vecProj.at(flatIdx)->Fill(signal);
357 if (side == 0 && gain == 0) {
358 h2d_EstripDL->Fill(strip, signal);
359 h1d_profileDL->Fill(strip, signal);
361 if (side == 0 && gain == 1) {
362 h2d_EstripDH->Fill(strip, signal);
363 h1d_profileDH->Fill(strip, signal);
365 if (side == 1 && gain == 0) {
366 h2d_EstripUL->Fill(strip, signal);
367 h1d_profileUL->Fill(strip, signal);
369 if (side == 1 && gain == 1) {
370 h2d_EstripUH->Fill(strip, signal);
371 h1d_profileUH->Fill(strip, signal);
385 (Int_t)strip == fSelectedStrip && (Int_t)side == fSelectedSide && (Int_t)gain == fSelectedGain;
387 if ((TrigPattern >> fSelectedTrigger) & 1) {
388 hStripSideGain->Fill(digi->
fAmpl);
389 auto Wfm = digi->
GetWfm();
390 std::vector<float> points(Wfm.size());
391 std::iota(std::begin(points), std::end(points), 0);
393 wfmStrip->GetXaxis()->SetRangeUser(0, Wfm.size());
394 for (UInt_t wfm_iter = 0; wfm_iter < Wfm.size(); wfm_iter++)
395 wfmStrip->Fill(wfm_iter, Wfm.at(wfm_iter));
400 responses[strip][side] = signal;
403 for (
int i = 1;
i <= kNstrips;
i++)
404 if (responses[
i][0] * responses[
i][1] > 0.001)
405 hZ2_hodo->Fill((responses[
i][0] + responses[
i][1]) / 2);
406 hZ2_hodo->Scale(1. / fEventCounter);
407 h1d_profileDL->Scale(1. / fEventCounter);
408 h1d_profileDH->Scale(1. / fEventCounter);
409 h1d_profileUL->Scale(1. / fEventCounter);
410 h1d_profileUH->Scale(1. / fEventCounter);