104 if (m_nHistClassesActual < 1) m_nHistClassesActual = 1;
108 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
114 h_topCombinedTimingTopAll[iskim] =
new TH1I(Form(
"h_t0_comb_%s",
skim_smap[iskim].c_str()),
"ALL TOP combined t0 decisions", 100,
117 h_topCombinedTimingTopAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decision time (us)");
119 h_topNSlotsCombinedTimingTopAll[iskim] =
new TH1I(Form(
"h_n_slots_comb_%s",
skim_smap[iskim].c_str()),
120 "ALL TOP combined t0 decisions: N slots", 17, 0, 17);
121 h_topNSlotsCombinedTimingTopAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
123 h_topNHitSumAll[iskim] =
new TH1I(Form(
"h_nhit_per_slot_comb_%s",
skim_smap[iskim].c_str()),
124 "ALL TOP combined t0 decisions: N hits per slot", 200, 0, 200);
125 h_topNHitSumAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
127 h_topLogLSumAll[iskim] =
new TH1I(Form(
"h_logl_per_slot_comb_%s",
skim_smap[iskim].c_str()),
128 "ALL TOP combined t0 decisions: log L per slot", 100, 0, 60000);
129 h_topLogLSumAll[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
131 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim] =
new TH2I(Form(
"h_n_slots_vs_nhit_total_comb_%s",
skim_smap[iskim].c_str()),
132 "ALL TOP combined t0 decisions: N slots vs N hits (total)", 300, 0, 300, 17, 0, 17);
133 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->GetXaxis()->SetTitle(
"N hits (total)");
134 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->GetYaxis()->SetTitle(
"N slots");
136 h_topTrigType[iskim] =
new TH1I(Form(
"h_trig_type_%s",
skim_smap[iskim].c_str()),
137 "ALL TOP combined decisions: trig type", 10, 0, 10);
138 h_topTrigType[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: trig type");
140 h_topTimingResiduals[iskim] =
new TH1I(Form(
"h_timing_residuals_%s",
skim_smap[iskim].c_str()),
141 "ALL TOP combined decisions: timing residual", 100, 0, 100);
142 h_topTimingResiduals[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: timing residuals");
144 h_topTimingVariance[iskim] =
new TH1I(Form(
"h_timing_variance_%s",
skim_smap[iskim].c_str()),
145 "ALL TOP combined decisions: timing variance", 100, 0, 100);
146 h_topTimingVariance[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: timing variance");
153 h_topSlotAll[iskim] =
new TH1I(Form(
"h_slot_number_%s",
skim_smap[iskim].c_str()),
"slot", 16, 1, 17);
154 h_topSlotAll[iskim]->GetXaxis()->SetTitle(
"slot number in combined decisions (over 1us)");
156 h_topSegmentAll[iskim] =
new TH1I(Form(
"h_segment_slot_%s",
skim_smap[iskim].c_str()),
"segment", 10, 1, 11);
157 h_topSegmentAll[iskim]->GetXaxis()->SetTitle(
"segment for each slot in combined decisions (over 1us)");
159 h_topNHitsAll[iskim] =
new TH1I(Form(
"h_nhit_slot_%s",
skim_smap[iskim].c_str()),
"nhit", 200, 0, 200);
160 h_topNHitsAll[iskim]->GetXaxis()->SetTitle(
"N hits (for slots in combined decisions (over 1us))");
162 h_topLogLAll[iskim] =
new TH1I(Form(
"h_logl_slot_%s",
skim_smap[iskim].c_str()),
"log L", 100, 0, 60000);
163 h_topLogLAll[iskim]->GetXaxis()->SetTitle(
"log L (for slots in combined decisions (over 1us))");
165 h_topT0All[iskim] =
new TH1I(Form(
"h_t0_slot_%s",
skim_smap[iskim].c_str()),
"t0", 100, 0, 100000);
166 h_topT0All[iskim]->GetXaxis()->SetTitle(
"t0 for slots in combined decisions (over 1us)");
173 h_topSlotVsSegment[iskim] =
new TH2I(Form(
"h_slot_vs_segment_%s",
skim_smap[iskim].c_str()),
"slot # vs slot segment", 10, 1, 11,
175 h_topSlotVsSegment[iskim]->GetXaxis()->SetTitle(
"segment");
176 h_topSlotVsSegment[iskim]->GetYaxis()->SetTitle(
"slot");
178 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,
180 h_topSlotVsNHits[iskim]->GetXaxis()->SetTitle(
"N hits");
181 h_topSlotVsNHits[iskim]->GetYaxis()->SetTitle(
"slot");
183 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,
185 h_topSlotVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
186 h_topSlotVsLogL[iskim]->GetYaxis()->SetTitle(
"slot");
188 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);
189 h_topSlotVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
190 h_topSlotVsT0[iskim]->GetYaxis()->SetTitle(
"slot");
192 h_topSegmentVsNHits[iskim] =
new TH2I(Form(
"h_segment_vs_nhit_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot nhit", 200, 0,
194 h_topSegmentVsNHits[iskim]->GetXaxis()->SetTitle(
"N hits");
195 h_topSegmentVsNHits[iskim]->GetYaxis()->SetTitle(
"segment");
197 h_topSegmentVsLogL[iskim] =
new TH2I(Form(
"h_segment_vs_logl_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot log L", 100, 0,
199 h_topSegmentVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
200 h_topSegmentVsLogL[iskim]->GetYaxis()->SetTitle(
"segment");
202 h_topSegmentVsT0[iskim] =
new TH2I(Form(
"h_segment_vs_t0_%s",
skim_smap[iskim].c_str()),
"slot segment vs slot t0", 100, 0, 100000,
204 h_topSegmentVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
205 h_topSegmentVsT0[iskim]->GetYaxis()->SetTitle(
"segment");
207 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,
209 h_topNHitsVsLogL[iskim]->GetXaxis()->SetTitle(
"logL");
210 h_topNHitsVsLogL[iskim]->GetYaxis()->SetTitle(
"N hits");
212 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,
214 h_topNHitsVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
215 h_topNHitsVsT0[iskim]->GetYaxis()->SetTitle(
"N hits");
217 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,
219 h_topLogLVsT0[iskim]->GetXaxis()->SetTitle(
"t0");
220 h_topLogLVsT0[iskim]->GetYaxis()->SetTitle(
"logL");
227 for (
int slot = 0; slot <= 15; slot++) {
229 h_topSlotSegment[iskim][slot] =
new TH1I(Form(
"h_segment_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
230 "segment", 10, 1, 11);
233 h_topSlotNHits[iskim][slot] =
new TH1I(Form(
"h_nhit_slot_%s_%s", (to_string(slot + 1)).c_str(),
skim_smap[iskim].c_str()),
"nhit",
235 h_topSlotNHits[iskim][slot]->GetXaxis()->SetTitle(
"N hits");
237 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",
239 h_topSlotLogL[iskim][slot]->GetXaxis()->SetTitle(
"log L");
241 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,
243 h_topSlotT0[iskim][slot]->GetXaxis()->SetTitle(
"t0");
252 h_gdl_ecltop_timing_diff_vs_slot[iskim] =
new TH2I(Form(
"h_gdl_slot_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
253 "slot vs GDL ECL-TOP slot t0 difference", 400, 1400,
255 h_gdl_ecltop_timing_diff_vs_slot[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
256 h_gdl_ecltop_timing_diff_vs_slot[iskim]->GetYaxis()->SetTitle(
"slot");
258 h_gdl_ecltop_timing_diff_vs_segment[iskim] =
new TH2I(Form(
"h_gdl_segment_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
259 "segment vs GDL ECL-TOP slot t0 difference",
260 400, 1400, 2200, 10, 1, 11);
261 h_gdl_ecltop_timing_diff_vs_segment[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
262 h_gdl_ecltop_timing_diff_vs_segment[iskim]->GetYaxis()->SetTitle(
"segment");
264 h_gdl_ecltop_timing_diff_vs_nhits[iskim] =
new TH2I(Form(
"h_gdl_nhits_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
265 "N hits (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 200, 0, 200);
266 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
267 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->GetYaxis()->SetTitle(
"N hits");
269 h_gdl_ecltop_timing_diff_vs_logl[iskim] =
new TH2I(Form(
"h_gdl_logl_vs_ecltop_timing_diff_%s",
skim_smap[iskim].c_str()),
270 "log L (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 100, 0, 60000);
271 h_gdl_ecltop_timing_diff_vs_logl[iskim]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
272 h_gdl_ecltop_timing_diff_vs_logl[iskim]->GetYaxis()->SetTitle(
"log L");
276 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,
278 h_ecl_gdl_top_timing_diff_both[iskim]->GetXaxis()->SetTitle(
"Both ECL - GDL_TOP timing difference (2ns)");
280 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,
282 h_ecl_top_top_timing_diff_both[iskim]->GetXaxis()->SetTitle(
"Both ECL - TOP_TOP timing difference (2ns)");
292 h_gdl_top_rvc_vs_top_timing[iskim] =
new TH2I(Form(
"h_gdl_top_rvc_vs_top_timing_%s",
skim_smap[iskim].c_str()),
293 "ALL GDL TOP rvc vs GDL TOP timing (7.8ns)",
294 128, 0, 1280, 128, 0, 1280);
295 h_gdl_top_rvc_vs_top_timing[iskim]->GetXaxis()->SetTitle(
"TOP timing according to GDL (7.8ns)");
296 h_gdl_top_rvc_vs_top_timing[iskim]->GetYaxis()->SetTitle(
"GDL rvc((TOP decision (received))");
298 h_gdl_ecltop_rvc_diff[iskim] =
new TH1I(Form(
"h_gdl_ecltop_rvc_diff_%s",
skim_smap[iskim].c_str()),
299 "ALL GDL ECL-TOP rvc difference",
301 h_gdl_ecltop_rvc_diff[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP rvc difference (clks)");
303 h_gdl_cdctop_rvc_diff[iskim] =
new TH1I(Form(
"h_gdl_cdctop_rvc_diff_%s",
skim_smap[iskim].c_str()),
304 "ALL GDL CDC-TOP rvc difference",
306 h_gdl_cdctop_rvc_diff[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP rvc difference (clks)");
310 h_gdl_gdltop_rvc_diff_all[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_%s",
skim_smap[iskim].c_str()),
311 "ALL GDL GDL-TOP rvc difference",
313 h_gdl_gdltop_rvc_diff_all[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
315 h_gdl_comtop_rvc_diff_all[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_%s",
skim_smap[iskim].c_str()),
316 "ALL GDL COM-TOP rvc difference",
318 h_gdl_comtop_rvc_diff_all[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
322 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))",
324 h_topRvcDiff1All[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
326 h_topRvcDiff2All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_2_%s",
skim_smap[iskim].c_str()),
"ALL rvc(TOP(this))-rvc(TOP(prev))",
328 h_topRvcDiff2All[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
330 h_topRvcDiff3All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_3_%s",
skim_smap[iskim].c_str()),
"ALL rvc(CB(window))-rvc(TOP(this))",
332 h_topRvcDiff3All[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
334 h_topRvcDiff4All[iskim] =
new TH1I(Form(
"h_top_rvc_diff_4_%s",
skim_smap[iskim].c_str()),
335 "ALL rvc(received L1 from GDL)-rvc(TOP(this))",
337 h_topRvcDiff4All[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
341 h_topGdlRvcDiff1All[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_%s",
skim_smap[iskim].c_str()),
342 "ALL rvc(L1(GDL))-rvc(L1(as reported to TOP))",
344 h_topGdlRvcDiff1All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
346 h_topGdlRvcDiff2All[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_%s",
skim_smap[iskim].c_str()),
347 "ALL rvc(TOP(received by GDL))-rvc(TOP(this))",
349 h_topGdlRvcDiff2All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
351 h_topGdlRvcDiff3All[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_%s",
skim_smap[iskim].c_str()),
352 "ALL rvc(TOP(received by GDL))-rvc(TOP(prev))",
354 h_topGdlRvcDiff3All[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
358 h_decisionNumberVsNumberDecisionsGood[iskim] =
new TH2I(Form(
"h_decision_vs_n_decisions_good_%s",
skim_smap[iskim].c_str()),
359 "Good decision number vs N of decisions", 5, 0,
361 h_decisionNumberVsNumberDecisionsGood[iskim]->GetXaxis()->SetTitle(
"N decisions");
362 h_decisionNumberVsNumberDecisionsGood[iskim]->GetYaxis()->SetTitle(
"Decision number");
366 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,
368 h_ecl_gdl_top_timing_diff_good[iskim]->GetXaxis()->SetTitle(
"Good ECL - GDL_TOP timing difference (2ns)");
370 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,
372 h_ecl_top_top_timing_diff_good[iskim]->GetXaxis()->SetTitle(
"Good ECL - TOP_TOP timing difference (2ns)");
376 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_good_%s",
378 "GOOD TOP-TOP vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
379 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
380 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
382 h_top_ecltop_timing_diff_vs_toptop_good[iskim] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_good_%s",
384 "GOOD TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
385 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
386 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
388 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_good_%s",
390 "GOOD (GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
391 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
392 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
396 h_gdl_gdltop_rvc_diff_good[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
397 "GOOD GDL GDL-TOP rvc difference",
399 h_gdl_gdltop_rvc_diff_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
401 h_gdl_comtop_rvc_diff_good[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
402 "GOOD GDL COM-TOP rvc difference",
404 h_gdl_comtop_rvc_diff_good[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
408 h_topCombinedTimingTopGood[iskim] =
new TH1I(Form(
"h_t0_good_%s",
skim_smap[iskim].c_str()),
"GOOD TOP combined t0 decision", 100,
411 h_topCombinedTimingTopGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
413 h_topNSlotsCombinedTimingTopGood[iskim] =
new TH1I(Form(
"h_n_slots_good_%s",
skim_smap[iskim].c_str()),
414 "GOOD TOP combined t0 decision: N slots", 17, 0, 17);
415 h_topNSlotsCombinedTimingTopGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
417 h_topNHitSumGood[iskim] =
new TH1I(Form(
"h_n_hit_per_slot_good_%s",
skim_smap[iskim].c_str()),
418 "GOOD TOP combined t0 decision: N hit per slot", 200, 0, 200);
419 h_topNHitSumGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
421 h_topLogLSumGood[iskim] =
new TH1I(Form(
"h_logl_per_slot_good_%s",
skim_smap[iskim].c_str()),
422 "GOOD TOP combined t0 decision: log L per slot", 100, 0, 60000);
423 h_topLogLSumGood[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
427 h_topRvcDiff1Good[iskim] =
new TH1I(Form(
"h_rvc_diff_1_good_%s",
skim_smap[iskim].c_str()),
428 "GOOD rvc(posted to GDL)-rvc(TOP(this))",
430 h_topRvcDiff1Good[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
432 h_topRvcDiff2Good[iskim] =
new TH1I(Form(
"h_rvc_diff_2_good_%s",
skim_smap[iskim].c_str()),
"GOOD rvc(TOP(this))-rvc(TOP(prev))",
434 h_topRvcDiff2Good[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
436 h_topRvcDiff3Good[iskim] =
new TH1I(Form(
"h_rvc_diff_3_good_%s",
skim_smap[iskim].c_str()),
"GOOD rvc(CB(window))-rvc(TOP(this))",
438 h_topRvcDiff3Good[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
440 h_topRvcDiff4Good[iskim] =
new TH1I(Form(
"h_rvc_diff_4_good_%s",
skim_smap[iskim].c_str()),
441 "GOOD rvc(received L1 from GDL)-rvc(TOP(this))",
443 h_topRvcDiff4Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
447 h_topGdlRvcDiff1Good[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
448 "GOOD rvc(L1(GDL))-rvc(L1(as reported to TOP))",
450 h_topGdlRvcDiff1Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
452 h_topGdlRvcDiff2Good[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
453 "GOOD rvc(TOP(received by GDL))-rvc(TOP(this))",
455 h_topGdlRvcDiff2Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
457 h_topGdlRvcDiff3Good[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_good_%s",
skim_smap[iskim].c_str()),
458 "GOOD rvc(TOP(received by GDL))-rvc(TOP(prev))",
460 h_topGdlRvcDiff3Good[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
464 h_decisionNumberVsNumberDecisionsBad[iskim] =
new TH2I(Form(
"h_decision_vs_n_decisions_bad_%s",
skim_smap[iskim].c_str()),
465 "Bad decision number vs N of decisions", 5, 0, 5,
467 h_decisionNumberVsNumberDecisionsBad[iskim]->GetXaxis()->SetTitle(
"N decisions");
468 h_decisionNumberVsNumberDecisionsBad[iskim]->GetYaxis()->SetTitle(
"Decision number");
472 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,
474 h_ecl_gdl_top_timing_diff_bad[iskim]->GetXaxis()->SetTitle(
"Bad ECL - GDL_TOP timing difference (2ns)");
476 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,
478 h_ecl_top_top_timing_diff_bad[iskim]->GetXaxis()->SetTitle(
"Bad ECL - TOP_TOP timing difference (2ns)");
482 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_bad_%s",
484 "BAD TOP-TOP vs (GDL ECL)-(GDL TOP) t0 differences", 110, -760, 10240, 110, -760, 10240);
485 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) (combined) t0 difference (ns, 100ns bins)");
486 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
488 h_top_ecltop_timing_diff_vs_toptop_bad[iskim] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_bad_%s",
490 "BAD TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
491 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
492 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
494 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_bad_%s",
496 "BAD (GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
497 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
498 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
502 h_gdl_gdltop_rvc_diff_bad[iskim] =
new TH1I(Form(
"h_gdl_gdltop_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
503 "BAD GDL GDL-TOP rvc difference",
505 h_gdl_gdltop_rvc_diff_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL GDL-TOP rvc difference (clks)");
507 h_gdl_comtop_rvc_diff_bad[iskim] =
new TH1I(Form(
"h_gdl_comtop_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
508 "BAD GDL COM-TOP rvc difference",
510 h_gdl_comtop_rvc_diff_bad[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL COM-TOP rvc difference (clks)");
514 h_topCombinedTimingTopBad[iskim] =
new TH1I(Form(
"h_t0_bad_%s",
skim_smap[iskim].c_str()),
"BAD TOP combined t0 decision", 100, 0,
516 h_topCombinedTimingTopBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
518 h_topNSlotsCombinedTimingTopBad[iskim] =
new TH1I(Form(
"h_N_slots_bad_%s",
skim_smap[iskim].c_str()),
519 "BAD TOP combined t0 decision: N slots", 17, 0, 17);
520 h_topNSlotsCombinedTimingTopBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
522 h_topNHitSumBad[iskim] =
new TH1I(Form(
"h_n_hit_per_slot_bad_%s",
skim_smap[iskim].c_str()),
523 "BAD TOP combined t0 decision: N hit per slot", 200, 0, 200);
524 h_topNHitSumBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
526 h_topLogLSumBad[iskim] =
new TH1I(Form(
"h_logl_per_slot_bad_%s",
skim_smap[iskim].c_str()),
527 "BAD TOP combined t0 decision: log L per slot", 100, 0, 60000);
528 h_topLogLSumBad[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
532 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))",
535 h_topRvcDiff1Bad[iskim]->GetXaxis()->SetTitle(
"rvc(posted to GDL)-rvc(TOP(this))");
537 h_topRvcDiff2Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_2_bad_%s",
skim_smap[iskim].c_str()),
"BAD rvc(TOP(this))-rvc(TOP(prev))",
539 h_topRvcDiff2Bad[iskim]->GetXaxis()->SetTitle(
"rvc(TOP(this))-rvc(TOP(prev))");
541 h_topRvcDiff3Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_3_bad_%s",
skim_smap[iskim].c_str()),
"BAD rvc(CB(window))-rvc(TOP(this))",
543 h_topRvcDiff3Bad[iskim]->GetXaxis()->SetTitle(
"rvc(CB(window))-rvc(TOP(this))");
545 h_topRvcDiff4Bad[iskim] =
new TH1I(Form(
"h_rvc_diff_4_bad_%s",
skim_smap[iskim].c_str()),
546 "BAD rvc(received L1 from GDL)-rvc(TOP(this))",
548 h_topRvcDiff4Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1)-rvc(TOP(this))");
552 h_topGdlRvcDiff1Bad[iskim] =
new TH1I(Form(
"h_gdl_top_l1_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
553 "BAD rvc(L1(GDL))-rvc(L1(as reported to TOP))",
555 h_topGdlRvcDiff1Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(L1(as reported to TOP))");
557 h_topGdlRvcDiff2Bad[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_this_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
558 "BAD rvc(TOP(received by GDL))-rvc(TOP(this))",
560 h_topGdlRvcDiff2Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(this))");
562 h_topGdlRvcDiff3Bad[iskim] =
new TH1I(Form(
"h_gdl_l1_top_t0_prev_rvc_diff_bad_%s",
skim_smap[iskim].c_str()),
563 "BAD rvc(TOP(received by GDL))-rvc(TOP(prev))",
565 h_topGdlRvcDiff3Bad[iskim]->GetXaxis()->SetTitle(
"rvc(L1(GDL))-rvc(TOP(prev))");
570 h_top_nt0decisions_vs_hist_class[iskim] =
new TH2I(Form(
"h_top_nt0decisions_vs_hist_class_%s",
skim_smap[iskim].c_str()),
571 "N t0 decisions vs event class according to TOP info matching between GDL and TOP",
573 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");
574 h_top_nt0decisions_vs_hist_class[iskim]->GetYaxis()->SetTitle(
"Number of t0 decisions");
576 h_top_gdl_match_decision_number[iskim] =
new TH1I(Form(
"h_top_gdl_match_decision_number_%s",
skim_smap[iskim].c_str()),
577 "Decision number where TOP info is the same at TOP and GDL",
579 h_top_gdl_match_decision_number[iskim]->GetXaxis()->SetTitle(
"TOPTRG combined decision # where TOP info is the same at TOP and GDL");
581 h_gdl_ecltop_timing_diff_5ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_5ns_%s",
skim_smap[iskim].c_str()),
582 "GDL ECL-TOP t0 difference", 248, 0, 10240);
583 h_gdl_ecltop_timing_diff_5ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (5ns)");
585 h_gdl_cdctop_timing_diff_5ns[iskim] =
new TH1I(Form(
"h_gdl_cdctop_timing_diff_5ns_%s",
skim_smap[iskim].c_str()),
586 "GDL CDC-TOP t0 difference", 248, 0, 10240);
587 h_gdl_cdctop_timing_diff_5ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP t0 difference (5ns)");
591 h_gdl_ecltop_timing_diff_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_2ns_%s",
skim_smap[iskim].c_str()),
592 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
593 h_gdl_ecltop_timing_diff_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
595 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_grl_matched_2ns_%s",
597 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
598 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference when TOP and GRL match (2ns)");
600 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_no_grl_matched_2ns_%s",
602 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
603 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)");
605 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",
607 "GDL ECL-TOP t0 difference", 400, 1400, 2200);
608 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)");
610 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_nslots_2ns_%s",
612 "GDL N slots vs ECL-TOP t0 difference", 400, 1400, 2200, 16, 1, 17);
613 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
614 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->GetYaxis()->SetTitle(
"N slots in combined decision");
616 h_top_ecltop_timing_diff_combined_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_combined_2ns_%s",
skim_smap[iskim].c_str()),
617 "GDL ECL-TOP TOP t0 difference", 400, 1400, 2200);
618 h_top_ecltop_timing_diff_combined_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
620 h_top_ecltop_timing_diff_best_slot_2ns[iskim] =
new TH1I(Form(
"h_gdl_ecltop_timing_diff_best_slot_2ns_%s",
622 "GDL ECL-TOP TOP t0 difference using slot with max N hits", 400, 1400, 2200);
623 h_top_ecltop_timing_diff_best_slot_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL ECL-TOP t0 difference (2ns)");
625 h_gdl_cdctop_timing_diff_2ns[iskim] =
new TH1I(Form(
"h_gdl_cdctop_timing_diff_2ns_%s",
skim_smap[iskim].c_str()),
626 "GDL CDC-TOP t0 difference", 250, 0, 500);
627 h_gdl_cdctop_timing_diff_2ns[iskim]->GetXaxis()->SetTitle(
"TOPTRG GDL CDC-TOP t0 difference (2ns)");
631 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
634 h_N_decision[iskim][histClass] =
new TH1I(Form(
"h_N_decisions_%d_%s", histClass,
skim_smap[iskim].c_str()),
635 "N t0 decisions in 1 us before GDL L1", 5, 1,
637 h_N_decision[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG N combined t0 decisions");
641 h_topNHitVsNhit[iskim][histClass] =
new TH2I(Form(
"h_nhit_vs_nhit_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
642 "First decision: N hits vs N hits", 20, 0, 100, 20, 0, 100);
643 h_topNHitVsNhit[iskim][histClass]->GetXaxis()->SetTitle(
"N hits for slot with largest N hits");
644 h_topNHitVsNhit[iskim][histClass]->GetYaxis()->SetTitle(
"N hits for slot with next to the largest N hits");
646 h_topSlotVsSlot[iskim][histClass] =
new TH2I(Form(
"h_slot_vs_slot_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
647 "First decision: slot # vs slot #", 16, 1, 17, 16, 1, 17);
648 h_topSlotVsSlot[iskim][histClass]->GetXaxis()->SetTitle(
"Slot # for slot with largest N hits");
649 h_topSlotVsSlot[iskim][histClass]->GetYaxis()->SetTitle(
"Slot # for slot with next to the largest N hits");
651 h_topT0VsT0[iskim][histClass] =
new TH2I(Form(
"h_t0_vs_t0_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
652 "First decision: T0 vs T0", 100, 0, 100000, 100, 0, 100000);
653 h_topT0VsT0[iskim][histClass]->GetXaxis()->SetTitle(
"T0 for slot with largest N hits");
654 h_topT0VsT0[iskim][histClass]->GetYaxis()->SetTitle(
"T0 for slot with next to the largest N hits");
656 h_topSegmentVsSegment[iskim][histClass] =
new TH2I(Form(
"h_segment_vs_segment_first_decision_%d_%s", histClass,
658 "First decision: segment # vs segment #", 10, 1, 11, 10, 1, 11);
659 h_topSegmentVsSegment[iskim][histClass]->GetXaxis()->SetTitle(
"Segment # for slot with largest N hits");
660 h_topSegmentVsSegment[iskim][histClass]->GetYaxis()->SetTitle(
"Segment # for slot with next to the largest N hits");
662 h_topLogLVsLogL[iskim][histClass] =
new TH2I(Form(
"h_logl_vs_logl_first_decision_%d_%s", histClass,
skim_smap[iskim].c_str()),
663 "First decision: log L vs log L", 100, 0, 60000, 100, 0, 60000);
664 h_topLogLVsLogL[iskim][histClass]->GetXaxis()->SetTitle(
"log L for slot with largest N hits");
665 h_topLogLVsLogL[iskim][histClass]->GetYaxis()->SetTitle(
"log L for slot with next to the largest N hits");
675 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
677 h_topCombinedTimingTop[iskim][histClass] =
new TH1I(Form(
"h_t0_%d_%s", histClass,
skim_smap[iskim].c_str()),
678 "TOP combined t0 decision", 100, 0,
680 h_topCombinedTimingTop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions");
682 h_topNSlotsCombinedTimingTop[iskim][histClass] =
new TH1I(Form(
"h_n_slots_%d_%s", histClass,
skim_smap[iskim].c_str()),
683 "TOP combined t0 decision: N slots", 17, 0, 17);
684 h_topNSlotsCombinedTimingTop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N slots");
686 h_topNHitSum[iskim][histClass] =
new TH1I(Form(
"h_n_hit_per_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
687 "TOP combined t0 decision: N hits per slot", 200, 0, 200);
688 h_topNHitSum[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits per slot");
690 h_topNHitBestSlot[iskim][histClass] =
new TH1I(Form(
"h_n_hit_best_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
691 "TOP combined t0 decision: N hits best slot", 200, 0, 200);
692 h_topNHitBestSlot[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: N hits best slot");
699 h_topLogLSum[iskim][histClass] =
new TH1I(Form(
"h_logl_per_slot_%d_%s", histClass,
skim_smap[iskim].c_str()),
700 "TOP combined t0 decision: log L per slot", 100, 0, 60000);
701 h_topLogLSum[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG combined t0 decisions: log L per slot");
705 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_slot_vs_ecltop_timing_diff_%d_%s", histClass,
706 skim_smap[iskim].c_str()),
"slot vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 16, 1, 17);
707 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
708 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"slot");
710 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_segment_vs_ecltop_timing_diff_%d_%s", histClass,
711 skim_smap[iskim].c_str()),
"segment vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 10, 1, 11);
712 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
713 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"segment");
715 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_nhits_vs_ecltop_timing_diff_%d_%s", histClass,
716 skim_smap[iskim].c_str()),
"N hits (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 200, 0, 200);
717 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
718 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"N hits");
720 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass] =
new TH2I(Form(
"h_gdl_logl_vs_ecltop_timing_diff_%d_%s", histClass,
721 skim_smap[iskim].c_str()),
"log L (for slots) vs GDL ECL-TOP slot t0 difference", 400, 1400, 2200, 100, 0, 60000);
722 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"GDL ECL - TOP slot t0 time difference (2ns)");
723 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->GetYaxis()->SetTitle(
"log L");
727 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_combined_diff_2ns_%d_%s", histClass,
729 "(GDL ECL)-(TOP TOP) t0 difference (combined decision)", 400, 1400, 2200);
730 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
732 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_best_slot_diff_2ns_%d_%s", histClass,
734 "(GDL ECL)-(TOP TOP) t0 difference (best slot decision)", 400, 1400, 2200);
735 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
737 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_toptop_%d_%s", histClass,
739 "TOP-TOP vs (GDL ECL)-(GDL TOP) t0 differences", 110, -760, 10240, 110, -760, 10240);
740 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) (combined) t0 difference (ns, 100ns bins)");
741 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
743 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass] =
new TH2I(Form(
"h_top_ecltop_timing_diff_vs_toptop_%d_%s", histClass,
745 "TOP-TOP vs (GDL ECL)-(TOP TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
746 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
747 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->GetYaxis()->SetTitle(
"TOP timing (TOP) - TOP timing (GDL) (ns, 100ns bins)");
749 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_ecltop_%d_%s", histClass,
751 "(GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (combined) t0 differences", 110, -760, 10240, 110, -760, 10240);
752 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
753 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
755 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",
757 "(GDL ECL)-(TOP TOP) vs (GDL ECL)-(GDL TOP) (best slot) t0 differences", 110, -760, 10240, 110, -760, 10240);
758 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)");
759 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass]->GetYaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (ns, 100ns bins)");
761 h_top_ecltop_timing_diff_2ns[iskim][histClass] =
new TH1I(Form(
"h_top_ecltop_timing_diff_2ns_%d_%s", histClass,
763 "(GDL ECL)-(TOP TOP) t0 difference (all decisions)", 400, 1400, 2200);
764 h_top_ecltop_timing_diff_2ns[iskim][histClass]->GetXaxis()->SetTitle(
"TOPTRG (GDL ECL)-(TOP TOP) t0 difference (2ns)");
771 h_topTC2IdVsTC1IdAll[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_%s",
skim_smap[iskim].c_str()),
772 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
773 h_topTC2IdVsTC1IdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
774 h_topTC2IdVsTC1IdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
776 h_topTC2EnergyVsTC1EnergyAll[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_%s",
skim_smap[iskim].c_str()),
777 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
778 h_topTC2EnergyVsTC1EnergyAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
779 h_topTC2EnergyVsTC1EnergyAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
781 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_%s",
skim_smap[iskim].c_str()),
782 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20,
784 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
785 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
787 h_topTC2PhiIdVsTC1PhiIdAll[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_%s",
skim_smap[iskim].c_str()),
788 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1,
790 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
791 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
793 h_topTCPhiIdVsTCThetaIdAll[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_%s",
skim_smap[iskim].c_str()),
794 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20,
796 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
797 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
798 h_topTCPhiIdVsTCThetaIdAll[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
802 h_topTC2IdVsTC1IdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_grl_%s",
skim_smap[iskim].c_str()),
803 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
804 h_topTC2IdVsTC1IdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
805 h_topTC2IdVsTC1IdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
807 h_topTC2EnergyVsTC1EnergyGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_grl_%s",
skim_smap[iskim].c_str()),
808 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0,
810 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
811 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
813 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_grl_%s",
skim_smap[iskim].c_str()),
814 "Sorted by energy TC2 vs TC1 theta ids", 20,
816 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
817 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
819 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_grl_%s",
skim_smap[iskim].c_str()),
820 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36,
822 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
823 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
825 h_topTCPhiIdVsTCThetaIdGRLAll[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_grl_%s",
skim_smap[iskim].c_str()),
826 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20,
827 0, 20, 36, 1, 37, 2, 0, 2);
828 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
829 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
830 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
834 h_topTC2IdVsTC1Id[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_b2b_%s",
skim_smap[iskim].c_str()),
835 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
836 h_topTC2IdVsTC1Id[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
837 h_topTC2IdVsTC1Id[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
839 h_topTC2EnergyVsTC1Energy[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_b2b_%s",
skim_smap[iskim].c_str()),
840 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
841 h_topTC2EnergyVsTC1Energy[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
842 h_topTC2EnergyVsTC1Energy[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
844 h_topTC2ThetaIdVsTC1ThetaId[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_b2b_%s",
skim_smap[iskim].c_str()),
845 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20, 20, 0,
847 h_topTC2ThetaIdVsTC1ThetaId[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
848 h_topTC2ThetaIdVsTC1ThetaId[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
850 h_topTC2PhiIdVsTC1PhiId[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_b2b_%s",
skim_smap[iskim].c_str()),
851 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1, 37);
852 h_topTC2PhiIdVsTC1PhiId[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
853 h_topTC2PhiIdVsTC1PhiId[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
855 h_topTCPhiIdVsTCThetaId[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_b2b_%s",
skim_smap[iskim].c_str()),
856 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20, 36, 1,
858 h_topTCPhiIdVsTCThetaId[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
859 h_topTCPhiIdVsTCThetaId[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
860 h_topTCPhiIdVsTCThetaId[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
864 h_topTC2IdVsTC1IdGRL[iskim] =
new TH2I(Form(
"h_top_tc2id_vs_tc1id_grl_b2b_%s",
skim_smap[iskim].c_str()),
865 "Sorted (by energy) TC2 Id vs TC1 Id", 100, 0, 600, 100, 0, 600);
866 h_topTC2IdVsTC1IdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC id");
867 h_topTC2IdVsTC1IdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC id");
869 h_topTC2EnergyVsTC1EnergyGRL[iskim] =
new TH2I(Form(
"h_top_tc2en_vs_tc1en_grl_b2b_%s",
skim_smap[iskim].c_str()),
870 "Sorted TC2 energy vs TC1 energy", 100, 0, 1000, 100, 0, 1000);
871 h_topTC2EnergyVsTC1EnergyGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC energy");
872 h_topTC2EnergyVsTC1EnergyGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC energy");
874 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim] =
new TH2I(Form(
"h_top_tc2thetaid_vs_tc1thetaid_grl_b2b_%s",
skim_smap[iskim].c_str()),
875 "Sorted by energy TC2 vs TC1 theta ids", 20, 0, 20,
877 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC theta id");
878 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC theta id");
880 h_topTC2PhiIdVsTC1PhiIdGRL[iskim] =
new TH2I(Form(
"h_top_tc2phiid_vs_tc1phiid_grl_b2b_%s",
skim_smap[iskim].c_str()),
881 "Sorted by energy TC2 vs TC1 phi ids", 36, 1, 37, 36, 1,
883 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->GetXaxis()->SetTitle(
"Most energetic TC phi id");
884 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->GetYaxis()->SetTitle(
"Next to most energetic TC phi id");
886 h_topTCPhiIdVsTCThetaIdGRL[iskim] =
new TH3I(Form(
"h_top_tcphiid_vs_tcthetaid_grl_b2b_%s",
skim_smap[iskim].c_str()),
887 "Sorted by energy TC2 vs TC1 theta vs phi ids", 20, 0, 20,
889 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetXaxis()->SetTitle(
"Most and next to most energetic TCs theta ids");
890 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetYaxis()->SetTitle(
"Most and next to most energetic TCs phi ids");
891 h_topTCPhiIdVsTCThetaIdGRL[iskim]->GetZaxis()->SetTitle(
"Most and next to most energetic TCs");
895 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim] =
new TH2I(Form(
"h_gdl_ecltop_timing_diff_vs_grl_top_l1_%s",
897 "(GDL ECL)-(GDL TOP) vs GRL TOP rvc (relative to GDL L1)", 100, -2000, 0, 110, -760, 10240);
898 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->GetXaxis()->SetTitle(
"GRL TOP rvc relative to GDL L1 (rvc)");
899 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->GetYaxis()->SetTitle(
"(GDL ECL)-(GDL TOP) t0 difference (ns, 100ns bins)");
901 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()),
902 "GDL TOP rvc vs GRL TOP rvc (relative to GDL L1)", 100, -2000,
904 h_gdl_top_l1_vs_grl_top_l1[iskim]->GetXaxis()->SetTitle(
"GRL TOP rvc relative to GDL L1 (rvc)");
905 h_gdl_top_l1_vs_grl_top_l1[iskim]->GetYaxis()->SetTitle(
"GDL TOP rvc relative to GDL L1 (rvc)");
907 h_grl_ntopslots_vs_ncdcslots[iskim] =
new TH2I(Form(
"h_grl_ntopslots_vs_ncdcslots_%s",
skim_smap[iskim].c_str()),
908 "GRL TOP slots vs CDC slots", 10, 0, 10, 10, 0, 10);
909 h_grl_ntopslots_vs_ncdcslots[iskim]->GetXaxis()->SetTitle(
"GRL CDC slots");
910 h_grl_ntopslots_vs_ncdcslots[iskim]->GetYaxis()->SetTitle(
"GRL TOP slots");
912 h_grl_ncdctopslots_matched[iskim] =
new TH1I(Form(
"h_grl_ncdctopslots_matched_%s",
skim_smap[iskim].c_str()),
913 "GRL Number of matched TOP and CDC slots", 17, 0, 17);
914 h_grl_ncdctopslots_matched[iskim]->GetXaxis()->SetTitle(
"Number of matched TOP and CDC slots");
916 h_grl_topslots_vs_cdcslots_match[iskim] =
new TH2I(Form(
"h_grl_topslots_vs_cdcslots_match_%s",
skim_smap[iskim].c_str()),
917 "GRL TOP slots vs CDC slots matches", 17, 0, 17, 17,
919 h_grl_topslots_vs_cdcslots_match[iskim]->GetXaxis()->SetTitle(
"GRL CDC slot");
920 h_grl_topslots_vs_cdcslots_match[iskim]->GetYaxis()->SetTitle(
"GRL TOP slot");
934 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
936 h_topSlotAll[iskim]->Reset();
937 h_topSegmentAll[iskim]->Reset();
938 h_topNHitsAll[iskim]->Reset();
939 h_topLogLAll[iskim]->Reset();
940 h_topT0All[iskim]->Reset();
942 for (
int slot = 0; slot <= 15; slot++) {
944 h_topSlotNHits[iskim][slot]->Reset();
945 h_topSlotLogL[iskim][slot]->Reset();
946 h_topSlotT0[iskim][slot]->Reset();
949 h_topSlotVsSegment[iskim]->Reset();
951 h_topSlotVsNHits[iskim]->Reset();
952 h_topSlotVsLogL[iskim]->Reset();
953 h_topSlotVsT0[iskim]->Reset();
955 h_topSegmentVsNHits[iskim]->Reset();
956 h_topSegmentVsLogL[iskim]->Reset();
957 h_topSegmentVsT0[iskim]->Reset();
959 h_topNHitsVsLogL[iskim]->Reset();
960 h_topNHitsVsT0[iskim]->Reset();
961 h_topLogLVsT0[iskim]->Reset();
963 h_ecl_gdl_top_timing_diff_both[iskim]->Reset();
964 h_ecl_top_top_timing_diff_both[iskim]->Reset();
968 h_gdl_top_rvc_vs_top_timing[iskim]->Reset();
970 h_gdl_ecltop_rvc_diff[iskim]->Reset();
971 h_gdl_cdctop_rvc_diff[iskim]->Reset();
973 h_gdl_gdltop_rvc_diff_all[iskim]->Reset();
974 h_gdl_comtop_rvc_diff_all[iskim]->Reset();
976 h_topRvcDiff1All[iskim]->Reset();
977 h_topRvcDiff2All[iskim]->Reset();
978 h_topRvcDiff3All[iskim]->Reset();
979 h_topRvcDiff4All[iskim]->Reset();
981 h_topGdlRvcDiff1All[iskim]->Reset();
982 h_topGdlRvcDiff2All[iskim]->Reset();
983 h_topGdlRvcDiff3All[iskim]->Reset();
985 h_decisionNumberVsNumberDecisionsGood[iskim]->Reset();
987 h_ecl_gdl_top_timing_diff_good[iskim]->Reset();
988 h_ecl_top_top_timing_diff_good[iskim]->Reset();
990 h_gdl_ecltop_timing_diff_vs_toptop_good[iskim]->Reset();
991 h_top_ecltop_timing_diff_vs_toptop_good[iskim]->Reset();
992 h_gdl_ecltop_timing_diff_vs_ecltop_good[iskim]->Reset();
994 h_gdl_gdltop_rvc_diff_good[iskim]->Reset();
995 h_gdl_comtop_rvc_diff_good[iskim]->Reset();
997 h_topCombinedTimingTopGood[iskim]->Reset();
998 h_topNSlotsCombinedTimingTopGood[iskim]->Reset();
999 h_topNHitSumGood[iskim]->Reset();
1000 h_topLogLSumGood[iskim]->Reset();
1002 h_topRvcDiff1Good[iskim]->Reset();
1003 h_topRvcDiff2Good[iskim]->Reset();
1004 h_topRvcDiff3Good[iskim]->Reset();
1005 h_topRvcDiff4Good[iskim]->Reset();
1007 h_topGdlRvcDiff1Good[iskim]->Reset();
1008 h_topGdlRvcDiff2Good[iskim]->Reset();
1009 h_topGdlRvcDiff3Good[iskim]->Reset();
1011 h_decisionNumberVsNumberDecisionsBad[iskim]->Reset();
1013 h_ecl_gdl_top_timing_diff_bad[iskim]->Reset();
1014 h_ecl_top_top_timing_diff_bad[iskim]->Reset();
1016 h_gdl_ecltop_timing_diff_vs_toptop_bad[iskim]->Reset();
1017 h_top_ecltop_timing_diff_vs_toptop_bad[iskim]->Reset();
1018 h_gdl_ecltop_timing_diff_vs_ecltop_bad[iskim]->Reset();
1020 h_gdl_gdltop_rvc_diff_bad[iskim]->Reset();
1021 h_gdl_comtop_rvc_diff_bad[iskim]->Reset();
1023 h_topCombinedTimingTopBad[iskim]->Reset();
1024 h_topNSlotsCombinedTimingTopBad[iskim]->Reset();
1025 h_topNHitSumBad[iskim]->Reset();
1026 h_topLogLSumBad[iskim]->Reset();
1028 h_topRvcDiff1Bad[iskim]->Reset();
1029 h_topRvcDiff2Bad[iskim]->Reset();
1030 h_topRvcDiff3Bad[iskim]->Reset();
1031 h_topRvcDiff4Bad[iskim]->Reset();
1033 h_topGdlRvcDiff1Bad[iskim]->Reset();
1034 h_topGdlRvcDiff2Bad[iskim]->Reset();
1035 h_topGdlRvcDiff3Bad[iskim]->Reset();
1039 h_topCombinedTimingTopAll[iskim]->Reset();
1040 h_topNSlotsCombinedTimingTopAll[iskim]->Reset();
1041 h_topNHitSumAll[iskim]->Reset();
1042 h_topLogLSumAll[iskim]->Reset();
1044 h_topNSlotsCombinedTimingVsNHitsTopAll[iskim]->Reset();
1046 h_topTrigType[iskim]->Reset();
1047 h_topTimingResiduals[iskim]->Reset();
1048 h_topTimingVariance[iskim]->Reset();
1050 h_top_nt0decisions_vs_hist_class[iskim]->Reset();
1052 h_top_gdl_match_decision_number[iskim]->Reset();
1054 h_gdl_ecltop_timing_diff_5ns[iskim]->Reset();
1055 h_gdl_cdctop_timing_diff_5ns[iskim]->Reset();
1057 h_gdl_ecltop_timing_diff_2ns[iskim]->Reset();
1058 h_gdl_ecltop_timing_diff_grl_matched_2ns[iskim]->Reset();
1059 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[iskim]->Reset();
1060 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[iskim]->Reset();
1061 h_gdl_ecltop_timing_diff_vs_nslots_2ns[iskim]->Reset();
1062 h_top_ecltop_timing_diff_combined_2ns[iskim]->Reset();
1063 h_top_ecltop_timing_diff_best_slot_2ns[iskim]->Reset();
1064 h_gdl_cdctop_timing_diff_2ns[iskim]->Reset();
1066 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
1069 h_topNHitVsNhit[iskim][histClass]->Reset();
1070 h_topSlotVsSlot[iskim][histClass]->Reset();
1071 h_topT0VsT0[iskim][histClass]->Reset();
1072 h_topSegmentVsSegment[iskim][histClass]->Reset();
1073 h_topLogLVsLogL[iskim][histClass]->Reset();
1077 for (
int histClass = 0; histClass < m_nHistClassesActual; histClass++) {
1078 h_topCombinedTimingTop[iskim][histClass]->Reset();
1079 h_topNSlotsCombinedTimingTop[iskim][histClass]->Reset();
1080 h_topNHitSum[iskim][histClass]->Reset();
1081 h_topNHitBestSlot[iskim][histClass]->Reset();
1083 h_topLogLSum[iskim][histClass]->Reset();
1085 h_gdl_ecltop_timing_diff_vs_slot_2ns[iskim][histClass]->Reset();
1086 h_gdl_ecltop_timing_diff_vs_segment_2ns[iskim][histClass]->Reset();
1087 h_gdl_ecltop_timing_diff_vs_nhits_2ns[iskim][histClass]->Reset();
1088 h_gdl_ecltop_timing_diff_vs_logl_2ns[iskim][histClass]->Reset();
1090 h_top_ecltop_timing_diff_2ns[iskim][histClass]->Reset();
1091 h_top_ecltop_timing_combined_diff_2ns[iskim][histClass]->Reset();
1092 h_top_ecltop_timing_best_slot_diff_2ns[iskim][histClass]->Reset();
1094 h_gdl_ecltop_timing_diff_vs_toptop[iskim][histClass]->Reset();
1095 h_top_ecltop_timing_diff_vs_toptop[iskim][histClass]->Reset();
1097 h_gdl_ecltop_timing_diff_vs_ecltop[iskim][histClass]->Reset();
1098 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[iskim][histClass]->Reset();
1102 h_gdl_ecltop_timing_diff_vs_slot[iskim]->Reset();
1103 h_gdl_ecltop_timing_diff_vs_segment[iskim]->Reset();
1104 h_gdl_ecltop_timing_diff_vs_nhits[iskim]->Reset();
1105 h_gdl_ecltop_timing_diff_vs_logl[iskim]->Reset();
1107 h_topTC2IdVsTC1IdAll[iskim]->Reset();
1108 h_topTC2EnergyVsTC1EnergyAll[iskim]->Reset();
1109 h_topTC2ThetaIdVsTC1ThetaIdAll[iskim]->Reset();
1110 h_topTC2PhiIdVsTC1PhiIdAll[iskim]->Reset();
1111 h_topTCPhiIdVsTCThetaIdAll[iskim]->Reset();
1113 h_topTC2IdVsTC1IdGRLAll[iskim]->Reset();
1114 h_topTC2EnergyVsTC1EnergyGRLAll[iskim]->Reset();
1115 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[iskim]->Reset();
1116 h_topTC2PhiIdVsTC1PhiIdGRLAll[iskim]->Reset();
1117 h_topTCPhiIdVsTCThetaIdGRLAll[iskim]->Reset();
1119 h_topTC2IdVsTC1Id[iskim]->Reset();
1120 h_topTC2EnergyVsTC1Energy[iskim]->Reset();
1121 h_topTC2ThetaIdVsTC1ThetaId[iskim]->Reset();
1122 h_topTC2PhiIdVsTC1PhiId[iskim]->Reset();
1123 h_topTCPhiIdVsTCThetaId[iskim]->Reset();
1125 h_topTC2IdVsTC1IdGRL[iskim]->Reset();
1126 h_topTC2EnergyVsTC1EnergyGRL[iskim]->Reset();
1127 h_topTC2ThetaIdVsTC1ThetaIdGRL[iskim]->Reset();
1128 h_topTC2PhiIdVsTC1PhiIdGRL[iskim]->Reset();
1129 h_topTCPhiIdVsTCThetaIdGRL[iskim]->Reset();
1131 h_gdl_ecltop_timing_diff_vs_grl_top_l1[iskim]->Reset();
1132 h_gdl_top_l1_vs_grl_top_l1[iskim]->Reset();
1134 h_grl_ntopslots_vs_ncdcslots[iskim]->Reset();
1135 h_grl_ncdctopslots_matched[iskim]->Reset();
1136 h_grl_topslots_vs_cdcslots_match[iskim]->Reset();
1224 if (!trgtopCombinedTimingArray)
return;
1225 if (!trgtopCombinedTimingArray.
getEntries())
return;
1231 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
1232 if (iskim == 0) skim.push_back(iskim);
1237 const std::map<std::string, int>& skim_map = result_soft->getResults();
1238 for (
int iskim = start_skim_topdqm; iskim < end_skim_topdqm; iskim++) {
1240 else if (skim_map.find(
skim_menu[iskim]) != skim_map.end()) {
1242 if (accepted) skim.push_back(iskim);
1247 bool gdlInfoAvailable =
false;
1248 bool grlInfoAvailable =
false;
1254 bool grlCDCSlots[16];
1255 bool grlTOPSlots[16];
1257 bool grlCDCTOPSlotsMatch[16];
1259 if (m_doGRLCorrelations) {
1266 grlInfoAvailable =
true;
1268 int grlTimeL1 = grlEventInfo->get_coml1() - grlEventInfo->get_revoclk();
1270 grlTOPL1 = (grlEventInfo->get_TOPL1_count() + grlTimeL1 - 0.5) * (-clk127To1ns);
1274 for (
int i = 0; i < 16; i++) {
1275 grlCDCSlots[i] =
false;
1276 if (grlEventInfo->get_slot_CDC(i)) {
1277 grlCDCSlots[i] =
true;
1279 grlTOPSlots[i] =
false;
1280 if (grlEventInfo->get_slot_TOP(i)) {
1281 grlTOPSlots[i] =
true;
1288 int nCDCSlotsGRL = 0;
1289 int nTOPSlotsGRL = 0;
1290 int nCDCTOPSlotsMatchedGRL = 0;
1292 if (grlInfoAvailable) {
1293 for (
int i = 0; i < 16; i++) {
1294 if (grlCDCSlots[i]) nCDCSlotsGRL++;
1295 if (grlTOPSlots[i]) nTOPSlotsGRL++;
1296 grlCDCTOPSlotsMatch[i] =
false;
1297 if (grlCDCSlots[i] && grlTOPSlots[i]) {
1298 nCDCTOPSlotsMatchedGRL++;
1299 grlCDCTOPSlotsMatch[i] =
true;
1308 if (m_doECLCorrelations) {
1310 bool barrelEcl =
false;
1311 bool barrelEclB2B =
false;
1321 int TCID = (aTRGECLUnpackerStore->
getTCId());
1323 int hit_win = aTRGECLUnpackerStore -> getHitWin();
1324 double HitEnergy = aTRGECLUnpackerStore -> getTCEnergy();
1325 double HitTiming = aTRGECLUnpackerStore ->
getTCTime();
1327 if (TCID < 1 || TCID > 576 || HitEnergy == 0) {
continue;}
1328 if (!(hit_win == 3 || hit_win == 4)) {
continue;}
1331 tcEclThis.tcId = TCID;
1332 tcEclThis.tcEnergy = HitEnergy;
1333 tcEclThis.tcTiming = HitTiming;
1336 tcEclList.push_back(tcEclThis);
1344 if (tcEclList.size() >= 2) {
1346 const tcEcl& tc1 = *it;
1348 const tcEcl& tc2 = *it;
1349 int tcId1 = tc1.tcId;
1350 int tcId2 = tc2.tcId;
1352 int tcThetaId1 = tc1.tcThetaId;
1353 int tcPhiId1 = tc1.tcPhiId;
1355 int tcThetaId2 = tc2.tcThetaId;
1356 int tcPhiId2 = tc2.tcPhiId;
1363 if (tcThetaId1 >= 4 && tcThetaId1 <= 15) {
1365 if (tcThetaId2 >= 4 && tcThetaId2 <= 15) {
1366 if (abs(tcPhiId1 - tcPhiId2) >= 12 && abs(tcPhiId1 - tcPhiId2) <= 24) {
1367 barrelEclB2B =
true;
1372 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1374 h_topTC2IdVsTC1IdAll[skim[ifill]]->Fill(tcId1, tcId2);
1375 h_topTC2EnergyVsTC1EnergyAll[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1376 h_topTC2ThetaIdVsTC1ThetaIdAll[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1377 h_topTC2PhiIdVsTC1PhiIdAll[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1378 h_topTCPhiIdVsTCThetaIdAll[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1379 h_topTCPhiIdVsTCThetaIdAll[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1381 if (nCDCSlotsGRL > 0) {
1382 h_topTC2IdVsTC1IdGRLAll[skim[ifill]]->Fill(tcId1, tcId2);
1383 h_topTC2EnergyVsTC1EnergyGRLAll[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1384 h_topTC2ThetaIdVsTC1ThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1385 h_topTC2PhiIdVsTC1PhiIdGRLAll[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1386 h_topTCPhiIdVsTCThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1387 h_topTCPhiIdVsTCThetaIdGRLAll[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1392 h_topTC2IdVsTC1Id[skim[ifill]]->Fill(tcId1, tcId2);
1393 h_topTC2EnergyVsTC1Energy[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1394 h_topTC2ThetaIdVsTC1ThetaId[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1395 h_topTC2PhiIdVsTC1PhiId[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1396 h_topTCPhiIdVsTCThetaId[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1397 h_topTCPhiIdVsTCThetaId[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1398 if (nCDCSlotsGRL > 0) {
1399 h_topTC2IdVsTC1IdGRL[skim[ifill]]->Fill(tcId1, tcId2);
1400 h_topTC2EnergyVsTC1EnergyGRL[skim[ifill]]->Fill(tc1.tcEnergy, tc2.tcEnergy);
1401 h_topTC2ThetaIdVsTC1ThetaIdGRL[skim[ifill]]->Fill(tcThetaId1, tcThetaId2);
1402 h_topTC2PhiIdVsTC1PhiIdGRL[skim[ifill]]->Fill(tcPhiId1, tcPhiId2);
1403 h_topTCPhiIdVsTCThetaIdGRL[skim[ifill]]->Fill(tcThetaId1, tcPhiId1, 0);
1404 h_topTCPhiIdVsTCThetaIdGRL[skim[ifill]]->Fill(tcThetaId2, tcPhiId2, 1);
1410 if (m_requireEclBarrel) {
1411 if (!barrelEcl)
return;
1413 if (m_requireEclBarrelB2B) {
1414 if (!barrelEclB2B)
return;
1420 if (m_doGRLCorrelations && grlInfoAvailable) {
1421 if (m_requireCDC2DTrack) {
1422 if (nCDCSlotsGRL <= 0)
return;
1426 if (grlInfoAvailable) {
1428 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1430 h_grl_ntopslots_vs_ncdcslots[skim[ifill]]->Fill(nCDCSlotsGRL, nTOPSlotsGRL);
1432 h_grl_ncdctopslots_matched[skim[ifill]]->Fill(nCDCTOPSlotsMatchedGRL);
1434 for (
int i = 0; i < 16; i++) {
1435 if (grlCDCTOPSlotsMatch[i]) {
1436 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(i + 1, i + 1);
1437 }
else if (grlCDCSlots[i]) {
1438 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(i + 1, 0.);
1439 }
else if (grlTOPSlots[i]) {
1440 h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(0., i + 1);
1447 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1448 if (nCDCSlotsGRL == 0 && nTOPSlotsGRL == 0) h_grl_topslots_vs_cdcslots_match[skim[ifill]]->Fill(0., 0.);
1466 int gdl_gdll1rvc = -1;
1467 int gdl_coml1rvc = -1;
1468 int gdl_toprvc = -1;
1469 int gdl_eclrvc = -1;
1470 int gdl_cdcrvc = -1;
1472 int gdl_top_timing = -1;
1473 int gdl_ecl_timing = -1;
1474 int gdl_cdc_timing = -1;
1477 if (m_doGDLCorrelations) {
1503 for (
int i = 0; i < 320; i++) {
1504 if (strcmp(entAry[0]->m_unpackername[i],
"evt") == 0) m_evtno = entAry[0]->m_unpacker[i];
1505 if (strcmp(entAry[0]->m_unpackername[i],
"clk") == 0) clk_map = i;
1510 std::vector<std::vector<int> > _data(n_leafs + n_leafsExtra);
1511 for (
int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
1512 std::vector<int> _v(n_clocks);
1517 for (
int ii = 0; ii < entAry.
getEntries(); ii++) {
1518 std::vector<int*> Bits(n_leafs + n_leafsExtra);
1520 for (
int i = 0; i < 320; i++) {
1521 if (gdlLeafBitMap[i] != -1) {
1522 Bits[gdlLeafBitMap[i]] = &(entAry[ii]->m_unpacker[i]);
1525 for (
int leaf = 0; leaf < n_leafs + n_leafsExtra; leaf++) {
1526 _data[leaf][entAry[ii]->m_unpacker[clk_map]] = *Bits[leaf];
1531 gdl_gdll1rvc = _data[gdl_e_gdll1rvc][n_clocks - 1];
1532 gdl_coml1rvc = _data[gdl_e_coml1rvc][n_clocks - 1];
1533 gdl_toprvc = _data[gdl_e_toprvc][n_clocks - 1];
1534 gdl_eclrvc = _data[gdl_e_eclrvc][n_clocks - 1];
1535 gdl_cdcrvc = _data[gdl_e_cdcrvc][n_clocks - 1];
1536 gdl_top_timing = _data[gdl_e_toptiming][n_clocks - 1];
1537 gdl_ecl_timing = _data[gdl_e_ecltiming][n_clocks - 1];
1538 gdl_cdc_timing = _data[gdl_e_cdctiming][n_clocks - 1];
1540 gdlInfoAvailable =
true;
1586 int ecl_top_timing_diff = -1;
1587 int cdc_top_timing_diff = -1;
1589 int gdl_top_rvc_diff = -1;
1590 int com_top_rvc_diff = -1;
1591 int ecl_top_rvc_diff = -1;
1592 int cdc_top_rvc_diff = -1;
1594 if (gdlInfoAvailable) {
1596 ecl_top_timing_diff = gdl_ecl_timing >= gdl_top_timing ? gdl_ecl_timing - gdl_top_timing : gdl_ecl_timing - gdl_top_timing +
1598 cdc_top_timing_diff = gdl_cdc_timing >= gdl_top_timing ? gdl_cdc_timing - gdl_top_timing : gdl_cdc_timing - gdl_top_timing +
1601 gdl_top_rvc_diff = gdl_gdll1rvc >= gdl_toprvc ? gdl_gdll1rvc - gdl_toprvc : gdl_gdll1rvc - gdl_toprvc + 1280;
1602 com_top_rvc_diff = gdl_coml1rvc >= gdl_toprvc ? gdl_coml1rvc - gdl_toprvc : gdl_coml1rvc - gdl_toprvc + 1280;
1603 ecl_top_rvc_diff = gdl_eclrvc >= gdl_toprvc ? gdl_eclrvc - gdl_toprvc : gdl_eclrvc - gdl_toprvc + 1280;
1604 cdc_top_rvc_diff = gdl_cdcrvc >= gdl_toprvc ? gdl_cdcrvc - gdl_toprvc : gdl_cdcrvc - gdl_toprvc + 1280;
1612 int nT0Decisions = trgtopCombinedTimingArray.
getEntries();
1614 int t0DecisionNumber = 0;
1616 if (gdlInfoAvailable) {
1620 for (
const auto& t0Decision : trgtopCombinedTimingArray) {
1621 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1622 int top_top_timing = (topCombinedTimingTop % 10240);
1624 if (gdl_top_timing == top_top_timing) {
1626 if (t0DecisionNumber == 0) {
1628 }
else if (histClass != 0) {
1631 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1632 h_top_gdl_match_decision_number[skim[ifill]]->Fill(t0DecisionNumber + 1);
1639 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1640 h_top_nt0decisions_vs_hist_class[skim[ifill]]->Fill(histClass, nT0Decisions);
1645 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1646 h_top_gdl_match_decision_number[skim[ifill]]->Fill(0);
1652 if (m_nHistClassesActual == 1) histClass = 0;
1655 if (m_nHistClassesActual == 2 && histClass == 2) histClass = 1;
1658 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1659 h_N_decision[skim[ifill]][histClass]->Fill(nT0Decisions);
1664 if (gdlInfoAvailable) {
1669 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1673 int gdl_top_timing_1280 = gdl_top_timing >> 3;
1674 h_gdl_top_rvc_vs_top_timing[skim[ifill]]->Fill(gdl_top_timing_1280, gdl_toprvc);
1676 h_gdl_ecltop_rvc_diff[skim[ifill]]->Fill(ecl_top_rvc_diff);
1677 h_gdl_cdctop_rvc_diff[skim[ifill]]->Fill(cdc_top_rvc_diff);
1679 h_gdl_gdltop_rvc_diff_all[skim[ifill]]->Fill(gdl_top_rvc_diff);
1680 h_gdl_comtop_rvc_diff_all[skim[ifill]]->Fill(com_top_rvc_diff);
1683 if (grlInfoAvailable) {
1684 h_gdl_ecltop_timing_diff_vs_grl_top_l1[skim[ifill]]->Fill(grlTOPL1, ecl_top_timing_diff);
1687 h_gdl_ecltop_timing_diff_5ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1688 h_gdl_cdctop_timing_diff_5ns[skim[ifill]]->Fill(cdc_top_timing_diff);
1690 h_gdl_ecltop_timing_diff_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1692 if (nCDCTOPSlotsMatchedGRL > 0) {
1693 h_gdl_ecltop_timing_diff_grl_matched_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1694 }
else if (nCDCSlotsGRL > 0) {
1695 h_gdl_ecltop_timing_diff_no_grl_matched_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1697 h_gdl_ecltop_timing_diff_no_grl_at_all_2ns[skim[ifill]]->Fill(ecl_top_timing_diff);
1699 h_gdl_cdctop_timing_diff_2ns[skim[ifill]]->Fill(cdc_top_timing_diff);
1706 t0DecisionNumber = 0;
1708 for (
const auto& t0Decision : trgtopCombinedTimingArray) {
1710 bool top_timing_same =
false;
1711 if (gdlInfoAvailable) {
1712 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1713 int top_top_timing = (topCombinedTimingTop % 10240);
1714 if (top_top_timing == gdl_top_timing) {
1715 top_timing_same =
true;
1720 const vector<Belle2::TRGTOPSlotTiming> t0DecisionSlots = trgtopCombinedTimingArray[t0DecisionNumber]->getSlotTimingDecisions();
1722 slotDecisionList.
clear();
1724 if (t0DecisionNumber == 0) {
1726 for (
const auto& t0DecisionSlot : t0DecisionSlots) {
1728 int slot = t0DecisionSlot.getSlotId();
1729 int segment = t0DecisionSlot.getSlotSegment();
1730 int nHits = t0DecisionSlot.getSlotNHits();
1731 int logL = t0DecisionSlot.getSlotLogL();
1732 int t0 = t0DecisionSlot.getSlotTiming();
1736 slotDecisionThis.slot = slot;
1737 slotDecisionThis.segment = segment;
1738 slotDecisionThis.nHits = nHits;
1739 slotDecisionThis.logL = logL;
1740 slotDecisionThis.t0 = t0;
1741 slotDecisionList.push_back(slotDecisionThis);
1743 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1745 h_topSlotAll[skim[ifill]]->Fill(slot);
1746 h_topSegmentAll[skim[ifill]]->Fill(segment);
1747 h_topNHitsAll[skim[ifill]]->Fill(nHits);
1748 h_topLogLAll[skim[ifill]]->Fill(logL);
1749 h_topT0All[skim[ifill]]->Fill(t0);
1752 if (gdlInfoAvailable) {
1753 int top_top_timing_slot = (t0 % 10240);
1754 int top_gdl_timing_diff_slot = gdl_ecl_timing >= top_top_timing_slot ? gdl_ecl_timing - top_top_timing_slot : gdl_ecl_timing -
1755 top_top_timing_slot + 10240;
1757 h_gdl_ecltop_timing_diff_vs_slot[skim[ifill]]->Fill(top_gdl_timing_diff_slot, slot);
1758 h_gdl_ecltop_timing_diff_vs_segment[skim[ifill]]->Fill(top_gdl_timing_diff_slot, segment);
1759 h_gdl_ecltop_timing_diff_vs_nhits[skim[ifill]]->Fill(top_gdl_timing_diff_slot, nHits);
1760 h_gdl_ecltop_timing_diff_vs_logl[skim[ifill]]->Fill(top_gdl_timing_diff_slot, logL);
1763 h_gdl_ecltop_timing_diff_vs_slot_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, slot);
1764 h_gdl_ecltop_timing_diff_vs_segment_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, segment);
1765 h_gdl_ecltop_timing_diff_vs_nhits_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, nHits);
1766 h_gdl_ecltop_timing_diff_vs_logl_2ns[skim[ifill]][histClass]->Fill(top_gdl_timing_diff_slot, logL);
1770 if (slot >= 1 && slot <= 16) {
1771 if (segment >= 1 && segment <= 10) {
1773 h_topSlotNHits[skim[ifill]][slot - 1]->Fill(nHits);
1774 h_topSlotLogL[skim[ifill]][slot - 1]->Fill(logL);
1775 h_topSlotT0[skim[ifill]][slot - 1]->Fill(t0);
1777 h_topSlotVsSegment[skim[ifill]]->Fill(segment, slot);
1779 h_topSlotVsNHits[skim[ifill]]->Fill(nHits, slot);
1780 h_topSlotVsLogL[skim[ifill]]->Fill(logL, slot);
1781 h_topSlotVsT0[skim[ifill]]->Fill(t0, slot);
1783 h_topSegmentVsNHits[skim[ifill]]->Fill(nHits, segment);
1784 h_topSegmentVsLogL[skim[ifill]]->Fill(logL, segment);
1785 h_topSegmentVsT0[skim[ifill]]->Fill(t0, segment);
1787 h_topNHitsVsLogL[skim[ifill]]->Fill(logL, nHits);
1788 h_topNHitsVsT0[skim[ifill]]->Fill(t0, nHits);
1789 h_topLogLVsT0[skim[ifill]]->Fill(t0, logL);
1803 int nHitsSlotBest = 0;
1804 int t0SlotBest = -1;
1807 if (slotDecisionList.size() > 0) {
1809 int slotSlotBest = 0;
1810 int segmentSlotBest = 0;
1811 int logLSlotBest = 0;
1814 sort(slotDecisionList.begin(), slotDecisionList.end(),
largestNHits());
1819 slotSlotBest = slotDecisionBest.slot;
1820 segmentSlotBest = slotDecisionBest.segment;
1821 logLSlotBest = slotDecisionBest.logL;
1822 nHitsSlotBest = slotDecisionBest.nHits;
1823 t0SlotBest = slotDecisionBest.t0;
1825 if (slotDecisionList.size() > 1) {
1829 int slotSlotBest2 = slotDecisionBest2.slot;
1830 int segmentSlotBest2 = slotDecisionBest2.segment;
1831 int logLSlotBest2 = slotDecisionBest2.logL;
1832 int nHitsSlotBest2 = slotDecisionBest2.nHits;
1833 int t0SlotBest2 = slotDecisionBest2.t0;
1835 if (t0DecisionNumber == 0) {
1836 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1837 h_topNHitVsNhit[skim[ifill]][histClass]->Fill(nHitsSlotBest, nHitsSlotBest2);
1838 h_topSlotVsSlot[skim[ifill]][histClass]->Fill(slotSlotBest, slotSlotBest2);
1839 h_topT0VsT0[skim[ifill]][histClass]->Fill(t0SlotBest, t0SlotBest2);
1840 h_topSegmentVsSegment[skim[ifill]][histClass]->Fill(segmentSlotBest, segmentSlotBest2);
1841 h_topLogLVsLogL[skim[ifill]][histClass]->Fill(logLSlotBest, logLSlotBest2);
1866 int topRvcL1 = t0Decision.getRvcB2L();
1868 int topRvcWindow = t0Decision.getRvcWindow();
1870 int topRvcTopTimingDecisionPrev = t0Decision.getRvcTopTimingDecisionPrev();
1872 int topRvcTopTimingDecisionNow = t0Decision.getRvcTopTimingDecisionNow();
1874 int topRvcTopTimingDecisionNowGdl = t0Decision.getRvcTopTimingDecisionNowGdl();
1879 int topCombinedTimingTop = t0Decision.getCombinedTimingTop();
1881 int topNSlotsCombinedTimingTop = t0Decision.getNSlotsCombinedTimingTop();
1882 int topCombinedTimingTopResidual = t0Decision.getCombinedTimingTopResidual();
1885 int topTrigType = t0Decision.getTrigType();
1886 int topNHitSum = t0Decision.getNHitSum();
1887 int topLogLSum = t0Decision.getLogLSum();
1889 int topTimingVar = t0Decision.getTimingVar();
1891 float hitsPerSlot = topNHitSum / max(1, topNSlotsCombinedTimingTop);
1892 float logLPerSlot = topLogLSum / max(1, topNSlotsCombinedTimingTop);
1894 int topRvcDiff1 = topRvcTopTimingDecisionNowGdl - topRvcTopTimingDecisionNow;
1895 int topRvcDiff2 = topRvcTopTimingDecisionNow >= topRvcTopTimingDecisionPrev ? topRvcTopTimingDecisionNow -
1896 topRvcTopTimingDecisionPrev : topRvcTopTimingDecisionNow - topRvcTopTimingDecisionPrev + 1280;
1897 int topRvcDiff3 = topRvcWindow >= topRvcTopTimingDecisionNow ? topRvcWindow - topRvcTopTimingDecisionNow : topRvcWindow -
1898 topRvcTopTimingDecisionNow + 1280;
1899 int topRvcDiff4 = topRvcL1 >= topRvcTopTimingDecisionNow ? topRvcL1 - topRvcTopTimingDecisionNow : topRvcL1 -
1900 topRvcTopTimingDecisionNow + 1280;
1902 if (t0DecisionNumber == 0) {
1904 if (grlInfoAvailable) {
1905 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1906 h_gdl_top_l1_vs_grl_top_l1[skim[ifill]]->Fill(grlTOPL1, topRvcDiff4);
1910 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1912 h_topCombinedTimingTopAll[skim[ifill]]->Fill(topCombinedTimingTop);
1913 h_topNSlotsCombinedTimingTopAll[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
1914 h_topNHitSumAll[skim[ifill]]->Fill((
int) hitsPerSlot);
1915 h_topLogLSumAll[skim[ifill]]->Fill((
int) logLPerSlot);
1917 h_topNSlotsCombinedTimingVsNHitsTopAll[skim[ifill]]->Fill(topNHitSum, topNSlotsCombinedTimingTop);
1919 h_topTrigType[skim[ifill]]->Fill(topTrigType);
1920 h_topTimingResiduals[skim[ifill]]->Fill(topCombinedTimingTopResidual);
1921 h_topTimingVariance[skim[ifill]]->Fill(topTimingVar);
1924 h_topRvcDiff1All[skim[ifill]]->Fill(topRvcDiff1);
1925 h_topRvcDiff2All[skim[ifill]]->Fill(topRvcDiff2);
1926 h_topRvcDiff3All[skim[ifill]]->Fill(topRvcDiff3);
1927 h_topRvcDiff4All[skim[ifill]]->Fill(topRvcDiff4);
1932 int topGdlRvcDiff1 = gdl_gdll1rvc >= topRvcL1 ? gdl_gdll1rvc - topRvcL1 : gdl_gdll1rvc - topRvcL1 + 1280;
1933 int topGdlRvcDiff2 = gdl_toprvc >= topRvcTopTimingDecisionNow ? gdl_toprvc - topRvcTopTimingDecisionNow : gdl_toprvc -
1934 topRvcTopTimingDecisionNow + 1280;
1935 int topGdlRvcDiff3 = gdl_toprvc >= topRvcTopTimingDecisionPrev ? gdl_toprvc - topRvcTopTimingDecisionPrev : gdl_toprvc -
1936 topRvcTopTimingDecisionPrev + 1280;
1938 int ecl_gdl_top_timing_combined_diff = -1;
1940 int top_top_timing_combined_diff = -1;
1942 int ecl_top_top_timing_combined_diff = -1;
1943 int ecl_top_top_timing_best_slot_diff = -1;
1945 if (gdlInfoAvailable) {
1947 int top_top_timing_combined = -1;
1948 int top_top_timing_best_slot = -1;
1950 ecl_gdl_top_timing_combined_diff = gdl_ecl_timing >= gdl_top_timing ? gdl_ecl_timing - gdl_top_timing : gdl_ecl_timing -
1951 gdl_top_timing + 10240;
1953 top_top_timing_combined = (topCombinedTimingTop % 10240);
1954 top_top_timing_best_slot = (t0SlotBest % 10240);
1956 top_top_timing_combined_diff = top_top_timing_combined >= gdl_top_timing ? top_top_timing_combined - gdl_top_timing :
1957 top_top_timing_combined - gdl_top_timing + 10240;
1959 ecl_top_top_timing_combined_diff = gdl_ecl_timing >= top_top_timing_combined ? gdl_ecl_timing - top_top_timing_combined :
1960 gdl_ecl_timing - top_top_timing_combined + 10240;
1961 ecl_top_top_timing_best_slot_diff = gdl_ecl_timing >= top_top_timing_best_slot ? gdl_ecl_timing - top_top_timing_best_slot :
1962 gdl_ecl_timing - top_top_timing_best_slot + 10240;
1964 if (t0DecisionNumber == 0) {
1965 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1967 h_topGdlRvcDiff1All[skim[ifill]]->Fill(topGdlRvcDiff1);
1968 h_topGdlRvcDiff2All[skim[ifill]]->Fill(topGdlRvcDiff2);
1969 h_topGdlRvcDiff3All[skim[ifill]]->Fill(topGdlRvcDiff3);
1972 h_ecl_gdl_top_timing_diff_both[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
1973 h_ecl_top_top_timing_diff_both[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
1980 if (top_top_timing_combined_diff == 0) {
1982 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
1984 h_decisionNumberVsNumberDecisionsGood[skim[ifill]]->Fill(nT0Decisions, t0DecisionNumber + 1);
1986 if (t0DecisionNumber == 0) {
1988 h_ecl_gdl_top_timing_diff_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
1989 h_ecl_top_top_timing_diff_good[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
1991 h_gdl_ecltop_timing_diff_vs_toptop_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
1992 h_top_ecltop_timing_diff_vs_toptop_good[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
1993 h_gdl_ecltop_timing_diff_vs_ecltop_good[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, ecl_top_top_timing_combined_diff);
1995 h_topCombinedTimingTopGood[skim[ifill]]->Fill(topCombinedTimingTop);
1996 h_topNSlotsCombinedTimingTopGood[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
1997 h_topNHitSumGood[skim[ifill]]->Fill((
int) hitsPerSlot);
1998 h_topLogLSumGood[skim[ifill]]->Fill((
int) logLPerSlot);
2000 h_topRvcDiff1Good[skim[ifill]]->Fill(topRvcDiff1);
2001 h_topRvcDiff2Good[skim[ifill]]->Fill(topRvcDiff2);
2002 h_topRvcDiff3Good[skim[ifill]]->Fill(topRvcDiff3);
2003 h_topRvcDiff4Good[skim[ifill]]->Fill(topRvcDiff4);
2005 h_topGdlRvcDiff1Good[skim[ifill]]->Fill(topGdlRvcDiff1);
2006 h_topGdlRvcDiff2Good[skim[ifill]]->Fill(topGdlRvcDiff2);
2007 h_topGdlRvcDiff3Good[skim[ifill]]->Fill(topGdlRvcDiff3);
2009 h_gdl_gdltop_rvc_diff_good[skim[ifill]]->Fill(gdl_top_rvc_diff);
2010 h_gdl_comtop_rvc_diff_good[skim[ifill]]->Fill(com_top_rvc_diff);
2015 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
2017 h_decisionNumberVsNumberDecisionsBad[skim[ifill]]->Fill(nT0Decisions, t0DecisionNumber + 1);
2019 if (t0DecisionNumber == 0) {
2020 h_ecl_gdl_top_timing_diff_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff);
2021 h_ecl_top_top_timing_diff_bad[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
2023 h_gdl_ecltop_timing_diff_vs_toptop_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
2024 h_top_ecltop_timing_diff_vs_toptop_bad[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
2025 h_gdl_ecltop_timing_diff_vs_ecltop_bad[skim[ifill]]->Fill(ecl_gdl_top_timing_combined_diff, ecl_top_top_timing_combined_diff);
2027 h_topCombinedTimingTopBad[skim[ifill]]->Fill(topCombinedTimingTop);
2028 h_topNSlotsCombinedTimingTopBad[skim[ifill]]->Fill(topNSlotsCombinedTimingTop);
2029 h_topNHitSumBad[skim[ifill]]->Fill((
int) hitsPerSlot);
2030 h_topLogLSumBad[skim[ifill]]->Fill((
int) logLPerSlot);
2032 h_topRvcDiff1Bad[skim[ifill]]->Fill(topRvcDiff1);
2033 h_topRvcDiff2Bad[skim[ifill]]->Fill(topRvcDiff2);
2034 h_topRvcDiff3Bad[skim[ifill]]->Fill(topRvcDiff3);
2035 h_topRvcDiff4Bad[skim[ifill]]->Fill(topRvcDiff4);
2037 h_topGdlRvcDiff1Bad[skim[ifill]]->Fill(topGdlRvcDiff1);
2038 h_topGdlRvcDiff2Bad[skim[ifill]]->Fill(topGdlRvcDiff2);
2039 h_topGdlRvcDiff3Bad[skim[ifill]]->Fill(topGdlRvcDiff3);
2041 h_gdl_gdltop_rvc_diff_bad[skim[ifill]]->Fill(gdl_top_rvc_diff);
2042 h_gdl_comtop_rvc_diff_bad[skim[ifill]]->Fill(com_top_rvc_diff);
2049 if (t0DecisionNumber == 0) {
2050 for (
unsigned ifill = 0; ifill < skim.size(); ifill++) {
2053 if (gdlInfoAvailable) {
2054 h_gdl_ecltop_timing_diff_vs_toptop[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff, top_top_timing_combined_diff);
2055 h_top_ecltop_timing_diff_vs_toptop[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff, top_top_timing_combined_diff);
2056 h_gdl_ecltop_timing_diff_vs_ecltop[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff,
2057 ecl_top_top_timing_combined_diff);
2058 h_gdl_ecltop_timing_diff_vs_ecltop_best_slot[skim[ifill]][histClass]->Fill(ecl_gdl_top_timing_combined_diff,
2059 ecl_top_top_timing_best_slot_diff);
2061 h_top_ecltop_timing_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff);
2064 if (top_timing_same) {
2065 h_top_ecltop_timing_combined_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_combined_diff);
2066 h_top_ecltop_timing_best_slot_diff_2ns[skim[ifill]][histClass]->Fill(ecl_top_top_timing_best_slot_diff);
2067 h_topNHitBestSlot[skim[ifill]][histClass]->Fill(nHitsSlotBest);
2072 h_topCombinedTimingTop[skim[ifill]][histClass]->Fill(topCombinedTimingTop);
2073 h_topNSlotsCombinedTimingTop[skim[ifill]][histClass]->Fill(topNSlotsCombinedTimingTop);
2074 h_topNHitSum[skim[ifill]][histClass]->Fill((
int) hitsPerSlot);
2075 h_topLogLSum[skim[ifill]][histClass]->Fill((
int) logLPerSlot);
2078 h_gdl_ecltop_timing_diff_vs_nslots_2ns[skim[ifill]]->Fill(ecl_top_timing_diff, topNSlotsCombinedTimingTop);
2079 h_top_ecltop_timing_diff_combined_2ns[skim[ifill]]->Fill(ecl_top_top_timing_combined_diff);
2080 h_top_ecltop_timing_diff_best_slot_2ns[skim[ifill]]->Fill(ecl_top_top_timing_best_slot_diff);