108 if (m_nHistClassesActual < 1) m_nHistClassesActual = 1;
112 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
118 h_topCombinedTimingTopAll[iskim] =
new TH1I(Form(
"h_t0_comb_%s",
skim_smap[iskim].c_str()),
"ALL TOP combined t0 decisions", 100,
121 h_topCombinedTimingTopAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decision time (us)");
123 h_topNSlotsCombinedTimingTopAll[iskim] =
new TH1I(Form(
"h_n_slots_comb_%s",
skim_smap[iskim].c_str()),
124 "ALL TOP combined t0 decisions: N slots", 17, 0, 17);
125 h_topNSlotsCombinedTimingTopAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
127 h_topNHitSumAll[iskim] =
new TH1I(Form(
"h_nhit_per_slot_comb_%s",
skim_smap[iskim].c_str()),
128 "ALL TOP combined t0 decisions: N hits per slot", 200, 0, 200);
129 h_topNHitSumAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
131 h_topLogLSumAll[iskim] =
new TH1I(Form(
"h_logl_per_slot_comb_%s",
skim_smap[iskim].c_str()),
132 "ALL TOP combined t0 decisions: log L per slot", 100, 0, 60000);
133 h_topLogLSumAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
135 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim] =
new TH2I(Form(
"h_n_slots_vs_nhit_total_comb_%s",
skim_smap[iskim].c_str()),
136 "ALL TOP combined t0 decisions: N slots vs N hits (total)", 300, 0, 300, 17, 0, 17);
137 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->GetXaxis()->SetTitle(
"N hits (total)");
138 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->GetYaxis()->SetTitle(
"N slots");
140 h_topTrigType[iskim] =
new TH1I(Form(
"h_trig_type_%s",
skim_smap[iskim].c_str()),
141 "ALL TOP combined decisions: trig type", 10, 0, 10);
142 h_topTrigType[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: trig type");
144 h_topTimingResiduals[iskim] =
new TH1I(Form(
"h_timing_residuals_%s",
skim_smap[iskim].c_str()),
145 "ALL TOP combined decisions: timing residual", 100, 0, 100);
146 h_topTimingResiduals[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: timing residuals");
148 h_topTimingVariance[iskim] =
new TH1I(Form(
"h_timing_variance_%s",
skim_smap[iskim].c_str()),
149 "ALL TOP combined decisions: timing variance", 100, 0, 100);
150 h_topTimingVariance[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: timing variance");
157 h_topSlotAll[iskim] =
new TH1I(Form(
"h_slot_number_%s",
skim_smap[iskim].c_str()),
"slot", 16, 1, 17);
158 h_topSlotAll[iskim]->GetXaxis()->SetTitle(
"slot number in combined decisions (over 1us)");
160 h_topSegmentAll[iskim] =
new TH1I(Form(
"h_segment_slot_%s",
skim_smap[iskim].c_str()),
"segment", 10, 1, 11);
161 h_topSegmentAll[iskim]->GetXaxis()->SetTitle(
"segment for each slot in combined decisions (over 1us)");
163 h_topNHitsAll[iskim] =
new TH1I(Form(
"h_nhit_slot_%s",
skim_smap[iskim].c_str()),
"nhit", 200, 0, 200);
164 h_topNHitsAll[iskim]->GetXaxis()->SetTitle(
"N hits (for slots in combined decisions (over 1us))");
166 h_topLogLAll[iskim] =
new TH1I(Form(
"h_logl_slot_%s",
skim_smap[iskim].c_str()),
"log L", 100, 0, 60000);
167 h_topLogLAll[iskim]->GetXaxis()->SetTitle(
"log L (for slots in combined decisions (over 1us))");
169 h_topT0All[iskim] =
new TH1I(Form(
"h_t0_slot_%s",
skim_smap[iskim].c_str()),
"t0", 100, 0, 100000);
170 h_topT0All[iskim]->GetXaxis()->SetTitle(
"t0 for slots in combined decisions (over 1us)");
177 h_topSlotVsSegment[iskim] =
new TH2I(Form(
"h_slot_vs_segment_%s",
skim_smap[iskim].c_str()),
"slot # vs slot segment", 10, 1, 11,
179 h_topSlotVsSegment[iskim]->GetXaxis()->SetTitle(
"segment");
180 h_topSlotVsSegment[iskim]->GetYaxis()->SetTitle(
"slot");
182 h_topSlotVsNHits[iskim] =
new TH2I(Form(
"h_slot_vs_nhit_%s",
skim_smap[iskim].c_str()),
"slot # vs slot nhit", 200, 0, 200, 16, 1,
184 h_topSlotVsNHits[iskim]->GetXaxis()->SetTitle(
"N hits");
185 h_topSlotVsNHits[iskim]->GetYaxis()->SetTitle(
"slot");
187 h_topSlotVsLogL[iskim] =
new TH2I(Form(
"h_slot_vs_logl_%s",
skim_smap[iskim].c_str()),
"slot # vs slot log L", 100, 0, 60000, 16,
189 h_topSlotVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
190 h_topSlotVsLogL[iskim]->GetYaxis()->SetTitle(
"slot");
192 h_topSlotVsT0[iskim] =
new TH2I(Form(
"h_slot_vs_t0_%s",
skim_smap[iskim].c_str()),
"slot # vs slot t0", 100, 0, 100000, 16, 1, 17);
193 h_topSlotVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
194 h_topSlotVsT0[iskim]->GetYaxis()->SetTitle(
"slot");
196 h_topSegmentVsNHits[iskim] =
new TH2I(Form(
"h_segment_vs_nhit_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot nhit", 200, 0,
198 h_topSegmentVsNHits[iskim]->GetXaxis()->SetTitle(
"N hits");
199 h_topSegmentVsNHits[iskim]->GetYaxis()->SetTitle(
"segment");
201 h_topSegmentVsLogL[iskim] =
new TH2I(Form(
"h_segment_vs_logl_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot log L", 100, 0,
203 h_topSegmentVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
204 h_topSegmentVsLogL[iskim]->GetYaxis()->SetTitle(
"segment");
206 h_topSegmentVsT0[iskim] =
new TH2I(Form(
"h_segment_vs_t0_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot t0", 100, 0, 100000,
208 h_topSegmentVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
209 h_topSegmentVsT0[iskim]->GetYaxis()->SetTitle(
"segment");
211 h_topNHitsVsLogL[iskim] =
new TH2I(Form(
"h_nhit_vs_logl_%s",
skim_smap[iskim].c_str()),
"slot nhit vs slot log L", 100, 0, 100000,
213 h_topNHitsVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
214 h_topNHitsVsLogL[iskim]->GetYaxis()->SetTitle(
"N hits");
216 h_topNHitsVsT0[iskim] =
new TH2I(Form(
"h_nhit_vs_t0_%s",
skim_smap[iskim].c_str()),
"slot nhit vs slot t0", 100, 0, 100000, 200, 0,
218 h_topNHitsVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
219 h_topNHitsVsT0[iskim]->GetYaxis()->SetTitle(
"N hits");
221 h_topLogLVsT0[iskim] =
new TH2I(Form(
"h_logl_vs_t0_%s",
skim_smap[iskim].c_str()),
"slot log L vs slot t0", 100, 0, 100000, 100, 0,
223 h_topLogLVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
224 h_topLogLVsT0[iskim]->GetYaxis()->SetTitle(
"logL");
231 for (
int slot = 0; slot <= 15; slot++) {
233 h_topSlotSegment[iskim][slot] =
new TH1I(Form(
"h_segment_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
234 "segment", 10, 1, 11);
237 h_topSlotNHits[iskim][slot] =
new TH1I(Form(
"h_nhit_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
"nhit",
239 h_topSlotNHits[iskim][slot]->GetXaxis()->SetTitle(
"N hits");
241 h_topSlotLogL[iskim][slot] =
new TH1I(Form(
"h_logl_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
"log L",
243 h_topSlotLogL[iskim][slot]->GetXaxis()->SetTitle(
"log L");
245 h_topSlotT0[iskim][slot] =
new TH1I(Form(
"h_t0_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
"t0", 100, 0,
247 h_topSlotT0[iskim][slot]->GetXaxis()->SetTitle(
"t0");
256 h_gdl_ecltop_timing_diff_vs_slot[iskim] =
new TH2I(Form(
"h_gdl_slot_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
257 "slot vs GDL ECL-TOP slot t0 difference", 400, 1400,
259 h_gdl_ecltop_timing_diff_vs_slot[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
260 h_gdl_ecltop_timing_diff_vs_slot[iskim]->GetYaxis()->SetTitle(
"slot");
262 h_gdl_ecltop_timing_diff_vs_segment[iskim] =
new TH2I(Form(
"h_gdl_segment_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
263 "segment vs GDL ECL-TOP slot t0 difference",
264 400, 1400, 2200, 10, 1, 11);
265 h_gdl_ecltop_timing_diff_vs_segment[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
266 h_gdl_ecltop_timing_diff_vs_segment[iskim]->GetYaxis()->SetTitle(
"segment");
268 h_gdl_ecltop_timing_diff_vs_nhits[iskim] =
new TH2I(Form(
"h_gdl_nhits_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
269 "N hits (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 200, 0, 200);
270 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
271 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->GetYaxis()->SetTitle(
"N hits");
273 h_gdl_ecltop_timing_diff_vs_logl[iskim] =
new TH2I(Form(
"h_gdl_logl_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
274 "log L (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 100, 0, 60000);
275 h_gdl_ecltop_timing_diff_vs_logl[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
276 h_gdl_ecltop_timing_diff_vs_logl[iskim]->GetYaxis()->SetTitle(
"log L");
280 h_ecl_gdl_top_timing_diff_both[iskim] =
new TH1I(Form(
"h_ecl_gdl_top_timing_diff_both_%s",
skim_smap[iskim].c_str()),
"", 400,
282 h_ecl_gdl_top_timing_diff_both[iskim]->GetXaxis()->SetTitle(
"Both ECL - GDL_TOP timing difference (2ns)");
284 h_ecl_top_top_timing_diff_both[iskim] =
new TH1I(Form(
"h_ecl_top_top_timing_diff_both_%s",
skim_smap[iskim].c_str()),
"", 400,
286 h_ecl_top_top_timing_diff_both[iskim]->GetXaxis()->SetTitle(
"Both ECL - TOP_TOP timing difference (2ns)");
296 h_gdl_top_rvc_vs_top_timing[iskim] =
new TH2I(Form(
"h_gdl_top_rvc_vs_top_timing_%s",
skim_smap[iskim].c_str()),
297 "ALL GDL TOP rvc vs GDL TOP timing (7.8ns)",
298 128, 0, 1280, 128, 0, 1280);
299 h_gdl_top_rvc_vs_top_timing[iskim]->GetXaxis()->SetTitle(
"TOP timing according to GDL (7.8ns)");
300 h_gdl_top_rvc_vs_top_timing[iskim]->GetYaxis()->SetTitle(
"GDL rvc((TOP decision (received))");
302 h_gdl_ecltop_rvc_diff[iskim] =
new TH1I(Form(
"h_gdl_ecltop_rvc_diff_%s",
skim_smap[iskim].c_str()),
303 "ALL GDL ECL-TOP rvc difference",
305 h_gdl_ecltop_rvc_diff[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP rvc difference (clks)");
307 h_gdl_cdctop_rvc_diff[iskim] =
new TH1I(Form(
"h_gdl_cdctop_rvc_diff_%s",
skim_smap[iskim].c_str()),
308 "ALL GDL CDC-TOP rvc difference",
310 h_gdl_cdctop_rvc_diff[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP rvc difference (clks)");
314 h_gdl_gdltop_rvc_diff_all[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_%s",
skim_smap[iskim].c_str()),
315 "ALL GDL GDL-TOP rvc difference",
317 h_gdl_gdltop_rvc_diff_all[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
319 h_gdl_comtop_rvc_diff_all[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_%s",
skim_smap[iskim].c_str()),
320 "ALL GDL COM-TOP rvc difference",
322 h_gdl_comtop_rvc_diff_all[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
326 h_topRvcDiff1All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_1_%s",
skim_smap[iskim].c_str()),
"ALL rvc(posted to GDL)-rvc(TOP(this))",
328 h_topRvcDiff1All[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
330 h_topRvcDiff2All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_2_%s",
skim_smap[iskim].c_str()),
"ALL rvc(TOP(this))-rvc(TOP(prev))",
332 h_topRvcDiff2All[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
334 h_topRvcDiff3All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_3_%s",
skim_smap[iskim].c_str()),
"ALL rvc(CB(window))-rvc(TOP(this))",
336 h_topRvcDiff3All[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
338 h_topRvcDiff4All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_4_%s",
skim_smap[iskim].c_str()),
339 "ALL rvc(received L1 from GDL)-rvc(TOP(this))",
341 h_topRvcDiff4All[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
345 h_topGdlRvcDiff1All[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_%s",
skim_smap[iskim].c_str()),
346 "ALL rvc(L1(GDL))-rvc(L1(as reported to TOP))",
348 h_topGdlRvcDiff1All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
350 h_topGdlRvcDiff2All[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_%s",
skim_smap[iskim].c_str()),
351 "ALL rvc(TOP(received by GDL))-rvc(TOP(this))",
353 h_topGdlRvcDiff2All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
355 h_topGdlRvcDiff3All[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_%s",
skim_smap[iskim].c_str()),
356 "ALL rvc(TOP(received by GDL))-rvc(TOP(prev))",
358 h_topGdlRvcDiff3All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
362 h_decisionNumberVsNumberDecisionsGood[iskim] =
new TH2I(Form(
"h_decision_vs_n_decisions_good_%s",
skim_smap[iskim].c_str()),
363 "Good decision number vs N of decisions", 5, 0,
365 h_decisionNumberVsNumberDecisionsGood[iskim]->GetXaxis()->SetTitle(
"N decisions");
366 h_decisionNumberVsNumberDecisionsGood[iskim]->GetYaxis()->SetTitle(
"Decision number");
370 h_ecl_gdl_top_timing_diff_good[iskim] =
new TH1I(Form(
"h_ecl_gdl_top_timing_diff_good_%s",
skim_smap[iskim].c_str()),
"", 400,
372 h_ecl_gdl_top_timing_diff_good[iskim]->GetXaxis()->SetTitle(
"Good ECL - GDL_TOP timing difference (2ns)");
374 h_ecl_top_top_timing_diff_good[iskim] =
new TH1I(Form(
"h_ecl_top_top_timing_diff_good_%s",
skim_smap[iskim].c_str()),
"", 400,
376 h_ecl_top_top_timing_diff_good[iskim]->GetXaxis()->SetTitle(
"Good ECL - TOP_TOP timing difference (2ns)");
380 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_good_%s",
382 "GOOD TOP-TOP vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
383 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
384 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
386 h_top_ecltop_timing_diff_vs_toptop_good[iskim] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_good_%s",
388 "GOOD TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
389 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
390 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
392 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_good_%s",
394 "GOOD (GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
395 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
396 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
400 h_gdl_gdltop_rvc_diff_good[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
401 "GOOD GDL GDL-TOP rvc difference",
403 h_gdl_gdltop_rvc_diff_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
405 h_gdl_comtop_rvc_diff_good[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
406 "GOOD GDL COM-TOP rvc difference",
408 h_gdl_comtop_rvc_diff_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
412 h_topCombinedTimingTopGood[iskim] =
new TH1I(Form(
"h_t0_good_%s",
skim_smap[iskim].c_str()),
"GOOD TOP combined t0 decision", 100,
415 h_topCombinedTimingTopGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
417 h_topNSlotsCombinedTimingTopGood[iskim] =
new TH1I(Form(
"h_n_slots_good_%s",
skim_smap[iskim].c_str()),
418 "GOOD TOP combined t0 decision: N slots", 17, 0, 17);
419 h_topNSlotsCombinedTimingTopGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
421 h_topNHitSumGood[iskim] =
new TH1I(Form(
"h_n_hit_per_slot_good_%s",
skim_smap[iskim].c_str()),
422 "GOOD TOP combined t0 decision: N hit per slot", 200, 0, 200);
423 h_topNHitSumGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
425 h_topLogLSumGood[iskim] =
new TH1I(Form(
"h_logl_per_slot_good_%s",
skim_smap[iskim].c_str()),
426 "GOOD TOP combined t0 decision: log L per slot", 100, 0, 60000);
427 h_topLogLSumGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
431 h_topRvcDiff1Good[iskim] =
new TH1I(Form(
"h_rvc_diff_1_good_%s",
skim_smap[iskim].c_str()),
432 "GOOD rvc(posted to GDL)-rvc(TOP(this))",
434 h_topRvcDiff1Good[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
436 h_topRvcDiff2Good[iskim] =
new TH1I(Form(
"h_rvc_diff_2_good_%s",
skim_smap[iskim].c_str()),
"GOOD rvc(TOP(this))-rvc(TOP(prev))",
438 h_topRvcDiff2Good[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
440 h_topRvcDiff3Good[iskim] =
new TH1I(Form(
"h_rvc_diff_3_good_%s",
skim_smap[iskim].c_str()),
"GOOD rvc(CB(window))-rvc(TOP(this))",
442 h_topRvcDiff3Good[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
444 h_topRvcDiff4Good[iskim] =
new TH1I(Form(
"h_rvc_diff_4_good_%s",
skim_smap[iskim].c_str()),
445 "GOOD rvc(received L1 from GDL)-rvc(TOP(this))",
447 h_topRvcDiff4Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
451 h_topGdlRvcDiff1Good[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
452 "GOOD rvc(L1(GDL))-rvc(L1(as reported to TOP))",
454 h_topGdlRvcDiff1Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
456 h_topGdlRvcDiff2Good[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
457 "GOOD rvc(TOP(received by GDL))-rvc(TOP(this))",
459 h_topGdlRvcDiff2Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
461 h_topGdlRvcDiff3Good[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
462 "GOOD rvc(TOP(received by GDL))-rvc(TOP(prev))",
464 h_topGdlRvcDiff3Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
468 h_decisionNumberVsNumberDecisionsBad[iskim] =
new TH2I(Form(
"h_decision_vs_n_decisions_bad_%s",
skim_smap[iskim].c_str()),
469 "Bad decision number vs N of decisions", 5, 0, 5,
471 h_decisionNumberVsNumberDecisionsBad[iskim]->GetXaxis()->SetTitle(
"N decisions");
472 h_decisionNumberVsNumberDecisionsBad[iskim]->GetYaxis()->SetTitle(
"Decision number");
476 h_ecl_gdl_top_timing_diff_bad[iskim] =
new TH1I(Form(
"h_ecl_gdl_top_timing_diff_bad_%s",
skim_smap[iskim].c_str()),
"", 400, 1400,
478 h_ecl_gdl_top_timing_diff_bad[iskim]->GetXaxis()->SetTitle(
"Bad ECL - GDL_TOP timing difference (2ns)");
480 h_ecl_top_top_timing_diff_bad[iskim] =
new TH1I(Form(
"h_ecl_top_top_timing_diff_bad_%s",
skim_smap[iskim].c_str()),
"", 400, 1400,
482 h_ecl_top_top_timing_diff_bad[iskim]->GetXaxis()->SetTitle(
"Bad ECL - TOP_TOP timing difference (2ns)");
486 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_bad_%s",
488 "BAD TOP-TOP vs (GDL ECL)-(GDL TOP) t0 differences", 110, -760, 10240, 110, -760, 10240);
489 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) (combined) t0 difference (ns, 100ns bins)");
490 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
492 h_top_ecltop_timing_diff_vs_toptop_bad[iskim] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_bad_%s",
494 "BAD TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
495 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
496 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
498 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_bad_%s",
500 "BAD (GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
501 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
502 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
506 h_gdl_gdltop_rvc_diff_bad[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
507 "BAD GDL GDL-TOP rvc difference",
509 h_gdl_gdltop_rvc_diff_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
511 h_gdl_comtop_rvc_diff_bad[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
512 "BAD GDL COM-TOP rvc difference",
514 h_gdl_comtop_rvc_diff_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
518 h_topCombinedTimingTopBad[iskim] =
new TH1I(Form(
"h_t0_bad_%s",
skim_smap[iskim].c_str()),
"BAD TOP combined t0 decision", 100, 0,
520 h_topCombinedTimingTopBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
522 h_topNSlotsCombinedTimingTopBad[iskim] =
new TH1I(Form(
"h_N_slots_bad_%s",
skim_smap[iskim].c_str()),
523 "BAD TOP combined t0 decision: N slots", 17, 0, 17);
524 h_topNSlotsCombinedTimingTopBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
526 h_topNHitSumBad[iskim] =
new TH1I(Form(
"h_n_hit_per_slot_bad_%s",
skim_smap[iskim].c_str()),
527 "BAD TOP combined t0 decision: N hit per slot", 200, 0, 200);
528 h_topNHitSumBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
530 h_topLogLSumBad[iskim] =
new TH1I(Form(
"h_logl_per_slot_bad_%s",
skim_smap[iskim].c_str()),
531 "BAD TOP combined t0 decision: log L per slot", 100, 0, 60000);
532 h_topLogLSumBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
536 h_topRvcDiff1Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_1_bad_%s",
skim_smap[iskim].c_str()),
"BAD rvc(posted to GDL)-rvc(TOP(this))",
539 h_topRvcDiff1Bad[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
541 h_topRvcDiff2Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_2_bad_%s",
skim_smap[iskim].c_str()),
"BAD rvc(TOP(this))-rvc(TOP(prev))",
543 h_topRvcDiff2Bad[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
545 h_topRvcDiff3Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_3_bad_%s",
skim_smap[iskim].c_str()),
"BAD rvc(CB(window))-rvc(TOP(this))",
547 h_topRvcDiff3Bad[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
549 h_topRvcDiff4Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_4_bad_%s",
skim_smap[iskim].c_str()),
550 "BAD rvc(received L1 from GDL)-rvc(TOP(this))",
552 h_topRvcDiff4Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
556 h_topGdlRvcDiff1Bad[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
557 "BAD rvc(L1(GDL))-rvc(L1(as reported to TOP))",
559 h_topGdlRvcDiff1Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
561 h_topGdlRvcDiff2Bad[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
562 "BAD rvc(TOP(received by GDL))-rvc(TOP(this))",
564 h_topGdlRvcDiff2Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
566 h_topGdlRvcDiff3Bad[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
567 "BAD rvc(TOP(received by GDL))-rvc(TOP(prev))",
569 h_topGdlRvcDiff3Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
574 h_top_nt0decisions_vs_hist_class[iskim] =
new TH2I(Form(
"h_top_nt0decisions_vs_hist_class_%s",
skim_smap[iskim].c_str()),
575 "N t0 decisions vs event class according to TOP info matching between GDL and TOP",
577 h_top_nt0decisions_vs_hist_class[iskim]->GetXaxis()->SetTitle(
"TOP info match (GDL vs TOP): 0/1/2 : first decision match/no match/match in some other decision");
578 h_top_nt0decisions_vs_hist_class[iskim]->GetYaxis()->SetTitle(
"Number of t0 decisions");
580 h_top_gdl_match_decision_number[iskim] =
new TH1I(Form(
"h_top_gdl_match_decision_number_%s",
skim_smap[iskim].c_str()),
581 "Decision number where TOP info is the same at TOP and GDL",
583 h_top_gdl_match_decision_number[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined decision # where TOP info is the same at TOP and GDL");
585 h_gdl_ecltop_timing_diff_5ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_5ns_%s",
skim_smap[iskim].c_str()),
586 "GDL ECL-TOP t0 difference", 248, 0, 10240);
587 h_gdl_ecltop_timing_diff_5ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (5ns)");
589 h_gdl_cdctop_timing_diff_5ns[iskim] =
new TH1I(Form(
"h_gdl_cdctop_timing_diff_5ns_%s",
skim_smap[iskim].c_str()),
590 "GDL CDC-TOP t0 difference", 248, 0, 10240);
591 h_gdl_cdctop_timing_diff_5ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP t0 difference (5ns)");
595 h_gdl_ecltop_timing_diff_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_2ns_%s",
skim_smap[iskim].c_str()),
596 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
597 h_gdl_ecltop_timing_diff_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
599 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_grl_matched_2ns_%s",
601 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
602 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference when TOP and GRL match (2ns)");
604 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_no_grl_matched_2ns_%s",
606 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
607 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference when TOP and GRL do not match (2ns)");
609 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_no_grl_at_all_2ns_%s",
611 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
612 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference when GRL has no 2D tracks (2ns)");
614 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_nslots_2ns_%s",
616 "GDL N slots vs ECL-TOP t0 difference", 400, 1400, 2200, 16, 1, 17);
617 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
618 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->GetYaxis()->SetTitle(
"N slots in combined decision");
620 h_top_ecltop_timing_diff_combined_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_combined_2ns_%s",
skim_smap[iskim].c_str()),
621 "GDL ECL-TOP TOP t0 difference", 400, 1400, 2200);
622 h_top_ecltop_timing_diff_combined_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
624 h_top_ecltop_timing_diff_best_slot_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_best_slot_2ns_%s",
626 "GDL ECL-TOP TOP t0 difference using slot with max N hits", 400, 1400, 2200);
627 h_top_ecltop_timing_diff_best_slot_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
629 h_gdl_cdctop_timing_diff_2ns[iskim] =
new TH1I(Form(
"h_gdl_cdctop_timing_diff_2ns_%s",
skim_smap[iskim].c_str()),
630 "GDL CDC-TOP t0 difference", 250, 0, 500);
631 h_gdl_cdctop_timing_diff_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP t0 difference (2ns)");
635 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
638 h_N_decision[iskim][histClass] =
new TH1I(Form(
"h_N_decisions_%d_%s", histClass,
skim_smap[iskim].c_str()),
639 "N t0 decisions in 1 us before GDL L1", 5, 1,
641 h_N_decision[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG N combined t0 decisions");
645 h_topNHitVsNhit[iskim][histClass] =
new TH2I(Form(
"h_nhit_vs_nhit_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
646 "First decision: N hits vs N hits", 20, 0, 100, 20, 0, 100);
647 h_topNHitVsNhit[iskim][histClass]->GetXaxis()->SetTitle(
"N hits for slot with largest N hits");
648 h_topNHitVsNhit[iskim][histClass]->GetYaxis()->SetTitle(
"N hits for slot with next to the largest N hits");
650 h_topSlotVsSlot[iskim][histClass] =
new TH2I(Form(
"h_slot_vs_slot_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
651 "First decision: slot # vs slot #", 16, 1, 17, 16, 1, 17);
652 h_topSlotVsSlot[iskim][histClass]->GetXaxis()->SetTitle(
"Slot # for slot with largest N hits");
653 h_topSlotVsSlot[iskim][histClass]->GetYaxis()->SetTitle(
"Slot # for slot with next to the largest N hits");
655 h_topT0VsT0[iskim][histClass] =
new TH2I(Form(
"h_t0_vs_t0_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
656 "First decision: T0 vs T0", 100, 0, 100000, 100, 0, 100000);
657 h_topT0VsT0[iskim][histClass]->GetXaxis()->SetTitle(
"T0 for slot with largest N hits");
658 h_topT0VsT0[iskim][histClass]->GetYaxis()->SetTitle(
"T0 for slot with next to the largest N hits");
660 h_topSegmentVsSegment[iskim][histClass] =
new TH2I(Form(
"h_segment_vs_segment_first_decision_%d_%s", histClass,
662 "First decision: segment # vs segment #", 10, 1, 11, 10, 1, 11);
663 h_topSegmentVsSegment[iskim][histClass]->GetXaxis()->SetTitle(
"Segment # for slot with largest N hits");
664 h_topSegmentVsSegment[iskim][histClass]->GetYaxis()->SetTitle(
"Segment # for slot with next to the largest N hits");
666 h_topLogLVsLogL[iskim][histClass] =
new TH2I(Form(
"h_logl_vs_logl_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
667 "First decision: log L vs log L", 100, 0, 60000, 100, 0, 60000);
668 h_topLogLVsLogL[iskim][histClass]->GetXaxis()->SetTitle(
"log L for slot with largest N hits");
669 h_topLogLVsLogL[iskim][histClass]->GetYaxis()->SetTitle(
"log L for slot with next to the largest N hits");
679 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
681 h_topCombinedTimingTop[iskim][histClass] =
new TH1I(Form(
"h_t0_%d_%s", histClass,
skim_smap[iskim].c_str()),
682 "TOP combined t0 decision", 100, 0,
684 h_topCombinedTimingTop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
686 h_topNSlotsCombinedTimingTop[iskim][histClass] =
new TH1I(Form(
"h_n_slots_%d_%s", histClass,
skim_smap[iskim].c_str()),
687 "TOP combined t0 decision: N slots", 17, 0, 17);
688 h_topNSlotsCombinedTimingTop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
690 h_topNHitSum[iskim][histClass] =
new TH1I(Form(
"h_n_hit_per_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
691 "TOP combined t0 decision: N hits per slot", 200, 0, 200);
692 h_topNHitSum[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
694 h_topNHitBestSlot[iskim][histClass] =
new TH1I(Form(
"h_n_hit_best_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
695 "TOP combined t0 decision: N hits best slot", 200, 0, 200);
696 h_topNHitBestSlot[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits best slot");
703 h_topLogLSum[iskim][histClass] =
new TH1I(Form(
"h_logl_per_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
704 "TOP combined t0 decision: log L per slot", 100, 0, 60000);
705 h_topLogLSum[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
709 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_slot_vs_ecltop_timing_diff_%d_%s", histClass,
710 skim_smap[iskim].c_str()),
"slot vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 16, 1, 17);
711 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
712 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"slot");
714 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_segment_vs_ecltop_timing_diff_%d_%s", histClass,
715 skim_smap[iskim].c_str()),
"segment vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 10, 1, 11);
716 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
717 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"segment");
719 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_nhits_vs_ecltop_timing_diff_%d_%s", histClass,
720 skim_smap[iskim].c_str()),
"N hits (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 200, 0, 200);
721 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
722 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"N hits");
724 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_logl_vs_ecltop_timing_diff_%d_%s", histClass,
725 skim_smap[iskim].c_str()),
"log L (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 100, 0, 60000);
726 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
727 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"log L");
731 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_combined_diff_2ns_%d_%s", histClass,
733 "(GDL ECL)-(TOP TOP) t0 difference (combined decision)", 400, 1400, 2200);
734 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
736 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_best_slot_diff_2ns_%d_%s", histClass,
738 "(GDL ECL)-(TOP TOP) t0 difference (best slot decision)", 400, 1400, 2200);
739 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
741 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_%d_%s", histClass,
743 "TOP-TOP vs (GDL ECL)-(GDL TOP) t0 differences", 110, -760, 10240, 110, -760, 10240);
744 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) (combined) t0 difference (ns, 100ns bins)");
745 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
747 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_%d_%s", histClass,
749 "TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
750 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
751 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
753 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_%d_%s", histClass,
755 "(GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
756 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
757 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
759 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_best_slot_%d_%s",
761 "(GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (best slot) t0 differences", 110, -760, 10240, 110, -760, 10240);
762 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP() best slot) t0 difference (ns, 100ns bins)");
763 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
765 h_top_ecltop_timing_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_diff_2ns_%d_%s", histClass,
767 "(GDL ECL)-(TOP TOP) t0 difference (all decisions)", 400, 1400, 2200);
768 h_top_ecltop_timing_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
775 h_topTC2IdVsTC1IdAll[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_%s",
skim_smap[iskim].c_str()),
776 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
777 h_topTC2IdVsTC1IdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
778 h_topTC2IdVsTC1IdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
780 h_topTC2EnergyVsTC1EnergyAll[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_%s",
skim_smap[iskim].c_str()),
781 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
782 h_topTC2EnergyVsTC1EnergyAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
783 h_topTC2EnergyVsTC1EnergyAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
785 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_%s",
skim_smap[iskim].c_str()),
786 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20,
788 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
789 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
791 h_topTC2PhiIdVsTC1PhiIdAll[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_%s",
skim_smap[iskim].c_str()),
792 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1,
794 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
795 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
797 h_topTCPhiIdVsTCThetaIdAll[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_%s",
skim_smap[iskim].c_str()),
798 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20,
800 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
801 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
802 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
806 h_topTC2IdVsTC1IdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_grl_%s",
skim_smap[iskim].c_str()),
807 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
808 h_topTC2IdVsTC1IdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
809 h_topTC2IdVsTC1IdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
811 h_topTC2EnergyVsTC1EnergyGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_grl_%s",
skim_smap[iskim].c_str()),
812 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0,
814 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
815 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
817 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_grl_%s",
skim_smap[iskim].c_str()),
818 "Sorted by energy TC2 vs TC1 theta ids", 20,
820 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
821 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
823 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_grl_%s",
skim_smap[iskim].c_str()),
824 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36,
826 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
827 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
829 h_topTCPhiIdVsTCThetaIdGRLAll[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_grl_%s",
skim_smap[iskim].c_str()),
830 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20,
831 0, 20, 36, 1, 37, 2, 0, 2);
832 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
833 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
834 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
838 h_topTC2IdVsTC1Id[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_b2b_%s",
skim_smap[iskim].c_str()),
839 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
840 h_topTC2IdVsTC1Id[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
841 h_topTC2IdVsTC1Id[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
843 h_topTC2EnergyVsTC1Energy[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_b2b_%s",
skim_smap[iskim].c_str()),
844 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
845 h_topTC2EnergyVsTC1Energy[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
846 h_topTC2EnergyVsTC1Energy[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
848 h_topTC2ThetaIdVsTC1ThetaId[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_b2b_%s",
skim_smap[iskim].c_str()),
849 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20, 20, 0,
851 h_topTC2ThetaIdVsTC1ThetaId[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
852 h_topTC2ThetaIdVsTC1ThetaId[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
854 h_topTC2PhiIdVsTC1PhiId[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_b2b_%s",
skim_smap[iskim].c_str()),
855 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1, 37);
856 h_topTC2PhiIdVsTC1PhiId[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
857 h_topTC2PhiIdVsTC1PhiId[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
859 h_topTCPhiIdVsTCThetaId[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_b2b_%s",
skim_smap[iskim].c_str()),
860 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20, 36, 1,
862 h_topTCPhiIdVsTCThetaId[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
863 h_topTCPhiIdVsTCThetaId[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
864 h_topTCPhiIdVsTCThetaId[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
868 h_topTC2IdVsTC1IdGRL[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_grl_b2b_%s",
skim_smap[iskim].c_str()),
869 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
870 h_topTC2IdVsTC1IdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
871 h_topTC2IdVsTC1IdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
873 h_topTC2EnergyVsTC1EnergyGRL[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_grl_b2b_%s",
skim_smap[iskim].c_str()),
874 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
875 h_topTC2EnergyVsTC1EnergyGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
876 h_topTC2EnergyVsTC1EnergyGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
878 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_grl_b2b_%s",
skim_smap[iskim].c_str()),
879 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20,
881 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
882 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
884 h_topTC2PhiIdVsTC1PhiIdGRL[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_grl_b2b_%s",
skim_smap[iskim].c_str()),
885 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1,
887 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
888 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
890 h_topTCPhiIdVsTCThetaIdGRL[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_grl_b2b_%s",
skim_smap[iskim].c_str()),
891 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20,
893 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
894 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
895 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
899 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_grl_top_l1_%s",
901 "(GDL ECL)-(GDL TOP) vs GRL TOP rvc (relative to GDL L1)", 100, -2000, 0, 110, -760, 10240);
902 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->GetXaxis()->SetTitle(
"GRL TOP rvc relative to GDL L1 (rvc)");
903 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->GetYaxis()->SetTitle(
"(GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
905 h_gdl_top_l1_vs_grl_top_l1[iskim] =
new TH2I(Form(
"h_gdl_top_l1_vs_grl_top_l1_%s",
skim_smap[iskim].c_str()),
906 "GDL TOP rvc vs GRL TOP rvc (relative to GDL L1)", 100, -2000,
908 h_gdl_top_l1_vs_grl_top_l1[iskim]->GetXaxis()->SetTitle(
"GRL TOP rvc relative to GDL L1 (rvc)");
909 h_gdl_top_l1_vs_grl_top_l1[iskim]->GetYaxis()->SetTitle(
"GDL TOP rvc relative to GDL L1 (rvc)");
911 h_grl_ntopslots_vs_ncdcslots[iskim] =
new TH2I(Form(
"h_grl_ntopslots_vs_ncdcslots_%s",
skim_smap[iskim].c_str()),
912 "GRL TOP slots vs CDC slots", 10, 0, 10, 10, 0, 10);
913 h_grl_ntopslots_vs_ncdcslots[iskim]->GetXaxis()->SetTitle(
"GRL CDC slots");
914 h_grl_ntopslots_vs_ncdcslots[iskim]->GetYaxis()->SetTitle(
"GRL TOP slots");
916 h_grl_ncdctopslots_matched[iskim] =
new TH1I(Form(
"h_grl_ncdctopslots_matched_%s",
skim_smap[iskim].c_str()),
917 "GRL Number of matched TOP and CDC slots", 17, 0, 17);
918 h_grl_ncdctopslots_matched[iskim]->GetXaxis()->SetTitle(
"Number of matched TOP and CDC slots");
920 h_grl_topslots_vs_cdcslots_match[iskim] =
new TH2I(Form(
"h_grl_topslots_vs_cdcslots_match_%s",
skim_smap[iskim].c_str()),
921 "GRL TOP slots vs CDC slots matches", 17, 0, 17, 17,
923 h_grl_topslots_vs_cdcslots_match[iskim]->GetXaxis()->SetTitle(
"GRL CDC slot");
924 h_grl_topslots_vs_cdcslots_match[iskim]->GetYaxis()->SetTitle(
"GRL TOP slot");
938 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
940 h_topSlotAll[iskim]->Reset();
941 h_topSegmentAll[iskim]->Reset();
942 h_topNHitsAll[iskim]->Reset();
943 h_topLogLAll[iskim]->Reset();
944 h_topT0All[iskim]->Reset();
946 for (
int slot = 0; slot <= 15; slot++) {
948 h_topSlotNHits[iskim][slot]->Reset();
949 h_topSlotLogL[iskim][slot]->Reset();
950 h_topSlotT0[iskim][slot]->Reset();
953 h_topSlotVsSegment[iskim]->Reset();
955 h_topSlotVsNHits[iskim]->Reset();
956 h_topSlotVsLogL[iskim]->Reset();
957 h_topSlotVsT0[iskim]->Reset();
959 h_topSegmentVsNHits[iskim]->Reset();
960 h_topSegmentVsLogL[iskim]->Reset();
961 h_topSegmentVsT0[iskim]->Reset();
963 h_topNHitsVsLogL[iskim]->Reset();
964 h_topNHitsVsT0[iskim]->Reset();
965 h_topLogLVsT0[iskim]->Reset();
967 h_ecl_gdl_top_timing_diff_both[iskim]->Reset();
968 h_ecl_top_top_timing_diff_both[iskim]->Reset();
972 h_gdl_top_rvc_vs_top_timing[iskim]->Reset();
974 h_gdl_ecltop_rvc_diff[iskim]->Reset();
975 h_gdl_cdctop_rvc_diff[iskim]->Reset();
977 h_gdl_gdltop_rvc_diff_all[iskim]->Reset();
978 h_gdl_comtop_rvc_diff_all[iskim]->Reset();
980 h_topRvcDiff1All[iskim]->Reset();
981 h_topRvcDiff2All[iskim]->Reset();
982 h_topRvcDiff3All[iskim]->Reset();
983 h_topRvcDiff4All[iskim]->Reset();
985 h_topGdlRvcDiff1All[iskim]->Reset();
986 h_topGdlRvcDiff2All[iskim]->Reset();
987 h_topGdlRvcDiff3All[iskim]->Reset();
989 h_decisionNumberVsNumberDecisionsGood[iskim]->Reset();
991 h_ecl_gdl_top_timing_diff_good[iskim]->Reset();
992 h_ecl_top_top_timing_diff_good[iskim]->Reset();
994 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->Reset();
995 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->Reset();
996 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->Reset();
998 h_gdl_gdltop_rvc_diff_good[iskim]->Reset();
999 h_gdl_comtop_rvc_diff_good[iskim]->Reset();
1001 h_topCombinedTimingTopGood[iskim]->Reset();
1002 h_topNSlotsCombinedTimingTopGood[iskim]->Reset();
1003 h_topNHitSumGood[iskim]->Reset();
1004 h_topLogLSumGood[iskim]->Reset();
1006 h_topRvcDiff1Good[iskim]->Reset();
1007 h_topRvcDiff2Good[iskim]->Reset();
1008 h_topRvcDiff3Good[iskim]->Reset();
1009 h_topRvcDiff4Good[iskim]->Reset();
1011 h_topGdlRvcDiff1Good[iskim]->Reset();
1012 h_topGdlRvcDiff2Good[iskim]->Reset();
1013 h_topGdlRvcDiff3Good[iskim]->Reset();
1015 h_decisionNumberVsNumberDecisionsBad[iskim]->Reset();
1017 h_ecl_gdl_top_timing_diff_bad[iskim]->Reset();
1018 h_ecl_top_top_timing_diff_bad[iskim]->Reset();
1020 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->Reset();
1021 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->Reset();
1022 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->Reset();
1024 h_gdl_gdltop_rvc_diff_bad[iskim]->Reset();
1025 h_gdl_comtop_rvc_diff_bad[iskim]->Reset();
1027 h_topCombinedTimingTopBad[iskim]->Reset();
1028 h_topNSlotsCombinedTimingTopBad[iskim]->Reset();
1029 h_topNHitSumBad[iskim]->Reset();
1030 h_topLogLSumBad[iskim]->Reset();
1032 h_topRvcDiff1Bad[iskim]->Reset();
1033 h_topRvcDiff2Bad[iskim]->Reset();
1034 h_topRvcDiff3Bad[iskim]->Reset();
1035 h_topRvcDiff4Bad[iskim]->Reset();
1037 h_topGdlRvcDiff1Bad[iskim]->Reset();
1038 h_topGdlRvcDiff2Bad[iskim]->Reset();
1039 h_topGdlRvcDiff3Bad[iskim]->Reset();
1043 h_topCombinedTimingTopAll[iskim]->Reset();
1044 h_topNSlotsCombinedTimingTopAll[iskim]->Reset();
1045 h_topNHitSumAll[iskim]->Reset();
1046 h_topLogLSumAll[iskim]->Reset();
1048 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->Reset();
1050 h_topTrigType[iskim]->Reset();
1051 h_topTimingResiduals[iskim]->Reset();
1052 h_topTimingVariance[iskim]->Reset();
1054 h_top_nt0decisions_vs_hist_class[iskim]->Reset();
1056 h_top_gdl_match_decision_number[iskim]->Reset();
1058 h_gdl_ecltop_timing_diff_5ns[iskim]->Reset();
1059 h_gdl_cdctop_timing_diff_5ns[iskim]->Reset();
1061 h_gdl_ecltop_timing_diff_2ns[iskim]->Reset();
1062 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim]->Reset();
1063 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[iskim]->Reset();
1064 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[iskim]->Reset();
1065 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->Reset();
1066 h_top_ecltop_timing_diff_combined_2ns[iskim]->Reset();
1067 h_top_ecltop_timing_diff_best_slot_2ns[iskim]->Reset();
1068 h_gdl_cdctop_timing_diff_2ns[iskim]->Reset();
1070 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
1073 h_topNHitVsNhit[iskim][histClass]->Reset();
1074 h_topSlotVsSlot[iskim][histClass]->Reset();
1075 h_topT0VsT0[iskim][histClass]->Reset();
1076 h_topSegmentVsSegment[iskim][histClass]->Reset();
1077 h_topLogLVsLogL[iskim][histClass]->Reset();
1081 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
1082 h_topCombinedTimingTop[iskim][histClass]->Reset();
1083 h_topNSlotsCombinedTimingTop[iskim][histClass]->Reset();
1084 h_topNHitSum[iskim][histClass]->Reset();
1085 h_topNHitBestSlot[iskim][histClass]->Reset();
1087 h_topLogLSum[iskim][histClass]->Reset();
1089 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->Reset();
1090 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->Reset();
1091 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->Reset();
1092 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->Reset();
1094 h_top_ecltop_timing_diff_2ns[iskim][histClass]->Reset();
1095 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass]->Reset();
1096 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass]->Reset();
1098 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->Reset();
1099 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->Reset();
1101 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->Reset();
1102 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass]->Reset();
1106 h_gdl_ecltop_timing_diff_vs_slot[iskim]->Reset();
1107 h_gdl_ecltop_timing_diff_vs_segment[iskim]->Reset();
1108 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->Reset();
1109 h_gdl_ecltop_timing_diff_vs_logl[iskim]->Reset();
1111 h_topTC2IdVsTC1IdAll[iskim]->Reset();
1112 h_topTC2EnergyVsTC1EnergyAll[iskim]->Reset();
1113 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->Reset();
1114 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->Reset();
1115 h_topTCPhiIdVsTCThetaIdAll[iskim]->Reset();
1117 h_topTC2IdVsTC1IdGRLAll[iskim]->Reset();
1118 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->Reset();
1119 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->Reset();
1120 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->Reset();
1121 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->Reset();
1123 h_topTC2IdVsTC1Id[iskim]->Reset();
1124 h_topTC2EnergyVsTC1Energy[iskim]->Reset();
1125 h_topTC2ThetaIdVsTC1ThetaId[iskim]->Reset();
1126 h_topTC2PhiIdVsTC1PhiId[iskim]->Reset();
1127 h_topTCPhiIdVsTCThetaId[iskim]->Reset();
1129 h_topTC2IdVsTC1IdGRL[iskim]->Reset();
1130 h_topTC2EnergyVsTC1EnergyGRL[iskim]->Reset();
1131 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->Reset();
1132 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->Reset();
1133 h_topTCPhiIdVsTCThetaIdGRL[iskim]->Reset();
1135 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->Reset();
1136 h_gdl_top_l1_vs_grl_top_l1[iskim]->Reset();
1138 h_grl_ntopslots_vs_ncdcslots[iskim]->Reset();
1139 h_grl_ncdctopslots_matched[iskim]->Reset();
1140 h_grl_topslots_vs_cdcslots_match[iskim]->Reset();
1228 if (!trgtopCombinedTimingArray)
return;
1229 if (!trgtopCombinedTimingArray.
getEntries())
return;
1235 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
1236 if (iskim == 0) skim.push_back(iskim);
1241 const std::map<std::string, int>& skim_map = result_soft->getResults();
1242 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
1244 else if (skim_map.find(
skim_menu[iskim]) != skim_map.end()) {
1246 if (accepted) skim.push_back(iskim);
1251 bool gdlInfoAvailable =
false;
1252 bool grlInfoAvailable =
false;
1258 bool grlCDCSlots[16];
1259 bool grlTOPSlots[16];
1261 bool grlCDCTOPSlotsMatch[16];
1263 if (m_doGRLCorrelations) {
1270 grlInfoAvailable =
true;
1272 int grlTimeL1 = grlEventInfo->get_coml1() - grlEventInfo->get_revoclk();
1274 grlTOPL1 = (grlEventInfo->get_TOPL1_count() + grlTimeL1 - 0.5) * (-clk127To1ns);
1278 for (
int i = 0; i < 16; i++) {
1279 grlCDCSlots[i] =
false;
1280 if (grlEventInfo->get_slot_CDC(i)) {
1281 grlCDCSlots[i] =
true;
1283 grlTOPSlots[i] =
false;
1284 if (grlEventInfo->get_slot_TOP(i)) {
1285 grlTOPSlots[i] =
true;
1292 int nCDCSlotsGRL = 0;
1293 int nTOPSlotsGRL = 0;
1294 int nCDCTOPSlotsMatchedGRL = 0;
1296 if (grlInfoAvailable) {
1297 for (
int i = 0; i < 16; i++) {
1298 if (grlCDCSlots[i]) nCDCSlotsGRL++;
1299 if (grlTOPSlots[i]) nTOPSlotsGRL++;
1300 grlCDCTOPSlotsMatch[i] =
false;
1301 if (grlCDCSlots[i] && grlTOPSlots[i]) {
1302 nCDCTOPSlotsMatchedGRL++;
1303 grlCDCTOPSlotsMatch[i] =
true;
1312 if (m_doECLCorrelations) {
1314 bool barrelEcl =
false;
1315 bool barrelEclB2B =
false;
1325 int TCID = (aTRGECLUnpackerStore->
getTCId());
1327 int hit_win = aTRGECLUnpackerStore -> getHitWin();
1328 double HitEnergy = aTRGECLUnpackerStore -> getTCEnergy();
1329 double HitTiming = aTRGECLUnpackerStore ->
getTCTime();
1331 if (TCID < 1 || TCID > 576 || HitEnergy == 0) {
continue;}
1332 if (!(hit_win == 3 || hit_win == 4)) {
continue;}
1335 tcEclThis.tcId = TCID;
1336 tcEclThis.tcEnergy = HitEnergy;
1337 tcEclThis.tcTiming = HitTiming;
1340 tcEclList.push_back(tcEclThis);
1348 if (tcEclList.size() >= 2) {
1350 const tcEcl& tc1 = *it;
1352 const tcEcl& tc2 = *it;
1353 int tcId1 = tc1.tcId;
1354 int tcId2 = tc2.tcId;
1356 int tcThetaId1 = tc1.tcThetaId;
1357 int tcPhiId1 = tc1.tcPhiId;
1359 int tcThetaId2 = tc2.tcThetaId;
1360 int tcPhiId2 = tc2.tcPhiId;
1367 if (tcThetaId1 >= 4 && tcThetaId1 <= 15) {
1369 if (tcThetaId2 >= 4 && tcThetaId2 <= 15) {
1370 if (abs(tcPhiId1 - tcPhiId2) >= 12 && abs(tcPhiId1 - tcPhiId2) <= 24) {
1371 barrelEclB2B =
true;
1376 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1378 h_topTC2IdVsTC1IdAll[skim[ifill]]->Fill(tcId1, tcId2);
1379 h_topTC2EnergyVsTC1EnergyAll[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1380 h_topTC2ThetaIdVsTC1ThetaIdAll[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1381 h_topTC2PhiIdVsTC1PhiIdAll[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1382 h_topTCPhiIdVsTCThetaIdAll[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1383 h_topTCPhiIdVsTCThetaIdAll[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1385 if (nCDCSlotsGRL > 0) {
1386 h_topTC2IdVsTC1IdGRLAll[skim[ifill]]->Fill(tcId1, tcId2);
1387 h_topTC2EnergyVsTC1EnergyGRLAll[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1388 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1389 h_topTC2PhiIdVsTC1PhiIdGRLAll[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1390 h_topTCPhiIdVsTCThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1391 h_topTCPhiIdVsTCThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1396 h_topTC2IdVsTC1Id[skim[ifill]]->Fill(tcId1, tcId2);
1397 h_topTC2EnergyVsTC1Energy[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1398 h_topTC2ThetaIdVsTC1ThetaId[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1399 h_topTC2PhiIdVsTC1PhiId[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1400 h_topTCPhiIdVsTCThetaId[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1401 h_topTCPhiIdVsTCThetaId[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1402 if (nCDCSlotsGRL > 0) {
1403 h_topTC2IdVsTC1IdGRL[skim[ifill]]->Fill(tcId1, tcId2);
1404 h_topTC2EnergyVsTC1EnergyGRL[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1405 h_topTC2ThetaIdVsTC1ThetaIdGRL[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1406 h_topTC2PhiIdVsTC1PhiIdGRL[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1407 h_topTCPhiIdVsTCThetaIdGRL[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1408 h_topTCPhiIdVsTCThetaIdGRL[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1414 if (m_requireEclBarrel) {
1415 if (!barrelEcl)
return;
1417 if (m_requireEclBarrelB2B) {
1418 if (!barrelEclB2B)
return;
1424 if (m_doGRLCorrelations && grlInfoAvailable) {
1425 if (m_requireCDC2DTrack) {
1426 if (nCDCSlotsGRL <= 0)
return;
1430 if (grlInfoAvailable) {
1432 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1434 h_grl_ntopslots_vs_ncdcslots[skim[ifill]]->Fill(nCDCSlotsGRL, nTOPSlotsGRL);
1436 h_grl_ncdctopslots_matched[skim[ifill]]->Fill(nCDCTOPSlotsMatchedGRL);
1438 for (
int i = 0; i < 16; i++) {
1439 if (grlCDCTOPSlotsMatch[i]) {
1440 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(i + 1, i + 1);
1441 }
else if (grlCDCSlots[i]) {
1442 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(i + 1, 0.);
1443 }
else if (grlTOPSlots[i]) {
1444 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(0., i + 1);
1451 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1452 if (nCDCSlotsGRL == 0 && nTOPSlotsGRL == 0) h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(0., 0.);
1470 int gdl_gdll1rvc = -1;
1471 int gdl_coml1rvc = -1;
1472 int gdl_toprvc = -1;
1473 int gdl_eclrvc = -1;
1474 int gdl_cdcrvc = -1;
1476 int gdl_top_timing = -1;
1477 int gdl_ecl_timing = -1;
1478 int gdl_cdc_timing = -1;
1481 if (m_doGDLCorrelations) {
1507 for (
int i = 0; i < 320; i++) {
1508 if (strcmp(entAry[0]->m_unpackername[i],
"evt") == 0) m_evtno = entAry[0]->m_unpacker[i];
1509 if (strcmp(entAry[0]->m_unpackername[i],
"clk") == 0) clk_map = i;
1514 std::vector<std::vector<int> > _data(n_leafs + n_leafsExtra);
1515 for (
int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
1516 std::vector<int> _v(n_clocks);
1521 for (
int ii = 0; ii < entAry.
getEntries(); ii++) {
1522 std::vector<int*> Bits(n_leafs + n_leafsExtra);
1524 for (
int i = 0; i < 320; i++) {
1525 if (gdlLeafBitMap[i] != -1) {
1526 Bits[gdlLeafBitMap[i]] = &(entAry[ii]->m_unpacker[i]);
1529 for (
int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
1530 _data[leaf][entAry[ii]->m_unpacker[clk_map]] = *Bits[leaf];
1535 gdl_gdll1rvc = _data[gdl_e_gdll1rvc][n_clocks - 1];
1536 gdl_coml1rvc = _data[gdl_e_coml1rvc][n_clocks - 1];
1537 gdl_toprvc = _data[gdl_e_toprvc][n_clocks - 1];
1538 gdl_eclrvc = _data[gdl_e_eclrvc][n_clocks - 1];
1539 gdl_cdcrvc = _data[gdl_e_cdcrvc][n_clocks - 1];
1540 gdl_top_timing = _data[gdl_e_toptiming][n_clocks - 1];
1541 gdl_ecl_timing = _data[gdl_e_ecltiming][n_clocks - 1];
1542 gdl_cdc_timing = _data[gdl_e_cdctiming][n_clocks - 1];
1544 gdlInfoAvailable =
true;
1590 int ecl_top_timing_diff = -1;
1591 int cdc_top_timing_diff = -1;
1593 int gdl_top_rvc_diff = -1;
1594 int com_top_rvc_diff = -1;
1595 int ecl_top_rvc_diff = -1;
1596 int cdc_top_rvc_diff = -1;
1598 if (gdlInfoAvailable) {
1600 ecl_top_timing_diff = gdl_ecl_timing >= gdl_top_timing ? gdl_ecl_timing - gdl_top_timing : gdl_ecl_timing - gdl_top_timing +
1602 cdc_top_timing_diff = gdl_cdc_timing >= gdl_top_timing ? gdl_cdc_timing - gdl_top_timing : gdl_cdc_timing - gdl_top_timing +
1605 gdl_top_rvc_diff = gdl_gdll1rvc >= gdl_toprvc ? gdl_gdll1rvc - gdl_toprvc : gdl_gdll1rvc - gdl_toprvc + 1280;
1606 com_top_rvc_diff = gdl_coml1rvc >= gdl_toprvc ? gdl_coml1rvc - gdl_toprvc : gdl_coml1rvc - gdl_toprvc + 1280;
1607 ecl_top_rvc_diff = gdl_eclrvc >= gdl_toprvc ? gdl_eclrvc - gdl_toprvc : gdl_eclrvc - gdl_toprvc + 1280;
1608 cdc_top_rvc_diff = gdl_cdcrvc >= gdl_toprvc ? gdl_cdcrvc - gdl_toprvc : gdl_cdcrvc - gdl_toprvc + 1280;
1616 int nT0Decisions = trgtopCombinedTimingArray.
getEntries();
1618 int t0DecisionNumber = 0;
1620 if (gdlInfoAvailable) {
1624 for (
const auto& t0Decision : trgtopCombinedTimingArray) {
1625 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1626 int top_top_timing = (topCombinedTimingTop % 10240);
1628 if (gdl_top_timing == top_top_timing) {
1630 if (t0DecisionNumber == 0) {
1632 }
else if (histClass != 0) {
1635 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1636 h_top_gdl_match_decision_number[skim[ifill]]->Fill(t0DecisionNumber + 1);
1643 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1644 h_top_nt0decisions_vs_hist_class[skim[ifill]]->Fill(histClass, nT0Decisions);
1649 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1650 h_top_gdl_match_decision_number[skim[ifill]]->Fill(0);
1656 if (m_nHistClassesActual == 1) histClass = 0;
1659 if (m_nHistClassesActual == 2 && histClass == 2) histClass = 1;
1662 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1663 h_N_decision[skim[ifill]][histClass]->Fill(nT0Decisions);
1668 if (gdlInfoAvailable) {
1673 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1677 int gdl_top_timing_1280 = gdl_top_timing >> 3;
1678 h_gdl_top_rvc_vs_top_timing[skim[ifill]]->Fill(gdl_top_timing_1280, gdl_toprvc);
1680 h_gdl_ecltop_rvc_diff[skim[ifill]]->Fill(ecl_top_rvc_diff);
1681 h_gdl_cdctop_rvc_diff[skim[ifill]]->Fill(cdc_top_rvc_diff);
1683 h_gdl_gdltop_rvc_diff_all[skim[ifill]]->Fill(gdl_top_rvc_diff);
1684 h_gdl_comtop_rvc_diff_all[skim[ifill]]->Fill(com_top_rvc_diff);
1687 if (grlInfoAvailable) {
1688 h_gdl_ecltop_timing_diff_vs_grl_top_l1[skim[ifill]]->Fill(grlTOPL1, ecl_top_timing_diff);
1691 h_gdl_ecltop_timing_diff_5ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1692 h_gdl_cdctop_timing_diff_5ns[skim[ifill]]->Fill(cdc_top_timing_diff);
1694 h_gdl_ecltop_timing_diff_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1696 if (nCDCTOPSlotsMatchedGRL > 0) {
1697 h_gdl_ecltop_timing_diff_grl_matched_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1698 }
else if (nCDCSlotsGRL > 0) {
1699 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1701 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1703 h_gdl_cdctop_timing_diff_2ns[skim[ifill]]->Fill(cdc_top_timing_diff);
1710 t0DecisionNumber = 0;
1712 for (
const auto& t0Decision : trgtopCombinedTimingArray) {
1714 bool top_timing_same =
false;
1715 if (gdlInfoAvailable) {
1716 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1717 int top_top_timing = (topCombinedTimingTop % 10240);
1718 if (top_top_timing == gdl_top_timing) {
1719 top_timing_same =
true;
1724 const vector<Belle2::TRGTOPSlotTiming> t0DecisionSlots = trgtopCombinedTimingArray[t0DecisionNumber]->getSlotTimingDecisions();
1726 slotDecisionList.
clear();
1728 if (t0DecisionNumber == 0) {
1730 for (
const auto& t0DecisionSlot : t0DecisionSlots) {
1732 int slot = t0DecisionSlot.getSlotId();
1733 int segment = t0DecisionSlot.getSlotSegment();
1734 int nHits = t0DecisionSlot.getSlotNHits();
1735 int logL = t0DecisionSlot.getSlotLogL();
1736 int t0 = t0DecisionSlot.getSlotTiming();
1740 slotDecisionThis.slot = slot;
1741 slotDecisionThis.segment = segment;
1742 slotDecisionThis.nHits = nHits;
1743 slotDecisionThis.logL = logL;
1744 slotDecisionThis.t0 = t0;
1745 slotDecisionList.push_back(slotDecisionThis);
1747 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1749 h_topSlotAll[skim[ifill]]->Fill(slot);
1750 h_topSegmentAll[skim[ifill]]->Fill(segment);
1751 h_topNHitsAll[skim[ifill]]->Fill(nHits);
1752 h_topLogLAll[skim[ifill]]->Fill(logL);
1753 h_topT0All[skim[ifill]]->Fill(t0);
1756 if (gdlInfoAvailable) {
1757 int top_top_timing_slot = (t0 % 10240);
1758 int top_gdl_timing_diff_slot = gdl_ecl_timing >= top_top_timing_slot ? gdl_ecl_timing - top_top_timing_slot : gdl_ecl_timing -
1759 top_top_timing_slot + 10240;
1761 h_gdl_ecltop_timing_diff_vs_slot[skim[ifill]]->Fill(top_gdl_timing_diff_slot, slot);
1762 h_gdl_ecltop_timing_diff_vs_segment[skim[ifill]]->Fill(top_gdl_timing_diff_slot, segment);
1763 h_gdl_ecltop_timing_diff_vs_nhits[skim[ifill]]->Fill(top_gdl_timing_diff_slot, nHits);
1764 h_gdl_ecltop_timing_diff_vs_logl[skim[ifill]]->Fill(top_gdl_timing_diff_slot, logL);
1767 h_gdl_ecltop_timing_diff_vs_slot_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, slot);
1768 h_gdl_ecltop_timing_diff_vs_segment_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, segment);
1769 h_gdl_ecltop_timing_diff_vs_nhits_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, nHits);
1770 h_gdl_ecltop_timing_diff_vs_logl_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, logL);
1774 if (slot >= 1 && slot <= 16) {
1775 if (segment >= 1 && segment <= 10) {
1777 h_topSlotNHits[skim[ifill]][slot - 1]->Fill(nHits);
1778 h_topSlotLogL[skim[ifill]][slot - 1]->Fill(logL);
1779 h_topSlotT0[skim[ifill]][slot - 1]->Fill(t0);
1781 h_topSlotVsSegment[skim[ifill]]->Fill(segment, slot);
1783 h_topSlotVsNHits[skim[ifill]]->Fill(nHits, slot);
1784 h_topSlotVsLogL[skim[ifill]]->Fill(logL, slot);
1785 h_topSlotVsT0[skim[ifill]]->Fill(t0, slot);
1787 h_topSegmentVsNHits[skim[ifill]]->Fill(nHits, segment);
1788 h_topSegmentVsLogL[skim[ifill]]->Fill(logL, segment);
1789 h_topSegmentVsT0[skim[ifill]]->Fill(t0, segment);
1791 h_topNHitsVsLogL[skim[ifill]]->Fill(logL, nHits);
1792 h_topNHitsVsT0[skim[ifill]]->Fill(t0, nHits);
1793 h_topLogLVsT0[skim[ifill]]->Fill(t0, logL);
1807 int nHitsSlotBest = 0;
1808 int t0SlotBest = -1;
1811 if (slotDecisionList.size() > 0) {
1813 int slotSlotBest = 0;
1814 int segmentSlotBest = 0;
1815 int logLSlotBest = 0;
1818 sort(slotDecisionList.begin(), slotDecisionList.end(),
largestNHits());
1823 slotSlotBest = slotDecisionBest.slot;
1824 segmentSlotBest = slotDecisionBest.segment;
1825 logLSlotBest = slotDecisionBest.logL;
1826 nHitsSlotBest = slotDecisionBest.nHits;
1827 t0SlotBest = slotDecisionBest.t0;
1829 if (slotDecisionList.size() > 1) {
1833 int slotSlotBest2 = slotDecisionBest2.slot;
1834 int segmentSlotBest2 = slotDecisionBest2.segment;
1835 int logLSlotBest2 = slotDecisionBest2.logL;
1836 int nHitsSlotBest2 = slotDecisionBest2.nHits;
1837 int t0SlotBest2 = slotDecisionBest2.t0;
1839 if (t0DecisionNumber == 0) {
1840 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1841 h_topNHitVsNhit[skim[ifill]][histClass]->Fill(nHitsSlotBest, nHitsSlotBest2);
1842 h_topSlotVsSlot[skim[ifill]][histClass]->Fill(slotSlotBest, slotSlotBest2);
1843 h_topT0VsT0[skim[ifill]][histClass]->Fill(t0SlotBest, t0SlotBest2);
1844 h_topSegmentVsSegment[skim[ifill]][histClass]->Fill(segmentSlotBest, segmentSlotBest2);
1845 h_topLogLVsLogL[skim[ifill]][histClass]->Fill(logLSlotBest, logLSlotBest2);
1870 int topRvcL1 = t0Decision.getRvcB2L();
1872 int topRvcWindow = t0Decision.getRvcWindow();
1874 int topRvcTopTimingDecisionPrev = t0Decision.getRvcTopTimingDecisionPrev();
1876 int topRvcTopTimingDecisionNow = t0Decision.getRvcTopTimingDecisionNow();
1878 int topRvcTopTimingDecisionNowGdl = t0Decision.getRvcTopTimingDecisionNowGdl();
1883 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1885 int topNSlotsCombinedTimingTop = t0Decision.getNSlotsCombinedTimingTop();
1886 int topCombinedTimingTopResidual = t0Decision.getCombinedTimingTopResidual();
1889 int topTrigType = t0Decision.getTrigType();
1890 int topNHitSum = t0Decision.getNHitSum();
1891 int topLogLSum = t0Decision.getLogLSum();
1893 int topTimingVar = t0Decision.getTimingVar();
1895 float hitsPerSlot = topNHitSum / max(1, topNSlotsCombinedTimingTop);
1896 float logLPerSlot = topLogLSum / max(1, topNSlotsCombinedTimingTop);
1898 int topRvcDiff1 = topRvcTopTimingDecisionNowGdl - topRvcTopTimingDecisionNow;
1899 int topRvcDiff2 = topRvcTopTimingDecisionNow >= topRvcTopTimingDecisionPrev ? topRvcTopTimingDecisionNow -
1900 topRvcTopTimingDecisionPrev : topRvcTopTimingDecisionNow - topRvcTopTimingDecisionPrev + 1280;
1901 int topRvcDiff3 = topRvcWindow >= topRvcTopTimingDecisionNow ? topRvcWindow - topRvcTopTimingDecisionNow : topRvcWindow -
1902 topRvcTopTimingDecisionNow + 1280;
1903 int topRvcDiff4 = topRvcL1 >= topRvcTopTimingDecisionNow ? topRvcL1 - topRvcTopTimingDecisionNow : topRvcL1 -
1904 topRvcTopTimingDecisionNow + 1280;
1906 if (t0DecisionNumber == 0) {
1908 if (grlInfoAvailable) {
1909 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1910 h_gdl_top_l1_vs_grl_top_l1[skim[ifill]]->Fill(grlTOPL1, topRvcDiff4);
1914 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1916 h_topCombinedTimingTopAll[skim[ifill]]->Fill(topCombinedTimingTop);
1917 h_topNSlotsCombinedTimingTopAll[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
1918 h_topNHitSumAll[skim[ifill]]->Fill((
int) hitsPerSlot);
1919 h_topLogLSumAll[skim[ifill]]->Fill((
int) logLPerSlot);
1921 h_topNSlotsCombinedTimingVsNHitsTopAll[skim[ifill]]->Fill(topNHitSum, topNSlotsCombinedTimingTop);
1923 h_topTrigType[skim[ifill]]->Fill(topTrigType);
1924 h_topTimingResiduals[skim[ifill]]->Fill(topCombinedTimingTopResidual);
1925 h_topTimingVariance[skim[ifill]]->Fill(topTimingVar);
1928 h_topRvcDiff1All[skim[ifill]]->Fill(topRvcDiff1);
1929 h_topRvcDiff2All[skim[ifill]]->Fill(topRvcDiff2);
1930 h_topRvcDiff3All[skim[ifill]]->Fill(topRvcDiff3);
1931 h_topRvcDiff4All[skim[ifill]]->Fill(topRvcDiff4);
1936 int topGdlRvcDiff1 = gdl_gdll1rvc >= topRvcL1 ? gdl_gdll1rvc - topRvcL1 : gdl_gdll1rvc - topRvcL1 + 1280;
1937 int topGdlRvcDiff2 = gdl_toprvc >= topRvcTopTimingDecisionNow ? gdl_toprvc - topRvcTopTimingDecisionNow : gdl_toprvc -
1938 topRvcTopTimingDecisionNow + 1280;
1939 int topGdlRvcDiff3 = gdl_toprvc >= topRvcTopTimingDecisionPrev ? gdl_toprvc - topRvcTopTimingDecisionPrev : gdl_toprvc -
1940 topRvcTopTimingDecisionPrev + 1280;
1942 int ecl_gdl_top_timing_combined_diff = -1;
1944 int top_top_timing_combined_diff = -1;
1946 int ecl_top_top_timing_combined_diff = -1;
1947 int ecl_top_top_timing_best_slot_diff = -1;
1949 if (gdlInfoAvailable) {
1951 int top_top_timing_combined = -1;
1952 int top_top_timing_best_slot = -1;
1954 ecl_gdl_top_timing_combined_diff = gdl_ecl_timing >= gdl_top_timing ? gdl_ecl_timing - gdl_top_timing : gdl_ecl_timing -
1955 gdl_top_timing + 10240;
1957 top_top_timing_combined = (topCombinedTimingTop % 10240);
1958 top_top_timing_best_slot = (t0SlotBest % 10240);
1960 top_top_timing_combined_diff = top_top_timing_combined >= gdl_top_timing ? top_top_timing_combined - gdl_top_timing :
1961 top_top_timing_combined - gdl_top_timing + 10240;
1963 ecl_top_top_timing_combined_diff = gdl_ecl_timing >= top_top_timing_combined ? gdl_ecl_timing - top_top_timing_combined :
1964 gdl_ecl_timing - top_top_timing_combined + 10240;
1965 ecl_top_top_timing_best_slot_diff = gdl_ecl_timing >= top_top_timing_best_slot ? gdl_ecl_timing - top_top_timing_best_slot :
1966 gdl_ecl_timing - top_top_timing_best_slot + 10240;
1968 if (t0DecisionNumber == 0) {
1969 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1971 h_topGdlRvcDiff1All[skim[ifill]]->Fill(topGdlRvcDiff1);
1972 h_topGdlRvcDiff2All[skim[ifill]]->Fill(topGdlRvcDiff2);
1973 h_topGdlRvcDiff3All[skim[ifill]]->Fill(topGdlRvcDiff3);
1976 h_ecl_gdl_top_timing_diff_both[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
1977 h_ecl_top_top_timing_diff_both[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
1984 if (top_top_timing_combined_diff == 0) {
1986 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1988 h_decisionNumberVsNumberDecisionsGood[skim[ifill]]->Fill(nT0Decisions, t0DecisionNumber + 1);
1990 if (t0DecisionNumber == 0) {
1992 h_ecl_gdl_top_timing_diff_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
1993 h_ecl_top_top_timing_diff_good[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
1995 h_gdl_ecltop_timing_diff_vs_toptop_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
1996 h_top_ecltop_timing_diff_vs_toptop_good[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
1997 h_gdl_ecltop_timing_diff_vs_ecltop_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, ecl_top_top_timing_combined_diff);
1999 h_topCombinedTimingTopGood[skim[ifill]]->Fill(topCombinedTimingTop);
2000 h_topNSlotsCombinedTimingTopGood[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
2001 h_topNHitSumGood[skim[ifill]]->Fill((
int) hitsPerSlot);
2002 h_topLogLSumGood[skim[ifill]]->Fill((
int) logLPerSlot);
2004 h_topRvcDiff1Good[skim[ifill]]->Fill(topRvcDiff1);
2005 h_topRvcDiff2Good[skim[ifill]]->Fill(topRvcDiff2);
2006 h_topRvcDiff3Good[skim[ifill]]->Fill(topRvcDiff3);
2007 h_topRvcDiff4Good[skim[ifill]]->Fill(topRvcDiff4);
2009 h_topGdlRvcDiff1Good[skim[ifill]]->Fill(topGdlRvcDiff1);
2010 h_topGdlRvcDiff2Good[skim[ifill]]->Fill(topGdlRvcDiff2);
2011 h_topGdlRvcDiff3Good[skim[ifill]]->Fill(topGdlRvcDiff3);
2013 h_gdl_gdltop_rvc_diff_good[skim[ifill]]->Fill(gdl_top_rvc_diff);
2014 h_gdl_comtop_rvc_diff_good[skim[ifill]]->Fill(com_top_rvc_diff);
2019 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
2021 h_decisionNumberVsNumberDecisionsBad[skim[ifill]]->Fill(nT0Decisions, t0DecisionNumber + 1);
2023 if (t0DecisionNumber == 0) {
2024 h_ecl_gdl_top_timing_diff_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
2025 h_ecl_top_top_timing_diff_bad[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
2027 h_gdl_ecltop_timing_diff_vs_toptop_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
2028 h_top_ecltop_timing_diff_vs_toptop_bad[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
2029 h_gdl_ecltop_timing_diff_vs_ecltop_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, ecl_top_top_timing_combined_diff);
2031 h_topCombinedTimingTopBad[skim[ifill]]->Fill(topCombinedTimingTop);
2032 h_topNSlotsCombinedTimingTopBad[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
2033 h_topNHitSumBad[skim[ifill]]->Fill((
int) hitsPerSlot);
2034 h_topLogLSumBad[skim[ifill]]->Fill((
int) logLPerSlot);
2036 h_topRvcDiff1Bad[skim[ifill]]->Fill(topRvcDiff1);
2037 h_topRvcDiff2Bad[skim[ifill]]->Fill(topRvcDiff2);
2038 h_topRvcDiff3Bad[skim[ifill]]->Fill(topRvcDiff3);
2039 h_topRvcDiff4Bad[skim[ifill]]->Fill(topRvcDiff4);
2041 h_topGdlRvcDiff1Bad[skim[ifill]]->Fill(topGdlRvcDiff1);
2042 h_topGdlRvcDiff2Bad[skim[ifill]]->Fill(topGdlRvcDiff2);
2043 h_topGdlRvcDiff3Bad[skim[ifill]]->Fill(topGdlRvcDiff3);
2045 h_gdl_gdltop_rvc_diff_bad[skim[ifill]]->Fill(gdl_top_rvc_diff);
2046 h_gdl_comtop_rvc_diff_bad[skim[ifill]]->Fill(com_top_rvc_diff);
2053 if (t0DecisionNumber == 0) {
2054 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
2057 if (gdlInfoAvailable) {
2058 h_gdl_ecltop_timing_diff_vs_toptop[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
2059 h_top_ecltop_timing_diff_vs_toptop[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
2060 h_gdl_ecltop_timing_diff_vs_ecltop[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff,
2061 ecl_top_top_timing_combined_diff);
2062 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff,
2063 ecl_top_top_timing_best_slot_diff);
2065 h_top_ecltop_timing_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff);
2068 if (top_timing_same) {
2069 h_top_ecltop_timing_combined_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff);
2070 h_top_ecltop_timing_best_slot_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_best_slot_diff);
2071 h_topNHitBestSlot[skim[ifill]][histClass]->Fill(nHitsSlotBest);
2076 h_topCombinedTimingTop[skim[ifill]][histClass]->Fill(topCombinedTimingTop);
2077 h_topNSlotsCombinedTimingTop[skim[ifill]][histClass]->Fill(topNSlotsCombinedTimingTop);
2078 h_topNHitSum[skim[ifill]][histClass]->Fill((
int) hitsPerSlot);
2079 h_topLogLSum[skim[ifill]][histClass]->Fill((
int) logLPerSlot);
2082 h_gdl_ecltop_timing_diff_vs_nslots_2ns[skim[ifill]]->Fill(ecl_top_timing_diff, topNSlotsCombinedTimingTop);
2083 h_top_ecltop_timing_diff_combined_2ns[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
2084 h_top_ecltop_timing_diff_best_slot_2ns[skim[ifill]]->Fill(ecl_top_top_timing_best_slot_diff);