Go to the documentation of this file.
8 #ifndef CbmMcbm2018UnpackerAlgoSts_H
9 #define CbmMcbm2018UnpackerAlgoSts_H
42 virtual Bool_t
Init();
52 Bool_t
ProcessTs(
const fles::Timeslice& ts);
53 Bool_t
ProcessTs(
const fles::Timeslice& ts,
size_t ) {
56 Bool_t
ProcessMs(
const fles::Timeslice& ts,
size_t uMsCompIdx,
size_t uMsIdx);
100 std::map<UInt_t, UInt_t>
102 std::vector<std::vector<Bool_t>>
106 std::vector<std::vector<std::vector<Int_t>>>
108 std::vector<std::vector<std::vector<Int_t>>>
110 std::vector<std::vector<std::vector<Int_t>>>
116 std::vector<Double_t>
118 std::vector<Double_t>
125 std::vector<std::vector<bool>>
162 std::chrono::steady_clock::time_point
165 std::vector<stsxyter::FinalHit>
171 std::vector<std::vector<UShort_t>>
173 std::vector<std::vector<UShort_t>>
175 std::vector<std::vector<UShort_t>>
177 std::vector<std::vector<UShort_t>>
203 const UShort_t& usElinkIdx,
204 const UInt_t& uAsicIdx,
205 const UInt_t& uMsIdx);
void ProcessStatusInfo(const stsxyter::Message &mess, const UInt_t &uAsicIdx)
std::vector< std::vector< UShort_t > > fvvusLastTsMsbChan
ADC of last hit message for each channel, [ AsicIdx ][ Chan ].
UInt_t fuMsIndex
Start Time in ns of current MS from its index field in header.
Double_t fdCapacityIncFactor
Int_t fiBinSizeDatePlots
Start of run time since "epoch" in s, for the plots with date as X axis.
Bool_t fbBinningFw
=> Quick and dirty hack for binning FW!!!
Bool_t CreateHistograms()
std::vector< std::vector< std::vector< Int_t > > > fviFebModuleSide
Idx of the STS module for each FEB, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], -1 if inactive.
Bool_t ProcessTs(const fles::Timeslice &ts, size_t)
void ProcessHitInfo(const stsxyter::Message &mess, const UShort_t &usElinkIdx, const UInt_t &uAsicIdx, const UInt_t &uMsIdx)
std::vector< std::vector< UShort_t > > fvvusLastTsChan
std::vector< std::vector< std::vector< Int_t > > > fviFebModuleIdx
Number of StsXyter ASICs.
UInt_t fuNbFebs
Array to hold the active flag for all CROBs, [ NbDpb ][ NbCrobPerDpb ].
std::vector< std::vector< UShort_t > > fvvusLastTsMsbCycleChan
TS MSB of last hit message for each channel, [ AsicIdx ][ Chan ].
Int_t fiRunStartDateTimeSec
Index of the DPB from which the MS currently unpacked is coming.
CbmMcbm2018UnpackerAlgoSts()
std::vector< Int_t > fviModAddress
Type of each module: 0 for connectors on the right, 1 for connectors on the left.
UInt_t fdAdcCut
Vector of channel masks, [ NbFeb ][ NbCHanInFeb ], used only if fbUseChannelMask is true.
void SetVectCapInc(Double_t dIncFact)
UInt_t fuCurrDpbIdx
Temp holder until Current equipment ID is properly filled in MS.
std::vector< Int_t > fviFebAddress
FEB type, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = A, 1 = B, -1 if inactive.
Double_t fdTimeOffsetNs
ADC offset in e-, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
ULong64_t fulCurrentTsIdx
void AddMsComponentToList(size_t component, UShort_t usDetectorId)
void ProcessEpochInfo(const stsxyter::Message &mess)
Bool_t ProcessMs(const fles::Timeslice &ts, size_t uMsCompIdx, size_t uMsIdx)
std::vector< std::vector< bool > > fvvbMaskedChannels
std::vector< Bool_t > fvbMaskedComponents
Switch ON the filling of a additional set of histograms.
std::vector< Double_t > fvdTimeOffsetNsAsics
Double_t fdTsStopTimeCore
Time in ns of current TS from the index of the first MS first component.
Bool_t fbDebugMonitorMode
Switch ON the filling of a minimal set of histograms.
std::vector< Int_t > fviModuleType
Total number of STS modules in the setup.
TH1 * fhDigisTimeInRun
TS MSB cycle of last hit message for each channel, [ AsicIdx ][ Chan ].
void SetTimeOffsetNsAsic(UInt_t uAsicIdx, Double_t dOffsetIn=0.0)
std::vector< std::vector< UShort_t > > fvvusLastAdcChan
TS of last hit message for each channel, [ AsicIdx ][ Chan ].
CbmMcbm2018UnpackerAlgoSts operator=(const CbmMcbm2018UnpackerAlgoSts &)
Double_t fdMsTime
End Time in ns of current TS Core from the index of the first MS first component.
~CbmMcbm2018UnpackerAlgoSts()
UInt_t fuCurrDpbId
Current equipment ID, tells from which DPB the current MS is originating.
std::vector< Int_t > fviFebSide
STS address for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
UInt_t fuNbStsXyters
Number of FEBs with StsXyter ASICs.
CbmMcbm2018StsPar * fUnpackPar
Settings from parameter file.
CbmMcbm2018UnpackerAlgoSts(const CbmMcbm2018UnpackerAlgoSts &)
std::vector< stsxyter::FinalHit > fvmHitsInMs
Hits time-sorting.
std::vector< Double_t > fvdFebAdcOffs
ADC gain in e-/b, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
Bool_t fbMonitorMode
Control flags.
std::vector< std::vector< Bool_t > > fvbCrobActiveFlag
Map of DPB Identifier to DPB index.
void SetTimeOffsetNs(Double_t dOffsetIn=0.0)
ULong64_t fulCurrentMsIdx
std::vector< ULong64_t > fvulCurrentTsMsb
UInt_t fuCurrentEquipmentId
void MaskNoisyChannel(UInt_t uFeb, UInt_t uChan, Bool_t bMasked=kTRUE)
Bool_t ReInitContainers()
void ProcessTsMsbInfo(const stsxyter::Message &mess, UInt_t uMessIdx=0, UInt_t uMsIdx=0)
static const Int_t kiMaxNbFlibLinks
Constants.
void SetMonitorMode(Bool_t bFlagIn=kTRUE)
std::vector< std::vector< std::vector< Int_t > > > fviFebType
STS module side for each FEB, [ NbDpb ][ NbCrobPerDpb ][ NbFebsPerCrob ], 0 = P, 1 = N,...
void SetAdcCut(UInt_t uAdc)
std::vector< UInt_t > fvuCurrentTsMsbCycle
Current TS MSB for each DPB.
std::map< stsxyter::MessType, UInt_t > fmMsgCounter
std::vector< Double_t > fvdFebAdcGain
Module side for each FEB, [ NbDpb * NbCrobPerDpb * NbFebsPerCrob ].
static const UInt_t kuMaxTsMsbDiffDuplicates
All hits (time in bins, ADC in bins, asic, channel) in last MS, sorted with "<" operator.
std::chrono::steady_clock::time_point ftStartTimeUnix
std::map< UInt_t, UInt_t > fDpbIdIndexMap
Total number of STS DPBs in system.
Bool_t ProcessTs(const fles::Timeslice &ts)
UInt_t fuNrOfDpbs
STS address for the first strip of each module.
void SetBinningFwFlag(Bool_t bEnable=kTRUE)
=> Quick and dirty hack for binning FW!!!