16 #include "FairLogger.h"
17 #include "FairRootManager.h"
19 #include "FairRunOnline.h"
20 #include "FairRuntimeDb.h"
26 #include "TPaveStats.h"
28 #include "TProfile2D.h"
42 fbDebugMonitorMode(kFALSE)
43 , fbIgnoreCriticalErrors(kFALSE)
44 , fvbMaskedComponents()
50 , fuNrOfChannelsPerGet4(0)
51 , fuNrOfChannelsPerFee(0)
53 , fuNrOfGet4PerGdpb(0)
54 , fuNrOfChannelsPerGdpb(0)
60 , fdTsStopTimeCore(-1.0)
64 , fuCurrentEquipmentId(0)
67 , fiRunStartDateTimeSec(-1)
68 , fiBinSizeDatePlots(-1)
72 , fvulCurrentEpochCycle()
73 , fvulCurrentEpochFull()
76 , fdStartTimeMsSz(0.0)
77 , ftStartTimeUnix(std::chrono::steady_clock::now())
82 , fvulGdpbTsFullLast()
83 , fvulStarTsFullLast()
86 , fvuStarTrigCmdLast()
87 , fbEpochSinceLastHit(kTRUE)
88 , fuDuplicatesCount(0)
90 , fuHistoryHistoSize(3600)
92 , fhSysMessType(nullptr)
93 , fhGet4MessType(nullptr)
94 , fhGet4ChanScm(nullptr)
95 , fhGet4ChanErrors(nullptr)
96 , fhGet4EpochFlags(nullptr)
97 , fhGdpbAsicSpiCounts(nullptr)
98 , fhGdpbMessType(nullptr)
99 , fhGdpbSysMessType(nullptr)
100 , fhGdpbSysMessPattType(nullptr)
101 , fhGdpbEpochFlags(nullptr)
102 , fhGdpbEpochSyncEvo(nullptr)
103 , fhGdpbEpochMissEvo(nullptr)
104 , fhGdpbEndMsBufferNotEmpty(nullptr)
105 , fhGdpbEndMsDataLost(nullptr)
106 , fhGdpbHitRate(nullptr)
107 , fvhGdpbGet4MessType()
108 , fvhGdpbGet4ChanScm()
109 , fvhGdpbGet4ChanErrors()
110 , fhMsgCntEvo(nullptr)
111 , fhHitCntEvo(nullptr)
112 , fhErrorCntEvo(nullptr)
113 , fhLostEvtCntEvo(nullptr)
114 , fhErrorFractEvo(nullptr)
115 , fhLostEvtFractEvo(nullptr)
116 , fhMsgCntPerMsEvo(nullptr)
117 , fhHitCntPerMsEvo(nullptr)
118 , fhErrorCntPerMsEvo(nullptr)
119 , fhLostEvtCntPerMsEvo(nullptr)
120 , fhErrorFractPerMsEvo(nullptr)
121 , fhLostEvtFractPerMsEvo(nullptr)
125 , fvhRemapChCount_gDPB()
126 , fvhRemapChRate_gDPB()
127 , fvhRemapChErrFract_gDPB()
128 , fuNbMissmatchPattern()
129 , fhNbMissPatternPerMs(nullptr)
130 , fhPatternMissmatch(nullptr)
131 , fhPatternEnable(nullptr)
132 , fhPatternResync(nullptr)
133 , fvhGdpbPatternMissmatchEvo()
134 , fvhGdpbPatternEnableEvo()
135 , fvhGdpbPatternResyncEvo()
136 , fvvbGdpbLastMissmatchPattern()
137 , fvvbGdpbLastEnablePattern()
138 , fvvbGdpbLastResyncPattern()
139 , fvhGdpbMissmatchEvoPerTs()
140 , fvhGdpbMissmatchEnaEvoPerTs()
141 , fvhGdpbEnableEvoPerTs()
142 , fvhGdpbResyncEvoPerTs()
143 , fvhGdpbResyncEnaEvoPerTs()
144 , fvhGdpbStateEvoPerTs()
149 , fvhStarTrigGdpbTsEvo()
150 , fvhStarTrigStarTsEvo()
152 , fcSummaryGdpb(nullptr)
154 , fcStarTrigTokenType(nullptr)
155 , fcStarTriggerRate(nullptr)
156 , fcStarTrigCmdDaqVsTrig(nullptr)
157 , fcStarTrigStarTokenEvo(nullptr)
158 , fcStarTrigGdpbTsEvo(nullptr)
159 , fcStarTrigStarTsEvo(nullptr) {}
167 LOG(info) <<
"Initializing mCBM T0 2019 monitor algo";
180 LOG(info) <<
"Init parameter containers for CbmMcbm2018MonitorAlgoTof";
186 LOG(info) <<
"**********************************************";
187 LOG(info) <<
"ReInit parameter containers for CbmMcbm2018MonitorAlgoTof";
207 LOG(warning) <<
"Monitor set to ignore critical GET4 errors!!! No printout "
208 "will be delivered for those!!!!";
237 LOG(info) <<
"GDPB Id of TOF " <<
i <<
" : " << std::hex
243 LOG(info) <<
"Timeslice parameters: each MS is " <<
fdMsSizeInNs <<
" ns";
248 LOG(fatal) <<
"Selected gDPB out of bounds relative to parameter file: "
252 <<
" for single gDPB analysis";
279 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
303 UShort_t usDetectorId) {
311 LOG(info) <<
"CbmMcbm2018MonitorAlgoTof::AddMsComponentToList => Component "
312 << component <<
" with detector ID 0x" << std::hex << usDetectorId
313 << std::dec <<
" added to list";
319 fdTsStartTime =
static_cast<Double_t
>(ts.descriptor(0, 0).idx);
338 LOG(info) <<
"In each TS " <<
fuNbMsLoop <<
" MS will be looped over";
354 <<
fuMsIndex <<
" for component " << uMsComp;
360 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
379 auto msDescriptor = ts.descriptor(uMsCompIdx, uMsIdx);
381 const uint8_t* msContent =
382 reinterpret_cast<const uint8_t*
>(ts.content(uMsCompIdx, uMsIdx));
384 uint32_t uSize = msDescriptor.size;
388 LOG(debug) <<
"Microslice: " <<
fulCurrentMsIdx <<
" from EqId " << std::hex
402 <<
"---------------------------------------------------------------";
404 LOG(warning) <<
"Could not find the gDPB index for AFCK id 0x" << std::hex
407 <<
" component " << uMsCompIdx <<
"\n"
408 <<
"If valid this index has to be added in the TOF "
409 "parameter file in the DbpIdArray field";
447 LOG(error) <<
"The input microslice buffer does NOT "
448 <<
"contain only complete nDPB messages!";
451 uint32_t uNbMessages =
455 Int_t messageType = -111;
456 const uint64_t* pInBuff =
reinterpret_cast<const uint64_t*
>(msContent);
457 for (uint32_t uIdx = 0; uIdx < uNbMessages; uIdx++) {
459 uint64_t ulData =
static_cast<uint64_t
>(pInBuff[uIdx]);
480 LOG(warning) <<
"Message with Get4 ID too high: " <<
fuGet4Id <<
" VS "
483 switch (messageType) {
487 LOG(fatal) <<
"This monitor does not support 24b hit messages!!!.";
533 LOG(fatal) <<
"This event builder does not support unmerged epoch "
555 LOG(fatal) <<
"Message type " << std::hex << std::setw(2)
556 <<
static_cast<uint16_t
>(messageType)
557 <<
" not included in Get4 data format.";
584 LOG(warning) <<
"CbmMcbm2018MonitorAlgoTof::ProcessEpochCycle => "
585 <<
" Missmatch in epoch cycles detected for Gdpb "
587 <<
", probably fake cycles due to epoch index corruption! "
588 << Form(
" Current cycle 0x%09llX New cycle 0x%09llX",
593 LOG(info) <<
"CbmStar2019EventBuilderEtofAlgo::ProcessEpochCycle => "
595 << Form(
": Current cycle 0x%09llX New cycle 0x%09llX",
658 if (0 == iBufferSize)
return;
660 LOG(debug) <<
"Now processing stored messages for for gDPB " <<
fuCurrDpbIdx
671 if (0 == ulCurEpochGdpbGet4)
return;
674 ulCurEpochGdpbGet4--;
676 Int_t messageType = -111;
677 for (Int_t iMsgIdx = 0; iMsgIdx < iBufferSize; iMsgIdx++) {
692 switch (messageType) {
714 LOG(error) <<
"Message type " << std::hex << std::setw(2)
715 <<
static_cast<uint16_t
>(messageType)
716 <<
" not included in Get4 unpacker.";
734 UInt_t uChannelNrInFee =
765 <<
"CbmMcbm2018MonitorAlgoTof::ProcessHit => Coarse time above 4096 "
768 " gDPB %02u GET4 %03u Channel %u, TS %8llu MS %3u (MS time %12llu)",
788 1e-9 * dHitTime -
fdStartTime, uRemappedChannelNr, 0);
820 LOG(debug) <<
"Unknown GET4 message, data: " << std::hex << std::setw(8)
822 <<
" Full message: " << std::hex << std::setw(16)
828 LOG(info) << Form(
"GET4 Resynchronization: Get4:0x%04x ",
832 LOG(info) <<
"GET4 synchronization pulse missing in gDPB "
899 switch (uErrorType) {
1034 switch (uErrorType) {
1048 LOG(info) <<
" +++++++ > gDPB: " << std::hex << std::setw(4)
1049 <<
fuCurrDpbIdx << std::dec <<
", Chip = " << std::setw(2)
1054 << std::setw(2) << uErrorType << std::dec
1055 <<
" -- GET4 V1 Error Event";
1069 LOG(debug) <<
" +++++++ >gDPB: " << std::hex << std::setw(4)
1070 <<
fuCurrDpbIdx << std::dec <<
", Chip = " << std::setw(2)
1075 << std::setw(2) << uErrorType << std::dec
1076 <<
" -- GET4 V1 Error Event ";
1095 UInt_t uNbBits = (7 == usIndex ? 16 : 32);
1105 LOG(debug) << Form(
"Missmatch pattern message => Type %d, Index %2d, "
1106 "Pattern 0x%08X TS %12llu MS %3u Epoch %12llu",
1116 "Missmatch pattern message => Type %d, Index %2d, Pattern 0x%08X",
1121 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1124 if ((uPattern >> uBit) & 0x1) {
1138 "ENABLE pattern message => Type %d, Index %2d, Pattern 0x%08X",
1144 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1147 if ((uPattern >> uBit) & 0x1) {
1160 "RESYNC pattern message => Type %d, Index %2d, Pattern 0x%08X",
1166 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1169 if ((uPattern >> uBit) & 0x1) {
1182 LOG(debug) <<
"Crazy pattern message, subtype " << usType;
1220 LOG(info) <<
"GET4 Slow Control SPI message, time "
1221 << Form(
"%3.3f", dMessTime) <<
" s "
1222 <<
" for board ID " << std::hex << std::setw(4) <<
fuCurrDpbIdx
1224 <<
" +++++++ > Chip = " << std::setw(3) <<
fuGet4Id
1225 <<
", Chan = " << std::setw(1) << uChan
1226 <<
", Edge = " << std::setw(1) << uEdge
1228 << Form(
"channel %1u,", (uData >> 10) & 0xF)
1229 << Form(
"value 0x%03x ", uData & 0x3FF)
1230 << Form(
"level %4.1f ",
1232 << Form(
"(Data = 0x%06x) ", uData);
1261 switch (iMsgIndex) {
1278 ULong64_t ulNewGdpbTsFull =
1295 LOG(warning) <<
"Possible error: identical STAR tokens found twice in "
1296 "a row => ignore 2nd! "
1300 << Form(
"gDPB ts = %12llu ",
1302 << Form(
"STAR ts = %12llu ",
1306 << Form(
"TRG Wrd = %5x ", uTrigWord);
1312 LOG(info) <<
"Probable reset of the STAR TS: old = "
1314 <<
" new = " << Form(
"%16llu", ulNewStarTsFull) <<
" Diff = -"
1343 default: LOG(error) <<
"Unknown Star Trigger messageindex: " << iMsgIndex;
1349 std::string sFolder =
"eTofMoni";
1351 LOG(info) <<
"create Histos for eTOF monitoring ";
1354 uint32_t iNbBinsLog = 0;
1357 double* dBinsLog = dBinsLogVector.data();
1362 "Nb of message for each type; Type",
1376 "Nb of system message for each type; System Type",
1385 "SYS_GET4_SYNC_MISS");
1390 new TH2I(
"hGet4MessType",
1391 "Nb of message for each type per GET4; GET4 chip # ; Type",
1406 new TH2I(
"hGet4ChanScm",
1407 "SC messages per GET4 channel; GET4 channel # ; SC type",
1421 new TH2I(
"hGet4ChanErrors",
1422 "Error messages per GET4 channel; GET4 channel # ; Error",
1441 12,
"0x0b: DLL Lock error ");
1443 13,
"0x0c: DLL Reset invoc.");
1448 17,
"0x14: Add. Rising edge");
1450 18,
"0x15: Unpaired Falling");
1452 19,
"0x16: Sequence error ");
1457 "Epoch flags per GET4; GET4 chip # ; Type",
1469 Double_t dGdpbMin = -0.5;
1472 "hGdpbAsicSpiCounts",
1473 "SPI messages count per gDPB and ASIC; ASIC Idx []; gDPB []; SPI msg[]",
1482 new TH2I(
"hGdpbMessageType",
1483 "Nb of message for each type per gDPB; Type; gDPB []",
1505 "Nb of system message for each type per gDPB; System Type; gDPB []",
1517 "SYS_GET4_SYNC_MISS");
1522 "hGdpbSysMessPattType",
1523 "Nb of pattern message for each type per gDPB; Pattern Type; gDPB []",
1538 "Epoch flags per gDPB; gDPB # ; Type",
1551 new TH2D(
"hGdpbEpochSyncEvo",
1552 "Epoch SYNC per second and gDPB; Time[s]; gDPB #; SYNC Nb",
1561 "hGdpbEpochMissEvo",
1562 "Epoch Missmatch per second and gDPB; Time[s]; gDPB #; Missmatch Nb",
1571 new TH1D(
"hGdpbEndMsBufferNotEmpty",
1572 "MS where buffer is not empty at end, per gDPB; gDPB #; Bad MS",
1578 new TH2D(
"hGdpbEndMsDataLost",
1579 "Amount of lost data when buffer not empty at end, per MS and "
1580 "gDPB; gDPB #; Lost Data per bad MS []; Bad MS",
1588 new TH2D(
"fhGdpbHitRate",
1589 "Hit rate per second and gDPB; Time[s]; gDPB #; HITS Nb",
1599 new TH2I(
"hNbMissPatternPerMs",
1600 "Nb of missmatch pattern per MS for each gDPB; Number of "
1601 "pattern messages []; gDPB []; MS",
1610 new TH2I(
"hPatternMissmatch",
1611 "Missmatch pattern integral per gDPB; ASIC Pattern []; gDPB []",
1620 new TH2I(
"hPatternEnable",
1621 "Enable pattern integral per gDPB; ASIC Pattern []; gDPB []",
1630 new TH2I(
"hPatternResync",
1631 "Resync pattern integral per gDPB; ASIC Pattern []; gDPB []",
1669 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1670 UInt_t uGdpbIndex = uGdpb;
1673 std::string sFolderGdpb = Form(
"gdpb%02u", uGdpbIndex);
1674 std::string sFolderGdpbPatt = Form(
"gdpb%02u/Pattern", uGdpbIndex);
1675 std::string sFolderGdpbTrig = Form(
"gdpb%02u/Trigger", uGdpbIndex);
1678 Form(
"hGdpbGet4MessType_%02u", uGdpb),
1680 "Nb of message for each type per GET4 in Gdpb %02u; GET4 chip # ; Type",
1694 Form(
"hGdpbGet4ChanScm_%02u", uGdpb),
1696 "SC messages per GET4 channel in Gdpb %02u; GET4 channel # ; SC type",
1711 Form(
"hGdpbGet4ChanErrors_%02u", uGdpb),
1713 "Error messages per GET4 channel in Gdpb %02u; GET4 channel # ; Error",
1722 1,
"0x00: Readout Init ");
1726 3,
"0x02: Epoch count sync");
1730 5,
"0x04: FIFO Write ");
1732 6,
"0x05: Lost event ");
1734 7,
"0x06: Channel state ");
1736 8,
"0x07: Token Ring state");
1740 10,
"0x09: Error Readout ");
1744 12,
"0x0b: DLL Lock error ");
1746 13,
"0x0c: DLL Reset invoc.");
1748 14,
"0x11: Overwrite ");
1750 15,
"0x12: ToT out of range");
1752 16,
"0x13: Event Discarded ");
1754 17,
"0x14: Add. Rising edge");
1756 18,
"0x15: Unpaired Falling");
1758 19,
"0x16: Sequence error ");
1760 20,
"0x17: Epoch Overflow ");
1762 21,
"0x7f: Unknown ");
1764 22,
"Corrupt/unsuprtd error");
1769 new TH2I(Form(
"RawFt_gDPB_%02u", uGdpbIndex),
1770 Form(
"Raw FineTime gDPB %02u Plot 0; channel; FineTime [bin]",
1780 Form(
"RawCt_gDPB_%02u", uGdpbIndex),
1781 Form(
"Raw CoarseTime gDPB %02u Plot 0; channel; CoarseTime [bin]",
1792 Form(
"RemapTot_gDPB_%02u", uGdpbIndex),
1793 Form(
"Raw TOT gDPB %02u remapped; PADI channel; TOT [bin]", uGdpbIndex),
1802 Form(
"RemapChCount_gDPB_%02u", uGdpbIndex),
1803 Form(
"Channel counts gDPB %02u remapped; PADI channel; Hits", uGdpbIndex),
1809 new TH2D(Form(
"RemapChRate_gDPB_%02u", uGdpbIndex),
1810 Form(
"PADI channel rate gDPB %02u; Time in run [s]; PADI "
1811 "channel; Rate [1/s]",
1822 new TProfile2D(Form(
"RemapChErrFract_gDPB_%02u", uGdpbIndex),
1823 Form(
"PADI channel error fraction gDPB %02u; Time in "
1824 "run [s]; PADI channel; Fraction []",
1836 Form(
"hGdpbPatternMissmatchEvo_%02u", uGdpbIndex),
1838 "Missmatch pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []",
1848 Form(
"hGdpbPatternEnableEvo_%02u", uGdpbIndex),
1849 Form(
"Enable pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []",
1859 Form(
"hGdpbPatternResyncEvo%02u", uGdpbIndex),
1860 Form(
"Resync pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []",
1870 Form(
"hGdpbMissmatchEvoPerTs%02u", uGdpbIndex),
1872 "Missmatch vs TS index in gDPB %02u; TS # ; Asic []; Missmatch? []",
1882 new TH2I(Form(
"hGdpbMissmatchEnaEvoPerTs%02u", uGdpbIndex),
1883 Form(
"Enable+Missmatch vs TS index in gDPB %02u; TS # ; Asic "
1884 "[]; Enabled & Missmatch? []",
1894 Form(
"hGdpbEnableEvoPerTs%02u", uGdpbIndex),
1895 Form(
"Enable vs TS index in gDPB %02u; TS # ; Asic []; Enabled? []",
1905 Form(
"hGdpbResyncEvoPerTs%02u", uGdpbIndex),
1906 Form(
"Resync vs TS index in gDPB %02u; TS # ; Asic []; Resync? []",
1916 new TH2I(Form(
"hGdpbResyncEnaEvoPerTs%02u", uGdpbIndex),
1917 Form(
"Enable+Resync vs TS index in gDPB %02u; TS # ; Asic []; "
1918 "Enabled & Resync? []",
1928 Form(
"hGdpbStateEvoPerTs%02u", uGdpbIndex),
1929 Form(
"ASIC State vs TS index in gDPB %02u; TS # ; Asic []; 0 = Off, 1 "
1930 "= OK, 2 = Miss, 3 = Resync, 4 = Miss + Resync []",
1943 Form(
"hTokenMsgType_gDPB_%02u", uGdpbIndex),
1944 Form(
"STAR trigger Messages type gDPB %02u; Type ; Counts", uGdpbIndex),
1956 Form(
"hTriggerRate_gDPB_%02u", uGdpbIndex),
1957 Form(
"STAR trigger signals per second gDPB %02u; Time[s] ; Counts",
1964 Form(
"hCmdDaqVsTrig_gDPB_%02u", uGdpbIndex),
1965 Form(
"STAR daq command VS STAR trigger command gDPB %02u; DAQ ; TRIGGER",
1974 1,
"0x0: no-trig ");
1978 3,
"0x2: mast-rst");
1982 5,
"0x4: trigg. 0");
2031 new TH2I(Form(
"hStarTokenEvo_gDPB_%02u", uGdpbIndex),
2032 Form(
"STAR token value VS time gDPB %02u; Time in Run [s] ; "
2033 "STAR Token; Counts",
2043 new TProfile(Form(
"hStarTrigGdpbTsEvo_gDPB_%02u", uGdpbIndex),
2044 Form(
"gDPB TS in STAR triger tokens for gDPB %02u; Time in "
2045 "Run [s] ; gDPB TS;",
2052 new TProfile(Form(
"hStarTrigStarTsEvo_gDPB_%02u", uGdpbIndex),
2053 Form(
"STAR TS in STAR triger tokens for gDPB %02u; Time in "
2054 "Run [s] ; STAR TS;",
2099 "Evolution of Hit & error msgs counts vs time in run; "
2100 "Time in run [s]; Msgs Count []",
2106 "Evolution of Hit counts vs time in run; Time in run [s]; Hits Count []",
2112 "Evolution of Error counts vs time in run; Time in run [s]; Error Count []",
2117 "Evolution of LostEvent counts vs time in run; "
2118 "Time in run [s]; LostEvent Count []",
2124 "Evolution of Error Fraction vs time in run; "
2125 "Time in run [s]; Error Fract []",
2130 "Evolution of LostEvent Fraction vs time in "
2131 "run; Time in run [s]; LostEvent Fract []",
2137 new TH2I(
"hMsgCntPerMsEvo",
2138 "Evolution of Hit & error msgs counts, per MS vs time in run; "
2139 "Time in run [s]; Hits Count/MS []; MS",
2146 "Evolution of Hit counts, per MS vs time in run; "
2147 "Time in run [s]; Hits Count/MS []; MS",
2154 "Evolution of Error counts, per MS vs time in "
2155 "run; Time in run [s]; Error Count/MS []; MS",
2162 new TH2I(
"hLostEvtCntPerMsEvo",
2163 "Evolution of LostEvent, per MS counts vs time in run; Time in "
2164 "run [s]; LostEvent Count/MS []; MS",
2172 new TH2I(
"hErrorFractPerMsEvo",
2173 "Evolution of Error Fraction, per MS vs time in run; Time in run "
2174 "[s]; Error Fract/MS []; MS",
2182 new TH2I(
"hLostEvtFractPerMsEvo",
2183 "Evolution of LostEvent Fraction, per MS vs time in run; Time in "
2184 "run [s]; LostEvent Fract/MS []; MS",
2215 fcSummary =
new TCanvas(
"cSummary",
"gDPB Monitoring Summary");
2259 fcSummaryGdpb =
new TCanvas(
"cSummaryGdpb",
"gDPB Monitoring Summary");
2300 "STAR trigger token message type per gDPB");
2302 new TCanvas(
"cStarTriggerRate",
"STAR trigger rate per gDPB");
2304 new TCanvas(
"cStarTrigCmdDaqVsTrig",
"STAR trigger command types per gDPB");
2306 "STAR trigger token evolution per gDPB");
2308 new TCanvas(
"cStarTrigGdpbTsEvo",
"STAR trigger gDPB TS evo per gDPB");
2310 new TCanvas(
"cStarTrigStarTsEvo",
"STAR trigger STAR TS evo per gDPB");
2326 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
2327 UInt_t uGdpbIndex = uGdpb;
2331 Form(
"cSumGdpb%02u", uGdpbIndex),
2332 Form(
"Summary per GET4 or channel for gDPB %02u", uGdpbIndex)));
2485 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
2528 if (kTRUE == bResetTime) {
2539 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {