15 #include "FairLogger.h"
16 #include "FairRootManager.h"
18 #include "FairRunOnline.h"
19 #include "FairRuntimeDb.h"
26 #include <TPaveStats.h>
41 fbDebugMonitorMode(kFALSE)
42 , fbIgnoreCriticalErrors(kFALSE)
43 , fvbMaskedComponents()
50 , fuNrOfChannelsPerGet4(0)
51 , fuNrOfChannelsPerFee(0)
53 , fuNrOfGet4PerGdpb(0)
54 , fuNrOfChannelsPerGdpb(0)
60 , fdTsStopTimeCore(-1.0)
64 , fuCurrentEquipmentId(0)
68 , fiRunStartDateTimeSec(-1)
69 , fiBinSizeDatePlots(-1)
73 , fvulCurrentEpochCycle()
74 , fvulCurrentEpochFull()
78 , fdStartTimeMsSz(0.0)
79 , ftStartTimeUnix(std::chrono::steady_clock::now())
84 , fvulGdpbTsFullLast()
85 , fvulStarTsFullLast()
88 , fvuStarTrigCmdLast()
89 , fbEpochSinceLastHit(kTRUE)
90 , fuDuplicatesCount(0)
92 , fuHistoryHistoSize(3600)
94 , fhSysMessType(nullptr)
95 , fhGet4MessType(nullptr)
96 , fhGet4ChanScm(nullptr)
97 , fhGet4ChanErrors(nullptr)
98 , fhGet4EpochFlags(nullptr)
99 , fhGdpbAsicSpiCounts(nullptr)
100 , fhGdpbMessType(nullptr)
101 , fhGdpbSysMessType(nullptr)
102 , fhGdpbSysMessPattType(nullptr)
103 , fhGdpbEpochFlags(nullptr)
104 , fhGdpbEpochSyncEvo(nullptr)
105 , fhGdpbEpochMissEvo(nullptr)
106 , fhGdpbEndMsBufferNotEmpty(nullptr)
107 , fhGdpbEndMsDataLost(nullptr)
108 , fvhGdpbGet4MessType()
109 , fvhGdpbGet4ChanScm()
110 , fvhGdpbGet4ChanErrors()
111 , fhMsgCntEvo(nullptr)
112 , fhHitCntEvo(nullptr)
113 , fhErrorCntEvo(nullptr)
114 , fhLostEvtCntEvo(nullptr)
115 , fhErrorFractEvo(nullptr)
116 , fhLostEvtFractEvo(nullptr)
117 , fhMsgCntPerMsEvo(nullptr)
118 , fhHitCntPerMsEvo(nullptr)
119 , fhErrorCntPerMsEvo(nullptr)
120 , fhLostEvtCntPerMsEvo(nullptr)
121 , fhErrorFractPerMsEvo(nullptr)
122 , fhLostEvtFractPerMsEvo(nullptr)
126 , fvhRemapChCount_gDPB()
127 , fvhRemapChRate_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 CbmStar2019MonitorAlgo";
186 LOG(info) <<
"**********************************************";
187 LOG(info) <<
"ReInit parameter containers for CbmStar2019MonitorAlgo";
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";
249 LOG(fatal) <<
"Selected sector out of bounds relative to parameter file: "
252 LOG(info) <<
"Selected sector "
254 <<
" for single sector analysis";
281 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
305 UShort_t usDetectorId) {
313 LOG(info) <<
"CbmStar2019MonitorAlgo::AddMsComponentToList => Component "
314 << component <<
" with detector ID 0x" << std::hex << usDetectorId
315 << std::dec <<
" added to list";
321 fdTsStartTime =
static_cast<Double_t
>(ts.descriptor(0, 0).idx);
340 LOG(info) <<
"In each TS " <<
fuNbMsLoop <<
" MS will be looped over";
359 <<
fuMsIndex <<
" for component " << uMsComp;
365 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
385 auto msDescriptor = ts.descriptor(uMsCompIdx, uMsIdx);
387 const uint8_t* msContent =
388 reinterpret_cast<const uint8_t*
>(ts.content(uMsCompIdx, uMsIdx));
390 uint32_t uSize = msDescriptor.size;
393 LOG(debug) <<
"Microslice: " <<
fulCurrentMsIdx <<
" from EqId " << std::hex
407 <<
"---------------------------------------------------------------";
409 LOG(warning) <<
"Could not find the gDPB index for AFCK id 0x" << std::hex
412 <<
" component " << uMsCompIdx <<
"\n"
413 <<
"If valid this index has to be added in the TOF "
414 "parameter file in the DbpIdArray field";
451 LOG(error) <<
"The input microslice buffer does NOT "
452 <<
"contain only complete nDPB messages!";
455 uint32_t uNbMessages =
459 Int_t messageType = -111;
460 const uint64_t* pInBuff =
reinterpret_cast<const uint64_t*
>(msContent);
461 for (uint32_t uIdx = 0; uIdx < uNbMessages; uIdx++) {
463 uint64_t ulData =
static_cast<uint64_t
>(pInBuff[uIdx]);
482 LOG(warning) <<
"Message with Get4 ID too high: " <<
fuGet4Id <<
" VS "
485 switch (messageType) {
489 LOG(fatal) <<
"This monitor does not support 24b hit messages!!!.";
534 LOG(fatal) <<
"This event builder does not support unmerged epoch "
556 LOG(fatal) <<
"Message type " << std::hex << std::setw(2)
557 <<
static_cast<uint16_t
>(messageType)
558 <<
" not included in Get4 data format.";
585 LOG(warning) <<
"CbmStar2019MonitorAlgo::ProcessEpochCycle => "
586 <<
" Missmatch in epoch cycles detected for Gdpb "
588 <<
", probably fake cycles due to epoch index corruption! "
589 << Form(
" Current cycle 0x%09llX New cycle 0x%09llX",
594 LOG(info) <<
"CbmStar2019EventBuilderEtofAlgo::ProcessEpochCycle => "
596 << Form(
": Current cycle 0x%09llX New cycle 0x%09llX",
659 if (0 == iBufferSize)
return;
661 LOG(debug) <<
"Now processing stored messages for for gDPB " <<
fuCurrDpbIdx
672 if (0 == ulCurEpochGdpbGet4)
return;
675 ulCurEpochGdpbGet4--;
677 Int_t messageType = -111;
678 for (Int_t iMsgIdx = 0; iMsgIdx < iBufferSize; iMsgIdx++) {
690 switch (messageType) {
712 LOG(error) <<
"Message type " << std::hex << std::setw(2)
713 <<
static_cast<uint16_t
>(messageType)
714 <<
" not included in Get4 unpacker.";
732 UInt_t uChannelNrInFee =
759 LOG(debug) <<
"CbmStar2019MonitorAlgo::ProcessHit => Coarse time above "
761 << Form(
" sector %02u GET4 %03u Channel %u, TS %8llu MS %3u (MS "
811 LOG(debug) <<
"Unknown GET4 message, data: " << std::hex << std::setw(8)
813 <<
" Full message: " << std::hex << std::setw(16)
819 LOG(info) << Form(
"GET4 Resynchronization: Get4:0x%04x ",
823 LOG(info) <<
"GET4 synchronization pulse missing in gDPB "
880 switch (uErrorType) {
994 switch (uErrorType) {
1008 LOG(info) <<
" +++++++ > gDPB: " << std::hex << std::setw(4)
1009 <<
fuCurrDpbIdx << std::dec <<
", Chip = " << std::setw(2)
1014 << std::setw(2) << uErrorType << std::dec
1015 <<
" -- GET4 V1 Error Event";
1029 LOG(debug) <<
" +++++++ >gDPB: " << std::hex << std::setw(4)
1030 <<
fuCurrDpbIdx << std::dec <<
", Chip = " << std::setw(2)
1035 << std::setw(2) << uErrorType << std::dec
1036 <<
" -- GET4 V1 Error Event ";
1055 UInt_t uNbBits = (7 == usIndex ? 16 : 32);
1065 LOG(debug) << Form(
"Missmatch pattern message => Type %d, Index %2d, "
1066 "Pattern 0x%08X TS %12llu MS %3u Epoch %12llu",
1076 "Missmatch pattern message => Type %d, Index %2d, Pattern 0x%08X",
1081 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1084 if ((uPattern >> uBit) & 0x1) {
1098 "ENABLE pattern message => Type %d, Index %2d, Pattern 0x%08X",
1104 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1107 if ((uPattern >> uBit) & 0x1) {
1120 "RESYNC pattern message => Type %d, Index %2d, Pattern 0x%08X",
1126 for (UInt_t uBit = 0; uBit < uNbBits; ++uBit) {
1129 if ((uPattern >> uBit) & 0x1) {
1142 LOG(debug) <<
"Crazy pattern message, subtype " << usType;
1180 LOG(info) <<
"GET4 Slow Control SPI message, time "
1181 << Form(
"%3.3f", dMessTime) <<
" s "
1182 <<
" for board ID " << std::hex << std::setw(4) <<
fuCurrDpbIdx
1184 <<
" +++++++ > Chip = " << std::setw(3) <<
fuGet4Id
1185 <<
", Chan = " << std::setw(1) << uChan
1186 <<
", Edge = " << std::setw(1) << uEdge
1188 << Form(
"channel %1u,", (uData >> 10) & 0xF)
1189 << Form(
"value 0x%03x ", uData & 0x3FF)
1190 << Form(
"level %4.1f ",
1192 << Form(
"(Data = 0x%06x) ", uData);
1221 switch (iMsgIndex) {
1238 ULong64_t ulNewGdpbTsFull =
1255 LOG(warning) <<
"Possible error: identical STAR tokens found twice in "
1256 "a row => ignore 2nd! "
1260 << Form(
"gDPB ts = %12llu ",
1262 << Form(
"STAR ts = %12llu ",
1266 << Form(
"TRG Wrd = %5x ", uTrigWord);
1272 LOG(info) <<
"Probable reset of the STAR TS: old = "
1274 <<
" new = " << Form(
"%16llu", ulNewStarTsFull) <<
" Diff = -"
1303 default: LOG(error) <<
"Unknown Star Trigger messageindex: " << iMsgIndex;
1309 std::string sFolder =
"eTofMoni";
1311 LOG(info) <<
"create Histos for eTOF monitoring ";
1318 const Int_t iNbDecadesLog = 4;
1319 const Int_t iNbStepsDecade = 9;
1320 const Int_t iNbSubStepsInStep = 1;
1321 const Int_t iNbBinsLog =
1322 iNbStepsDecade + iNbStepsDecade * iNbSubStepsInStep * iNbDecadesLog + 1;
1323 Double_t dBinsLog[iNbBinsLog];
1325 for (Int_t iSubU = 0; iSubU < iNbStepsDecade; iSubU++)
1326 dBinsLog[iSubU] = 0.1 * (1 + iSubU);
1327 std::cout << std::endl;
1329 Double_t dSubstepSize = 1.0 / iNbSubStepsInStep;
1330 for (Int_t iDecade = 0; iDecade < iNbDecadesLog; iDecade++) {
1331 Double_t dBase = std::pow(10, iDecade);
1333 iNbStepsDecade + iDecade * iNbStepsDecade * iNbSubStepsInStep;
1334 for (Int_t iStep = 0; iStep < iNbStepsDecade; iStep++) {
1335 Int_t iStepIdx = iDecadeIdx + iStep * iNbSubStepsInStep;
1336 for (Int_t iSubStep = 0; iSubStep < iNbSubStepsInStep; iSubStep++) {
1337 dBinsLog[iStepIdx + iSubStep] =
1338 dBase * (1 + iStep) + dBase * dSubstepSize * iSubStep;
1342 dBinsLog[iNbBinsLog - 1] = std::pow(10, iNbDecadesLog);
1346 "Nb of message for each type; Type",
1360 "Nb of system message for each type; System Type",
1369 "SYS_GET4_SYNC_MISS");
1374 new TH2I(
"hGet4MessType",
1375 "Nb of message for each type per GET4; GET4 chip # ; Type",
1390 new TH2I(
"hGet4ChanScm",
1391 "SC messages per GET4 channel; GET4 channel # ; SC type",
1405 new TH2I(
"hGet4ChanErrors",
1406 "Error messages per GET4 channel; GET4 channel # ; Error",
1425 12,
"0x0b: DLL Lock error ");
1427 13,
"0x0c: DLL Reset invoc.");
1432 17,
"0x14: Add. Rising edge");
1434 18,
"0x15: Unpaired Falling");
1436 19,
"0x16: Sequence error ");
1441 "Epoch flags per GET4; GET4 chip # ; Type",
1456 "hGdpbAsicSpiCounts",
1457 "SPI messages count per Sector and ASIC; ASIC Idx []; Sector []; SPI msg[]",
1466 new TH2I(
"hGdpbMessageType",
1467 "Nb of message for each type per Sector; Type; Sector []",
1489 "Nb of system message for each type per Sector; System Type; Sector []",
1501 "SYS_GET4_SYNC_MISS");
1506 "hGdpbSysMessPattType",
1507 "Nb of pattern message for each type per Sector; Pattern Type; Sector []",
1522 "Epoch flags per Sector; Sector # ; Type",
1535 new TH2D(
"hGdpbEpochSyncEvo",
1536 "Epoch SYNC per second and Sector; Time[s]; Sector #; SYNC Nb",
1545 "hGdpbEpochMissEvo",
1546 "Epoch Missmatch per second and Sector; Time[s]; Sector #; Missmatch Nb",
1555 "hGdpbEndMsBufferNotEmpty",
1556 "MS where buffer is not empty at end, per Sector; Sector #; Bad MS",
1562 new TH2D(
"hGdpbEndMsDataLost",
1563 "Amount of lost data when buffer not empty at end, per MS and "
1564 "Sector; Sector #; Lost Data per bad MS []; Bad MS",
1573 new TH2I(
"hNbMissPatternPerMs",
1574 "Nb of missmatch pattern per MS for each sector; Number of "
1575 "pattern messages []; sector []; MS",
1584 "hPatternMissmatch",
1585 "Missmatch pattern integral per Sector; ASIC Pattern []; Sector []",
1594 new TH2I(
"hPatternEnable",
1595 "Enable pattern integral per Sector; ASIC Pattern []; Sector []",
1604 new TH2I(
"hPatternResync",
1605 "Resync pattern integral per Sector; ASIC Pattern []; Sector []",
1642 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1646 std::string sFolderSector = Form(
"sector%02u", uSectorIndex);
1647 std::string sFolderSectorPatt = Form(
"sector%02u/Pattern", uSectorIndex);
1648 std::string sFolderSectorTrig = Form(
"sector%02u/Trigger", uSectorIndex);
1651 new TH2I(Form(
"hGdpbGet4MessType_%02u", uGdpb),
1652 Form(
"Nb of message for each type per GET4 in Sector %02u; GET4 "
1667 Form(
"hGdpbGet4ChanScm_%02u", uGdpb),
1669 "SC messages per GET4 channel in Sector %02u; GET4 channel # ; SC type",
1684 new TH2I(Form(
"hGdpbGet4ChanErrors_%02u", uGdpb),
1685 Form(
"Error messages per GET4 channel in Sector %02u; GET4 "
1686 "channel # ; Error",
1695 1,
"0x00: Readout Init ");
1699 3,
"0x02: Epoch count sync");
1703 5,
"0x04: FIFO Write ");
1705 6,
"0x05: Lost event ");
1707 7,
"0x06: Channel state ");
1709 8,
"0x07: Token Ring state");
1713 10,
"0x09: Error Readout ");
1717 12,
"0x0b: DLL Lock error ");
1719 13,
"0x0c: DLL Reset invoc.");
1721 14,
"0x11: Overwrite ");
1723 15,
"0x12: ToT out of range");
1725 16,
"0x13: Event Discarded ");
1727 17,
"0x14: Add. Rising edge");
1729 18,
"0x15: Unpaired Falling");
1731 19,
"0x16: Sequence error ");
1733 20,
"0x17: Epoch Overflow ");
1735 21,
"0x7f: Unknown ");
1737 22,
"Corrupt/unsuprtd error");
1742 Form(
"RawFt_gDPB_%02u", uSectorIndex),
1743 Form(
"Raw FineTime Sector %02u Plot 0; channel; FineTime [bin]",
1753 Form(
"RawCt_gDPB_%02u", uSectorIndex),
1754 Form(
"Raw CoarseTime Sector %02u Plot 0; channel; CoarseTime [bin]",
1765 new TH2I(Form(
"RemapTot_gDPB_%02u", uSectorIndex),
1766 Form(
"Raw TOT Sector %02u remapped; PADI channel; TOT [bin]",
1776 new TH1I(Form(
"RemapChCount_gDPB_%02u", uSectorIndex),
1777 Form(
"Channel counts Sector %02u remapped; PADI channel; Hits",
1784 new TH2D(Form(
"RemapChRate_gDPB_%02u", uSectorIndex),
1785 Form(
"PADI channel rate Sector %02u; Time in run [s]; PADI "
1786 "channel; Rate [1/s]",
1798 new TH2I(Form(
"hGdpbPatternMissmatchEvo_%02u", uSectorIndex),
1799 Form(
"Missmatch pattern vs TS index in Sector %02u; TS # ; "
1810 Form(
"hGdpbPatternEnableEvo_%02u", uSectorIndex),
1812 "Enable pattern vs TS index in Sector %02u; TS # ; ASIC Pattern []",
1822 Form(
"hGdpbPatternResyncEvo%02u", uSectorIndex),
1824 "Resync pattern vs TS index in Sector %02u; TS # ; ASIC Pattern []",
1834 Form(
"hGdpbMissmatchEvoPerTs%02u", uSectorIndex),
1836 "Missmatch vs TS index in Sector %02u; TS # ; Asic []; Missmatch? []",
1846 new TH2I(Form(
"hGdpbMissmatchEnaEvoPerTs%02u", uSectorIndex),
1847 Form(
"Enable+Missmatch vs TS index in Sector %02u; TS # ; "
1848 "Asic []; Enabled & Missmatch? []",
1858 Form(
"hGdpbEnableEvoPerTs%02u", uSectorIndex),
1859 Form(
"Enable vs TS index in Sector %02u; TS # ; Asic []; Enabled? []",
1869 Form(
"hGdpbResyncEvoPerTs%02u", uSectorIndex),
1870 Form(
"Resync vs TS index in Sector %02u; TS # ; Asic []; Resync? []",
1880 new TH2I(Form(
"hGdpbResyncEnaEvoPerTs%02u", uSectorIndex),
1881 Form(
"Enable+Resync vs TS index in Sector %02u; TS # ; Asic "
1882 "[]; Enabled & Resync? []",
1892 Form(
"hGdpbStateEvoPerTs%02u", uSectorIndex),
1893 Form(
"ASIC State vs TS index in Sector %02u; TS # ; Asic []; 0 = Off, "
1894 "1 = OK, 2 = Miss, 3 = Resync, 4 = Miss + Resync []",
1907 new TH1F(Form(
"hTokenMsgType_gDPB_%02u", uSectorIndex),
1908 Form(
"STAR trigger Messages type Sector %02u; Type ; Counts",
1921 Form(
"hTriggerRate_gDPB_%02u", uSectorIndex),
1922 Form(
"STAR trigger signals per second Sector %02u; Time[s] ; Counts",
1929 Form(
"hCmdDaqVsTrig_gDPB_%02u", uSectorIndex),
1931 "STAR daq command VS STAR trigger command Sector %02u; DAQ ; TRIGGER",
1940 1,
"0x0: no-trig ");
1944 3,
"0x2: mast-rst");
1948 5,
"0x4: trigg. 0");
1997 new TH2I(Form(
"hStarTokenEvo_gDPB_%02u", uSectorIndex),
1998 Form(
"STAR token value VS time Sector %02u; Time in Run [s] ; "
1999 "STAR Token; Counts",
2009 new TProfile(Form(
"hStarTrigGdpbTsEvo_gDPB_%02u", uSectorIndex),
2010 Form(
"gDPB TS in STAR triger tokens for Sector %02u; Time "
2011 "in Run [s] ; gDPB TS;",
2018 new TProfile(Form(
"hStarTrigStarTsEvo_gDPB_%02u", uSectorIndex),
2019 Form(
"STAR TS in STAR triger tokens for Sector %02u; Time "
2020 "in Run [s] ; STAR TS;",
2064 "Evolution of Hit & error msgs counts vs time in run; "
2065 "Time in run [s]; Msgs Count []",
2071 "Evolution of Hit counts vs time in run; Time in run [s]; Hits Count []",
2077 "Evolution of Error counts vs time in run; Time in run [s]; Error Count []",
2082 "Evolution of LostEvent counts vs time in run; "
2083 "Time in run [s]; LostEvent Count []",
2089 "Evolution of Error Fraction vs time in run; "
2090 "Time in run [s]; Error Fract []",
2095 "Evolution of LostEvent Fraction vs time in "
2096 "run; Time in run [s]; LostEvent Fract []",
2102 new TH2I(
"hMsgCntPerMsEvo",
2103 "Evolution of Hit & error msgs counts, per MS vs time in run; "
2104 "Time in run [s]; Hits Count/MS []; MS",
2111 "Evolution of Hit counts, per MS vs time in run; "
2112 "Time in run [s]; Hits Count/MS []; MS",
2119 "Evolution of Error counts, per MS vs time in "
2120 "run; Time in run [s]; Error Count/MS []; MS",
2127 new TH2I(
"hLostEvtCntPerMsEvo",
2128 "Evolution of LostEvent, per MS counts vs time in run; Time in "
2129 "run [s]; LostEvent Count/MS []; MS",
2137 new TH2I(
"hErrorFractPerMsEvo",
2138 "Evolution of Error Fraction, per MS vs time in run; Time in run "
2139 "[s]; Error Fract/MS []; MS",
2147 new TH2I(
"hLostEvtFractPerMsEvo",
2148 "Evolution of LostEvent Fraction, per MS vs time in run; Time in "
2149 "run [s]; LostEvent Fract/MS []; MS",
2177 fcSummary =
new TCanvas(
"cSummary",
"gDPB Monitoring Summary");
2221 fcSummaryGdpb =
new TCanvas(
"cSummaryGdpb",
"gDPB Monitoring Summary");
2262 "cStarTrigTokenType",
"STAR trigger token message type per sector");
2264 new TCanvas(
"cStarTriggerRate",
"STAR trigger rate per sector");
2266 "STAR trigger command types per sector");
2268 "cStarTrigStarTokenEvo",
"STAR trigger token evolution per sector");
2270 new TCanvas(
"cStarTrigGdpbTsEvo",
"STAR trigger gDPB TS evo per sector");
2272 new TCanvas(
"cStarTrigStarTsEvo",
"STAR trigger STAR TS evo per sector");
2288 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
2293 Form(
"cSumSector%02u", uSectorIndex),
2294 Form(
"Summary per GET4 or channel for sector %02u", uSectorIndex)));
2364 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb)
2445 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
2498 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
2534 TDirectory* oldDir = NULL;
2535 TFile* histoFile = NULL;
2537 oldDir = gDirectory;
2539 histoFile =
new TFile(fsHistoFileName,
"RECREATE");
2541 if (
nullptr == histoFile)
return kFALSE;
2557 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {