58 , fvMsComponentsList()
61 , fbIgnoreOverlapMs(kFALSE)
62 , fuMsAcceptsPercent(100)
67 , fdTsCoreSizeInNs(0.0)
74 , fuNrOfChannelsPerGet4(0)
75 , fuNrOfChannelsPerFee(0)
77 , fuNrOfGet4PerGdpb(0)
78 , fuNrOfChannelsPerGdpb(0)
79 , fuRawDataPrintMsgNb(100000)
80 , fuRawDataPrintMsgIdx(fuRawDataPrintMsgNb)
81 , fbPrintAllHitsEnable(kFALSE)
82 , fbPrintAllEpochsEnable(kFALSE)
83 , fbPulserModeEnable(kFALSE)
84 , fbCoincMapsEnable(kFALSE)
86 , fuDiamondDpbIdx(10000)
88 fsHistoFilename(
"data/HistosMonitorTof.root")
89 , fulCurrentTsIndex(0)
98 , fviMsgCounter(11, 0)
104 , fvulGdpbTsFullLast()
105 , fvulStarTsFullLast()
107 , fvuStarDaqCmdLast()
108 , fvuStarTrigCmdLast()
110 , fvbFirstEpochSeen()
111 , fvulCurrentEpochCycle()
112 , fvulCurrentEpochFull()
113 , fulCurrentEpochTime(0)
116 , fvuFeeNbHitsLastMs()
117 , fdTsLastPulserHit()
118 , fvuCoincNbHitsLastMs()
119 , fvdCoincTsLastHit()
120 , dMinDt(-1. * (kuNbBinsDt *
gdpbv100::kdBinSize / 2.) -
gdpbv100::kdBinSize / 2.)
121 , dMaxDt(1. * (kuNbBinsDt *
gdpbv100::kdBinSize / 2.) +
gdpbv100::kdBinSize / 2.)
123 , fuNbFeePlotsPerGdpb(0)
125 , fdStartTimeLong(-1.)
126 , fdStartTimeMsSz(-1.)
127 , fuHistoryHistoSize(1800)
128 , fuHistoryHistoSizeLong(600)
129 , fdLastRmsUpdateTime(0.0)
130 , fdFitZoomWidthPs(0.0)
132 , fvhMsSzPerLink(12, NULL)
133 , fvhMsSzTimePerLink(12, NULL)
135 , fhSysMessType(NULL)
136 , fhGet4MessType(NULL)
137 , fhGet4ChanScm(NULL)
138 , fhGet4ChanErrors(NULL)
139 , fhGet4EpochFlags(NULL)
140 , fhGdpbMessType(NULL)
141 , fhGdpbSysMessType(NULL)
142 , fhGdpbSysMessPattType(NULL)
143 , fhGdpbEpochFlags(NULL)
144 , fhGdpbEpochSyncEvo(NULL)
145 , fhGdpbEpochMissEvo(NULL)
146 , fvhGdpbGet4MessType()
147 , fvhGdpbGet4ChanScm()
148 , fvhGdpbGet4ChanErrors()
149 , fhScmScalerCounters(NULL)
150 , fhScmDeadtimeCounters(NULL)
151 , fhScmSeuCounters(NULL)
152 , fhScmSeuCountersEvo(NULL)
153 , fhPatternMissmatch(NULL)
154 , fhPatternEnable(NULL)
155 , fhPatternResync(NULL)
156 , fvhGdpbPatternMissmatchEvo()
157 , fvhGdpbPatternEnableEvo()
158 , fvhGdpbPatternResyncEvo()
159 , fvvbGdpbLastMissmatchPattern()
160 , fvvbGdpbLastEnablePattern()
161 , fvvbGdpbLastResyncPattern()
162 , fvhGdpbMissmatchEvoPerTs()
163 , fvhGdpbMissmatchEnaEvoPerTs()
164 , fvhGdpbEnableEvoPerTs()
165 , fvhGdpbResyncEvoPerTs()
166 , fvhGdpbResyncEnaEvoPerTs()
167 , fvhGdpbStateEvoPerTs()
171 , fvhChannelRate_gDPB()
173 , fvhRemapChCount_gDPB()
174 , fvhRemapChRate_gDPB()
176 , fvhFeeErrorRate_gDPB()
177 , fvhFeeErrorRatio_gDPB()
178 , fvhFeeRateLong_gDPB()
179 , fvhFeeErrorRateLong_gDPB()
180 , fvhFeeErrorRatioLong_gDPB()
189 fvvuChanNbHitsPerMs()
190 , fhHitsPerMsFirstChan_gDPB()
191 , fvhChannelRatePerMs_gDPB()
196 , fvhStarTrigGdpbTsEvo()
197 , fvhStarTrigStarTsEvo()
198 , fvhTimeDiffPulser()
199 , fhTimeMeanPulser(NULL)
200 , fhTimeRmsPulser(NULL)
201 , fhTimeRmsZoomFitPuls(NULL)
202 , fhTimeResFitPuls(NULL)
203 , fvhPulserTimeDiffEvoGbtxGbtx()
204 , fvvhPulserTimeDiffEvoGdpbGdpb()
209 , fTimeLastHistoSaving()
255 LOG(info) <<
"ReInit parameter containers for " << GetName();
285 LOG(info) <<
"GDPB Id of TOF " << i <<
" : " << std::hex <<
fUnpackPar->
GetGdpbId(i) << std::dec;
298 for (UInt_t uGbtx = 0; uGbtx <
fuNrOfGbtx; ++uGbtx) {
305 TString sPrintoutLine =
"Nr. of RPCs per GBTx: ";
306 for (UInt_t uGbtx = 0; uGbtx <
fuNrOfGbtx; ++uGbtx)
307 sPrintoutLine += Form(
" %2d",
fviNrOfRpc[uGbtx]);
308 LOG(info) << sPrintoutLine;
310 sPrintoutLine =
"RPC type per GBTx: ";
311 for (UInt_t uGbtx = 0; uGbtx <
fuNrOfGbtx; ++uGbtx)
312 sPrintoutLine += Form(
" %2d",
fviRpcType[uGbtx]);
313 LOG(info) << sPrintoutLine;
315 sPrintoutLine =
"RPC side per GBTx: ";
316 for (UInt_t uGbtx = 0; uGbtx <
fuNrOfGbtx; ++uGbtx)
317 sPrintoutLine += Form(
" %2d",
fviRpcSide[uGbtx]);
318 LOG(info) << sPrintoutLine;
320 sPrintoutLine =
"Module ID per GBTx: ";
321 for (UInt_t uGbtx = 0; uGbtx <
fuNrOfGbtx; ++uGbtx)
323 LOG(info) << sPrintoutLine;
343 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
367 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
389 UInt_t uGet4topadi[32] = {4, 3, 2, 1,
390 8, 7, 6, 5, 12, 11, 10, 9, 16, 15, 14, 13, 20, 19,
391 18, 17, 24, 23, 22, 21, 28, 27, 26, 25, 32, 31, 30, 29};
394 UInt_t uPaditoget4[32] = {4, 3, 2, 1,
395 12, 11, 10, 9, 20, 19, 18, 17, 28, 27, 26, 25, 32, 31,
396 30, 29, 8, 7, 6, 5, 16, 15, 14, 13, 24, 23, 22, 21};
407 UInt_t kuElinkToGet4[
kuNbGet4PerGbtx] = {27, 2, 7, 3, 31, 26, 30, 1, 33, 37, 32, 13, 9, 14,
408 10, 15, 17, 21, 16, 35, 34, 38, 25, 24, 0, 6, 20, 23,
409 18, 22, 28, 4, 29, 5, 19, 36, 39, 8, 12, 11};
410 UInt_t kuGet4ToElink[
kuNbGet4PerGbtx] = {24, 7, 1, 3, 31, 33, 25, 2, 37, 12, 14, 39, 38, 11,
411 13, 15, 18, 16, 28, 34, 26, 17, 29, 27, 23, 22, 5, 0,
412 30, 32, 6, 4, 10, 8, 20, 19, 35, 9, 21, 36};
465 LOG(info) <<
"create Histos for " <<
fuNrOfGdpbs <<
" gDPBs ";
467 THttpServer* server = FairRunOnline::Instance()->GetHttpServer();
476 Double_t dBinSzG4v2 = (6250. / 112.);
481 name =
"hMessageType";
482 title =
"Nb of message for each type; Type";
495 name =
"hSysMessType";
496 title =
"Nb of system message for each type; System Type";
504 name =
"hGet4MessType";
505 title =
"Nb of message for each type per GET4; GET4 chip # ; Type";
515 name =
"hGet4ChanScm";
516 title =
"SC messages per GET4 channel; GET4 channel # ; SC type";
526 name =
"hGet4ChanErrors";
527 title =
"Error messages per GET4 channel; GET4 channel # ; Error";
553 name =
"hGet4EpochFlags";
554 title =
"Epoch flags per GET4; GET4 chip # ; Type";
562 name =
"hGdpbMessageType";
563 title =
"Nb of message for each type per Gdpb; Type; Gdpb Idx []";
577 name =
"hGdpbSysMessType";
578 title =
"Nb of system message for each type per Gdpb; System Type; Gdpb Idx []";
587 name =
"hGdpbSysMessPattType";
588 title =
"Nb of pattern message for each type per Gdpb; Pattern Type; Gdpb Idx []";
596 name =
"hGdpbEpochFlags";
597 title =
"Epoch flags per gDPB; gDPB # ; Type";
605 name = Form(
"hGdpbEpochSyncEvo");
606 title = Form(
"Epoch SYNC per second and gDPB; Time[s]; gDPB #; SYNC Nb");
611 name = Form(
"hGdpbEpochMissEvo");
612 title = Form(
"Epoch Missmatch per second and gDPB; Time[s]; gDPB #; Missmatch Nb");
618 name =
"hScmScalerCounters";
619 title =
"Content of Scaler counter SC messages; Scaler counter [hit]; Channel []";
623 name =
"hScmDeadtimeCounters";
624 title =
"Content of Deadtime counter SC messages; Deadtime [Clk Cycles]; "
629 name =
"hScmSeuCounters";
630 title =
"Content of SEU counter SC messages; SEU []; Channel []";
634 name =
"hScmSeuCountersEvo";
635 title =
"SEU counter rate from SC messages; Time in Run [s]; Channel []; SEU []";
640 name =
"hPatternMissmatch";
641 title =
"Missmatch pattern integral per Gdpb; ASIC Pattern []; Gdpb Idx []";
644 name =
"hPatternEnable";
645 title =
"Enable pattern integral per Gdpb; ASIC Pattern []; Gdpb Idx []";
648 name =
"hPatternResync";
649 title =
"Resync pattern integral per Gdpb; ASIC Pattern []; Gdpb Idx []";
660 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
663 name = Form(
"hGdpbGet4MessType_%02u", uGdpb);
664 title = Form(
"Nb of message for each type per GET4 in gDPB %02u; GET4 chip # ; Type", uGdpb);
672 name = Form(
"hGdpbGet4ChanScm_%02u", uGdpb);
673 title = Form(
"SC messages per GET4 channel in gDPB %02u; GET4 channel # ; SC type", uGdpb);
683 name = Form(
"hGdpbGet4ChanErrors_%02u", uGdpb);
684 title = Form(
"Error messages per GET4 channel in gDPB %02u; GET4 channel # ; Error", uGdpb);
711 name = Form(
"hGdpbPatternMissmatchEvo_%02u", uGdpb);
712 title = Form(
"Missmatch pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpb);
716 name = Form(
"hGdpbPatternEnableEvo_%02u", uGdpb);
717 title = Form(
"Enable pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpb);
721 name = Form(
"hGdpbPatternResyncEvo%02u", uGdpb);
722 title = Form(
"Resync pattern vs TS index in gDPB %02u; TS # ; ASIC Pattern []", uGdpb);
730 name = Form(
"hGdpbMissmatchEvoPerTs%02u", uGdpb);
731 title = Form(
"Missmatch vs TS index in gDPB %02u; TS # ; Asic []; Missmatch? []", uGdpb);
734 name = Form(
"hGdpbMissmatchEnaEvoPerTs%02u", uGdpb);
735 title = Form(
"Enable+Missmatch vs TS index in gDPB %02u; TS # ; Asic []; "
736 "Enabled & Missmatch? []",
741 name = Form(
"hGdpbEnableEvoPerTs%02u", uGdpb);
742 title = Form(
"Enable vs TS index in gDPB %02u; TS # ; Asic []; Enabled? []", uGdpb);
746 name = Form(
"hGdpbResyncEvoPerTs%02u", uGdpb);
747 title = Form(
"Resync vs TS index in gDPB %02u; TS # ; Asic []; Resync? []", uGdpb);
749 name = Form(
"hGdpbResyncEnaEvoPerTs%02u", uGdpb);
750 title = Form(
"Enable+Resync vs TS index in gDPB %02u; TS # ; Asic []; "
751 "Enabled & Resync? []",
756 name = Form(
"hGdpbStateEvoPerTs%02u", uGdpb);
757 title = Form(
"ASIC State vs TS index in gDPB %02u; TS # ; Asic []; 0 = "
758 "Off, 1 = OK, 2 = Miss, 3 = Resync, 4 = Miss + Resync []",
763 name = Form(
"RawFt_gDPB_%02u", uGdpb);
764 title = Form(
"Raw FineTime gDPB %02u Plot 0; channel; FineTime [bin]", uGdpb);
769 name = Form(
"RawTot_gDPB_%02u", uGdpb);
770 title = Form(
"Raw TOT gDPB %02u; channel; TOT [bin]", uGdpb);
775 name = Form(
"ChCount_gDPB_%02u", uGdpb);
776 title = Form(
"Channel counts gDPB %02u; channel; Hits", uGdpb);
781 name = Form(
"ChRate_gDPB_%02u", uGdpb);
782 title = Form(
"Channel rate gDPB %02u; Time in run [s]; channel; Rate [1/s]", uGdpb);
788 name = Form(
"RemapTot_gDPB_%02u", uGdpb);
789 title = Form(
"Raw TOT gDPB %02u remapped; PADI channel; TOT [bin]", uGdpb);
794 name = Form(
"RemapChCount_gDPB_%02u", uGdpb);
795 title = Form(
"Channel counts gDPB %02u remapped; PADI channel; Hits", uGdpb);
800 name = Form(
"RemapChRate_gDPB_%02u", uGdpb);
801 title = Form(
"PADI channel rate gDPB %02u; Time in run [s]; PADI channel; Rate [1/s]", uGdpb);
808 name = Form(
"FeeRate_gDPB_g%02u_f%1u", uGdpb, uFee);
809 title = Form(
"Counts per second in Fee %1u of gDPB %02u; Time[s] ; Counts", uFee, uGdpb);
812 name = Form(
"FeeErrorRate_gDPB_g%02u_f%1u", uGdpb, uFee);
813 title = Form(
"Error Counts per second in Fee %1u of gDPB %02u; Time[s] ; "
818 name = Form(
"FeeErrorRatio_gDPB_g%02u_f%1u", uGdpb, uFee);
819 title = Form(
"Error to data ratio per second in Fee %1u of gDPB %02u; "
820 "Time[s] ; Error ratio[]",
825 name = Form(
"FeeRateLong_gDPB_g%02u_f%1u", uGdpb, uFee);
826 title = Form(
"Counts per minutes in Fee %1u of gDPB %02u; Time[min] ; Counts", uFee, uGdpb);
830 name = Form(
"FeeErrorRateLong_gDPB_g%02u_f%1u", uGdpb, uFee);
831 title = Form(
"Error Counts per minutes in Fee %1u of gDPB %02u; "
832 "Time[min] ; Error Counts",
837 name = Form(
"FeeErrorRatioLong_gDPB_g%02u_f%1u", uGdpb, uFee);
838 title = Form(
"Error to data ratio per minutes in Fee %1u of gDPB %02u; "
839 "Time[min] ; Error ratio[]",
847 Form(
"Hit Counts per MS in first channel in gDPB %02u; TS []; "
848 "Hits/MS []; MS nb[]",
850 10000, 0, 10000, 150, -0.5, 149.5));
852 Form(
"Mean Hit count per MS and channel vs Time in gDPB "
853 "%02u; TS []; Channel []; <Hits/Ms> []",
860 name = Form(
"hTokenMsgType_gDPB_%02u", uGdpb);
861 title = Form(
"STAR trigger Messages type gDPB %02u; Type ; Counts", uGdpb);
869 name = Form(
"hTriggerRate_gDPB_%02u", uGdpb);
870 title = Form(
"STAR trigger signals per second gDPB %02u; Time[s] ; Counts", uGdpb);
874 name = Form(
"hCmdDaqVsTrig_gDPB_%02u", uGdpb);
875 title = Form(
"STAR daq command VS STAR trigger command gDPB %02u; DAQ ; TRIGGER", uGdpb);
876 fvhCmdDaqVsTrig.push_back(
new TH2I(name, title, 16, 0, 16, 16, 0, 16));
915 name = Form(
"hStarTokenEvo_gDPB_%02u", uGdpb);
916 title = Form(
"STAR token value VS time gDPB %02u; Time in Run [s] ; STAR "
922 name = Form(
"hStarTrigGdpbTsEvo_gDPB_%02u", uGdpb);
923 title = Form(
"gDPB TS in STAR triger tokens for gDPB %02u; Time in Run [s] ; gDPB TS;", uGdpb);
926 name = Form(
"hStarTrigStarTsEvo_gDPB_%02u", uGdpb);
927 title = Form(
"STAR TS in STAR triger tokens for gDPB %02u; Time in Run [s] ; STAR TS;", uGdpb);
975 new TH1I(Form(
"hTimeDiffPulser_g%02u_f%1u_g%02u_f%1u", uGdpbA, uFeeIdA, uGdpbB, uFeeIdB),
976 Form(
"Time difference for pulser on gDPB %02u FEE %1u and "
977 "gDPB %02u FEE %1u; DeltaT [ps]; Counts",
978 uGdpbA, uFeeIdA, uGdpbB, uFeeIdB),
986 name =
"hTimeMeanPulser";
987 fhTimeMeanPulser =
new TH2D(name.Data(),
"Time difference Mean for each FEE pairs; FEE A; FEE B ; Mean [ps]",
991 name =
"hTimeRmsPulser";
992 fhTimeRmsPulser =
new TH2D(name.Data(),
"Time difference RMS for each FEE pairs; FEE A; FEE B ; RMS [ps]",
996 name =
"hTimeRmsZoomFitPuls";
998 "Time difference RMS after zoom for each "
999 "FEE pairs; FEE A; FEE B ; RMS [ps]",
1003 name =
"hTimeResFitPuls";
1005 "Time difference Res from fit for each FEE "
1006 "pairs; FEE A; FEE B ; Sigma [ps]",
1012 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1014 name = Form(
"hPulserTimeDiffEvoGdpb%02uGbtx00Gbtx%02u", uGdpb, uGbtx + 1);
1016 new TProfile(name.Data(),
1017 Form(
"Time difference of the 1st FEE in the 1st GBTx of gDPB %02u "
1018 "vs GBTx %02u; time in run [min]; dt [ps]",
1024 for (UInt_t uGdpbB = uGdpb + 1; uGdpbB <
fuNrOfGdpbs; ++uGdpbB) {
1025 name = Form(
"hPulserTimeDiffEvoGdpb%02uGdpb%02u", uGdpb, uGdpbB);
1027 new TProfile(name.Data(),
1028 Form(
"Time difference of the 1st FEE in the 1st GBTx of "
1029 "gDPB %02u vs %02u; time in run [min]; dt [ps]",
1038 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1039 name = Form(
"hCoincMapAllChanGdpb%02u", uGdpb);
1041 Form(
"Coincidence map of all channels of gDPB %02u; Chan A "
1042 "[]; Chan B[]; Coinc. []",
1047 name = Form(
"hCoincMeanAllChanGdpb%02u", uGdpb);
1049 Form(
"Coincidence mean of all channels of gDPB %02u; "
1050 "Chan A []; Chan B[]; Mean dt [ps]",
1081 for (UInt_t uTotPlot = 0; uTotPlot <
fvhRawTot_gDPB.size(); ++uTotPlot)
1096 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1148 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1153 for (UInt_t uGdpbB = uGdpb + 1; uGdpbB <
fuNrOfGdpbs; ++uGdpbB)
1159 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1165 server->RegisterCommand(
"/Reset_All_eTOF",
"bMcbmMoniTofResetHistos=kTRUE");
1166 server->RegisterCommand(
"/Save_All_eTof",
"bMcbmMoniTofSaveHistos=kTRUE");
1167 server->RegisterCommand(
"/Update_PulsFit",
"bMcbmMoniTofUpdateZoomedFit=kTRUE");
1168 server->RegisterCommand(
"/Print_Raw_Data",
"bMcbmMoniTofRawDataPrint=kTRUE");
1169 server->RegisterCommand(
"/Print_AllHits",
"bMcbmMoniTofPrintAllHitsEna=kTRUE");
1170 server->RegisterCommand(
"/Print_AllEps",
"bMcbmMoniTofPrintAllEpochsEna=kTRUE");
1172 server->Restrict(
"/Reset_All_eTof",
"allow=admin");
1173 server->Restrict(
"/Save_All_eTof",
"allow=admin");
1174 server->Restrict(
"/Update_PulsFit",
"allow=admin");
1175 server->Restrict(
"/Print_Raw_Data",
"allow=admin");
1176 server->Restrict(
"/Print_AllHits",
"allow=admin");
1177 server->Restrict(
"/Print_AllEps",
"allow=admin");
1183 fcSummary =
new TCanvas(
"cSummary",
"gDPB Monitoring Summary");
1211 server->Register(
"/canvases",
fcSummary);
1215 fcSummaryGdpb =
new TCanvas(
"cSummaryGdpb",
"gDPB Monitoring Summary");
1241 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1242 TCanvas* cSumGdpbGet4 =
1243 new TCanvas(Form(
"cSumGdpbGet4_g%02u", uGdpb), Form(
"Summary per GET4 or channel for gDPB %02u", uGdpb), w,
h);
1244 cSumGdpbGet4->Divide(2, 2);
1246 cSumGdpbGet4->cd(1);
1250 cSumGdpbGet4->cd(2);
1254 cSumGdpbGet4->cd(3);
1258 server->Register(
"/canvases", cSumGdpbGet4);
1263 TCanvas* cFeeRates =
new TCanvas(
"cFeeRates",
"gDPB Monitoring FEE rates", w,
h);
1266 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1277 server->Register(
"/canvases", cFeeRates);
1281 TCanvas* cFeeErrRatio =
new TCanvas(
"cFeeErrRatio",
"gDPB Monitoring FEE error ratios", w,
h);
1284 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1292 server->Register(
"/canvases", cFeeErrRatio);
1297 TCanvas* cFeeRatesLong =
new TCanvas(
"cFeeRatesLong",
"gDPB Monitoring FEE rates", w,
h);
1300 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1311 server->Register(
"/canvases", cFeeRatesLong);
1315 TCanvas* cFeeErrRatioLong =
new TCanvas(
"cFeeErrRatioLong",
"gDPB Monitoring FEE error ratios", w,
h);
1318 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1326 server->Register(
"/canvases", cFeeErrRatioLong);
1330 fcGdpbChannelCount =
new TCanvas(
"cGdpbChannelCount",
"Integrated Get4 channel counts per gDPB");
1332 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1344 fcGdpbRemapChCount =
new TCanvas(
"cGdpbRemapChCount",
"Integrated PADI channel counts per gDPB");
1346 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1358 fcGdpbChannelRate =
new TCanvas(
"cGdpbChannelRate",
"Get4 channel rate per gDPB");
1360 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1372 fcGdpbRemapChRate =
new TCanvas(
"cGdpbRemapChRate",
"PADI channel rate per gDPB");
1374 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1386 TCanvas* cTotPnt = NULL;
1387 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1388 cTotPnt =
new TCanvas(Form(
"cTot_g%02u", uGdpb), Form(
"gDPB %02u TOT distributions", uGdpb), w,
h);
1397 server->Register(
"/canvases", cTotPnt);
1400 cTotPnt =
new TCanvas(
"cTot_all",
"TOT distributions", w,
h);
1402 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1403 cTotPnt->cd(1 + uGdpb);
1411 server->Register(
"/canvases", cTotPnt);
1416 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1417 cTotPnt =
new TCanvas(Form(
"cTotRemap_g%02u", uGdpb), Form(
"PADI ch gDPB %02u TOT distributions", uGdpb), w,
h);
1426 server->Register(
"/canvases", cTotPnt);
1428 cTotPnt =
new TCanvas(
"cTotRemap_all",
"TOT distributions", w,
h);
1430 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; ++uGdpb) {
1431 cTotPnt->cd(1 + uGdpb);
1439 server->Register(
"/canvases", cTotPnt);
1471 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; uGdpb++) {
1472 TCanvas* cStarToken =
1473 new TCanvas(Form(
"cStarToken_g%02u", uGdpb), Form(
"STAR token detection info for gDPB %02u", uGdpb), w,
h);
1474 cStarToken->Divide(2, 2);
1495 new TCanvas(
"cPulser",
"Time difference RMS for pulser channels when FEE pulser mode is ON", w,
h);
1496 cPulser->Divide(2, 2);
1518 server->Register(
"/canvases", cPulser);
1522 TCanvas* cPulserEvo =
1523 new TCanvas(
"cPulserEvo",
"Time difference evolution between 1st FEE of 1st GBTx of gDPB pairs", w,
h);
1525 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs - 1; uGdpb++) {
1526 cPulserEvo->cd(1 + uGdpb);
1534 server->Register(
"/canvases", cPulserEvo);
1537 for (UInt_t uGdpb = 0; uGdpb <
fuNrOfGdpbs; uGdpb++) {
1538 TCanvas* cPulserEvoGbtx =
new TCanvas(Form(
"cPulserEvoGbtx%02u", uGdpb),
1539 Form(
"Time difference evolution between 1st FEE of GBTx "
1540 "pairs in gDPB %02u",
1546 cPulserEvoGbtx->cd(1 + uGbtx);
1554 server->Register(
"/canvases", cPulserEvoGbtx);
1581 fcMsSizeAll =
dynamic_cast<TCanvas*
>(gROOT->FindObject(
"cMsSizeAll"));
1583 fcMsSizeAll =
new TCanvas(
"cMsSizeAll",
"Evolution of MS size in last 300 s", w,
h);
1585 LOG(info) <<
"Created MS size canvas in TOF monitor";
1588 LOG(info) <<
"Recovered MS size canvas in TOF monitor";
1592 LOG(info) <<
"Leaving CreateHistograms";
2188 if (0 < ulCurEpochGdpbGet4) ulCurEpochGdpbGet4--;
2268 for( UInt_t uFeeB = 0; uFeeB < uFeeNrInSys; uFeeB++)
2269 if( NULL != fvhTimeDiffPulser[uFeeB][uFeeNrInSys] )
2271 Double_t dTimeDiff = 1e3 * ( fdTsLastPulserHit[ uFeeNrInSys ] - fdTsLastPulserHit[ uFeeB ] );
2272 if( TMath::Abs( dTimeDiff ) < kdMaxDtPulserPs )
2274 fvhTimeDiffPulser[uFeeB][uFeeNrInSys]->Fill( dTimeDiff );
2277 if( 0 == uFeeInGbtx && 0 == uFeeB % kuNbFeePerGbtx )
2280 if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2282 if( 0 == uFeeB / kuNbFeePerGbtx )
2284 UInt_t uPlotIdx = fuGdpbNr * ( kuNbGbtxPerGdpb - 1) + uGbtxNr - 1;
2285 fvhPulserTimeDiffEvoGbtxGbtx[ uPlotIdx ]->Fill( 1e-9 / 60.0 * (dHitTime - fdStartTime), dTimeDiff );
2287 } // if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2288 else // if( NULL != fvvhPulserTimeDiffEvoGdpbGdpb[ uFeeB / fuNrOfFeePerGdpb ][ fuGdpbNr ] )
2291 if( 0 == uGbtxNr && 0 == uFeeB / kuNbFeePerGbtx )
2292 fvvhPulserTimeDiffEvoGdpbGdpb[ uFeeB / fuNrOfFeePerGdpb ][ fuGdpbNr ]->Fill(
2293 1e-9 / 60.0 * (dHitTime - fdStartTime), dTimeDiff );
2294 } // else of if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2295 } // if( 0 == uFeeInGbtx && 0 == uFeeB % kuNbFeePerGbtx )
2296 } // if( TMath::Abs( dTimeDiff ) < kdMaxDtPulserPs )
2297 // else if( 10 == uFeeB && 20 == uFeeNrInSys )
2298 // LOG(info) << "new in 20 " << dTimeDiff;
2299 } // if( NULL != fvhTimeDiffPulser[uFeeB][uFeeB] )
2302 for( UInt_t uFeeB = uFeeNrInSys + 1; uFeeB < fuNrOfFeePerGdpb * fuNrOfGdpbs; uFeeB++)
2303 if( NULL != fvhTimeDiffPulser[uFeeNrInSys][uFeeB] )
2305 Double_t dTimeDiff = 1e3 * ( fdTsLastPulserHit[ uFeeB ] - fdTsLastPulserHit[ uFeeNrInSys ] );
2306 if( TMath::Abs( dTimeDiff ) < kdMaxDtPulserPs )
2308 fvhTimeDiffPulser[uFeeNrInSys][uFeeB]->Fill( dTimeDiff );
2311 if( 0 == uFeeInGbtx && 0 == uFeeB % kuNbFeePerGbtx )
2314 if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2318 UInt_t uPlotIdx = fuGdpbNr * ( kuNbGbtxPerGdpb - 1)
2319 + ( uFeeB - fuGdpbNr * fuNrOfFeePerGdpb) / kuNbFeePerGbtx - 1;
2320 fvhPulserTimeDiffEvoGbtxGbtx[ uPlotIdx ]->Fill( 1e-9 / 60.0 * (dHitTime - fdStartTime), dTimeDiff );
2321 } // if( 0 == uGbtxNr )
2322 } // if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2323 else // if( NULL != fvvhPulserTimeDiffEvoGdpbGdpb[ uFeeB / fuNrOfFeePerGdpb ][ fuGdpbNr ] )
2326 if( 0 == uGbtxNr && 0 == uFeeB / kuNbFeePerGbtx )
2327 fvvhPulserTimeDiffEvoGdpbGdpb[ fuGdpbNr ][ uFeeB / fuNrOfFeePerGdpb ]->Fill(
2328 1e-9 / 60.0 * (dHitTime - fdStartTime), dTimeDiff );
2329 } // else of if( fuGdpbNr == uFeeB / fuNrOfFeePerGdpb )
2330 } // if( 0 == uFeeInGbtx && 0 == uFeeB % kuNbFeePerGbtx )
2331 } // if( TMath::Abs( dTimeDiff ) < kdMaxDtPulserPs )
2332 // else if( 10 == uFeeNrInSys && 20 == uFeeB )
2333 // LOG(info) << "new in 10 " << dTimeDiff;
2334 } // if( NULL != fvhTimeDiffPulser[uFeeNrInSys][uFeeB] )
2370 LOG(info) <<
"Hit: " << Form(
"0x%08x ",
fuGdpbId) <<
", " << std::setw(2) <<
fuGet4Nr <<
", " << std::setw(3)
2371 << uChannel <<
", " << std::setw(3) << uTot <<
", epoch " << std::setw(3) << ulCurEpochGdpbGet4
2372 <<
", FullTime Clk " << Form(
"%12lu ", ulHitTime) <<
", FullTime s " << Form(
"%12.9f ", dHitTime / 1e9)
2373 <<
", FineTime " << uFts;