CbmRoot
Loading...
Searching...
No Matches
CbmStsUnpackMonitor.h
Go to the documentation of this file.
1/* Copyright (C) 2021 Goethe-University, Frankfurt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau, Pascal Raisig [committer], Dominik Smith */
4
5#ifndef CbmStsUnpackMonitor_H
6#define CbmStsUnpackMonitor_H
7
8#include "CbmMcbm2018StsPar.h"
9#include "Rtypes.h"
10#include "StsXyterMessage.h"
11#include "TH1.h"
12#include "TH2.h"
13#include "TProfile.h"
14#include "TProfile2D.h"
15
16#include <cstdint>
17
18class TCanvas;
19
21 public:
23
24 virtual ~CbmStsUnpackMonitor();
25
26 //Variables for debugging info
27 std::vector<uint32_t> vNbMessType;
28 std::string sMessPatt = "";
29 bool bError = false;
30
31 void ResetDebugInfo();
32 void PrintDebugInfo(const uint64_t MsStartTime, const size_t NrProcessedTs, const uint16_t msDescriptorFlags,
33 const uint32_t uSize);
34
36 Bool_t Init(CbmMcbm2018StsPar* digiParSet);
37
38 Bool_t CreateHistograms(CbmMcbm2018StsPar* pUnpackPar);
39 Bool_t ResetHistograms();
40
41 Bool_t CreateDebugHistograms(CbmMcbm2018StsPar* pUnpackPar);
42 Bool_t ResetDebugHistograms();
43
44 Bool_t CreateMsComponentSizeHistos(UInt_t component);
45 Bool_t ResetMsComponentSizeHistos(UInt_t component);
46
48 void Finish();
49
50 void SetHistoFileName(TString nameIn) { fHistoFileName = nameIn; }
51
52 void DrawCanvases();
53
54 void AddHistoToVector(TNamed* pointer, std::string sFolder = "")
55 {
56 fvpAllHistoPointers.push_back(std::pair<TNamed*, std::string>(pointer, sFolder));
57 }
58 std::vector<std::pair<TNamed*, std::string>> GetHistoVector() { return fvpAllHistoPointers; }
59
60 void AddCanvasToVector(TCanvas* pointer, std::string sFolder = "")
61 {
62 fvpAllCanvasPointers.push_back(std::pair<TCanvas*, std::string>(pointer, sFolder));
63 }
64 std::vector<std::pair<TCanvas*, std::string>> GetCanvasVector() { return fvpAllCanvasPointers; }
65
66 void SetLongDurationLimits(UInt_t uDurationSeconds, UInt_t uBinSize)
67 {
68 //fbLongHistoEnable = kTRUE;
69 fuLongHistoNbSeconds = uDurationSeconds;
70 fuLongHistoBinSizeSec = uBinSize;
71 }
72
74
76 void FillVectorSize(ULong64_t TsIdx, UInt_t Size) { fhVectorSize->Fill(TsIdx, Size); }
77 void FillVectorCapacity(ULong64_t TsIdx, UInt_t Capacity) { fhVectorCapacity->Fill(TsIdx, Capacity); }
78 void FillMsCntEvo(ULong64_t MsIdx) { fhMsCntEvo->Fill(MsIdx * 1e-9); }
79 void FillMsErrorsEvo(ULong64_t MsIdx, uint16_t MsErrorType) { fhMsErrorsEvo->Fill(1e-9 * MsIdx, MsErrorType); }
80 void FillDigisTimeInRun(Double_t Time) { fhDigisTimeInRun->Fill(Time * 1e-9); }
81 void FillStsAllFebsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uFebIdx)
82 {
83 fhStsAllFebsHitRateEvo->Fill(dTimeSinceStartSec, uFebIdx);
84 }
85 void FillStsAllAsicsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uAsicIdx)
86 {
87 fhStsAllAsicsHitRateEvo->Fill(dTimeSinceStartSec, uAsicIdx);
88 }
89 void FillStsFebAsicHitCounts(UInt_t uFebIdx, UInt_t uAsicInFeb) { fhStsFebAsicHitCounts->Fill(uFebIdx, uAsicInFeb); }
90 void FillStsStatusMessType(UInt_t uAsicIdx, UShort_t usStatusField)
91 {
92 fhStsStatusMessType->Fill(uAsicIdx, usStatusField);
93 }
94
96 void FillStsFebChanCntRaw(UInt_t uFebIdx, UInt_t uChanInFeb) { fvhStsFebChanCntRaw[uFebIdx]->Fill(uChanInFeb); }
97 void FillStsFebChanAdcRaw(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
98 {
99 fvhStsFebChanAdcRaw[uFebIdx]->Fill(uChanInFeb, usRawAdc);
100 }
101 void FillStsFebChanAdcRawProf(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
102 {
103 fvhStsFebChanAdcRawProf[uFebIdx]->Fill(uChanInFeb, usRawAdc);
104 }
105 void FillStsFebChanAdcCal(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
106 {
107 fvhStsFebChanAdcCal[uFebIdx]->Fill(uChanInFeb, dCalAdc);
108 }
109 void FillStsFebChanAdcCalProf(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
110 {
111 fvhStsFebChanAdcCalProf[uFebIdx]->Fill(uChanInFeb, dCalAdc);
112 }
113 void FillStsFebChanRawTs(UInt_t uFebIdx, UInt_t uChan, UShort_t usRawTs)
114 {
115 fvhStsFebChanRawTs[uFebIdx]->Fill(uChan, usRawTs);
116 }
117 void FillStsFebChanMissEvt(UInt_t uFebIdx, UInt_t uChan, bool missEvtFlag)
118 {
119 fvhStsFebChanMissEvt[uFebIdx]->Fill(uChan, missEvtFlag);
120 }
121 void FillStsFebChanMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
122 {
123 fvhStsFebChanMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec, uChanInFeb);
124 }
125 void FillStsFebAsicMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
126 {
127 fvhStsFebAsicMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec, uAsicInFeb);
128 }
129 void FillStsFebMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
130 {
131 fvhStsFebMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec);
132 }
133 void FillStsFebChanHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
134 {
135 fvhStsFebChanHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec, uChanInFeb);
136 }
137 void FillStsFebAsicHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
138 {
139 fvhStsFebAsicHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec, uAsicInFeb);
140 }
141 void FillStsFebHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
142 {
143 fvhStsFebHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec);
144 }
145 void FillStsFebChanHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uChanInFeb)
146 {
147 fvhStsFebChanHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, uChanInFeb, 1.0 / 60.0);
148 }
149 void FillStsFebAsicHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uAsicInFeb)
150 {
151 fvhStsFebAsicHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, uAsicInFeb, 1.0 / 60.0);
152 }
153 void FillStsFebHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin)
154 {
155 fvhStsFebHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, 1.0 / 60.0);
156 }
157
159 void FillStsMessType(uint16_t typeMess) { fhStsMessType->Fill(typeMess); }
160 void FillStsMessTypePerDpb(UInt_t DpbIdx, uint16_t typeMess) { fhStsMessTypePerDpb->Fill(DpbIdx, typeMess); }
161 void FillStsMessTypePerElink(UInt_t ElinkIdx, uint16_t typeMess) { fhStsMessTypePerElink->Fill(ElinkIdx, typeMess); }
162 void FillStsHitsElinkPerDpb(UInt_t DpbIdx, UInt_t ElinkIdx) { fhStsHitsElinkPerDpb->Fill(DpbIdx, ElinkIdx); }
163 void FillStsDpbRawTsMsb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
164 {
165 fhStsDpbRawTsMsb->Fill(uCurrDpbIdx, ulCurrentTsMsb);
166 }
167 void FillStsDpbRawTsMsbSx(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
168 {
169 fhStsDpbRawTsMsbSx->Fill(uCurrDpbIdx, (ulCurrentTsMsb & 0x1F));
170 }
171 void FillStsDpbRawTsMsbDpb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
172 {
173 fhStsDpbRawTsMsbDpb->Fill(uCurrDpbIdx, (ulCurrentTsMsb >> 5));
174 }
175
177 void FillStsChanCntRaw(UInt_t uAsicIdx, UShort_t usChan) { fvhStsChanCntRaw[uAsicIdx]->Fill(usChan); }
178 void FillStsChanAdcRaw(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
179 {
180 fvhStsChanAdcRaw[uAsicIdx]->Fill(usChan, usRawAdc);
181 }
182 void FillStsChanAdcRawProf(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
183 {
184 fvhStsChanAdcRawProf[uAsicIdx]->Fill(usChan, usRawAdc);
185 }
186 void FillStsChanRawTs(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawTs)
187 {
188 fvhStsChanRawTs[uAsicIdx]->Fill(usChan, usRawTs);
189 }
190 void FillStsChanMissEvt(UInt_t uAsicIdx, UShort_t usChan, bool missedEvtFlag)
191 {
192 fvhStsChanMissEvt[uAsicIdx]->Fill(usChan, missedEvtFlag);
193 }
194
195 //Fill Ms Component Size Histos
196 void FillMsSize(UInt_t uMsComp, UInt_t uSize) { fvhMsSize[uMsComp]->Fill(uSize); }
197 void FillMsSizeTime(UInt_t uMsComp, Double_t dTime, UInt_t uSize)
198 {
199 if (fdStartTimeMsSz < 0) fdStartTimeMsSz = dTime;
200 fvhMsSizeTime[uMsComp]->Fill(dTime - fdStartTimeMsSz, uSize);
201 }
202
203 void FillHitMonitoringHistos(const UInt_t& uFebIdx, const UShort_t& usChan, const UInt_t& uChanInFeb,
204 const UShort_t& usRawAdc, const Double_t& dCalAdc, const UShort_t& usRawTs,
205 const bool& isHitMissedEvts);
206
207 void FillHitDebugMonitoringHistos(const UInt_t& uAsicIdx, const UShort_t& usChan, const UShort_t& usRawAdc,
208 const UShort_t& usRawTs, const bool& isHitMissedEvts);
209
210 void FillHitEvoMonitoringHistos(const UInt_t& uFebIdx, const UInt_t& uAsicIdx, const UInt_t& uAsicInFeb,
211 const UInt_t& uChanInFeb, const Double_t& dAbsTimeSec, const bool& isHitMissedEvts);
212
213 void CountRawHit(uint32_t uFebIdx, uint32_t uChanInFeb)
214 {
215 fvuNbRawTsFeb[uFebIdx]++;
216 fvvuNbRawTsChan[uFebIdx][uChanInFeb]++;
217 }
218 void CountDigi(uint32_t uFebIdx, uint32_t uChanInFeb)
219 {
220 fvuNbDigisTsFeb[uFebIdx]++;
221 fvvuNbDigisTsChan[uFebIdx][uChanInFeb]++;
222 }
223
225 void FillDuplicateHitsAdc(const uint32_t& uFebIdx, const uint32_t& uChanInFeb, const uint16_t& usAdc);
226
228 bool GetDebugMode() { return fDebugMode; }
229
230 void ProcessDebugInfo(const stsxyter::Message& Mess, const UInt_t& uCurrDpbIdx);
231
233 void SetDebugMode(bool value) { fDebugMode = value; }
234
235 private:
236 TString fHistoFileName = "HistosUnpackerSts.root";
237
239 double_t dFirstTsStartTime = 0;
240 double fdStartTime = -1;
241 double fdStartTimeMsSz = -1;
242 //Bool_t fbLongHistoEnable;
243 UInt_t fuLongHistoNbSeconds = 3600;
246
248 std::vector<uint32_t> fvuNbRawTsFeb = {};
249 std::vector<uint32_t> fvuNbDigisTsFeb = {};
251 std::vector<std::vector<uint32_t>> fvvuNbRawTsChan = {};
252 std::vector<std::vector<uint32_t>> fvvuNbDigisTsChan = {};
253
255 std::vector<TCanvas*> fvcStsSumm;
256 std::vector<TCanvas*> fvcStsSmxErr;
257
259 TH1* fhDigisTimeInRun = nullptr;
260 TH1* fhVectorSize = nullptr;
261 TH1* fhVectorCapacity = nullptr;
262 TH1* fhMsCntEvo = nullptr;
263 TH2* fhMsErrorsEvo = nullptr;
266 TH2* fhStsFebAsicHitCounts = nullptr;
267 TH2* fhStsStatusMessType = nullptr;
268 TProfile* fhRawHitRatioPerFeb = nullptr;
269
271 std::vector<TProfile*> fvhRawChRatio = {};
272 std::vector<TProfile*> fvhHitChRatio = {};
273 std::vector<TProfile*> fvhDupliChRatio = {};
274 std::vector<TProfile*> fvhRawHitRatioPerCh = {};
275 std::vector<TProfile*> fvhRawDupliRatioPerCh = {};
276 std::vector<TH1*> fvhStsFebChanCntRaw;
277 std::vector<TH2*> fvhStsFebChanAdcRaw;
278 std::vector<TProfile*> fvhStsFebChanAdcRawProf;
279 std::vector<TH2*> fvhStsFebChanAdcCal;
280 std::vector<TProfile*> fvhStsFebChanAdcCalProf;
281 std::vector<TH2*> fvhStsFebChanRawTs;
282 std::vector<TH2*> fvhStsFebChanMissEvt;
283 std::vector<TH2*> fvhStsFebChanMissEvtEvo;
284 std::vector<TH2*> fvhStsFebAsicMissEvtEvo;
285 std::vector<TH1*> fvhStsFebMissEvtEvo;
286 std::vector<TH2*> fvhStsFebChanHitRateEvo;
287 std::vector<TH2*> fvhStsFebAsicHitRateEvo;
288 std::vector<TH1*> fvhStsFebHitRateEvo;
291 std::vector<TH1*> fvhStsFebHitRateEvoLong;
292
294 bool fDebugMode = false;
295
297 TH1* fhStsMessType = nullptr;
298 TH2* fhStsMessTypePerDpb = nullptr;
299 TH2* fhStsMessTypePerElink = nullptr;
300 TH2* fhStsHitsElinkPerDpb = nullptr;
301 TH2* fhStsDpbRawTsMsb = nullptr;
302 TH2* fhStsDpbRawTsMsbSx = nullptr;
303 TH2* fhStsDpbRawTsMsbDpb = nullptr;
304
305 TProfile2D* fhRawHitRatioEvoPerFeb = nullptr;
306 std::vector<TH2*> fvhChDupliAdc = {};
307 std::vector<TProfile2D*> fvhRawChRatioEvo = {};
308 std::vector<TProfile2D*> fvhHitChRatioEvo = {};
309 std::vector<TProfile2D*> fvhDupliChRatioEvo = {};
310 std::vector<TProfile2D*> fvhRawHitRatioEvoPerCh = {};
311 std::vector<TProfile2D*> fvhRawDupliRatioEvoPerCh = {};
312
313 static const UInt_t kiMaxNbFlibLinks = 32;
316
318 std::vector<TH1*> fvhStsChanCntRaw;
319 std::vector<TH2*> fvhStsChanAdcRaw;
320 std::vector<TProfile*> fvhStsChanAdcRawProf;
321 std::vector<TH2*> fvhStsChanRawTs;
322 std::vector<TH2*> fvhStsChanMissEvt;
323
325 uint32_t fNrElinksPerDpb = 0;
326
327
339 std::vector<std::pair<TNamed*, std::string>>
341 std::vector<std::pair<TCanvas*, std::string>>
343
346
347 ClassDef(CbmStsUnpackMonitor, 1)
348};
349
350#endif
static double dTsStartTime
void SetHistoFileName(TString nameIn)
void FillStsMessTypePerDpb(UInt_t DpbIdx, uint16_t typeMess)
void FillMsSize(UInt_t uMsComp, UInt_t uSize)
void FillMsCntEvo(ULong64_t MsIdx)
void FillStsChanAdcRaw(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
void PrintDebugInfo(const uint64_t MsStartTime, const size_t NrProcessedTs, const uint16_t msDescriptorFlags, const uint32_t uSize)
void CountRawHit(uint32_t uFebIdx, uint32_t uChanInFeb)
void FillStsDpbRawTsMsb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
void FillHitEvoMonitoringHistos(const UInt_t &uFebIdx, const UInt_t &uAsicIdx, const UInt_t &uAsicInFeb, const UInt_t &uChanInFeb, const Double_t &dAbsTimeSec, const bool &isHitMissedEvts)
Bool_t CreateMsComponentSizeHistos(UInt_t component)
std::vector< TProfile2D * > fvhDupliChRatioEvo
void FillStsFebChanHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uChanInFeb)
void FillStsAllAsicsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uAsicIdx)
std::vector< uint32_t > fvuNbRawTsFeb
Per timeslice counters to evaluate the eventual raw messages rejection per FEB.
std::vector< TH1 * > fvhStsFebHitRateEvoLong
std::vector< TProfile2D * > fvhRawChRatioEvo
TProfile2D * fhRawHitRatioEvoPerFeb
void FillStsStatusMessType(UInt_t uAsicIdx, UShort_t usStatusField)
void SetLongDurationLimits(UInt_t uDurationSeconds, UInt_t uBinSize)
void FillMsErrorsEvo(ULong64_t MsIdx, uint16_t MsErrorType)
Bool_t CreateDebugHistograms(CbmMcbm2018StsPar *pUnpackPar)
void FillStsAllFebsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uFebIdx)
void FillStsHitsElinkPerDpb(UInt_t DpbIdx, UInt_t ElinkIdx)
CbmStsUnpackMonitor(const CbmStsUnpackMonitor &)
Vector of pointers to canvases + optional folder name.
void FillStsDpbRawTsMsbDpb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
void FillStsFebChanAdcRawProf(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
std::vector< TH1 * > fvhStsFebMissEvtEvo
std::vector< TProfile * > fvhRawDupliRatioPerCh
std::vector< TH2 * > fvhStsFebChanHitRateEvoLong
void FillStsFebChanCntRaw(UInt_t uFebIdx, UInt_t uChanInFeb)
Fill general "per Feb" histogram vectors.
void FillStsDpbRawTsMsbSx(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
void FillStsFebChanAdcCal(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
TH1 * fhDigisTimeInRun
General histograms.
void CountDigi(uint32_t uFebIdx, uint32_t uChanInFeb)
uint32_t fNrElinksPerDpb
Number of elinks per dpb, extracted from the parset.
std::vector< TProfile2D * > fvhRawHitRatioEvoPerCh
void AddHistoToVector(TNamed *pointer, std::string sFolder="")
void AddCanvasToVector(TCanvas *pointer, std::string sFolder="")
std::vector< TProfile * > fvhHitChRatio
void FillStsFebChanMissEvt(UInt_t uFebIdx, UInt_t uChan, bool missEvtFlag)
std::vector< uint32_t > fvuNbDigisTsFeb
void FillStsMessType(uint16_t typeMess)
Fill debugging histograms.
void FillDigisTimeInRun(Double_t Time)
void FillStsFebAsicHitCounts(UInt_t uFebIdx, UInt_t uAsicInFeb)
std::vector< TH2 * > fvhStsChanAdcRaw
Bool_t ResetMsComponentSizeHistos(UInt_t component)
void FillStsFebAsicHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uAsicInFeb)
static const UInt_t kiMaxNbFlibLinks
std::vector< TCanvas * > fvcStsSumm
Canvases.
std::vector< TProfile * > fvhStsFebChanAdcRawProf
std::vector< std::pair< TNamed *, std::string > > fvpAllHistoPointers
std::vector< TH2 * > fvhStsFebChanRawTs
CbmStsUnpackMonitor operator=(const CbmStsUnpackMonitor &)
std::vector< TProfile * > fvhDupliChRatio
std::vector< uint32_t > vNbMessType
void FillStsFebMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
std::vector< TH2 * > fvhStsFebChanMissEvtEvo
std::vector< TH1 * > fvhStsFebChanCntRaw
void FillStsChanMissEvt(UInt_t uAsicIdx, UShort_t usChan, bool missedEvtFlag)
std::vector< TH2 * > fvhStsFebChanMissEvt
std::vector< std::pair< TCanvas *, std::string > > GetCanvasVector()
void ProcessDebugInfo(const stsxyter::Message &Mess, const UInt_t &uCurrDpbIdx)
TProfile * fvhMsSizeTime[kiMaxNbFlibLinks]
std::vector< TProfile * > fvhStsFebChanAdcCalProf
std::vector< TProfile * > fvhStsChanAdcRawProf
std::vector< TH2 * > fvhStsFebChanHitRateEvo
void FillPerTimesliceCountersHistos(double_t dTsStartTime)
void FillStsFebChanRawTs(UInt_t uFebIdx, UInt_t uChan, UShort_t usRawTs)
void FillStsFebHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin)
std::vector< TH2 * > fvhStsFebAsicHitRateEvoLong
void FillStsChanCntRaw(UInt_t uAsicIdx, UShort_t usChan)
Fill debugging "per Asic" histogram vectors.
std::vector< TH2 * > fvhChDupliAdc
std::vector< TH2 * > fvhStsChanMissEvt
void FillStsFebAsicMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
void Finish()
Write all histograms and canvases to file.
void FillStsFebHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
void FillStsFebChanAdcCalProf(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
void FillStsMessTypePerElink(UInt_t ElinkIdx, uint16_t typeMess)
double_t dFirstTsStartTime
Rate evolution histos.
std::vector< std::pair< TCanvas *, std::string > > fvpAllCanvasPointers
Vector of pointers to histograms + optional folder name.
void FillStsFebChanMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
std::vector< TProfile * > fvhRawChRatio
General "per Feb" histogram vectors.
std::vector< TH2 * > fvhStsFebAsicHitRateEvo
std::vector< TH2 * > fvhStsFebChanAdcRaw
void FillStsChanRawTs(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawTs)
std::vector< TProfile2D * > fvhRawDupliRatioEvoPerCh
bool GetDebugMode()
Activate the debug mode.
void FillDuplicateHitsAdc(const uint32_t &uFebIdx, const uint32_t &uChanInFeb, const uint16_t &usAdc)
void FillStsChanAdcRawProf(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
std::vector< std::vector< uint32_t > > fvvuNbDigisTsChan
void FillVectorCapacity(ULong64_t TsIdx, UInt_t Capacity)
Bool_t Init(CbmMcbm2018StsPar *digiParSet)
Init all required parameter informations and histograms.
Bool_t CreateHistograms(CbmMcbm2018StsPar *pUnpackPar)
std::vector< std::vector< uint32_t > > fvvuNbRawTsChan
Per timeslice counters to evaluate the eventual raw messages rejection per [FEB, chan] pairs.
std::vector< TH2 * > fvhStsFebChanAdcCal
std::vector< std::pair< TNamed *, std::string > > GetHistoVector()
void FillStsFebChanHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
void FillHitMonitoringHistos(const UInt_t &uFebIdx, const UShort_t &usChan, const UInt_t &uChanInFeb, const UShort_t &usRawAdc, const Double_t &dCalAdc, const UShort_t &usRawTs, const bool &isHitMissedEvts)
void FillStsFebAsicHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
void FillHitDebugMonitoringHistos(const UInt_t &uAsicIdx, const UShort_t &usChan, const UShort_t &usRawAdc, const UShort_t &usRawTs, const bool &isHitMissedEvts)
std::vector< TH2 * > fvhStsFebAsicMissEvtEvo
void SetDebugMode(bool value)
Activate the debug mode.
TH1 * fvhMsSize[kiMaxNbFlibLinks]
bool fDebugMode
Flag if debug mode is active or not.
void FillMsSizeTime(UInt_t uMsComp, Double_t dTime, UInt_t uSize)
TH1 * fhStsMessType
Debugging histograms.
std::vector< TH1 * > fvhStsChanCntRaw
Debugging "per Asic" histogram vectors.
std::vector< TH1 * > fvhStsFebHitRateEvo
std::vector< TProfile * > fvhRawHitRatioPerCh
std::vector< TCanvas * > fvcStsSmxErr
void FillStsFebChanAdcRaw(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
std::vector< TProfile2D * > fvhHitChRatioEvo
void FillVectorSize(ULong64_t TsIdx, UInt_t Size)
Fill general histograms.
std::vector< TH2 * > fvhStsChanRawTs