Go to the documentation of this file.
8 #ifndef CBMMCBM2018MONITORSTSSYNC_H
9 #define CBMMCBM2018MONITORSTSSYNC_H
11 #include "Timeslice.hpp"
29 class CbmCern2017UnpackParHodo;
30 class CbmCern2017UnpackParSts;
37 virtual Bool_t
Init();
39 virtual Bool_t
DoUnpack(
const fles::Timeslice& ts,
size_t component);
52 virtual void SetNbMsInTs(
size_t uCoreMsNb,
size_t uOverlapMsNb);
56 void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize = 5);
89 std::map<UInt_t, UInt_t>
95 std::vector<std::vector<UInt_t>>
132 std::vector<std::vector<ULong64_t>>
134 std::vector<std::vector<Double_t>>
137 std::vector<std::vector<std::vector<UInt_t>>>
139 std::vector<std::vector<std::vector<Double_t>>>
141 std::vector<std::vector<std::vector<UShort_t>>>
149 std::chrono::steady_clock::time_point
153 std::vector<stsxyter::FinalHit>
155 std::vector<std::vector<stsxyter::FinalHit>>
212 std::vector<std::vector<TProfile*>>
224 std::vector<std::vector<std::vector<Double_t>>>
234 const UShort_t& usElinkIdx,
235 const UInt_t& uAsicIdx,
236 const UInt_t& uMsIdx);
247 #endif // CBMMCBM2018MONITORSTSSYNC_H
Int_t fiBinSizeDatePlots
Start of run time since "epoch" in s, for the plots with date as X axis.
std::vector< std::vector< UInt_t > > fvuLastTimeDiffSlotAsicPair
std::vector< TH1 * > fhPulserChanCntRawGood
CbmMcbm2018MonitorStsSync(const CbmMcbm2018MonitorStsSync &)
std::vector< UInt_t > fvuCurrentTsMsbCycle
Current TS MSB for each DPB.
TH2 * fhPulserMsStatusFieldType
UInt_t fuLongHistoBinSizeSec
void FillTsMsbInfo(stsxyter::Message mess, UInt_t uMessIdx=0, UInt_t uMsIdx=0)
UInt_t fuLongHistoNbSeconds
void FillEpochInfo(stsxyter::Message mess)
CbmMcbm2018MonitorStsSync()
std::vector< TH1 * > fhPulserFebRateEvo
TH1 * fhMsSz[kiMaxNbFlibLinks]
void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize=5)
std::vector< TH1 * > fhPulserIntervalLongAsic
void SetCoincidenceBorder(Double_t dCenterPos, Double_t dBorderVal)
std::vector< std::vector< TProfile * > > fhPulserTsLsbDiffEvoPerAsicPairProf
std::vector< std::vector< std::vector< UShort_t > > > fvusChanLastHitAdcInMs
Last hit time in bins in each MS for each Channel.
std::vector< TH2 * > fhPulserChanMissEvtEvo
TH2 * fhPulserSysMessTypePerElink
static const Int_t kiMaxNbFlibLinks
Vector holding for each link the corresponding ASIC index [fuNrOfDpbs * fuNbElinksPerDpb].
std::map< stsxyter::MessType, UInt_t > fmMsgCounter
stsxyter::MessagePrintMask fPrintMessCtrl
std::vector< TH2 * > fhPulserChanRawTs
void UseDaqBuffer(Bool_t)
void SetPrintMessage(Bool_t bPrintMessOn=kTRUE, stsxyter::MessagePrintMask ctrl=stsxyter::MessagePrintMask::msg_print_Hex|stsxyter::MessagePrintMask::msg_print_Human)
std::vector< std::vector< TH2 * > > fhPulserTimeDiffEvoPerAsicPair
std::vector< UInt_t > fvuElinkLastTsHit
TS MSB cycle from MS header in 1st MS for DPB.
UInt_t fuCurrentEquipmentId
std::vector< std::vector< std::vector< UInt_t > > > fvuChanNbHitsInMs
Header time of each MS.
std::vector< TH2 * > fhPulserTimeDiffPerAsic
Last hits in each ASIC.
std::vector< stsxyter::FinalHit > fvmLastHitAsic
Last hits in each ASIC.
ULong64_t fulCurrentMsIdx
std::vector< std::vector< TH1 * > > fhPulserTimeDiffPerAsicPair
std::vector< TH2 * > fhPulserChanHitRateEvoLong
TH2 * fhPulserMessTypePerElink
CbmMcbm2018MonitorStsSync operator=(const CbmMcbm2018MonitorStsSync &)
std::vector< TH2 * > fhPulserChanAdcRaw
std::vector< std::vector< TH2 * > > fhPulserTsMsbMatchPerAsicPair
TH2 * fhPulserStatusMessType
UInt_t fuMaxNbMicroslices
All hits (time in bins, ADC in bins, asic, channel) in last TS, per ASIC, sorted with "<" operator.
constexpr static const double kdPulserPeriod
TH1 * fhPulserSysMessType
Int_t fiRunStartDateTimeSec
Index of the DPB from which the MS currently unpacked is coming.
std::vector< UInt_t > fvuInitialHeaderDone
Current TS MSB cycle for DPB.
TH1 * fhPulserMessType
Histogram manager.
std::vector< TH1 * > fhPulserIntervalAsic
UInt_t fuCurrDpbIdx
Temp holder until Current equipment ID is properly filled in MS.
void FillHitInfo(stsxyter::Message mess, const UShort_t &usElinkIdx, const UInt_t &uAsicIdx, const UInt_t &uMsIdx)
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.
virtual Bool_t DoUnpack(const fles::Timeslice &ts, size_t component)
UInt_t fuNbChanPerAsic
Number of StsXyter ASICs.
void SetLongDurationLimits(UInt_t uDurationSeconds=3600, UInt_t uBinSize=1)
virtual void SetNbMsInTs(size_t uCoreMsNb, size_t uOverlapMsNb)
std::vector< std::vector< UInt_t > > fvuElinkToAsic
Number of channels per StsXyter ASIC => should be constant somewhere!!!!
std::vector< std::vector< TProfile * > > fhPulserTimeDiffEvoPerAsicPairProf
Double_t fdStartTs
Pulser time difference histos.
std::vector< TH1 * > fhPulserFebMissEvtEvo
MessagePrintMask
Printout control.
std::vector< std::vector< Double_t > > fvdMeanTimeDiffAsicPair
std::vector< TProfile * > fhPulserChanAdcRawProf
std::vector< Double_t > fvdMsTime
Last hit time in ns for each Channel.
std::vector< std::vector< TH2 * > > fhPulserTsLsbMatchPerAsicPair
UInt_t fuNbStsXyters
Number of possible eLinks per DPB.
static const UInt_t kuNbValuesForTimeDiffMean
std::vector< std::vector< std::vector< Double_t > > > fvdChanLastHitTimeInMs
Number of hits in each MS for each Channel.
std::chrono::steady_clock::time_point ftStartTimeUnix
std::vector< std::vector< ULong64_t > > fvulChanLastHitTime
TS from last hit for DPB.
void SavePulserHistos(TString sFileName="")
std::vector< std::vector< TProfile * > > fhPulserTsMsbDiffEvoPerAsicPairProf
UInt_t fuNbElinksPerDpb
Map of DPB Identifier to DPB index.
void UpdatePairMeanValue(UInt_t uAsicA, UInt_t uAsicB, Double_t dNewValue)
std::vector< TH1 * > fhPulserChanCntRaw
std::vector< std::vector< stsxyter::FinalHit > > fvmAsicHitsInMs
All hits (time in bins, ADC in bins, asic, channel) in last TS, sorted with "<" operator.
UInt_t fuCurrDpbId
Current equipment ID, tells from which DPB the current MS is originating.
std::vector< ULong64_t > fvulCurrentTsMsb
Bin size in s for the plots with date as X axis.
void SaveAllHistos(TString sFileName="")
void SetHistoFileName(TString sFileName="data/SetupHistos.root")
std::vector< stsxyter::FinalHit > fvmHitsInMs
virtual ~CbmMcbm2018MonitorStsSync()
std::vector< std::vector< TH1 * > > fhPulserTimeDiffClkPerAsicPair
CbmCern2017UnpackParHodo * fUnpackParHodo
/** Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice **/
TProfile * fhMsSzTime[kiMaxNbFlibLinks]
TH2 * fhPulserSysMessTypePerDpb
ULong64_t fulCurrentTsIdx
virtual void AddMsComponentToList(size_t component, UShort_t usDetectorId)
std::vector< TH1 * > fhPulserFebRateEvoLong
Double_t fdStartTime
Last hit ADC in bins in each MS for each Channel.
TH2 * fhPulserMessTypePerDpb
constexpr static const double kdTimeDiffToMeanMargin
ns
std::vector< std::vector< TProfile * > > fhPulserRawTimeDiffEvoPerAsicPairProf
std::vector< TH2 * > fhPulserChanMissEvt
Bool_t ReInitContainers()
std::vector< size_t > fvMsComponentsList
void SetMsOverlap(size_t uOverlapMsNb=1)
std::vector< TH2 * > fhPulserChanHitRateEvo
std::vector< std::vector< std::vector< Double_t > > > fvdLastTimeDiffValuesAsicPair
std::map< UInt_t, UInt_t > fDpbIdIndexMap
Total number of Sts DPBs in system.
TString fsHistoFileFullname
static const UInt_t kuBytesPerMessage