14#include <dqm/analysis/modules/DQMHistAnalysisTRG.h>
37 B2DEBUG(1,
"DQMHistAnalysisTRGModule: Constructor done.");
49 B2DEBUG(1,
"DQMHistAnalysisTRGModule: initialized.");
52 m_canvas =
new TCanvas(
"TRG/c_Test");
54 addDeltaPar(
"TRGGDL",
"hGDL_gdlL1TocomL1_all", HistDelta::c_Entries, 1000, 1);
58 addDeltaPar(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_ECLTRG", HistDelta::c_Entries, 1000, 1);
62 addDeltaPar(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_CDCTRG", HistDelta::c_Entries, 1000, 1);
66 addDeltaPar(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_TOPTRG", HistDelta::c_Entries, 1000, 1);
70 addDeltaPar(
"TRGGRL",
"h_ECLL1", HistDelta::c_Entries, 1000, 1);
75 addDeltaPar(
"TRGGRL",
"h_CDCL1", HistDelta::c_Entries, 1000, 1);
80 addDeltaPar(
"TRGGRL",
"h_CDCNNL1", HistDelta::c_Entries, 1000, 1);
84 addDeltaPar(
"TRGGRL",
"h_TSFL1", HistDelta::c_Entries, 1000, 1);
88 addDeltaPar(
"TRGGRL",
"h_KLML1", HistDelta::c_Entries, 1000, 1);
92 addDeltaPar(
"TRGGRL",
"h_TOPL1", HistDelta::c_Entries, 1000, 1);
96 addDeltaPar(
"TRGGRL",
"h_wirecnt_sum", HistDelta::c_Entries, 1000, 1);
100 addDeltaPar(
"TRGGRL",
"h_wirecnt_sum_clean", HistDelta::c_Entries, 1000, 1);
103 "CDCTRG_tailTSFHits_clean");
106 addDeltaPar(
"TRGGRL",
"h_wirecnt_sum_injHER", HistDelta::c_Entries, 1000, 1);
110 addDeltaPar(
"TRGGRL",
"h_wirecnt_sum_injLER", HistDelta::c_Entries, 1000, 1);
114 addDeltaPar(
"TRGGDL",
"hGDL_ns_cdcToecl_all", HistDelta::c_Entries, 1000, 1);
118 addDeltaPar(
"TRGGDL",
"hGDL_ns_topToecl_all", HistDelta::c_Entries, 1000, 1);
122 addDeltaPar(
"TRGGDL",
"hGDL_ns_topTocdc_all", HistDelta::c_Entries, 1000, 1);
126 addDeltaPar(
"TRGGDL",
"hGDL_eclTogdlL1_all", HistDelta::c_Entries, 1000, 1);
130 addDeltaPar(
"TRGGDL",
"hGDL_cdcTogdlL1_all", HistDelta::c_Entries, 1000, 1);
134 addDeltaPar(
"TRGGDL",
"hGDL_topTogdlL1_all", HistDelta::c_Entries, 1000, 1);
138 addDeltaPar(
"TRGGDL",
"hGDL_itd_klm_hit_rise_all", HistDelta::c_Entries, 1000, 1);
142 addDeltaPar(
"TRGGDL",
"hGDL_itd_eklm_hit_rise_all", HistDelta::c_Entries, 1000, 1);
146 addDeltaPar(
"softwaretrigger",
"skim", HistDelta::c_Entries, 1000000, 1);
150 addDeltaPar(
"softwaretrigger",
"skim", HistDelta::c_Entries, 1000000, 1);
154 addDeltaPar(
"softwaretrigger",
"skim", HistDelta::c_Entries, 1000000, 1);
158 addDeltaPar(
"TRG",
"h_TCId", HistDelta::c_Entries, 10000, 1);
162 addDeltaPar(
"TRG",
"h_n_TChit_event", HistDelta::c_Entries, 10000, 1);
166 addDeltaPar(
"TRG",
"h_n_TChit_clean", HistDelta::c_Entries, 10000, 1);
171 addDeltaPar(
"TRG",
"h_n_TChit_injHER", HistDelta::c_Entries, 10000, 1);
175 addDeltaPar(
"TRG",
"h_n_TChit_injLER", HistDelta::c_Entries, 10000, 1);
180 addDeltaPar(
"TRGCDCTNN",
"NeuroHWInTSID", HistDelta::c_Entries, 100000, 1);
187 B2DEBUG(1,
"DQMHistAnalysisTRGModule: beginRun called.");
192 B2DEBUG(1,
"DQMHistAnalysisTRGModule: endRun called.");
197 B2DEBUG(1,
"DQMHistAnalysisTRGModule: event called.");
207 if (m_IsPhysicsRun ==
true) {
210 auto hist_comL1_GDLL1 =
getDelta(
"TRGGDL",
"hGDL_gdlL1TocomL1_all", 0,
true);
211 if (hist_comL1_GDLL1) {
212 double comL1_GDLL1_mean = 0.0;
213 hist_comL1_GDLL1->Draw();
214 comL1_GDLL1_mean = hist_comL1_GDLL1->GetMean();
215 B2DEBUG(1,
"comL1_GDLL1_mean:" << comL1_GDLL1_mean);
216 setEpicsPV(
"comL1_GDLL1_mean", comL1_GDLL1_mean);
220 auto hist =
getDelta(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_ECLTRG", 0,
true);
222 double ECLTRG_timing_mean = 0.0;
224 ECLTRG_timing_mean = hist->GetMean();
225 B2DEBUG(1,
"ECLTRG_timing_mean:" << ECLTRG_timing_mean);
226 setEpicsPV(
"ECLTRG_timing_mean", ECLTRG_timing_mean);
231 auto histCDCTRG =
getDelta(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_CDCTRG", 0,
true);
233 double CDCTRG_timing_mean = 0.0;
235 CDCTRG_timing_mean = histCDCTRG->GetMean();
236 B2DEBUG(1,
"CDCTRG_timing_mean:" << CDCTRG_timing_mean);
237 setEpicsPV(
"CDCTRG_timing_mean", CDCTRG_timing_mean);
241 auto histTOPTRG =
getDelta(
"EventT0DQMdir",
"m_histEventT0_TOP_hadron_L1_TOPTRG", 0,
true);
243 double TOPTRG_timing_mean = 0.0;
245 TOPTRG_timing_mean = histTOPTRG->GetMean();
246 B2DEBUG(1,
"TOPTRG_timing_mean:" << TOPTRG_timing_mean);
247 setEpicsPV(
"TOPTRG_timing_mean", TOPTRG_timing_mean);
251 auto hist_ECLTRG_peak =
getDelta(
"TRGGRL",
"h_ECLL1", 0,
true);
252 if (hist_ECLTRG_peak) {
254 double ECLTRG_peak = 0.0;
255 hist_ECLTRG_peak->Draw();
258 ECLTRG_peak = hist_ECLTRG_peak->GetMean();
268 B2DEBUG(1,
"ECLTRG_peak:" << ECLTRG_peak);
274 auto hist_ECLTRG_deadch =
getDelta(
"TRG",
"h_TCId", 0,
true);
275 if (hist_ECLTRG_deadch) {
276 hist_ECLTRG_deadch->Draw();
277 int numberOfBins = hist_ECLTRG_deadch->GetNbinsX();
279 for (
int i = 80; i < 512; i++) {
280 average += hist_ECLTRG_deadch->GetBinContent(i);
282 average = 1.0 * average / (512 - 80);
283 int ECLTRG_deadch = 0;
287 for (
int i = 2; i <= numberOfBins - 1; i++) {
288 if (hist_ECLTRG_deadch->GetBinContent(i) <= 0.01 * average) { ECLTRG_deadch += 1; }
290 B2DEBUG(1,
"ECLTRG_deadch:" << ECLTRG_deadch);
295 auto hist_TOPTRG_deadch =
getDelta(
"TRGGRL",
"h_slot_TOP", 0,
true);
296 if (hist_TOPTRG_deadch) {
297 hist_TOPTRG_deadch->Draw();
298 int numberOfBins = hist_TOPTRG_deadch->GetNbinsX();
299 int TOPTRG_deadch = 0;
300 for (
int i = 2; i <= numberOfBins - 1; i++) {
301 if (hist_TOPTRG_deadch->GetBinContent(i) <= 0.01 * hist_TOPTRG_deadch->GetMaximum()) { TOPTRG_deadch += 1; }
303 B2DEBUG(1,
"TOPTRG_deadch:" << TOPTRG_deadch);
310 auto hist_CDCTRG_2D_peak =
getDelta(
"TRGGRL",
"h_CDCL1", 0,
true);
311 if (hist_CDCTRG_2D_peak) {
312 double CDCTRG_2D_peak = 0.0;
313 hist_CDCTRG_2D_peak->Draw();
314 int bin_CDCTRG_2D_peak = hist_CDCTRG_2D_peak->GetMaximumBin();
315 CDCTRG_2D_peak = hist_CDCTRG_2D_peak->GetXaxis()->GetBinCenter(bin_CDCTRG_2D_peak);
316 B2DEBUG(1,
"CDCTRG_2D_peak:" << CDCTRG_2D_peak);
322 auto hist_NN_peak =
getDelta(
"TRGGRL",
"h_CDCNNL1", 0,
true);
324 double NN_peak = 0.0;
325 hist_NN_peak->Draw();
326 int bin_NN_peak = hist_NN_peak->GetMaximumBin();
327 NN_peak = hist_NN_peak->GetXaxis()->GetBinCenter(bin_NN_peak);
328 B2DEBUG(1,
"NN_peak:" << NN_peak);
334 auto hist_CDCTRG_TSF_peak =
getDelta(
"TRGGRL",
"h_TSFL1", 0,
true);
335 if (hist_CDCTRG_TSF_peak) {
336 double CDCTRG_TSF_peak = 0.0;
337 hist_CDCTRG_TSF_peak->Draw();
338 int bin_CDCTRG_TSF_peak = hist_CDCTRG_TSF_peak->GetMaximumBin();
339 CDCTRG_TSF_peak = hist_CDCTRG_TSF_peak->GetXaxis()->GetBinCenter(bin_CDCTRG_TSF_peak);
340 B2DEBUG(1,
"CDCTRG_TSF_peak:" << CDCTRG_TSF_peak);
341 setEpicsPV(
"CDCTRG_TSF_peak", CDCTRG_TSF_peak);
346 auto hist_CDCTRG_deadch =
getDelta(
"TRGCDCTNN",
"NeuroHWInTSID", 0,
true);
347 if (hist_CDCTRG_deadch) {
348 hist_CDCTRG_deadch->Draw();
349 int numberOfBins = hist_CDCTRG_deadch->GetNbinsX();
351 int CDCTRG_deadch = 0;
352 for (
int i = 3; i <= numberOfBins; i++) {
353 if (hist_CDCTRG_deadch->GetBinContent(i) <= 0.01 * hist_CDCTRG_deadch->GetMaximum()) {CDCTRG_deadch += 1;}
356 B2DEBUG(1,
"CDCTRG_deadch:" << CDCTRG_deadch);
361 auto hist_KLMTRG_peak =
getDelta(
"TRGGRL",
"h_KLML1", 0,
true);
362 if (hist_KLMTRG_peak) {
363 double KLMTRG_peak = 0.0;
364 hist_KLMTRG_peak->Draw();
365 int bin_KLMTRG_peak = hist_KLMTRG_peak->GetMaximumBin();
366 KLMTRG_peak = hist_KLMTRG_peak->GetXaxis()->GetBinCenter(bin_KLMTRG_peak);
367 B2DEBUG(1,
"KLMTRG_peak:" << KLMTRG_peak);
373 auto hist_TOPTRG_peak =
getDelta(
"TRGGRL",
"h_TOPL1", 0,
true);
374 if (hist_TOPTRG_peak) {
375 double TOPTRG_peak = 0.0;
376 hist_TOPTRG_peak->Draw();
377 int bin_TOPTRG_peak = hist_TOPTRG_peak->GetMaximumBin();
378 TOPTRG_peak = hist_TOPTRG_peak->GetXaxis()->GetBinCenter(bin_TOPTRG_peak);
379 B2DEBUG(1,
"TOPTRG_peak:" << TOPTRG_peak);
385 auto hist_ecltiming_cdctiming =
getDelta(
"TRGGDL",
"hGDL_ns_cdcToecl_all", 0,
true);
386 if (hist_ecltiming_cdctiming) {
387 double ecltiming_cdctiming = 0.0;
388 hist_ecltiming_cdctiming->Draw();
389 int bin_ecltiming_cdctiming = hist_ecltiming_cdctiming->GetMaximumBin();
390 ecltiming_cdctiming = hist_ecltiming_cdctiming->GetXaxis()->GetBinCenter(bin_ecltiming_cdctiming);
391 B2DEBUG(1,
"ecltiming_cdctiming:" << ecltiming_cdctiming);
392 setEpicsPV(
"ecltiming_cdctiming", ecltiming_cdctiming);
396 auto hist_toptiming_ecltiming =
getDelta(
"TRGGDL",
"hGDL_ns_topToecl_all", 0,
true);
397 if (hist_toptiming_ecltiming) {
398 double toptiming_ecltiming = 0.0;
399 hist_toptiming_ecltiming->Draw();
400 int bin_toptiming_ecltiming = hist_toptiming_ecltiming->GetMaximumBin();
401 toptiming_ecltiming = hist_toptiming_ecltiming->GetXaxis()->GetBinCenter(bin_toptiming_ecltiming);
402 B2DEBUG(1,
"toptiming_ecltiming:" << toptiming_ecltiming);
403 setEpicsPV(
"toptiming_ecltiming", toptiming_ecltiming);
407 auto hist_toptiming_cdctiming =
getDelta(
"TRGGDL",
"hGDL_ns_topTocdc_all", 0,
true);
408 if (hist_toptiming_cdctiming) {
409 double toptiming_cdctiming = 0.0;
410 hist_toptiming_cdctiming->Draw();
411 int bin_toptiming_cdctiming = hist_toptiming_cdctiming->GetMaximumBin();
412 toptiming_cdctiming = hist_toptiming_cdctiming->GetXaxis()->GetBinCenter(bin_toptiming_cdctiming);
413 B2DEBUG(1,
"toptiming_cdctiming:" << toptiming_cdctiming);
414 setEpicsPV(
"toptiming_cdctiming", toptiming_cdctiming);
418 auto hist_gdll1_ecltiming =
getDelta(
"TRGGDL",
"hGDL_eclTogdlL1_all", 0,
true);
419 if (hist_gdll1_ecltiming) {
420 double gdll1_ecltiming = 0.0;
421 hist_gdll1_ecltiming->Draw();
422 int bin_gdll1_ecltiming = hist_gdll1_ecltiming->GetMaximumBin();
423 gdll1_ecltiming = hist_gdll1_ecltiming->GetXaxis()->GetBinCenter(bin_gdll1_ecltiming);
424 B2DEBUG(1,
"gdll1_ecltiming:" << gdll1_ecltiming);
425 setEpicsPV(
"gdll1_ecltiming", gdll1_ecltiming);
429 auto hist_gdll1_cdctiming =
getDelta(
"TRGGDL",
"hGDL_cdcTogdlL1_all", 0,
true);
430 if (hist_gdll1_cdctiming) {
431 double gdll1_cdctiming = 0.0;
432 hist_gdll1_cdctiming->Draw();
433 int bin_gdll1_cdctiming = hist_gdll1_cdctiming->GetMaximumBin();
434 gdll1_cdctiming = hist_gdll1_cdctiming->GetXaxis()->GetBinCenter(bin_gdll1_cdctiming);
435 B2DEBUG(1,
"gdll1_cdctiming:" << gdll1_cdctiming);
436 setEpicsPV(
"gdll1_cdctiming", gdll1_cdctiming);
440 auto hist_gdll1_toptiming =
getDelta(
"TRGGDL",
"hGDL_topTogdlL1_all", 0,
true);
441 if (hist_gdll1_toptiming) {
442 double gdll1_toptiming = 0.0;
443 hist_gdll1_toptiming->Draw();
444 int bin_gdll1_toptiming = hist_gdll1_toptiming->GetMaximumBin();
445 gdll1_toptiming = hist_gdll1_toptiming->GetXaxis()->GetBinCenter(bin_gdll1_toptiming);
446 B2DEBUG(1,
"gdll1_toptiming:" << gdll1_toptiming);
447 setEpicsPV(
"gdll1_toptiming", gdll1_toptiming);
451 auto hist_barrel_klm_latency =
getDelta(
"TRGGDL",
"hGDL_itd_klm_hit_rise_all", 0,
true);
452 if (hist_barrel_klm_latency) {
453 double barrel_klm_latency = 0.0;
454 hist_barrel_klm_latency->Draw();
455 int bin_barrel_klm_latency = hist_barrel_klm_latency->GetMaximumBin();
456 barrel_klm_latency = hist_barrel_klm_latency->GetXaxis()->GetBinCenter(bin_barrel_klm_latency);
457 B2DEBUG(1,
"barrel_klm_latency:" << barrel_klm_latency);
458 setEpicsPV(
"barrel_klm_latency", barrel_klm_latency);
462 auto hist_endcap_klm_latency =
getDelta(
"TRGGDL",
"hGDL_itd_eklm_hit_rise_all", 0,
true);
463 if (hist_endcap_klm_latency) {
464 double endcap_klm_latency = 0.0;
465 hist_endcap_klm_latency->Draw();
466 int bin_endcap_klm_latency = hist_endcap_klm_latency->GetMaximumBin();
467 endcap_klm_latency = hist_endcap_klm_latency->GetXaxis()->GetBinCenter(bin_endcap_klm_latency);
468 B2DEBUG(1,
"endcap_klm_latency:" << endcap_klm_latency);
469 setEpicsPV(
"endcap_klm_latency", endcap_klm_latency);
472 bool m_IsPhysicsRun_ratio = (
getRunType() ==
"physics");
473 if (m_IsPhysicsRun_ratio ==
true) {
477 auto hist_hadronb2_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
478 if (hist_hadronb2_over_bhabha_all) {
479 hist_hadronb2_over_bhabha_all->Draw();
480 if (hist_hadronb2_over_bhabha_all->GetBinContent(hist_hadronb2_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
481 double hadronb2_over_bhabha_all = 0.0;
482 hadronb2_over_bhabha_all = hist_hadronb2_over_bhabha_all->GetBinContent(
483 hist_hadronb2_over_bhabha_all->GetXaxis()->FindBin(
"accept_hadronb2")) / hist_hadronb2_over_bhabha_all->GetBinContent(
484 hist_hadronb2_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
486 B2DEBUG(1,
"hadronb2_over_bhabha_all:" << hadronb2_over_bhabha_all);
487 setEpicsPV(
"hadronb2_over_bhabha_all", hadronb2_over_bhabha_all);
492 auto hist_mumu2trk_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
493 if (hist_mumu2trk_over_bhabha_all) {
494 hist_mumu2trk_over_bhabha_all->Draw();
495 if (hist_mumu2trk_over_bhabha_all->GetBinContent(hist_mumu2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
496 double mumu2trk_over_bhabha_all = 0.0;
497 mumu2trk_over_bhabha_all = hist_mumu2trk_over_bhabha_all->GetBinContent(
498 hist_mumu2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_mumu_2trk")) / hist_mumu2trk_over_bhabha_all->GetBinContent(
499 hist_mumu2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
500 B2DEBUG(1,
"mumu2trk_over_bhabha_all:" << mumu2trk_over_bhabha_all);
501 setEpicsPV(
"mumu2trk_over_bhabha_all", mumu2trk_over_bhabha_all);
507 auto hist_hadronb2_over_mumu2trk =
getDelta(
"softwaretrigger",
"skim", 0,
true);
508 if (hist_hadronb2_over_mumu2trk) {
509 hist_hadronb2_over_mumu2trk->Draw();
510 if (hist_hadronb2_over_mumu2trk->GetBinContent(
511 hist_hadronb2_over_mumu2trk->GetXaxis()->FindBin(
"accept_mumu_2trk")) != 0) {
512 double hadronb2_over_mumu2trk = 0.0;
513 hadronb2_over_mumu2trk = hist_hadronb2_over_mumu2trk->GetBinContent(
514 hist_hadronb2_over_mumu2trk->GetXaxis()->FindBin(
"accept_hadronb2")) / hist_hadronb2_over_mumu2trk->GetBinContent(
515 hist_hadronb2_over_mumu2trk->GetXaxis()->FindBin(
"accept_mumu_2trk"));
516 B2DEBUG(1,
"hadronb2_over_mumu2trk:" << hadronb2_over_mumu2trk);
517 setEpicsPV(
"hadronb2_over_mumu2trk", hadronb2_over_mumu2trk);
525 auto hist_mumu_tight_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
526 if (hist_mumu_tight_over_bhabha_all) {
527 hist_mumu_tight_over_bhabha_all->Draw();
528 if (hist_mumu_tight_over_bhabha_all->GetBinContent(
529 hist_mumu_tight_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
530 double mumu_tight_over_bhabha_all = 0.0;
531 mumu_tight_over_bhabha_all = hist_mumu_tight_over_bhabha_all->GetBinContent(
532 hist_mumu_tight_over_bhabha_all->GetXaxis()->FindBin(
"accept_mumutight")) / hist_mumu_tight_over_bhabha_all->GetBinContent(
533 hist_mumu_tight_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
534 B2DEBUG(1,
"mumu_tight_over_bhabha_all:" << mumu_tight_over_bhabha_all);
535 setEpicsPV(
"mumu_tight_over_bhabha_all", mumu_tight_over_bhabha_all);
541 auto hist_gammagamma_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
542 if (hist_gammagamma_over_bhabha_all) {
543 hist_gammagamma_over_bhabha_all->Draw();
544 if (hist_gammagamma_over_bhabha_all->GetBinContent(
545 hist_gammagamma_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
546 double gammagamma_over_bhabha_all = 0.0;
547 gammagamma_over_bhabha_all = hist_gammagamma_over_bhabha_all->GetBinContent(
548 hist_gammagamma_over_bhabha_all->GetXaxis()->FindBin(
"accept_gamma_gamma")) / hist_gammagamma_over_bhabha_all->GetBinContent(
549 hist_gammagamma_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
550 B2DEBUG(1,
"gammagamma_over_bhabha_all:" << gammagamma_over_bhabha_all);
551 setEpicsPV(
"gammagamma_over_bhabha_all", gammagamma_over_bhabha_all);
557 auto hist_tautau2trk_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
558 if (hist_tautau2trk_over_bhabha_all) {
559 hist_tautau2trk_over_bhabha_all->Draw();
560 if (hist_tautau2trk_over_bhabha_all->GetBinContent(
561 hist_tautau2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
562 double tautau2trk_over_bhabha_all = 0.0;
563 tautau2trk_over_bhabha_all = hist_tautau2trk_over_bhabha_all->GetBinContent(
564 hist_tautau2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_tau_2trk")) / hist_tautau2trk_over_bhabha_all->GetBinContent(
565 hist_tautau2trk_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
566 B2DEBUG(1,
"tautau2trk_over_bhabha_all:" << tautau2trk_over_bhabha_all);
567 setEpicsPV(
"tautau2trk_over_bhabha_all", tautau2trk_over_bhabha_all);
573 auto hist_hadron_over_bhabha_all =
getDelta(
"softwaretrigger",
"skim", 0,
true);
574 if (hist_hadron_over_bhabha_all) {
575 hist_hadron_over_bhabha_all->Draw();
576 if (hist_hadron_over_bhabha_all->GetBinContent(
577 hist_hadron_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all")) != 0) {
578 double hadron_over_bhabha_all = 0.0;
579 hadron_over_bhabha_all = hist_hadron_over_bhabha_all->GetBinContent(
580 hist_hadron_over_bhabha_all->GetXaxis()->FindBin(
"accept_hadron")) / hist_hadron_over_bhabha_all->GetBinContent(
581 hist_hadron_over_bhabha_all->GetXaxis()->FindBin(
"accept_bhabha_all"));
582 B2DEBUG(1,
"hadron_over_bhabha_all:" << hadron_over_bhabha_all);
583 setEpicsPV(
"hadron_over_bhabha_all", hadron_over_bhabha_all);
590 auto hist_nTSFHits_total =
getDelta(
"TRGGRL",
"h_wirecnt_sum", 0,
true);
591 if (hist_nTSFHits_total) {
592 double mean = hist_nTSFHits_total->GetMean();
593 B2DEBUG(1,
"CDCTRG_meanTSFHits_total:" << mean);
597 auto hist_nTSFHits_clean =
getDelta(
"TRGGRL",
"h_wirecnt_sum_clean", 0,
true);
598 if (hist_nTSFHits_clean) {
599 double mean = hist_nTSFHits_clean->GetMean();
600 B2DEBUG(1,
"CDCTRG_meanTSFHits_clean:" << mean);
603 double tail =
getThreshold(hist_nTSFHits_clean, 0.5, 0.02);
604 B2DEBUG(1,
"CDCTRG_tailTSFHits_clean:" << tail);
608 auto hist_nTSFHits_injHER =
getDelta(
"TRGGRL",
"h_wirecnt_sum_injHER", 0,
true);
609 if (hist_nTSFHits_injHER) {
610 double mean = hist_nTSFHits_injHER->GetMean();
611 B2DEBUG(1,
"CDCTRG_meanTSFHits_injHER:" << mean);
612 setEpicsPV(
"CDCTRG_meanTSFHits_injHER", mean);
615 auto hist_nTSFHits_injLER =
getDelta(
"TRGGRL",
"h_wirecnt_sum_injLER", 0,
true);
616 if (hist_nTSFHits_injLER) {
617 double mean = hist_nTSFHits_injLER->GetMean();
618 B2DEBUG(1,
"CDCTRG_meanTSFHits_injLER:" << mean);
619 setEpicsPV(
"CDCTRG_meanTSFHits_injLER", mean);
622 auto hist_nTC_total =
getDelta(
"TRG",
"h_n_TChit_event", 0,
true);
623 if (hist_nTC_total) {
624 double mean = hist_nTC_total->GetMean();
625 B2DEBUG(1,
"ECLTRG_meanTC_total:" << mean);
629 auto hist_nTC_clean =
getDelta(
"TRG",
"h_n_TChit_clean", 0,
true);
630 if (hist_nTC_clean) {
631 double mean = hist_nTC_clean->GetMean();
632 B2DEBUG(1,
"ECLTRG_meanTC_clean:" << mean);
636 B2DEBUG(1,
"ECLTRG_tailTC_clean:" << tail);
640 auto hist_nTC_injHER =
getDelta(
"TRG",
"h_n_TChit_injHER", 0,
true);
641 if (hist_nTC_injHER) {
642 double mean = hist_nTC_injHER->GetMean();
643 B2DEBUG(1,
"ECLTRG_meanTC_injHER:" << mean);
647 auto hist_nTC_injLER =
getDelta(
"TRG",
"h_n_TChit_injLER", 0,
true);
648 if (hist_nTC_injLER) {
649 double mean = hist_nTC_injLER->GetMean();
650 B2DEBUG(1,
"ECLTRG_meanTC_injLER:" << mean);
666 B2DEBUG(1,
"DQMHistAnalysisTRGModule: terminate called");
672 if (hist ==
nullptr)
return 0.;
675 int nbins = hist->GetNbinsX();
676 int width = nbins * widthFraction;
679 if (width <= 1) width = 2;
681 int meanbin = hist->GetXaxis()->FindBin(hist->GetMean());
683 for (
int i = meanbin - 1; 1 <= i && i <= meanbin - width; i--) {
685 movsum += hist->GetBinContent(i);
688 for (
int i = meanbin; i < nbins; i++) {
692 movsum += hist->GetBinContent(binIdx);
695 movsum += hist->GetBinContent(binIdx);
696 movsum -= hist->GetBinContent(binIdx - width);
699 if (movsum / num < lower_bound) {
700 return hist->GetBinCenter(binIdx);
703 return hist->GetXaxis()->GetBinCenter(nbins);
The base class for the histogram analysis module.
void addDeltaPar(const std::string &dirname, const std::string &histname, HistDelta::EDeltaType t, int p, unsigned int a=1)
Add Delta histogram parameters.
static const std::string & getRunType(void)
Get the Run Type.
TH1 * getDelta(const std::string &fullname, int n=0, bool onlyIfUpdated=true)
Get Delta histogram.
void setEpicsPV(std::string keyname, double value)
Write value to a EPICS PV.
int registerEpicsPV(std::string pvname, std::string keyname="")
EPICS related Functions.
void UpdateCanvas(std::string name, bool updated=true)
Mark canvas as updated (or not)
void terminate(void) override final
This method is called at the end of the event processing.
static double getThreshold(const TH1 *hist, const double lower_bound, const double widthFraction=0.01)
A utility function to find the location of the tail of histograms.
void initialize(void) override final
Initializer.
void endRun(void) override final
Called when run ends.
DQMHistAnalysisTRGModule()
Constructor.
std::string m_pvPrefix
prefix for EPICS PVs
TCanvas * m_canvas
Final Canvas.
void doHistAnalysis()
Do the actual processing.
~DQMHistAnalysisTRGModule()
Destructor.
void beginRun(void) override final
Called when entering a new run.
void event(void) override final
This method is called for each event.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.