14#ifndef CbmMcbm2018MonitorAlgoMuchLite_H
15#define CbmMcbm2018MonitorAlgoMuchLite_H
18#include "Timeslice.hpp"
50 virtual Bool_t
Init();
63 Bool_t
ProcessTs(
const fles::Timeslice& ts);
77 Bool_t
ProcessMs(
const fles::Timeslice& ts,
size_t uMsCompIdx,
size_t uMsIdx);
79 void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize = 5);
128 std::vector<stsxyter::FinalHit>
138 std::vector<std::vector<Bool_t>>
194 std::vector<std::vector<std::vector<Double_t>>>
196 std::vector<std::vector<std::vector<UShort_t>>>
199 std::vector<std::vector<stsxyter::FinalHit>>
201 std::vector<std::vector<stsxyter::FinalHit>>
301 std::chrono::steady_clock::time_point
Bool_t ProcessTs(const fles::Timeslice &ts)
void FillHitInfo(stsxyter::Message mess, const UShort_t &usElinkIdx, const UInt_t &uAsicIdx, const UInt_t &uMsIdx)
Long64_t prevtime_new
Starting state book-keeping.
std::vector< UInt_t > fvuInitialHeaderDone
Current TS MSB cycle for DPB.
Int_t fiTimeIntervalRateUpdate
Mean Rate per channel plots.
UInt_t fuCurrDpbId
Current equipment ID, tells from which DPB the current MS is originating.
std::vector< TH2 * > fhMuchFebChanHitRateEvo
UInt_t fuNbFebs
Array to hold the active flag for all CROBs, [ NbDpb ][ NbCrobPerDpb ].
std::map< UInt_t, UInt_t > fDpbIdIndexMap
Total number of STS DPBs in system.
void SaveHistos(TString sFileName="")
std::vector< TH2 * > fhMuchFebADC
void FillTsMsbInfo(stsxyter::Message mess, UInt_t uMessIdx=0, UInt_t uMsIdx=0)
std::vector< TH1 * > fhMuchFebChanCntRaw
TH1 * fhElinkIdxHit
Number of hits in each MS for each Channel.
void SetSpillThreshold(UInt_t uCntLimit)
void SetMonitorMode(Bool_t bFlagIn=kTRUE)
UInt_t fuCurrentEquipmentId
Current data properties.
UInt_t fuNbStsXyters
Number of StsXyter ASICs.
UInt_t fuMaxNbMicroslices
Coincidence histos.
std::vector< std::vector< Double_t > > fvdChanLastHitTime
Last hit time in bins for each Channel.
static const Int_t kiMaxNbFlibLinks
/** Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice **/
std::vector< Double_t > fvdPrevMsTime
Last hit time in ns for each Channel.
std::vector< TH2 * > fhMuchFebChanAdcRaw
void UseDaqBuffer(Bool_t)
void SaveMuchHistos(TString sFileName="")
CbmMcbm2018MonitorAlgoMuchLite operator=(const CbmMcbm2018MonitorAlgoMuchLite &)
ULong64_t fulCurrentMsIdx
TS/MS info.
Double_t fdTsStopTimeCore
Time in ns of current TS from the index of the first MS first component.
std::vector< stsxyter::FinalHit > fvmHitsInMs
Hits time-sorting.
std::vector< Bool_t > fvbMaskedComponents
~CbmMcbm2018MonitorAlgoMuchLite()
void FillEpochInfo(stsxyter::Message mess)
Bool_t fbMuchMode
Switch ON the filling of a minimal set of histograms.
Int_t fiBinSizeDatePlots
Start of run time since "epoch" in s, for the plots with date as X axis.
UInt_t fuHistoryHistoSize
Index of current MS within the TS.
void SaveAllHistos(TString sFileName="")
std::vector< std::vector< stsxyter::FinalHit > > fvmAsicHitsInMs
Last hit ADC in bins in each MS for each Channel.
TH2 * fhMuchSysMessTypePerDpb
std::vector< TH1 * > fhMuchFebHitRateEvo_mskch
static const UInt_t kuBytesPerMessage
TH1 * fhMuchMessType
Histogram manager.
std::vector< TH1 * > fhMuchFebHitRateEvo_mskch_adccut
Bool_t InitMuchParameters()
std::vector< TH1 * > fhMuchFebSpill
std::vector< std::vector< std::vector< UShort_t > > > fvusChanLastHitAdcInMs
Last hit time in bins in each MS for each Channel.
Bool_t CreateHistograms()
std::vector< std::vector< std::vector< UInt_t > > > fvuChanNbHitsInMs
std::vector< size_t > fvMsComponentsList
std::vector< TH1 * > fhMuchFebHitRateEvo
TH2 * fhMsStatusFieldType
std::vector< ULong64_t > fvulCurrentTsMsb
Bin size in s for the plots with date as X axis.
Int_t fiRunStartDateTimeSec
Index of the DPB from which the MS currently unpacked is coming.
std::vector< TProfile * > fhMuchFebChanAdcRawProf
Bool_t ScanForNoisyChannels(Double_t dNoiseThreshold=1e3)
---------------------------------------------------------------—///
std::vector< UInt_t > fvuElinkLastTsHit
TS MSB cycle from MS header in 1st MS for DPB.
UInt_t fuMsIndex
End Time in ns of current TS Core from the index of the first MS first component.
CbmHistManager * fHM
Coincidences in sorted hits.
std::vector< TH2 * > fHistPadDistr
Plots per FEB-8.
void SetHistoFileName(TString sFileName="data/SetupHistos.root")
CbmMcbm2018MonitorAlgoMuchLite(const CbmMcbm2018MonitorAlgoMuchLite &)
TH2 * fhMuchMessTypePerDpb
TH2 * fhMuchHitsElinkPerDpb
std::chrono::steady_clock::time_point ftStartTimeUnix
std::vector< UInt_t > fvuInitialTsMsbCycleHeader
Flag set after seeing MS header in 1st MS for DPB.
void SetMuchMode(Bool_t bMuchMode=kTRUE)
UInt_t Counter
Rate evolution histos.
std::vector< std::vector< Double_t > > fvdFebChanCountsSinceLastRateUpdate
std::map< stsxyter::MessType, UInt_t > fmMsgCounter
Number of StsXyter ASICs.
Bool_t fbBinningFw
=> Quick and dirty hack for binning FW!!!
std::vector< TH2 * > fhMuchFebChanDistT
CbmMcbm2018MonitorAlgoMuchLite()
Bool_t ProcessTs(const fles::Timeslice &ts, size_t)
std::vector< std::vector< std::vector< Double_t > > > fvdChanLastHitTimeInMs
Header time of each MS.
std::vector< std::vector< ULong64_t > > fvulChanLastHitTime
TH2 * fhMuchMessTypePerElink
std::vector< Double_t > fvdMsTime
Header time of previous MS per link.
void AddMsComponentToList(size_t component, UShort_t usDetectorId)
void SetRunStart(Int_t dateIn, Int_t timeIn, Int_t iBinSize=5)
std::vector< TH2 * > fhMuchFebChanRawTs
std::vector< UInt_t > fvuCurrentTsMsbCycle
Current TS MSB for each DPB.
UInt_t fuOffSpillCountLimit
std::vector< TH2 * > fRealHistPadDistr
TH1 * fhMsSz[kiMaxNbFlibLinks]
std::vector< std::vector< Double_t > > fdMuchFebChanLastTimeForDist
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< TProfile * > fhMuchFebChanHitRateProf
UInt_t fuCurrDpbIdx
Temp holder until Current equipment ID is properly filled in MS.
Bool_t ProcessMs(const fles::Timeslice &ts, size_t uMsCompIdx, size_t uMsIdx)
stsxyter::MessagePrintMask fPrintMessCtrl
Bool_t fbPrintMessages
Task configuration values.
void SetPrintMessage(Bool_t bPrintMessOn=kTRUE, stsxyter::MessagePrintMask ctrl=stsxyter::MessagePrintMask::msg_print_Hex|stsxyter::MessagePrintMask::msg_print_Human)
TProfile * fhMsSzTime[kiMaxNbFlibLinks]
std::vector< std::vector< Bool_t > > fvbCrobActiveFlag
Map of DPB Identifier to DPB index.
std::vector< Int_t > fviFebCountsSinceLastRateUpdate
void SetHistoryHistoSize(UInt_t inHistorySizeSec=1800)
TString fsHistoFileFullname
ULong64_t fulCurrentTsIdx
void SetBinningFwFlag(Bool_t bEnable=kTRUE)
=> Quick and dirty hack for binning FW!!!
Bool_t ReInitContainers()
std::vector< Int_t > fviFebTimeSecLastRateUpdate
std::vector< TProfile * > fhMuchFebDuplicateHitProf
CbmMcbm2018MuchPar * fUnpackParMuch
TH1 * fhMuchFebChanAdcRaw_combined
TString fsHistoFilename
All hits (time in bins, ADC in bins, asic, channel) in last TS, sorted with "<" operator.
std::vector< TH2 * > fhMuchChannelTime
std::vector< TH1 * > fhMuchFebHitRateEvo_WithoutDupli
TH2 * fhDpbMsErrors
Binning FW error flag.
MessagePrintMask
Printout control.