6#include "BmnRawDataDecoder.h"
8using namespace std::chrono;
10using namespace prometheus;
39 , gauge_family{nullptr}
40 , counter_family{nullptr}
41 , registry_init_done{false}
42 , metrics_available{false}
47 fName = title +
"_cl";
69 delete histSiliconStat;
70 delete histTof400Stat;
71 delete histTof700Stat;
76 delete histFDSiliconStat;
77 delete histFDTof400Stat;
78 delete histFDTof700Stat;
80 delete histFDFHCalStat;
83 delete histBDSiliconStat;
84 delete histBDTof400Stat;
85 delete histBDTof700Stat;
87 delete histBDFHCalStat;
89 delete histGemSilicon;
96 for (
auto padDet : canStatDetPads)
99 for (
auto padFD : canStatFDPads)
102 for (
auto padBD : canStatBDPads)
105 for (
auto padCorr : canStatCorrPads)
110void BmnHistStat::ResetRegistry()
114 exposer = make_unique<Exposer>(
"127.0.0.1:9092");
115 registry = make_shared<Registry>();
117 registry->Remove(*gauge_family);
120 registry_init_done = true;
121 metrics_available = false;
127 auto& gf = BuildGauge().Name(
"Spill_events").Help(
"Number of digits in each detectors").
Register(*registry);
130 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"sum_nbc1"}});
131 gauges_by_name[
"sum_nbc1"] = &worker_gauge;
134 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"gem2nbc1"}});
135 gauges_by_name[
"gem2nbc1"] = &worker_gauge;
138 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"fsd2gem"}});
139 gauges_by_name[
"fsd2gem"] = &worker_gauge;
142 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"tof4002gem"}});
143 gauges_by_name[
"tof4002gem"] = &worker_gauge;
146 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"tof7002gem"}});
147 gauges_by_name[
"tof7002gem"] = &worker_gauge;
150 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"csc2gem"}});
151 gauges_by_name[
"csc2gem"] = &worker_gauge;
154 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"fhcal2gem"}});
155 gauges_by_name[
"fhcal2gem"] = &worker_gauge;
158 Gauge& worker_gauge = gauge_family->Add({{
"Stage",
"Digi"}, {
"Level",
"Spill"}, {
"Var",
"time_point"}});
159 gauges_by_name[
"time_point"] = &worker_gauge;
161 exposer->RegisterCollectable(registry);
162 metrics_available =
true;
166void BmnHistStat::DestroyMetrics()
173 gauges_by_name[
"sum_nbc1"]->Set(sum_nbc1);
174 gauges_by_name[
"gem2nbc1"]->Set(gem2nbc1);
175 gauges_by_name[
"fsd2gem"]->Set(fsd2gem);
176 gauges_by_name[
"tof4002gem"]->Set(tof4002gem);
177 gauges_by_name[
"tof7002gem"]->Set(tof7002gem);
178 gauges_by_name[
"csc2gem"]->Set(csc2gem);
179 gauges_by_name[
"fhcal2gem"]->Set(fhcal2gem);
180 gauges_by_name[
"time_point"]->Set(duration_cast<milliseconds>(last_ev_time_show.time_since_epoch()).count());
189 TString path =
"/" + fTitle +
"/";
190 fServer->Register(path, canStatDet);
191 fServer->Register(path, canStatFD);
192 fServer->Register(path, canStatBD);
193 fServer->Register(path, canStatCorr);
195 fServer->SetItemField(path,
"_monitoring",
"2000");
196 fServer->SetItemField(path,
"_layout",
"grid3x3");
197 TString cmd =
"/" + fName +
"/->Reset()";
198 TString cmdTitle = path +
"Reset";
199 fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(),
"button;");
200 fServer->Restrict(cmdTitle.Data(),
"visible=shift");
201 fServer->Restrict(cmdTitle.Data(),
"allow=shift");
202 fServer->Restrict(cmdTitle.Data(),
"deny=guest");
203 cmd =
"/" + fName +
"/->SetRefRun(%arg1%)";
204 cmdTitle = path +
"SetRefRun";
205 fServer->RegisterCommand(cmdTitle.Data(), cmd.Data(),
"button;");
214 fDir = outFile->mkdir(fTitle +
"_hists");
215 histGemStat->SetDirectory(
fDir);
216 histSiliconStat->SetDirectory(
fDir);
217 histTof400Stat->SetDirectory(
fDir);
218 histTof700Stat->SetDirectory(
fDir);
219 histCscStat->SetDirectory(
fDir);
220 histFHCalStat->SetDirectory(
fDir);
222 histFDGemStat->SetDirectory(
fDir);
223 histFDSiliconStat->SetDirectory(
fDir);
224 histFDTof400Stat->SetDirectory(
fDir);
225 histFDTof700Stat->SetDirectory(
fDir);
226 histFDCscStat->SetDirectory(
fDir);
227 histFDFHCalStat->SetDirectory(
fDir);
229 histBDGemStat->SetDirectory(
fDir);
230 histBDSiliconStat->SetDirectory(
fDir);
231 histBDTof400Stat->SetDirectory(
fDir);
232 histBDTof700Stat->SetDirectory(
fDir);
233 histBDCscStat->SetDirectory(
fDir);
234 histBDFHCalStat->SetDirectory(
fDir);
236 histGemSilicon->SetDirectory(
fDir);
237 histGemTof400->SetDirectory(
fDir);
238 histGemTof700->SetDirectory(
fDir);
239 histGemCsc->SetDirectory(
fDir);
240 histGemFHCal->SetDirectory(
fDir);
241 histCscFHCal->SetDirectory(
fDir);
244 if (metrics_available)
261 const uint32_t timewin_begin = 312;
262 const uint32_t timewin_end = 362;
264 ev_type = header->GetEventType();
267 if (header->GetSpillStart()) {
268 printf(
"Spill start n ev %lu\n", nevents);
269 if ((sum_gem > 0) && (nbc1 > Min_NBC1)) {
270 if (!registry_init_done)
272 if (!metrics_available)
275 fsd2gem = sum_fsd / sum_gem;
276 tof4002gem = sum_tof400 / sum_gem;
277 tof7002gem = sum_tof700 / sum_gem;
278 csc2gem = sum_csc / sum_gem;
279 fhcal2gem = sum_fhcal / sum_gem;
280 gem2nbc1 = sum_gem / sum_nbc1;
281 last_ev_time_show = last_ev_time;
282 printf(
"sum_nbc1 %4.3f gem2nbc1 %4.3f fsd2gem %4.3f \n", sum_nbc1, gem2nbc1, fsd2gem);
285 }
else if (metrics_available)
287 ResetTimelineCounters();
293 TClonesArray* gemDigits = fDigiArrays->
gem;
294 TClonesArray* siliconDigits = fDigiArrays->
silicon;
295 TClonesArray* tof400Digits = fDigiArrays->
tof400;
296 TClonesArray* tof700Digits = fDigiArrays->
tof701;
297 if (tof700Digits ==
nullptr)
298 tof700Digits = fDigiArrays->
tof700;
299 TClonesArray* cscDigits = fDigiArrays->
csc;
300 TClonesArray* fhcalDigits = fDigiArrays->
fhcal;
302 vector<TClonesArray*>* trigDigits = fDigiArrays->
trigAr;
305 fdPosition = getPositionInArray(trigDigits,
"TQDC_FD");
306 bdPosition = getPositionInArray(trigDigits,
"BD");
307 bc1Position = getPositionInArray(trigDigits,
"TQDC_BC1");
312 histGemStat->Fill(gemDigits->GetEntriesFast());
314 histSiliconStat->Fill(siliconDigits->GetEntriesFast());
316 histTof400Stat->Fill(tof400Digits->GetEntriesFast());
318 histTof700Stat->Fill(tof700Digits->GetEntriesFast());
320 histCscStat->Fill(cscDigits->GetEntriesFast());
322 histFHCalStat->Fill(fhcalDigits->GetEntriesFast());
324 TClonesArray* TQDC_FD = trigDigits->at(fdPosition);
325 TClonesArray* TQDC_BD = trigDigits->at(bdPosition);
326 if (TQDC_FD->GetEntriesFast() != 0) {
328 Double_t peakFD = fdDigit->
GetPeak(timewin_begin, timewin_end);
330 histFDGemStat->Fill(peakFD, gemDigits->GetEntriesFast());
333 histFDSiliconStat->Fill(peakFD, siliconDigits->GetEntriesFast());
336 histFDTof400Stat->Fill(peakFD, tof400Digits->GetEntriesFast());
339 histFDTof700Stat->Fill(peakFD, tof700Digits->GetEntriesFast());
342 histFDCscStat->Fill(peakFD, cscDigits->GetEntriesFast());
345 histFDFHCalStat->Fill(peakFD, fhcalDigits->GetEntriesFast());
349 Double_t numberMod = TQDC_BD->GetEntriesFast();
351 histBDGemStat->Fill(numberMod, gemDigits->GetEntriesFast());
354 histBDSiliconStat->Fill(numberMod, siliconDigits->GetEntriesFast());
357 histBDTof400Stat->Fill(numberMod, tof400Digits->GetEntriesFast());
360 histBDTof700Stat->Fill(numberMod, tof700Digits->GetEntriesFast());
363 histBDCscStat->Fill(numberMod, cscDigits->GetEntriesFast());
366 histBDFHCalStat->Fill(numberMod, fhcalDigits->GetEntriesFast());
371 if (gemDigits && siliconDigits)
372 histGemSilicon->Fill(gemDigits->GetEntriesFast(), siliconDigits->GetEntriesFast());
373 if (gemDigits && tof400Digits)
374 histGemTof400->Fill(gemDigits->GetEntriesFast(), tof400Digits->GetEntriesFast());
375 if (gemDigits && tof700Digits)
376 histGemTof700->Fill(gemDigits->GetEntriesFast(), tof700Digits->GetEntriesFast());
377 if (gemDigits && cscDigits)
378 histGemCsc->Fill(gemDigits->GetEntriesFast(), cscDigits->GetEntriesFast());
379 if (gemDigits && fhcalDigits)
380 histGemFHCal->Fill(gemDigits->GetEntriesFast(), fhcalDigits->GetEntriesFast());
381 if (cscDigits && fhcalDigits)
382 histCscFHCal->Fill(cscDigits->GetEntriesFast(), fhcalDigits->GetEntriesFast());
387 if ((
fDir) && (bc1Position >= 0)) {
388 if (header->GetInputSignalsAR() | bit_filter) {
390 sum_fsd += siliconDigits->GetEntriesFast();
392 sum_tof400 += tof400Digits->GetEntriesFast();
394 sum_tof700 += tof700Digits->GetEntriesFast();
396 sum_csc += cscDigits->GetEntriesFast();
398 sum_fhcal += fhcalDigits->GetEntriesFast();
400 sum_gem += gemDigits->GetEntriesFast();
401 TClonesArray* TQDC_BC1 = trigDigits->at(bc1Position);
402 for (Int_t digIndex = 0; digIndex < TQDC_BC1->GetEntriesFast(); digIndex++) {
404 nbc1 += td->
GetIntegral(timewin_begin, timewin_end);
406 last_ev_time = header->GetEventTimeTP();
415 ev_type_prev = ev_type;
418void BmnHistStat::ResetTimelineCounters()
487 TString FileName = Form(
"bmn_run%04d_hist.root",
id);
488 printf(
"SetRefRun: %s\n", FileName.Data());
503 for (
auto pad : canStatDetPads) {
513 printf(
"ResetStat\n");
514 histGemStat->Reset();
515 histSiliconStat->Reset();
516 histTof400Stat->Reset();
517 histTof700Stat->Reset();
518 histCscStat->Reset();
519 histFHCalStat->Reset();
521 histFDGemStat->Reset();
522 histFDSiliconStat->Reset();
523 histFDTof400Stat->Reset();
524 histFDTof700Stat->Reset();
525 histFDCscStat->Reset();
526 histFDFHCalStat->Reset();
528 histBDGemStat->Reset();
529 histBDSiliconStat->Reset();
530 histBDTof400Stat->Reset();
531 histBDTof700Stat->Reset();
532 histBDCscStat->Reset();
533 histBDFHCalStat->Reset();
535 histGemSilicon->Reset();
536 histGemTof400->Reset();
537 histGemTof700->Reset();
539 histGemFHCal->Reset();
540 histCscFHCal->Reset();
543void BmnHistStat::initHistDet()
546 name = fTitle +
"_GEM";
547 histGemStat =
new TH1I(name, name, 250, 1, Max_GEM_Cnt);
548 histGemStat->GetXaxis()->SetTitle(
"Count in event");
549 histGemStat->GetYaxis()->SetTitle(
"Activations count");
550 name = fTitle +
"_SILICON";
551 histSiliconStat =
new TH1I(name, name, 250, 1, Max_FSD_Cnt);
552 histSiliconStat->GetXaxis()->SetTitle(
"Count in event");
553 histSiliconStat->GetYaxis()->SetTitle(
"Activations count");
554 name = fTitle +
"_ToF400";
555 histTof400Stat =
new TH1I(name, name, 100, 1, Max_ToF_Cnt);
556 histTof400Stat->GetXaxis()->SetTitle(
"Count in event");
557 histTof400Stat->GetYaxis()->SetTitle(
"Activations count");
558 name = fTitle +
"_ToF700";
559 histTof700Stat =
new TH1I(name, name, 100, 1, Max_ToF_Cnt);
560 histTof700Stat->GetXaxis()->SetTitle(
"Count in event");
561 histTof700Stat->GetYaxis()->SetTitle(
"Activations count");
562 name = fTitle +
"_CSC";
563 histCscStat =
new TH1I(name, name, 200, 1, Max_CSC_Cnt);
564 histCscStat->GetXaxis()->SetTitle(
"Count in event");
565 histCscStat->GetYaxis()->SetTitle(
"Activations count");
566 name = fTitle +
"_FHCAL";
567 histFHCalStat =
new TH1I(name, name, 250, 1, Max_FHC_Cnt);
568 histFHCalStat->GetXaxis()->SetTitle(
"Count in event");
569 histFHCalStat->GetYaxis()->SetTitle(
"Activations count");
571 name = fTitle +
"Canvas";
573 canStatDet->Divide(3, 2);
574 canStatDetPads.resize(3 * 2);
575 NamesStatDet.resize(3 * 2);
576 for (Int_t iPad = 0; iPad < 6; iPad++) {
578 canStatDetPads[iPad] = p;
579 canStatDet->GetPad(iPad + 1)->SetGrid();
581 canStatDetPads[0]->current = histGemStat;
582 canStatDetPads[1]->current = histSiliconStat;
583 canStatDetPads[2]->current = histTof400Stat;
584 canStatDetPads[3]->current = histTof700Stat;
585 canStatDetPads[4]->current = histCscStat;
586 canStatDetPads[5]->current = histFHCalStat;
587 for (
size_t iPad = 0; iPad < canStatDetPads.size(); iPad++)
588 if (canStatDetPads[iPad]->current) {
589 NamesStatDet.push_back(canStatDetPads[iPad]->current->GetName());
594void BmnHistStat::initHistFD()
597 name = fTitle +
"_FD_GEM";
598 histFDGemStat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 250, 1, Max_GEM_Cnt);
599 histFDGemStat->GetXaxis()->SetTitle(
"FD.GetPeak()");
600 histFDGemStat->GetYaxis()->SetTitle(
"Number of digits in event");
602 name = fTitle +
"_FD_Silicon";
603 histFDSiliconStat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 250, 1, Max_FSD_Cnt);
604 histFDSiliconStat->GetXaxis()->SetTitle(
"FD.GetPeak()");
605 histFDSiliconStat->GetYaxis()->SetTitle(
"Number of digits in event");
607 name = fTitle +
"_FD_Tof400";
608 histFDTof400Stat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 100, 1, Max_ToF_Cnt);
609 histFDTof400Stat->GetXaxis()->SetTitle(
"FD.GetPeak()");
610 histFDTof400Stat->GetYaxis()->SetTitle(
"Number of digits in event");
612 name = fTitle +
"_FD_Tof700";
613 histFDTof700Stat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 100, 1, Max_ToF_Cnt);
614 histFDTof700Stat->GetXaxis()->SetTitle(
"FD.GetPeak()");
615 histFDTof700Stat->GetYaxis()->SetTitle(
"Number of digits in event");
617 name = fTitle +
"_FD_CSC";
618 histFDCscStat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 150, 1, Max_CSC_Cnt);
619 histFDCscStat->GetXaxis()->SetTitle(
"FD.GetPeak()");
620 histFDCscStat->GetYaxis()->SetTitle(
"Number of digits in event");
622 name = fTitle +
"_FD_FHCAL";
623 histFDFHCalStat =
new TH2F(name, name, 300, 0, Max_FD_Sig, 250, 1, Max_FHC_Cnt);
624 histFDFHCalStat->GetXaxis()->SetTitle(
"FD.GetPeak()");
625 histFDFHCalStat->GetYaxis()->SetTitle(
"Number of digits in event");
627 name = fTitle +
"FD_DetCanvas";
629 canStatFD->Divide(3, 2);
630 canStatFDPads.resize(3 * 2);
631 NamesStatFD.resize(3 * 2);
632 for (Int_t iPad = 0; iPad < 6; iPad++) {
635 canStatFDPads[iPad] = p;
636 canStatFD->GetPad(iPad + 1)->SetGrid();
638 canStatFDPads[0]->current = histFDGemStat;
639 canStatFDPads[1]->current = histFDSiliconStat;
640 canStatFDPads[2]->current = histFDTof400Stat;
641 canStatFDPads[3]->current = histFDTof700Stat;
642 canStatFDPads[4]->current = histFDCscStat;
643 canStatFDPads[5]->current = histFDFHCalStat;
644 for (
size_t iPad = 0; iPad < canStatFDPads.size(); iPad++)
645 if (canStatFDPads[iPad]->current) {
646 NamesStatFD.push_back(canStatFDPads[iPad]->current->GetName());
651void BmnHistStat::initHistBD()
654 name = fTitle +
"_BD_GEM";
655 histBDGemStat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 250, 1, Max_GEM_Cnt);
656 histBDGemStat->GetXaxis()->SetTitle(
"Number of digits in BD");
657 histBDGemStat->GetYaxis()->SetTitle(
"Number of digits in event GEM");
659 name = fTitle +
"_BD_Silicon";
660 histBDSiliconStat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 250, 1, Max_FSD_Cnt);
661 histBDSiliconStat->GetXaxis()->SetTitle(
"Number of digits in BD");
662 histBDSiliconStat->GetYaxis()->SetTitle(
"Number of digits in event Silicon");
664 name = fTitle +
"_BD_Tof400";
665 histBDTof400Stat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 100, 1, Max_ToF_Cnt);
666 histBDTof400Stat->GetXaxis()->SetTitle(
"Number of digits in BD");
667 histBDTof400Stat->GetYaxis()->SetTitle(
"Number of digits in event Tof400");
669 name = fTitle +
"_BD_Tof700";
670 histBDTof700Stat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 100, 1, Max_ToF_Cnt);
671 histBDTof700Stat->GetXaxis()->SetTitle(
"Number of digits in BD");
672 histBDTof700Stat->GetYaxis()->SetTitle(
"Number of digits in event Tof700");
674 name = fTitle +
"_BD_CSC";
675 histBDCscStat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 150, 1, Max_CSC_Cnt);
676 histBDCscStat->GetXaxis()->SetTitle(
"Number of digits in BD");
677 histBDCscStat->GetYaxis()->SetTitle(
"Number of digits in event CSC");
679 name = fTitle +
"_BD_FHCAL";
680 histBDFHCalStat =
new TH2F(name, name, Max_BD_Cnt - 1, 1, Max_BD_Cnt, 250, 1, Max_FHC_Cnt);
681 histBDFHCalStat->GetXaxis()->SetTitle(
"Number of digits in BD");
682 histBDFHCalStat->GetYaxis()->SetTitle(
"Number of digits in event FHCAL");
684 name = fTitle +
"BD_DetCanvas";
686 canStatBD->Divide(3, 2);
687 canStatBDPads.resize(3 * 2);
688 NamesStatBD.resize(3 * 2);
689 for (Int_t iPad = 0; iPad < 6; iPad++) {
692 canStatBDPads[iPad] = p;
693 canStatBD->GetPad(iPad + 1)->SetGrid();
695 canStatBDPads[0]->current = histBDGemStat;
696 canStatBDPads[1]->current = histBDSiliconStat;
697 canStatBDPads[2]->current = histBDTof400Stat;
698 canStatBDPads[3]->current = histBDTof700Stat;
699 canStatBDPads[4]->current = histBDCscStat;
700 canStatBDPads[5]->current = histBDFHCalStat;
701 for (
size_t iPad = 0; iPad < canStatBDPads.size(); iPad++)
702 if (canStatBDPads[iPad]->current) {
703 NamesStatBD.push_back(canStatBDPads[iPad]->current->GetName());
707void BmnHistStat::initHistCorr()
710 name = fTitle +
"_GEM_Silicon";
711 histGemSilicon =
new TH2F(name, name, 250, 1, Max_GEM_Cnt, 250, 1, Max_FSD_Cnt);
712 histGemSilicon->GetXaxis()->SetTitle(
"Number of digits in event GEM");
713 histGemSilicon->GetYaxis()->SetTitle(
"Number of digits in event Silicon");
715 name = fTitle +
"_GEM_Tof400";
716 histGemTof400 =
new TH2F(name, name, 250, 1, Max_GEM_Cnt, 100, 1, Max_ToF_Cnt);
717 histGemTof400->GetXaxis()->SetTitle(
"Number of digits in event GEM");
718 histGemTof400->GetYaxis()->SetTitle(
"Number of digits in event Tof400");
720 name = fTitle +
"_GEM_Tof700";
721 histGemTof700 =
new TH2F(name, name, 250, 1, Max_GEM_Cnt, 100, 1, Max_ToF_Cnt);
722 histGemTof700->GetXaxis()->SetTitle(
"Number of digits in event GEM");
723 histGemTof700->GetYaxis()->SetTitle(
"Number of digits in event Tof700");
725 name = fTitle +
"_GEM_CSC";
726 histGemCsc =
new TH2F(name, name, 250, 1, Max_GEM_Cnt, 150, 1, Max_CSC_Cnt);
727 histGemCsc->GetXaxis()->SetTitle(
"Number of digits in event GEM");
728 histGemCsc->GetYaxis()->SetTitle(
"Number of digits in event CSC");
730 name = fTitle +
"_GEM_FHCAL";
731 histGemFHCal =
new TH2F(name, name, 250, 1, Max_GEM_Cnt, 250, 1, Max_FHC_Cnt);
732 histGemFHCal->GetXaxis()->SetTitle(
"Number of digits in event GEM");
733 histGemFHCal->GetYaxis()->SetTitle(
"Number of digits in event FHCAL");
735 name = fTitle +
"_CSC_FHCAL";
736 histCscFHCal =
new TH2F(name, name, 150, 1, Max_CSC_Cnt, 250, 1, Max_FHC_Cnt);
737 histCscFHCal->GetXaxis()->SetTitle(
"Number of digits in event CSC");
738 histCscFHCal->GetYaxis()->SetTitle(
"Number of digits in event FHCAL");
740 name = fTitle +
"CorrCanvas";
742 canStatCorr->Divide(3, 2);
743 canStatCorrPads.resize(3 * 2);
744 NamesStatCorr.resize(3 * 2);
745 for (Int_t iPad = 0; iPad < 6; iPad++) {
748 canStatCorrPads[iPad] = p;
749 canStatCorr->GetPad(iPad + 1)->SetGrid();
751 canStatCorrPads[0]->current = histGemSilicon;
752 canStatCorrPads[1]->current = histGemTof400;
753 canStatCorrPads[2]->current = histGemTof700;
754 canStatCorrPads[3]->current = histGemCsc;
755 canStatCorrPads[4]->current = histGemFHCal;
756 canStatCorrPads[5]->current = histCscFHCal;
757 for (
size_t iPad = 0; iPad < canStatCorrPads.size(); iPad++)
758 if (canStatCorrPads[iPad]->current) {
759 NamesStatCorr.push_back(canStatCorrPads[iPad]->current->GetName());
763Int_t BmnHistStat::getPositionInArray(vector<TClonesArray*>* trigDigits, TString name)
765 for (
size_t iTrig = 0; iTrig < trigDigits->size(); ++iTrig) {
766 TClonesArray*
array = trigDigits->at(iTrig);
767 TString nameArray =
array->GetName();
768 if (nameArray.EqualTo(name))
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
std::chrono::time_point< SysClock > SysPoint
BmnStatus SetRefRun(Int_t id)
void FillFromDigi(DigiArrays *fDigiArrays)
void SetDir(TFile *outFile=NULL, TTree *recoTree=NULL)
BmnHistStat(TString title, TString path="")
void Register(THttpServer *serv)
static void DrawRef(unique_ptr< TCanvas > &canGemStrip, vector< PadInfo * > *canGemStripPads)
static void SetHistStyleTH1(TH1 *h)
static BmnStatus LoadRefRun(Int_t refID, TString FullName, TString fTitle, vector< PadInfo * > canPads, vector< TString > Names)
int GetPeak(UInt_t start=0, UInt_t stop=1e9) const
int GetIntegral(UInt_t start=0, UInt_t stop=1e9) const
std::vector< TClonesArray * > * trigAr
Storage for pad content and it's options.
@ array
array (ordered collection of values)