47 fbDebugMonitorMode(kFALSE)
48 , fbIgnoreCriticalErrors(kFALSE)
49 , fvbMaskedComponents()
55 , fuNrOfChannelsPerGet4(0)
56 , fuNrOfChannelsPerFee(0)
58 , fuNrOfGet4PerGdpb(0)
59 , fuNrOfChannelsPerGdpb(0)
65 , fdTsStopTimeCore(-1.0)
69 , fuCurrentEquipmentId(0)
72 , fiRunStartDateTimeSec(-1)
73 , fiBinSizeDatePlots(-1)
77 , fvulCurrentEpochCycle()
78 , fvulCurrentEpochFull()
81 , fdStartTimeMsSz(0.0)
82 , ftStartTimeUnix(
std::chrono::steady_clock::now())
87 , fvulGdpbTsFullLast()
88 , fvulStarTsFullLast()
91 , fvuStarTrigCmdLast()
92 , fbEpochSinceLastHit(kTRUE)
93 , fuDuplicatesCount(0)
95 , fuHistoryHistoSize(3600)
97 , fhSysMessType(nullptr)
98 , fhGet4MessType(nullptr)
99 , fhGet4ChanScm(nullptr)
100 , fhGet4ChanErrors(nullptr)
101 , fhGet4EpochFlags(nullptr)
102 , fhGdpbAsicSpiCounts(nullptr)
103 , fhGdpbMessType(nullptr)
104 , fhGdpbSysMessType(nullptr)
105 , fhGdpbSysMessPattType(nullptr)
106 , fhGdpbEpochFlags(nullptr)
107 , fhGdpbEpochSyncEvo(nullptr)
108 , fhGdpbEpochMissEvo(nullptr)
109 , fhGdpbEndMsBufferNotEmpty(nullptr)
110 , fhGdpbEndMsDataLost(nullptr)
111 , fhGdpbHitRate(nullptr)
112 , fvhGdpbGet4MessType()
113 , fvhGdpbGet4ChanScm()
114 , fvhGdpbGet4ChanErrors()
115 , fhMsgCntEvo(nullptr)
116 , fhHitCntEvo(nullptr)
117 , fhErrorCntEvo(nullptr)
118 , fhLostEvtCntEvo(nullptr)
119 , fhErrorFractEvo(nullptr)
120 , fhLostEvtFractEvo(nullptr)
121 , fhMsgCntPerMsEvo(nullptr)
122 , fhHitCntPerMsEvo(nullptr)
123 , fhErrorCntPerMsEvo(nullptr)
124 , fhLostEvtCntPerMsEvo(nullptr)
125 , fhErrorFractPerMsEvo(nullptr)
126 , fhLostEvtFractPerMsEvo(nullptr)
130 , fvhRemapChCount_gDPB()
131 , fvhRemapChRate_gDPB()
132 , fvhRemapChErrFract_gDPB()
133 , fuNbMissmatchPattern()
134 , fhNbMissPatternPerMs(nullptr)
135 , fhPatternMissmatch(nullptr)
136 , fhPatternEnable(nullptr)
137 , fhPatternResync(nullptr)
138 , fvhGdpbPatternMissmatchEvo()
139 , fvhGdpbPatternEnableEvo()
140 , fvhGdpbPatternResyncEvo()
141 , fvvbGdpbLastMissmatchPattern()
142 , fvvbGdpbLastEnablePattern()
143 , fvvbGdpbLastResyncPattern()
144 , fvhGdpbMissmatchEvoPerTs()
145 , fvhGdpbMissmatchEnaEvoPerTs()
146 , fvhGdpbEnableEvoPerTs()
147 , fvhGdpbResyncEvoPerTs()
148 , fvhGdpbResyncEnaEvoPerTs()
149 , fvhGdpbStateEvoPerTs()
154 , fvhStarTrigGdpbTsEvo()
155 , fvhStarTrigStarTsEvo()
157 , fcSummaryGdpb(nullptr)
159 , fcStarTrigTokenType(nullptr)
160 , fcStarTriggerRate(nullptr)
161 , fcStarTrigCmdDaqVsTrig(nullptr)
162 , fcStarTrigStarTokenEvo(nullptr)
163 , fcStarTrigGdpbTsEvo(nullptr)
164 , fcStarTrigStarTsEvo(nullptr)
1271 std::string sFolder =
"eTofMoni";
1273 LOG(info) <<
"create Histos for eTOF monitoring ";
1276 uint32_t iNbBinsLog = 0;
1279 double* dBinsLog = dBinsLogVector.data();
1301 fhGet4MessType =
new TH2I(
"hGet4MessType",
"Nb of message for each type per GET4; GET4 chip # ; Type",
fuNrOfGet4, 0.,
1310 fhGet4ChanScm =
new TH2I(
"hGet4ChanScm",
"SC messages per GET4 channel; GET4 channel # ; SC type",
1318 fhGet4ChanErrors =
new TH2I(
"hGet4ChanErrors",
"Error messages per GET4 channel; GET4 channel # ; Error",
1343 new TH2I(
"hGet4EpochFlags",
"Epoch flags per GET4; GET4 chip # ; Type",
fuNrOfGet4, 0.,
fuNrOfGet4, 4, 0., 4.);
1349 Double_t dGdpbMin = -0.5;
1352 new TH2I(
"hGdpbAsicSpiCounts",
"SPI messages count per gDPB and ASIC; ASIC Idx []; gDPB []; SPI msg[]",
1368 new TH2I(
"hGdpbSysMessType",
"Nb of system message for each type per gDPB; System Type; gDPB []",
1376 new TH2I(
"hGdpbSysMessPattType",
"Nb of pattern message for each type per gDPB; Pattern Type; gDPB []",
1383 new TH2I(
"hGdpbEpochFlags",
"Epoch flags per gDPB; gDPB # ; Type",
fuNrOfGdpbs, dGdpbMin, dGdpbMax, 4, 0., 4.);
1389 fhGdpbEpochSyncEvo =
new TH2D(
"hGdpbEpochSyncEvo",
"Epoch SYNC per second and gDPB; Time[s]; gDPB #; SYNC Nb",
1393 new TH2D(
"hGdpbEpochMissEvo",
"Epoch Missmatch per second and gDPB; Time[s]; gDPB #; Missmatch Nb",
1397 new TH1D(
"hGdpbEndMsBufferNotEmpty",
"MS where buffer is not empty at end, per gDPB; gDPB #; Bad MS",
fuNrOfGdpbs,
1398 dGdpbMin, dGdpbMax);
1401 "Amount of lost data when buffer not empty at end, per MS and "
1402 "gDPB; gDPB #; Lost Data per bad MS []; Bad MS",
1403 fuNrOfGdpbs, dGdpbMin, dGdpbMax, iNbBinsLog, dBinsLog);
1405 fhGdpbHitRate =
new TH2D(
"fhGdpbHitRate",
"Hit rate per second and gDPB; Time[s]; gDPB #; HITS Nb",
1410 "Nb of missmatch pattern per MS for each gDPB; Number of "
1411 "pattern messages []; gDPB []; MS",
1412 1000, -0.5, 999.5,
fuNrOfGdpbs, dGdpbMin, dGdpbMax);
1414 fhPatternMissmatch =
new TH2I(
"hPatternMissmatch",
"Missmatch pattern integral per gDPB; ASIC Pattern []; gDPB []",
1417 fhPatternEnable =
new TH2I(
"hPatternEnable",
"Enable pattern integral per gDPB; ASIC Pattern []; gDPB []",
1420 fhPatternResync =
new TH2I(
"hPatternResync",
"Resync pattern integral per gDPB; ASIC Pattern []; gDPB []",
1453 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1454 UInt_t uGdpbIndex = uGdpb;
1457 std::string sFolderGdpb = Form(
"gdpb%02u", uGdpbIndex);
1458 std::string sFolderGdpbPatt = Form(
"gdpb%02u/Pattern", uGdpbIndex);
1459 std::string sFolderGdpbTrig = Form(
"gdpb%02u/Trigger", uGdpbIndex);
1462 new TH2I(Form(
"hGdpbGet4MessType_%02u", uGdpb),
1463 Form(
"Nb of message for each type per GET4 in Gdpb %02u; GET4 chip # ; Type", uGdpbIndex),
1471 new TH2I(Form(
"hGdpbGet4ChanScm_%02u", uGdpb),
1472 Form(
"SC messages per GET4 channel in Gdpb %02u; GET4 channel # ; SC type", uGdpbIndex),
1481 new TH2I(Form(
"hGdpbGet4ChanErrors_%02u", uGdpb),
1482 Form(
"Error messages per GET4 channel in Gdpb %02u; GET4 channel # ; Error", uGdpbIndex),
1509 fvhRawFt_gDPB.push_back(
new TH2I(Form(
"RawFt_gDPB_%02u", uGdpbIndex),
1510 Form(
"Raw FineTime gDPB %02u Plot 0; channel; FineTime [bin]", uGdpbIndex),
1513 fvhRawCt_gDPB.push_back(
new TH2I(Form(
"RawCt_gDPB_%02u", uGdpbIndex),
1514 Form(
"Raw CoarseTime gDPB %02u Plot 0; channel; CoarseTime [bin]", uGdpbIndex),
1518 fvhRemapTot_gDPB.push_back(
new TH2I(Form(
"RemapTot_gDPB_%02u", uGdpbIndex),
1519 Form(
"Raw TOT gDPB %02u remapped; PADI channel; TOT [bin]", uGdpbIndex),
1523 Form(
"Channel counts gDPB %02u remapped; PADI channel; Hits", uGdpbIndex),
1528 Form(
"PADI channel rate gDPB %02u; Time in run [s]; PADI "
1529 "channel; Rate [1/s]",
1537 Form(
"PADI channel error fraction gDPB %02u; Time in "
1538 "run [s]; PADI channel; Fraction []",
1546 new TH2I(Form(
"hGdpbPatternMissmatchEvo_%02u", uGdpbIndex),
1547 Form(
"Missmatch pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpbIndex), 10000, 0.,
1551 new TH2I(Form(
"hGdpbPatternEnableEvo_%02u", uGdpbIndex),
1552 Form(
"Enable pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpbIndex), 10000, 0., 100000,
1556 new TH2I(Form(
"hGdpbPatternResyncEvo%02u", uGdpbIndex),
1557 Form(
"Resync pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpbIndex), 10000, 0., 100000,
1561 new TH2I(Form(
"hGdpbMissmatchEvoPerTs%02u", uGdpbIndex),
1562 Form(
"Missmatch vs TS index in gDPB %02u; TS # ; Asic []; Missmatch? []", uGdpbIndex), 10000, 0.,
1566 Form(
"Enable+Missmatch vs TS index in gDPB %02u; TS # ; Asic "
1567 "[]; Enabled & Missmatch? []",
1572 new TH2I(Form(
"hGdpbEnableEvoPerTs%02u", uGdpbIndex),
1573 Form(
"Enable vs TS index in gDPB %02u; TS # ; Asic []; Enabled? []", uGdpbIndex), 100000, 0., 100000,
1577 new TH2I(Form(
"hGdpbResyncEvoPerTs%02u", uGdpbIndex),
1578 Form(
"Resync vs TS index in gDPB %02u; TS # ; Asic []; Resync? []", uGdpbIndex), 10000, 0., 100000,
1582 Form(
"Enable+Resync vs TS index in gDPB %02u; TS # ; Asic []; "
1583 "Enabled & Resync? []",
1588 Form(
"ASIC State vs TS index in gDPB %02u; TS # ; Asic []; 0 = Off, 1 "
1589 "= OK, 2 = Miss, 3 = Resync, 4 = Miss + Resync []",
1596 fvhTokenMsgType.push_back(
new TH1F(Form(
"hTokenMsgType_gDPB_%02u", uGdpbIndex),
1597 Form(
"STAR trigger Messages type gDPB %02u; Type ; Counts", uGdpbIndex), 4, 0,
1604 fvhTriggerRate.push_back(
new TH1F(Form(
"hTriggerRate_gDPB_%02u", uGdpbIndex),
1605 Form(
"STAR trigger signals per second gDPB %02u; Time[s] ; Counts", uGdpbIndex),
1609 Form(
"hCmdDaqVsTrig_gDPB_%02u", uGdpbIndex),
1610 Form(
"STAR daq command VS STAR trigger command gDPB %02u; DAQ ; TRIGGER", uGdpbIndex), 16, 0, 16, 16, 0, 16));
1617 5,
"0x4: trigg. 0");
1648 fvhStarTokenEvo.push_back(
new TH2I(Form(
"hStarTokenEvo_gDPB_%02u", uGdpbIndex),
1649 Form(
"STAR token value VS time gDPB %02u; Time in Run [s] ; "
1650 "STAR Token; Counts",
1655 Form(
"gDPB TS in STAR triger tokens for gDPB %02u; Time in "
1656 "Run [s] ; gDPB TS;",
1661 Form(
"STAR TS in STAR triger tokens for gDPB %02u; Time in "
1662 "Run [s] ; STAR TS;",
1705 "Evolution of Hit & error msgs counts vs time in run; "
1706 "Time in run [s]; Msgs Count []",
1708 fhHitCntEvo =
new TH1I(
"hHitCntEvo",
"Evolution of Hit counts vs time in run; Time in run [s]; Hits Count []",
1710 fhErrorCntEvo =
new TH1I(
"hErrorCntEvo",
"Evolution of Error counts vs time in run; Time in run [s]; Error Count []",
1713 "Evolution of LostEvent counts vs time in run; "
1714 "Time in run [s]; LostEvent Count []",
1718 "Evolution of Error Fraction vs time in run; "
1719 "Time in run [s]; Error Fract []",
1722 "Evolution of LostEvent Fraction vs time in "
1723 "run; Time in run [s]; LostEvent Fract []",
1727 "Evolution of Hit & error msgs counts, per MS vs time in run; "
1728 "Time in run [s]; Hits Count/MS []; MS",
1731 "Evolution of Hit counts, per MS vs time in run; "
1732 "Time in run [s]; Hits Count/MS []; MS",
1735 "Evolution of Error counts, per MS vs time in "
1736 "run; Time in run [s]; Error Count/MS []; MS",
1739 "Evolution of LostEvent, per MS counts vs time in run; Time in "
1740 "run [s]; LostEvent Count/MS []; MS",
1744 "Evolution of Error Fraction, per MS vs time in run; Time in run "
1745 "[s]; Error Fract/MS []; MS",
1748 "Evolution of LostEvent Fraction, per MS vs time in run; Time in "
1749 "run [s]; LostEvent Fract/MS []; MS",
1775 fcSummary =
new TCanvas(
"cSummary",
"gDPB Monitoring Summary");
1819 fcSummaryGdpb =
new TCanvas(
"cSummaryGdpb",
"gDPB Monitoring Summary");
1859 fcStarTrigTokenType =
new TCanvas(
"cStarTrigTokenType",
"STAR trigger token message type per gDPB");
1860 fcStarTriggerRate =
new TCanvas(
"cStarTriggerRate",
"STAR trigger rate per gDPB");
1863 fcStarTrigGdpbTsEvo =
new TCanvas(
"cStarTrigGdpbTsEvo",
"STAR trigger gDPB TS evo per gDPB");
1864 fcStarTrigStarTsEvo =
new TCanvas(
"cStarTrigStarTsEvo",
"STAR trigger STAR TS evo per gDPB");
1880 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1881 UInt_t uGdpbIndex = uGdpb;
1885 new TCanvas(Form(
"cSumGdpb%02u", uGdpbIndex), Form(
"Summary per GET4 or channel for gDPB %02u", uGdpbIndex)));