9#include "MicrosliceDescriptor.hpp"
12#include <FairRunOnline.h>
15#include <RtypesCore.h>
20#include <THttpServer.h>
22#include <TPaveStats.h>
46 if (iter->first !=
nullptr) {
52 if (iter->first !=
nullptr) {
61 uint32_t uNbCh = vChanMapIn.size();
62 if (8 != uNbCh && 16 != uNbCh) {
63 LOG(fatal) <<
"Wrong number of channels in call to CbmTofUnpackMonitor::SetBmonChannelMap, "
64 <<
"only 8 and 16 supported, input here was " << uNbCh;
66 for (UInt_t uChan = 0; uChan < uNbCh; ++uChan) {
74 std::string sSystem =
"tof";
82 "Nb of message for each type per GET4; GET4 chip # ; Type",
93 "Epoch flags per GET4; GET4 chip # ; Type",
101 fhGet4ScmType =
new TH2I(Form(
"%sGet4ScmType", sSystem.data()),
102 "SC messages per GET4 channel; GET4 channel # ; SC type",
112 "Nb of system message for each type per Get4; Get4; System Type",
121 "Error messages per GET4 channel; GET4 channel # ; Error",
147 std::string sFolder =
"Get4InSys";
154 for (UInt_t uComp = 0; uComp <
fuNbOfComps; ++uComp) {
155 UInt_t uCompIndex = uComp;
157 std::string sFolderComp = Form(
"c%02u", uCompIndex);
161 new TH2I(Form(
"%sCompGet4MessType_c%02u", sSystem.data(), uComp),
162 Form(
"Nb of message for each type per GET4 in Comp %02u; GET4 chip # ; Type", uCompIndex),
171 new TH2I(Form(
"%sCompGet4ChanScm_c%02u", sSystem.data(), uComp),
172 Form(
"SC messages per GET4 channel in Comp %02u; GET4 channel # ; SC type", uCompIndex),
182 new TH2I(Form(
"%sCompGet4ChanErrors_c%02u", sSystem.data(), uComp),
183 Form(
"Error messages per GET4 channel in Comp %02u; GET4 channel # ; Error", uCompIndex),
211 fvhCompRawChCount.push_back(
new TH1I(Form(
"%sCompRawChCount_c%02u", sSystem.data(), uCompIndex),
212 Form(
"Channel counts comp. %02u raw; Channel; Hits",
216 fvhCompRawChRate.push_back(
new TH2D(Form(
"%sCompRawChRate_c%02u", sSystem.data(), uCompIndex),
217 Form(
"Raw channel rate comp. %02u; Time in run [s]; Channel; "
223 fvhCompRawChTot.push_back(
new TH2I(Form(
"%sCompRawChTot_c%02u", sSystem.data(), uCompIndex),
224 Form(
"Raw TOT comp. %02u, raw channel; Channel; TOT [bin]", uCompIndex),
229 fvhCompRemapChCount.push_back(
new TH1I(Form(
"%sCompRemapChCount_c%02u", sSystem.data(), uCompIndex),
230 Form(
"PADI Channel counts comp. %02u, remapped; PADI channel; Hits",
234 fvhCompRemapChRate.push_back(
new TH2D(Form(
"%sCompRemapChRate_c%02u", sSystem.data(), uCompIndex),
235 Form(
"PADI channel rate comp. %02u, remapped; Time in run [s]; PADI channel; "
241 fvhCompRemapChTot.push_back(
new TH2I(Form(
"%sCompRemapChTot_c%02u", sSystem.data(), uCompIndex),
242 Form(
"Raw TOT comp. %02u, remapped; PADI channel; TOT [bin]", uCompIndex),
269 std::string sSystem =
"tof";
277 new TCanvas(Form(
"c%sSummaryGet4s", sSystem.data()), Form(
"GET4s message stats, %s", sSystem.data()));
310 std::string sFolder =
"canvases";
314 for (UInt_t uComp = 0; uComp <
fuNbOfComps; ++uComp) {
316 fvcSumComp.push_back(
new TCanvas(Form(
"c%sSumComp%02u", sSystem.data(), uComp),
317 Form(
"Component %2u summary, %s", uComp, sSystem.data())));
384 TString sMsSizeName = Form(
"MsSize_c%02u", component);
385 TString sMsSizeTitle = Form(
"Size of MS for component %02u; Ms Size [bytes]", component);
386 fvhMsSize[component] =
new TH1F(sMsSizeName.Data(), sMsSizeTitle.Data(), 30000, 0., 30000.);
387 fvhMsSize[component]->SetCanExtend(TH2::kAllAxes);
391 TString sMsSizeName = Form(
"MsSizeTime_c%02u", component);
392 TString sMsSizeTitle = Form(
"Size of MS vs time for component %02u; Time[s] ; Ms Size [bytes]", component);
393 fvhMsSizeTime[component] =
new TProfile(sMsSizeName.Data(), sMsSizeTitle.Data(), 15000, 0., 300.);
418 for (UInt_t uComp = 0; uComp <
fuNbOfComps; ++uComp) {
462 uint32_t iNbBinsLog = 0;
465 double* dBinsLog = dBinsLogVector.data();
470 fhBmonCompMapAll =
new TH1I(
"hBmonCompMapAll",
"Map of hits on Bmon detector; Comp.; Hits Count []",
472 fhBmonCompGet4 =
new TH2I(
"hBmonCompGet4",
"Map of hits on Bmon detector; Comp.; GET4; Counts []",
475 fhBmonGet4Map =
new TH1I(
"hBmonGet4Map",
"Map of hits on Bmon detector; GET4; Hits Count []",
478 "Map of hits on Bmon detector vs time in run; GET4; "
479 "Time in run [s]; Hits Count []",
482 fhBmonChannelMapAll =
new TH1I(
"hChannelMapAll",
"Map of hits on Bmon detector; Strip; Hits Count []",
484 fhBmonChannelTotAll =
new TH2I(
"hChannelTotAll",
"Tot of hits on Bmon detector per channel; Strip; Tot; Hits Count []",
487 "Map of hits on Bmon detector vs time in run; Chan; "
488 "Time in run [s]; Hits Count []",
492 "Evolution of TOT in Bmon detector vs time in run; Time "
493 "in run [s]; TOT [ bin ]; Hits Count []",
495 fhBmonChanHitMapAll =
new TH1D(
"fhBmonChanHitMapAll",
"Map of hits on Bmon detector; Strip; Hits Count []",
498 "Map of hits on Bmon detector vs time in run; "
499 "Strip; Time in run [s]; Hits Count []",
503 fhBmonCompMap =
new TH1I(
"hBmonCompMap",
"Map of hits on Bmon detector; Comp.; Hits Count []",
505 fhBmonChannelMap =
new TH1I(
"hChannelMap",
"Map of hits on Bmon detector; Strip; Hits Count []",
508 "Map of hits on Bmon detector vs time in run; Chan; "
509 "Time in run [s]; Hits Count []",
512 "Evolution of TOT in Bmon detector vs time in run; Time "
513 "in run [s]; TOT [ bin ]; Hits Count []",
515 fhBmonChanHitMap =
new TH1D(
"fhBmonChanHitMap",
"Map of hits on Bmon detector; Strip; Hits Count []",
518 "Map of hits on Bmon detector vs time in run; "
519 "Strip; Time in run [s]; Hits Count []",
523 new TH1I(Form(
"hBmonCompMapSpill%02u", uSpill),
524 Form(
"Map of hits on Bmon detector in current spill %02u; Comp.; Hits Count []", uSpill),
527 Form(
"Map of hits on Bmon detector in current spill %02u; Strip; "
532 fhBmonHitsPerSpill =
new TH1I(
"hBmonHitsPerSpill",
"Hit count per spill; Spill; Hits Count []", 2000, 0., 2000);
535 "Evolution of Hit & error msgs counts vs time in run; "
536 "Time in run [s]; Msgs Count []",
539 "Evolution of Hit counts vs time in run; Time in run [s]; Hits Count []",
542 "Evolution of Error counts vs time in run; Time in run [s]; Error Count []",
545 "Evolution of LostEvent counts vs time in run; "
546 "Time in run [s]; LostEvent Count []",
550 "Evolution of Error Fraction vs time in run; "
551 "Time in run [s]; Error Fract []",
554 "Evolution of LostEvent Fraction vs time in "
555 "run; Time in run [s]; LostEvent Fract []",
559 "Evolution of Hit & error msgs counts, per MS vs time in run; "
560 "Time in run [s]; Hits Count/MS []; MS",
563 "Evolution of Hit counts, per MS vs time in run; "
564 "Time in run [s]; Hits Count/MS []; MS",
567 "Evolution of Error counts, per MS vs time in "
568 "run; Time in run [s]; Error Count/MS []; MS",
571 "Evolution of LostEvent, per MS counts vs time in run; Time in "
572 "run [s]; LostEvent Count/MS []; MS",
576 "Evolution of Error Fraction, per MS vs time in run; Time in run "
577 "[s]; Error Fract/MS []; MS",
580 "Evolution of LostEvent Fraction, per MS vs time in run; Time in "
581 "run [s]; LostEvent Fract/MS []; MS",
584 fhBmonChannelMapPulser =
new TH1I(
"fhBmonChannelMapPulser",
"Map of pulser hits on Bmon detector; Chan; Hits Count []",
587 "Map of hits on Bmon detector vs time in run; "
588 "Chan; Time in run [s]; Hits Count []",
593 std::string sFolder =
"All";
605 sFolder =
"NoPulser";
619 sFolder =
"GlobRates";
628 sFolder =
"GlobRatesMs";
641 sFolder =
"RatePerChan";
645 Form(
"Evolution of Messages counts vs time in run for channel "
646 "%02u; Time in run [s]; Messages Count []",
650 Form(
"Evolution of Hit counts per MS vs time in run for channel "
651 "%02u; Time in run [s]; Hits Count/MS []; MS",
656 Form(
"Evolution of Hit counts vs time in run for channel %02u; "
657 "Time in run [s]; Hits Count []",
661 Form(
"Evolution of Hit counts per MS vs time in run for channel "
662 "%02u; Time in run [s]; Hits Count/MS []; MS",
667 Form(
"Evolution of Error counts vs time in run for channel "
668 "%02u; Time in run [s]; Error Count []",
672 Form(
"Evolution of Error counts per MS vs time in run for "
673 "channel %02u; Time in run [s]; Error Count/MS []; MS",
678 Form(
"Evolution of LostEvent counts vs time in run for channel "
679 "%02u; Time in run [s]; LostEvent Count []",
683 Form(
"Evolution of LostEvent counts per MS vs time in run for "
684 "channel %02u; Time in run [s]; LostEvent Count/MS []; MS",
689 Form(
"Evolution of Error Fraction vs time in run for "
690 "channel %02u; Time in run [s]; Error Fract []",
694 Form(
"Evolution of Error Fraction, per MS vs time in run for "
695 "channel %02u; Time in run [s]; Error Fract/MS []; MS",
700 Form(
"Evolution of LostEvent Fraction vs time in run for "
701 "channel %02u; Time in run [s]; LostEvent Fract []",
705 new TH2I(Form(
"hBmonEvtLostFractPerMsEvoChan%02u", uChan),
706 Form(
"Evolution of LostEvent Fraction, per MS vs time in run for channel "
707 "%02u; Time in run [s]; LostEvent Fract/MS []; MS",
793 if (kTRUE == bResetTime) {
806 std::string sFolder =
"canvases";
810 fcBmonSummary =
new TCanvas(
"cBmonSummary",
"Hit maps, Hit rate, Error fraction");
842 fcBmonSummaryMap =
new TCanvas(
"cBmonSummaryMap",
"Hit maps, Hit rate, Error fraction");
895 new TCanvas(
"cBmonGenCntsPerMs",
"Messages and hit cnt per MS, Error and Evt Loss Fract. per MS ");
931 fcBmonSpillCounts =
new TCanvas(
"cBmonSpillCounts",
"Counts per spill, last 5 spills including current one");
955 fcBmonSpillCountsHori =
new TCanvas(
"cBmonSpillCountsHori",
"Counts per spill, last 5 spills including current one");
979 new TCanvas(
"cBmonSpillCompCountsHori",
"Counts in Comp. per spill, last 5 spills including current one");
1007 uint32_t uNbBinsLog = 0;
1010 double* dBinsLog = dBinsLogVector.data();
1012 uint32_t uNbBinsLogFract = 0;
1013 std::vector<double> dBinsLogVectorFract =
GenerateLogBinArray(6, 9, 10, uNbBinsLogFract, -6,
true);
1014 double* dBinsLogFract = dBinsLogVectorFract.data();
1029 "Nb 10 us bins with hit count per TS; TS []; Hits nb. []; 10 us bins []",
1031 uNbBinsLog, dBinsLog);
1033 "Nb 10 us bins with error count per TS; TS []; Errors nb. []; 10 us bins []",
1035 uNbBinsLog, dBinsLog);
1038 "Mean nb hits per 10 us per TS; TS []; Hits nb. []",
1041 "Mean nb error per 10 us per TS; TS []; Errors nb. []",
1046 "Median nb hits per 10 us per TS; TS []; Hits nb. []",
1049 "Median nb error per 10 us per TS; TS []; Errors nb. []",
1053 "Nb 10us bins with hit ratio to mean per TS; TS []; Ratio; 10 us bins []",
1057 "Nb 10us bins with error ratio to mean per TS; TS []; Ratio; 10 us bins []",
1062 "Nb 10 us bins with hit fract. per TS; TS []; Fraction; 10 us bins []",
1064 uNbBinsLogFract, dBinsLogFract);
1066 "Nb 10 us bins with error count per TS; TS []; Fraction; 10 us bins []",
1068 uNbBinsLogFract, dBinsLogFract);
1072 std::string sFolder =
"Microspills";
1112 std::string sFolder =
"canvases";
1147 new TCanvas(
"BmonMicrospillsFraction",
"Nb 10 us bins with fraction of hit/err counts per TS/Total count per TS");
1170 new TCanvas(
"BmonMicrospillsRatios",
"Nb 10 us bins with ratio of hit/err counts per mean count per TS/bin");
1192 const uint32_t& uGet4Id,
const uint32_t& uRawCh,
1193 const uint32_t& uRemapCh,
const uint32_t& uTot)
1217 const bool& bSyncFlag,
1218 const bool& bDataLoss,
1219 const bool& bEpochLoss,
1220 const bool& bMissmMatch
1236 const uint32_t& uCh,
1237 const uint32_t& uEdge,
1238 const uint32_t& uType
1261 const uint32_t& uType
1271 const uint32_t& uCh,
1272 const uint32_t& uType
1436 const uint32_t& uGet4Id,
const uint32_t& uTot)
1445 UInt_t uChannelBmon = (uGet4Id / 8) + 4 * uCurrCompIdx;
1499 const uint32_t& uGet4Id,
const bool& bErrEvtLost)
1512 UInt_t uChannelBmon = (uGet4Id / 8) + 4 * uCurrCompIdx;
1608 TFile* oldFile = gFile;
1609 TDirectory* oldDir = gDirectory;
1628 gDirectory = oldDir;
1631 std::vector<std::pair<TNamed*, std::string>> vHistos =
GetHistoVector();
1634 std::vector<std::pair<TCanvas*, std::string>> vCanvases =
GetCanvasVector();
1637 std::string sSystem =
"tof";
1644 THttpServer* server = FairRunOnline::Instance()->GetHttpServer();
1645 if (
nullptr != server) {
1646 for (UInt_t uCanvas = 0; uCanvas < vCanvases.size(); ++uCanvas) {
1647 server->Register(Form(
"/%s/%s", sSystem.data(), vCanvases[uCanvas].second.data()), vCanvases[uCanvas].first);
1649 for (UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto) {
1650 server->Register(Form(
"/%s/%s", sSystem.data(), vHistos[uHisto].second.data()), vHistos[uHisto].first);
1666 std::vector<std::pair<TNamed*, std::string>> vHistos =
GetHistoVector();
1669 std::vector<std::pair<TCanvas*, std::string>> vCanvases =
GetCanvasVector();
1672 TFile* oldFile = gFile;
1673 TDirectory* oldDir = gDirectory;
1674 TFile* histoFile =
nullptr;
1681 for (UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto) {
1683 TString sFolder = vHistos[uHisto].second.data();
1684 if (
nullptr == gDirectory->Get(sFolder)) gDirectory->mkdir(sFolder);
1685 gDirectory->cd(sFolder);
1688 vHistos[uHisto].first->Write();
1694 for (UInt_t uCanvas = 0; uCanvas < vCanvases.size(); ++uCanvas) {
1696 TString sFolder = vCanvases[uCanvas].second.data();
1697 if (
nullptr == gDirectory->Get(sFolder)) gDirectory->mkdir(sFolder);
1698 gDirectory->cd(sFolder);
1701 vCanvases[uCanvas].first->Write();
1708 gDirectory = oldDir;
1715 if (iter->first !=
nullptr) {
1721 if (iter->first !=
nullptr) {
ClassImp(CbmConverterManager)
Int_t GetNrOfGdpbs()
FIXME: replace with method returning the correspondign constants! see Star2019 parameter.
Bool_t fbSpillOn
Spill detection.
Bool_t CreateHistogramsMicroSpills()
TH1 * fhBmonMicrospillsTsMeanErrs
TH2 * fhBmonMicrospillsTsBinCntErrs
TCanvas * fcBmonSpillCounts
std::vector< TH1 * > fvhBmonChannelMapSpill
TH1 * fvhMsSize[kuMaxNbFlibLinks]
MS size histograms.
void CheckBmonSpillLimits(const double_t &dMsTime)
Fill BMon histograms.
std::vector< TH1 * > fvhBmonCompMapSpill
---> No Pulser cut + Spill detection
std::vector< std::pair< TNamed *, std::string > > fvpAllHistoPointers
TProfile * fvhMsSizeTime[kuMaxNbFlibLinks]
std::vector< TH1 * > fvhBmonErrorCntEvoChan
std::vector< TH1 * > fvhBmonEvtLostCntEvoChan
Bool_t ResetMsComponentSizeHistos(UInt_t component)
static const UInt_t kuNbChanBmon
Double_t fdBmonLastInterTime
TH2 * fhBmonChanHitMapEvo
CbmMcbm2018TofPar * fUnpackPar
Settings from parameter file.
void AddHistoToVector(TNamed *pointer, std::string sFolder="")
static const UInt_t kuNbChanBmonScvd
std::vector< std::pair< TCanvas *, std::string > > GetCanvasVector()
TCanvas * fcBmonMicrospillsRatios
static constexpr UInt_t kuBmonChanMap[kuNbChanBmon]
std::vector< TH1 * > fvhBmonHitCntEvoChan
std::vector< TH1 * > fvhCompRemapChCount
---> Per remapped (PADI) channel in Component
void FillSysMonitoringHistos(const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uType)
UInt_t fuHistoryHistoSize
void FillHitMonitoringHistos(const double_t &dMsTime, const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uRawCh, const uint32_t &uRemapCh, const uint32_t &uTot)
Fill general histograms.
void AddCanvasToVector(TCanvas *pointer, std::string sFolder="")
Bool_t ResetHistogramsMicroSpills(Bool_t bResetTime)
static constexpr UInt_t kuBmonChanMapScvd[kuNbChanBmonScvd]
2024 mapping: +4 channels scvd added
void DrawCanvasesMicroSpills()
std::vector< std::pair< TNamed *, std::string > > GetHistoVector()
TH2 * fhBmonChanHitMapEvoAll
TCanvas * fcBmonSpillCountsHori
UInt_t fuBmonNonPulserCountsLastInter
TH2 * fhBmonMicrospillsTsBinFractHits
void FillEpochMonitoringHistos(const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const bool &bSyncFlag, const bool &bDataLoss, const bool &bEpochLoss, const bool &bMissmMatch)
Double_t fdStartTimeSpill
void FillScmMonitoringHistos(const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uCh, const uint32_t &uEdge, const uint32_t &uType)
TH1 * fhBmonMicrospillsTsMeanHits
TH2 * fhBmonErrorFractPerMsEvo
TH2 * fhBmonErrorCntPerMsEvo
std::vector< TH2 * > fvhCompGet4MessType
---> Per GET4 in Component
void FillErrMonitoringHistos(const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uCh, const uint32_t &uType)
TH1 * fhBmonCompMapAll
---> Channels maps without cuts
std::vector< TH1 * > fvhBmonMsgCntEvoChan
std::vector< TH2 * > fvhBmonErrorCntPerMsEvoChan
TProfile * fhBmonLostEvtFractEvo
UInt_t fuOffSpillCountLimitNonPulser
TH1 * fhBmonChannelMapAll
Bool_t CreateMsComponentSizeHistos(UInt_t component)
void FillHitBmonMonitoringHistos(const double_t &dMsTime, const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uTot)
TCanvas * fcBmonSummaryMap
std::vector< UInt_t > fuBmonChanMap
UInt_t fuBmonCountsLastInter
std::unique_ptr< double[]> fArrErrCounts
uint32_t fuNbTsMicrospills
void FinalizeTsBmonMicroSpillHistos()
Finalize BMon Microspill histograms.
TH1 * fhBmonMicrospillsTsMedianHits
Double_t fdStartTime
Total/maximum number of Get4 in system.
Bool_t ResetBmonHistograms(Bool_t bResetTime)
TH2 * fhBmonChannelTotAll
TProfile * fhBmonErrorFractEvo
std::vector< UInt_t > fvuBmonErrorCntChanMs
void FillHitBmonMicroSpillHistos(const double_t &dTime)
Fill BMon Microspill histograms.
std::vector< TH2 * > fvhBmonErrorFractPerMsEvoChan
std::vector< TCanvas * > fvcSumComp
std::vector< TH2 * > fvhBmonMsgCntPerMsEvoChan
TH1 * fhBmonMicrospillsDistErrs
std::vector< TH2 * > fvhCompRawChRate
UInt_t fuNbOfComps
Readout chain dimensions and mapping.
TH1 * fhBmonMicrospillsTsMedianErrs
std::vector< TH2 * > fvhCompRawChTot
TH1 * fhBmonCompMap
---> No Pulser cut
std::vector< UInt_t > fvuBmonEvtLostCntChanMs
TH1 * fhBmonChanHitMapAll
TCanvas * fcBmonMicrospillsBinCnts
---> BMon Microspills monitoring
Double_t fdSpillCheckInterval
TH2 * fhBmonMicrospillsTsBinCntHits
std::vector< TH2 * > fvhCompRemapChRate
void FillErrBmonMonitoringHistos(const double_t &dMsTime, const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const bool &bErrEvtLost)
std::vector< TH2 * > fvhCompGet4ChErrors
TH2 * fhBmonHitCntPerMsEvo
TH2 * fhBmonLostEvtFractPerMsEvo
UInt_t fuNbChanBmon
Runtime values.
static const UInt_t kuNbSpillPlots
std::unique_ptr< double[]> fArrHitCounts
std::vector< TH2 * > fvhCompGet4ChScm
TH1 * fhBmonMicrospillsDistHits
Bool_t CreateHistograms()
UInt_t fuNbOfGet4PerComp
Total number of Components in the system.
std::vector< TH2 * > fvhCompRemapChTot
TH2 * fhBmonMicrospillsTsBinRatioErrs
TCanvas * fcBmonSummary
---> BMon
TH1 * fhBmonMsgCntEvo
---> Global Rate
bool fBmonMode
Flag if debug mode is active or not.
TH1 * fhBmonLostEvtCntEvo
void SetBmonChannelMap(std::vector< uint32_t > vChanMapIn)
std::vector< TH2 * > fvhBmonEvtLostCntPerMsEvoChan
TH2 * fhBmonMicrospillsTsBinRatioHits
TCanvas * fcBmonMicrospillsFraction
static const UInt_t kuMaxNbFlibLinks
---> Constants
std::vector< TH1 * > fvhCompRawChCount
---> Per raw channel in Component
UInt_t fuCurrentSpillPlot
std::vector< TH2 * > fvhBmonEvtLostFractPerMsEvoChan
std::vector< TProfile * > fvhBmonErrorFractEvoChan
Bool_t Init(CbmMcbm2018TofPar *digiParSet)
Init all required parameter informations and histograms.
std::vector< std::pair< TCanvas *, std::string > > fvpAllCanvasPointers
Vector of pointers to histograms + optional folder name.
UInt_t fuMinTotPulser
---> User settings: Data correction parameters
std::vector< TH2 * > fvhBmonHitCntPerMsEvoChan
TH2 * fhBmonHitMapEvoPulser
TH2 * fhBmonMsgCntPerMsEvo
---> Global Rate per MS
UInt_t fuNbOfChannelsPerComp
Number of channels per Get4, constant.
TH2 * fhBmonMicrospillsTsBinFractErrs
std::vector< TProfile * > fvhBmonEvtLostFractEvoChan
UInt_t fuOffSpillCountLimit
TCanvas * fcBmonGenCntsPerMs
TH1 * fhBmonChannelMapPulser
---> Pulser
virtual ~CbmTofUnpackMonitor()
TCanvas * fcBmonSpillCompCountsHori
UInt_t fuNbOfChannelsPerGet4
Max number of Get4 per component.
void Finish()
Write all histograms and canvases to file.
UInt_t fuNbOfGet4InSyst
Number of channels per Component, recalculated.
TH2 * fhBmonLostEvtCntPerMsEvo
std::vector< UInt_t > fvuBmonHitCntChanMs
double_t fdBmonMicrospillsTsLengthSec
BMon micro-spills monitoring histograms.
Bool_t CreateBmonHistograms()
uint32_t fuBmonMicrospillsNbBinsTs
@ GET4_V2X_ERR_UNPAIR_FALL
@ GET4_V2X_ERR_CHAN_STATE
@ GET4_V2X_ERR_ADD_RIS_EDG
@ GET4_V2X_ERR_SEQUENCE_ER
@ GET4_V2X_ERR_TOK_RING_ST
@ GET4_V2X_ERR_TOT_OVERWRT
@ GET4_V2X_ERR_FIFO_WRITE
@ GET4_V2X_ERR_EP_CNT_SYNC
@ GET4_V2X_ERR_EPOCH_OVERF
@ GET4_V2X_ERR_EVT_DISCARD
@ GET4_V2X_ERR_READOUT_ERR