CbmRoot
Loading...
Searching...
No Matches
CbmMcbm2018MonitorSts.h
Go to the documentation of this file.
1/* Copyright (C) 2018-2020 Facility for Antiproton and Ion Research in Europe, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau [committer] */
4
5// -----------------------------------------------------------------------------
6// ----- -----
7// ----- CbmMcbm2018MonitorSts -----
8// ----- Created 11/05/18 by P.-A. Loizeau -----
9// ----- -----
10// -----------------------------------------------------------------------------
11
12#ifndef CBMMCBM2018MONITORSTS_H
13#define CBMMCBM2018MONITORSTS_H
14
15#include "Timeslice.hpp"
16
17// Data
18#include "StsXyterFinalHit.h"
19#include "StsXyterMessage.h"
20
21// CbmRoot
22#include "CbmHistManager.h"
23#include "CbmMcbmUnpack.h"
24
25// C++11
26#include <chrono>
27
28// C/C++
29#include <map>
30#include <set>
31#include <vector>
32
34class CbmCern2017UnpackParSts;
35
37public:
39 virtual ~CbmMcbm2018MonitorSts();
40
41 virtual Bool_t Init();
42
43 virtual Bool_t DoUnpack(const fles::Timeslice& ts, size_t component);
44
45 virtual void Reset();
46
47 virtual void Finish();
48
49 void SetParContainers();
50
51 Bool_t InitContainers();
52
53 Bool_t ReInitContainers();
54
55 virtual void AddMsComponentToList(size_t component, UShort_t usDetectorId);
56 virtual void SetNbMsInTs(size_t uCoreMsNb, size_t uOverlapMsNb);
57 void SetMsOverlap(size_t uOverlapMsNb = 1) { fuNbOverMsPerTs = uOverlapMsNb; }
58 size_t GetMsOverlap() { return fuNbOverMsPerTs; }
59 void SetIgnoreOverlapMs(Bool_t bFlagIn = kTRUE) { fbIgnoreOverlapMs = bFlagIn; }
60
61 void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize = 5);
62
63 void ResetAllHistos();
64 void SaveAllHistos(TString sFileName = "");
65 void SavePulserHistos(TString sFileName = "");
66 void SetHistoFileName(TString sFileName = "data/SetupHistos.root") { fsHistoFileFullname = sFileName; }
67
75 void SetLongDurationLimits(UInt_t uDurationSeconds = 3600, UInt_t uBinSize = 1);
76 // void SetEnableCoincidenceMaps( Bool_t bEnableCoincidenceMapsOn = kTRUE ) { fbEnableCoincidenceMaps = bEnableCoincidenceMapsOn; }
77 // void SetCoincidenceBorder( Double_t dCenterPos, Double_t dBorderVal );
78 void SetFebChanCoincidenceLimitNs(Double_t dLimitIn) { fdFebChanCoincidenceLimit = dLimitIn; }
79 void SetEnableCheckBugSmx20(Bool_t bEnable = kTRUE) { fbEnableCheckBugSmx20 = bEnable; }
80 void UseNoiseLimitsSmx2LogicError(Bool_t bUseNoise = kTRUE) { fbSmx2ErrorUseNoiseLevels = bUseNoise; }
81
83 void SetBinningFwFlag(Bool_t bEnable = kTRUE) { fbBinningFw = bEnable; }
84
85 void UseDaqBuffer(Bool_t) {};
86
87private:
88 // Parameters
89 // Control flags
90 std::vector<Bool_t> fvbMaskedComponents;
91 // FLES containers
92 std::vector<size_t> fvMsComponentsList;
96 // Unpacking and mapping
98 UInt_t fuNbModules;
99 std::vector<Int_t>
101 std::vector<Int_t> fviModAddress;
102 UInt_t fuNrOfDpbs;
103 std::map<UInt_t, UInt_t> fDpbIdIndexMap;
104 std::vector<std::vector<Bool_t>>
106 UInt_t fuNbFebs;
108 std::vector<std::vector<std::vector<Int_t>>>
110 std::vector<std::vector<std::vector<Int_t>>>
112 std::vector<std::vector<std::vector<Int_t>>>
114 std::vector<std::vector<std::vector<Double_t>>>
116 std::vector<std::vector<std::vector<Double_t>>>
118
119 // Constants
120 static const Int_t kiMaxNbFlibLinks = 32;
121 static const UInt_t kuBytesPerMessage = 4;
122
129 // Bool_t fbEnableCoincidenceMaps;
132 Bool_t fbBinningFw = kFALSE;
137 std::map<stsxyter::MessType, UInt_t> fmMsgCounter;
139 UInt_t fuCurrDpbId;
143
145 std::vector<ULong64_t> fvulCurrentTsMsb;
146 std::vector<UInt_t> fvuCurrentTsMsbCycle;
147 std::vector<UInt_t> fvuInitialHeaderDone;
148 std::vector<UInt_t> fvuInitialTsMsbCycleHeader;
149 std::vector<UInt_t> fvuElinkLastTsHit;
151 std::vector<std::vector<ULong64_t>> fvulChanLastHitTime;
152 std::vector<std::vector<Double_t>> fvdChanLastHitTime;
153 std::vector<Double_t> fvdPrevMsTime;
154 std::vector<Double_t> fvdMsTime;
155 std::vector<std::vector<std::vector<UInt_t>>> fvuChanNbHitsInMs;
156 std::vector<std::vector<std::vector<Double_t>>>
158 std::vector<std::vector<std::vector<UShort_t>>>
160 // std::vector< std::vector< std::multiset< stsxyter::FinalHit > > > fvmChanHitsInTs; //! All hits (time & ADC) in bins in last TS for each Channel
162 Double_t fdStartTime;
164 std::chrono::steady_clock::time_point
168 std::vector<stsxyter::FinalHit>
170 std::vector<std::vector<stsxyter::FinalHit>>
172 std::vector<std::vector<stsxyter::FinalHit>>
178 std::vector<Double_t> fvdFebTimeSecLastRateUpdate;
180 std::vector<std::vector<Double_t>> fvdFebChanCountsSinceLastRateUpdate;
186
188 Double_t fdCoincCenter; // ns
189 Double_t fdCoincBorder; // ns, +/-
190 Double_t fdCoincMin; // ns
191 Double_t fdCoincMax; // ns
192
206
208 // UInt_t kuNbAsicPerFeb = 8;
210 std::vector<TH1*> fhStsFebChanCntRaw;
211 std::vector<TH1*> fhStsFebChanCntRawGood;
212 std::vector<TH2*> fhStsFebChanAdcRaw;
213 std::vector<TProfile*> fhStsFebChanAdcRawProf;
214 // std::vector<TH2 *> fhStsFebChanAdcCal;
215 // std::vector<TProfile*> fhStsFebChanAdcCalProf;
216 std::vector<TH2*> fhStsFebChanRawTs;
217 std::vector<TH2*> fhStsFebChanMissEvt;
218 std::vector<TH2*> fhStsFebChanMissEvtEvo;
219 std::vector<TH2*> fhStsFebAsicMissEvtEvo;
220 std::vector<TH1*> fhStsFebMissEvtEvo;
221 std::vector<TH2*> fhStsFebChanHitRateEvo;
222 std::vector<TProfile*> fhStsFebChanHitRateProf;
223 std::vector<TH2*> fhStsFebAsicHitRateEvo;
224 std::vector<TH1*> fhStsFebHitRateEvo;
225 std::vector<TH2*> fhStsFebChanHitRateEvoLong;
226 std::vector<TH2*> fhStsFebAsicHitRateEvoLong;
227 std::vector<TH1*> fhStsFebHitRateEvoLong;
228 std::vector<std::vector<Double_t>> fdStsFebChanLastTimeForDist;
229 std::vector<TH2*> fhStsFebChanDistT;
231 std::vector<TProfile*> fhStsFebChanCloseHitsRatio;
232 /*
233 std::vector< std::vector<TH1*> > fhStsFebChanDtCoinc;
234 std::vector< std::vector<TH2*> > fhStsFebChanCoinc;
235
237 std::vector< TH1* > fhStsModulePNCoincDt;
238 std::vector< TH2* > fhStsModulePNCoincDtAsicP;
239 std::vector< TH2* > fhStsModulePNCoincDtAsicN;
240 std::vector< TH2* > fhStsModulePNCoincChan;
241 std::vector< TH2* > fhStsModulePNCoincAdc;
242 std::vector< TH2* > fhStsModuleCoincAdcChanP;
243 std::vector< TH2* > fhStsModuleCoincAdcChanN;
244 std::vector< TH2* > fhStsModuleCoincMap;
245*/
248 static const UInt_t kuSmxErrCoincWinNbHits = 11;
249 constexpr static const Double_t kdSmxErrCoincWinBeg = 0; //ns, true for time sorted hits!
251 constexpr static const Double_t kdSmxErrCoincWinMainM07 = 320; //ns
252 constexpr static const Double_t kdSmxErrCoincWinMainM08 = 380; //ns
253 constexpr static const Double_t kdSmxErrCoincWinMainM09 = 450; //ns
254 constexpr static const Double_t kdSmxErrCoincWinMainM10 = 510; //ns
255 constexpr static const Double_t kdSmxErrCoincWinMainM11 = 570; //ns
257 constexpr static const Double_t kdSmxErrCoincWinNoiseM07 = 390; //ns
258 constexpr static const Double_t kdSmxErrCoincWinNoiseM08 = 460; //ns
259 constexpr static const Double_t kdSmxErrCoincWinNoiseM09 = 540; //ns
260 constexpr static const Double_t kdSmxErrCoincWinNoiseM10 = 600; //ns
261 constexpr static const Double_t kdSmxErrCoincWinNoiseM11 = 660; //ns
268 std::vector<std::vector<std::vector<Double_t>>>
270 std::vector<std::vector<UInt_t>> fvuSmxErrIdxFirstHitM07;
271 std::vector<std::vector<UInt_t>> fvuSmxErrIdxFirstHitM08;
272 std::vector<std::vector<UInt_t>> fvuSmxErrIdxFirstHitM09;
273 std::vector<std::vector<UInt_t>> fvuSmxErrIdxFirstHitM10;
274 std::vector<std::vector<UInt_t>> fvuSmxErrIdxFirstHitM11;
275 std::vector<std::vector<UInt_t>> fvuSmxErrIdxLastHit;
278 Bool_t SmxErrCheckCoinc(UInt_t uFebIdx, UInt_t uAsicIdx, Double_t dNewHitTime);
280 std::vector<TProfile*> fhStsFebSmxErrRatioEvo;
281 std::vector<TProfile2D*> fhStsFebSmxErrRatioEvoAsic;
282 std::vector<TProfile*> fhStsFebSmxErrRatioCopyEvo;
283 std::vector<TProfile2D*> fhStsFebSmxErrRatioCopyEvoAsic;
284 std::vector<TProfile*> fhStsFebSmxErrRatioCopySameAdcEvo;
286
288 TH2* fhMsErrorsEvo = nullptr;
289
291 std::vector<TCanvas*> fvcStsSumm;
292 std::vector<TCanvas*> fvcStsSmxErr;
293
294 TCanvas* fcMsSizeAll;
297 /*
299 Double_t fdStartTs; //! Last hits in each ASIC
300 std::vector< stsxyter::FinalHit > fvmLastHitAsic; //! Last hits in each ASIC
301 std::vector<TH2 *> fhStsTimeDiffPerAsic;
302 std::vector< std::vector<TH1 *> > fhStsTimeDiffPerAsicPair;
303 std::vector< std::vector<TH1 *> > fhStsTimeDiffClkPerAsicPair;
304 std::vector< std::vector<TH2 *> > fhStsTimeDiffEvoPerAsicPair;
305 std::vector< std::vector<TProfile *> > fhStsTimeDiffEvoPerAsicPairProf;
306 std::vector< std::vector<TProfile *> > fhStsRawTimeDiffEvoPerAsicPairProf;
307 std::vector< std::vector<TH2 *> > fhStsTsLsbMatchPerAsicPair;
308 std::vector< std::vector<TH2 *> > fhStsTsMsbMatchPerAsicPair;
309 std::vector<TH1 *> fhStsIntervalAsic;
310 std::vector<TH1 *> fhStsIntervalLongAsic;
311
312 static const UInt_t kuNbValuesForTimeDiffMean = 100;
313 constexpr static const double kdPulserPeriod = 154000; /// ns
314 constexpr static const double kdTimeDiffToMeanMargin = 50;
315 std::vector< std::vector< std::vector< Double_t > > > fvdLastTimeDiffValuesAsicPair;
316 std::vector< std::vector< UInt_t > > fvuLastTimeDiffSlotAsicPair;
317 std::vector< std::vector< Double_t > > fvdMeanTimeDiffAsicPair;
318
319 void UpdatePairMeanValue( UInt_t uAsicA, UInt_t uAsicB, Double_t dNewValue );
320*/
321
322 // Methods later going into Algo
323 Bool_t InitStsParameters();
324 void CreateHistograms();
325 Bool_t ProcessStsMs(const fles::Timeslice& ts, size_t uMsComp, UInt_t uMsIdx);
326
327 void FillHitInfo(stsxyter::Message mess, const UShort_t& usElinkIdx, const UInt_t& uAsicIdx, const UInt_t& uMsIdx);
328 void FillTsMsbInfo(stsxyter::Message mess, UInt_t uMessIdx = 0, UInt_t uMsIdx = 0);
330
332 void SaveStsHistos(TString sFileName = "");
333 Bool_t ScanForNoisyChannels(Double_t dNoiseThreshold = 1e3);
334
337
338 ClassDef(CbmMcbm2018MonitorSts, 1)
339};
340
341#endif // CBMMCBM2018MONITORSTS_H
Histogram manager.
Histogram manager.
std::vector< std::vector< std::vector< Int_t > > > fviFebModuleIdx
Number of StsXyter ASICs.
std::vector< TProfile2D * > fhStsFebSmxErrRatioCopySameAdcEvoAsic
Int_t fiTimeIntervalRateUpdate
Mean Rate per channel plots.
std::vector< TH2 * > fhStsFebAsicHitRateEvo
std::vector< std::vector< ULong64_t > > fvulChanLastHitTime
std::vector< UInt_t > fvuInitialTsMsbCycleHeader
Flag set after seeing MS header in 1st MS for DPB.
std::vector< std::vector< Double_t > > fvdChanLastHitTime
Last hit time in bins for each Channel.
std::vector< std::vector< std::vector< Int_t > > > fviFebModuleSide
Idx of the STS module for each FEB, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], -1 if inactive.
std::vector< TH2 * > fhStsFebChanDistT
std::vector< ULong64_t > fvulCurrentTsMsb
Bin size in s for the plots with date as X axis.
Bool_t ScanForNoisyChannels(Double_t dNoiseThreshold=1e3)
---------------------------------------------------------------—///
std::vector< std::vector< stsxyter::FinalHit > > fvmAsicHitsInMs
All hits (time in bins, ADC in bins, asic, channel) in last TS, sorted with "<" operator.
std::map< stsxyter::MessType, UInt_t > fmMsgCounter
Current data properties.
std::vector< TProfile * > fhStsFebChanAdcRawProf
std::vector< TH1 * > fhStsFebChanCntRaw
std::vector< Double_t > fvdFebTimeSecLastRateUpdate
static constexpr const Double_t kdSmxErrCoincWinNoiseM11
TH2 * fhMsErrorsEvo
Binning FW error flag.
std::vector< TCanvas * > fvcStsSumm
Canvases.
Bool_t fbLongHistoEnable
Rate evolution histos.
std::vector< TProfile * > fhStsFebChanCloseHitsRatio
TH1 * fhMsSz[kiMaxNbFlibLinks]
std::vector< TH2 * > fhStsFebChanCloseHitsCounts
void SaveAllHistos(TString sFileName="")
std::vector< std::vector< std::vector< Int_t > > > fviFebType
STS module side for each FEB, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = P, 1 = N,...
Double_t fdCoincCenter
Coincidences in sorted hits.
std::vector< TCanvas * > fvcStsSmxErr
Bool_t fbSmx2ErrorUseNoiseLevels
SXM 2.0 logic error detection and tagging, 1 eLink case.
std::vector< TH1 * > fhStsFebChanCntRawGood
std::vector< UInt_t > fvuInitialHeaderDone
Current TS MSB cycle for DPB.
std::map< UInt_t, UInt_t > fDpbIdIndexMap
Total number of STS DPBs in system.
void SetIgnoreOverlapMs(Bool_t bFlagIn=kTRUE)
stsxyter::MessagePrintMask fPrintMessCtrl
virtual void SetNbMsInTs(size_t uCoreMsNb, size_t uOverlapMsNb)
UInt_t fuCurrDpbId
Current equipment ID, tells from which DPB the current MS is originating.
Int_t fiBinSizeDatePlots
Start of run time since "epoch" in s, for the plots with date as X axis.
std::vector< Int_t > fviFebCountsSinceLastRateUpdate
std::vector< std::vector< UInt_t > > fvuSmxErrIdxLastHit
[ NbFebs ][ NbSmxPerFeb ]
std::vector< std::vector< Bool_t > > fvbCrobActiveFlag
Map of DPB Identifier to DPB index.
std::vector< Double_t > fvdPrevMsTime
Last hit time in ns for each Channel.
UInt_t fuNrOfDpbs
STS address for the first strip of each module.
std::vector< TProfile * > fhStsFebSmxErrRatioCopySameAdcEvo
std::vector< TH2 * > fhStsFebAsicHitRateEvoLong
void SetHistoFileName(TString sFileName="data/SetupHistos.root")
void SetFebChanCoincidenceLimitNs(Double_t dLimitIn)
std::vector< std::vector< Double_t > > fdStsFebChanLastTimeForDist
static constexpr const Double_t kdSmxErrCoincWinNoiseM10
std::vector< TProfile2D * > fhStsFebSmxErrRatioCopyEvoAsic
std::vector< std::vector< UInt_t > > fvuSmxErrIdxFirstHitM07
[ NbFebs ][ NbSmxPerFeb ][ kuSmxErrCoincWinNbHits ]
std::vector< std::vector< stsxyter::FinalHit > > fvmFebHitsInMs
All hits (time in bins, ADC in bins, asic, channel) in last TS, per ASIC, sorted with "<" operator.
std::vector< TProfile2D * > fhStsFebSmxErrRatioEvoAsic
void UseNoiseLimitsSmx2LogicError(Bool_t bUseNoise=kTRUE)
static constexpr const Double_t kdSmxErrCoincWinMainM11
std::vector< TH2 * > fhStsFebChanRawTs
Double_t fdStartTime
Last hit ADC in bins in each MS for each Channel.
CbmMcbm2018MonitorSts operator=(const CbmMcbm2018MonitorSts &)
std::vector< UInt_t > fvuElinkLastTsHit
TS MSB cycle from MS header in 1st MS for DPB.
static constexpr const Double_t kdSmxErrCoincWinNoiseM09
static constexpr const Double_t kdSmxErrCoincWinMainM08
static constexpr const Double_t kdSmxErrCoincWinMainM09
std::vector< TH2 * > fhStsFebChanMissEvt
std::vector< TH1 * > fhStsFebHitRateEvo
UInt_t fuCurrDpbIdx
Temp holder until Current equipment ID is properly filled in MS.
std::vector< Int_t > fviModAddress
Type of each module: 0 for connectors on the right, 1 for connectors on the left.
void SetEnableCheckBugSmx20(Bool_t bEnable=kTRUE)
static constexpr const Double_t kdSmxErrCoincWinMainM10
std::vector< std::vector< UInt_t > > fvuSmxErrIdxFirstHitM08
[ NbFebs ][ NbSmxPerFeb ]
std::vector< TH2 * > fhStsFebChanHitRateEvo
virtual Bool_t DoUnpack(const fles::Timeslice &ts, size_t component)
static constexpr const Double_t kdSmxErrCoincWinBeg
std::vector< std::vector< std::vector< Double_t > > > fvdChanLastHitTimeInMs
Number of hits in each MS for each Channel.
std::vector< std::vector< std::vector< Double_t > > > fvdFebAdcOffs
ADC gain in e-/b, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ].
std::vector< std::vector< std::vector< Double_t > > > fvdFebAdcGain
FEB type, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = A, 1 = B, -1 if inactive.
static constexpr const Double_t kdSmxErrCoincWinNoiseM07
Coincidence windows 99.9% tagging (up to 0.1% of corruption not detected)
static const UInt_t kuBytesPerMessage
TH1 * fhStsMessType
Histogram manager.
std::vector< TProfile * > fhStsFebSmxErrRatioCopyEvo
static constexpr const Double_t kdSmxErrCoincWinNoiseM08
Bool_t ProcessStsMs(const fles::Timeslice &ts, size_t uMsComp, UInt_t uMsIdx)
UInt_t fuNbFebs
Array to hold the active flag for all CROBs, [ NbDpb ][ NbCrobPerDpb ].
std::vector< Int_t > fviModuleType
Total number of STS modules in the setup.
Double_t fdFebChanCoincidenceLimit
Plots per FEB-8.
std::vector< TH2 * > fhStsFebChanMissEvtEvo
std::vector< std::vector< UInt_t > > fvuSmxErrIdxFirstHitM10
[ NbFebs ][ NbSmxPerFeb ]
std::vector< TH2 * > fhStsFebChanAdcRaw
std::vector< TProfile * > fhStsFebChanHitRateProf
ULong64_t fulCurrentTsIdx
TS/MS info.
void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize=5)
std::vector< Bool_t > fvbMaskedComponents
Double_t fdSmxErrCoincWinM07
Tagging variables.
std::vector< std::vector< std::vector< Double_t > > > fvdSmxErrTimeLastHits
std::vector< TProfile * > fhStsFebSmxErrRatioEvo
Histograms.
std::vector< std::vector< std::vector< UInt_t > > > fvuChanNbHitsInMs
Header time of each MS.
std::vector< std::vector< Double_t > > fvdFebChanCountsSinceLastRateUpdate
std::vector< TH2 * > fhStsFebChanHitRateEvoLong
void SetLongDurationLimits(UInt_t uDurationSeconds=3600, UInt_t uBinSize=1)
CbmMcbm2018StsPar * fUnpackParSts
/‍** Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice **‍/
std::vector< TH1 * > fhStsFebHitRateEvoLong
void SetPrintMessage(Bool_t bPrintMessOn=kTRUE, stsxyter::MessagePrintMask ctrl=stsxyter::MessagePrintMask::msg_print_Hex|stsxyter::MessagePrintMask::msg_print_Human)
void SetMsOverlap(size_t uOverlapMsNb=1)
void SaveStsHistos(TString sFileName="")
Bool_t fbBinningFw
=> Quick and dirty hack for binning FW!!!
static constexpr const Double_t kdSmxErrCoincWinMainM07
Coincidence windows for 99.0% tagging (up to 1% of corruption not detected)
Bool_t SmxErrCheckCoinc(UInt_t uFebIdx, UInt_t uAsicIdx, Double_t dNewHitTime)
std::vector< TH1 * > fhStsFebMissEvtEvo
std::vector< std::vector< std::vector< UShort_t > > > fvusChanLastHitAdcInMs
Last hit time in bins in each MS for each Channel.
UInt_t fuNbStsXyters
Number of StsXyter ASICs.
std::chrono::steady_clock::time_point ftStartTimeUnix
std::vector< stsxyter::FinalHit > fvmHitsInMs
Hits time-sorting.
void SetBinningFwFlag(Bool_t bEnable=kTRUE)
=> Quick and dirty hack for binning FW!!!
std::vector< TH2 * > fhStsFebAsicMissEvtEvo
std::vector< UInt_t > fvuCurrentTsMsbCycle
Current TS MSB for each DPB.
TProfile * fhMsSzTime[kiMaxNbFlibLinks]
std::vector< size_t > fvMsComponentsList
CbmMcbm2018MonitorSts(const CbmMcbm2018MonitorSts &)
virtual void AddMsComponentToList(size_t component, UShort_t usDetectorId)
Bool_t fbPrintMessages
Task configuration values.
std::vector< std::vector< UInt_t > > fvuSmxErrIdxFirstHitM09
[ NbFebs ][ NbSmxPerFeb ]
void SavePulserHistos(TString sFileName="")
void FillHitInfo(stsxyter::Message mess, const UShort_t &usElinkIdx, const UInt_t &uAsicIdx, const UInt_t &uMsIdx)
Int_t fiRunStartDateTimeSec
Index of the DPB from which the MS currently unpacked is coming.
void FillEpochInfo(stsxyter::Message mess)
static const Int_t kiMaxNbFlibLinks
ADC offset in e-, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ].
static const UInt_t kuSmxErrCoincWinNbHits
std::vector< std::vector< UInt_t > > fvuSmxErrIdxFirstHitM11
[ NbFebs ][ NbSmxPerFeb ]
void FillTsMsbInfo(stsxyter::Message mess, UInt_t uMessIdx=0, UInt_t uMsIdx=0)
std::vector< Double_t > fvdMsTime
Header time of previous MS per link.
CbmHistManager * fHM
Histograms.
MessagePrintMask
Printout control.