CbmRoot
Loading...
Searching...
No Matches
CbmMuchUnpackMonitor.h
Go to the documentation of this file.
1/* Copyright (C) 2022 Fair GmbH, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau [committer] */
4
5#ifndef CbmMuchUnpackMonitor_H
6#define CbmMuchUnpackMonitor_H
7
8#include "CbmMuchUnpackPar.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 ~CbmMuchUnpackMonitor();
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(CbmMuchUnpackPar* digiParSet);
37
38 Bool_t CreateHistograms(CbmMuchUnpackPar* pUnpackPar);
39 Bool_t ResetHistograms();
40
41 Bool_t CreateDebugHistograms(CbmMuchUnpackPar* 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 FillMuchAllFebsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uFebIdx)
82 {
83 fhMuchAllFebsHitRateEvo->Fill(dTimeSinceStartSec, uFebIdx);
84 }
85 void FillMuchAllAsicsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uAsicIdx)
86 {
87 fhMuchAllAsicsHitRateEvo->Fill(dTimeSinceStartSec, uAsicIdx);
88 }
89 void FillMuchFebAsicHitCounts(UInt_t uFebIdx, UInt_t uAsicInFeb)
90 {
91 fhMuchFebAsicHitCounts->Fill(uFebIdx, uAsicInFeb);
92 }
93 void FillMuchStatusMessType(UInt_t uAsicIdx, UShort_t usStatusField)
94 {
95 fhMuchStatusMessType->Fill(uAsicIdx, usStatusField);
96 }
97
99 void FillMuchFebChanCntRaw(UInt_t uFebIdx, UInt_t uChanInFeb) { fvhMuchFebChanCntRaw[uFebIdx]->Fill(uChanInFeb); }
100 void FillMuchFebChanAdcRaw(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
101 {
102 fvhMuchFebChanAdcRaw[uFebIdx]->Fill(uChanInFeb, usRawAdc);
103 }
104 void FillMuchFebChanAdcRawProf(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
105 {
106 fvhMuchFebChanAdcRawProf[uFebIdx]->Fill(uChanInFeb, usRawAdc);
107 }
108 void FillMuchFebChanAdcCal(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
109 {
110 fvhMuchFebChanAdcCal[uFebIdx]->Fill(uChanInFeb, dCalAdc);
111 }
112 void FillMuchFebChanAdcCalProf(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
113 {
114 fvhMuchFebChanAdcCalProf[uFebIdx]->Fill(uChanInFeb, dCalAdc);
115 }
116 void FillMuchFebChanRawTs(UInt_t uFebIdx, UInt_t uChan, UShort_t usRawTs)
117 {
118 fvhMuchFebChanRawTs[uFebIdx]->Fill(uChan, usRawTs);
119 }
120 void FillMuchFebChanMissEvt(UInt_t uFebIdx, UInt_t uChan, bool missEvtFlag)
121 {
122 fvhMuchFebChanMissEvt[uFebIdx]->Fill(uChan, missEvtFlag);
123 }
124 void FillMuchFebChanMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
125 {
126 fvhMuchFebChanMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec, uChanInFeb);
127 }
128 void FillMuchFebAsicMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
129 {
130 fvhMuchFebAsicMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec, uAsicInFeb);
131 }
132 void FillMuchFebMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
133 {
134 fvhMuchFebMissEvtEvo[uFebIdx]->Fill(dTimeSinceStartSec);
135 }
136 void FillMuchFebChanHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
137 {
138 fvhMuchFebChanHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec, uChanInFeb);
139 }
140 void FillMuchFebAsicHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
141 {
142 fvhMuchFebAsicHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec, uAsicInFeb);
143 }
144 void FillMuchFebHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
145 {
146 fvhMuchFebHitRateEvo[uFebIdx]->Fill(dTimeSinceStartSec);
147 }
148 void FillMuchFebChanHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uChanInFeb)
149 {
150 fvhMuchFebChanHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, uChanInFeb, 1.0 / 60.0);
151 }
152 void FillMuchFebAsicHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uAsicInFeb)
153 {
154 fvhMuchFebAsicHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, uAsicInFeb, 1.0 / 60.0);
155 }
156 void FillMuchFebHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin)
157 {
158 fvhMuchFebHitRateEvoLong[uFebIdx]->Fill(dTimeSinceStartMin, 1.0 / 60.0);
159 }
160
162 void FillMuchMessType(uint16_t typeMess) { fhMuchMessType->Fill(typeMess); }
163 void FillMuchMessTypePerDpb(UInt_t DpbIdx, uint16_t typeMess) { fhMuchMessTypePerDpb->Fill(DpbIdx, typeMess); }
164 void FillMuchMessTypePerElink(UInt_t ElinkIdx, uint16_t typeMess)
165 {
166 fhMuchMessTypePerElink->Fill(ElinkIdx, typeMess);
167 }
168 void FillMuchHitsElinkPerDpb(UInt_t DpbIdx, UInt_t ElinkIdx) { fhMuchHitsElinkPerDpb->Fill(DpbIdx, ElinkIdx); }
169 void FillMuchDpbRawTsMsb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
170 {
171 fhMuchDpbRawTsMsb->Fill(uCurrDpbIdx, ulCurrentTsMsb);
172 }
173 void FillMuchDpbRawTsMsbSx(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
174 {
175 fhMuchDpbRawTsMsbSx->Fill(uCurrDpbIdx, (ulCurrentTsMsb & 0x1F));
176 }
177 void FillMuchDpbRawTsMsbDpb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
178 {
179 fhMuchDpbRawTsMsbDpb->Fill(uCurrDpbIdx, (ulCurrentTsMsb >> 5));
180 }
181
183 void FillMuchChanCntRaw(UInt_t uAsicIdx, UShort_t usChan) { fvhMuchChanCntRaw[uAsicIdx]->Fill(usChan); }
184 void FillMuchChanAdcRaw(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
185 {
186 fvhMuchChanAdcRaw[uAsicIdx]->Fill(usChan, usRawAdc);
187 }
188 void FillMuchChanAdcRawProf(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
189 {
190 fvhMuchChanAdcRawProf[uAsicIdx]->Fill(usChan, usRawAdc);
191 }
192 void FillMuchChanRawTs(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawTs)
193 {
194 fvhMuchChanRawTs[uAsicIdx]->Fill(usChan, usRawTs);
195 }
196 void FillMuchChanMissEvt(UInt_t uAsicIdx, UShort_t usChan, bool missedEvtFlag)
197 {
198 fvhMuchChanMissEvt[uAsicIdx]->Fill(usChan, missedEvtFlag);
199 }
200
201 //Fill Ms Component Size Histos
202 void FillMsSize(UInt_t uMsComp, UInt_t uSize) { fvhMsSize[uMsComp]->Fill(uSize); }
203 void FillMsSizeTime(UInt_t uMsComp, Double_t dTime, UInt_t uSize)
204 {
205 if (fdStartTimeMsSz < 0) fdStartTimeMsSz = dTime;
206 fvhMsSizeTime[uMsComp]->Fill(dTime - fdStartTimeMsSz, uSize);
207 }
208
209 void FillHitMonitoringHistos(const UInt_t& uFebIdx, const UShort_t& usChan, const UInt_t& uChanInFeb,
210 const UShort_t& usRawAdc, const Double_t& dCalAdc, const UShort_t& usRawTs,
211 const bool& isHitMissedEvts);
212
213 void FillHitDebugMonitoringHistos(const UInt_t& uAsicIdx, const UShort_t& usChan, const UShort_t& usRawAdc,
214 const UShort_t& usRawTs, const bool& isHitMissedEvts);
215
216 void FillHitEvoMonitoringHistos(const UInt_t& uFebIdx, const UInt_t& uAsicIdx, const UInt_t& uAsicInFeb,
217 const UInt_t& uChanInFeb, const Double_t& dAbsTimeSec, const bool& isHitMissedEvts);
218
219 void CountRawHit(uint32_t uFebIdx, uint32_t uChanInFeb)
220 {
221 fvuNbRawTsFeb[uFebIdx]++;
222 fvvuNbRawTsChan[uFebIdx][uChanInFeb]++;
223 }
224 void CountDigi(uint32_t uFebIdx, uint32_t uChanInFeb)
225 {
226 fvuNbDigisTsFeb[uFebIdx]++;
227 fvvuNbDigisTsChan[uFebIdx][uChanInFeb]++;
228 }
229
231 void FillDuplicateHitsAdc(const uint32_t& uFebIdx, const uint32_t& uChanInFeb, const uint16_t& usAdc);
232
234 bool GetDebugMode() { return fDebugMode; }
235
236 void ProcessDebugInfo(const stsxyter::Message& Mess, const UInt_t& uCurrDpbIdx);
237
239 void SetDebugMode(bool value) { fDebugMode = value; }
240
241 private:
242 TString fHistoFileName = "HistosUnpackerMuch.root";
243
245 double_t dFirstTsStartTime = 0;
246 double fdStartTime = -1;
247 double fdStartTimeMsSz = -1;
248 //Bool_t fbLongHistoEnable;
249 UInt_t fuLongHistoNbSeconds = 3600;
252
254 std::vector<uint32_t> fvuNbRawTsFeb = {};
255 std::vector<uint32_t> fvuNbDigisTsFeb = {};
257 std::vector<std::vector<uint32_t>> fvvuNbRawTsChan = {};
258 std::vector<std::vector<uint32_t>> fvvuNbDigisTsChan = {};
259
261 std::vector<TCanvas*> fvcMuchSumm;
262 std::vector<TCanvas*> fvcMuchSmxErr;
263
265 TH1* fhDigisTimeInRun = nullptr;
266 TH1* fhVectorSize = nullptr;
267 TH1* fhVectorCapacity = nullptr;
268 TH1* fhMsCntEvo = nullptr;
269 TH2* fhMsErrorsEvo = nullptr;
273 TH2* fhMuchStatusMessType = nullptr;
274 TProfile* fhRawHitRatioPerFeb = nullptr;
275
277 std::vector<TProfile*> fvhRawChRatio = {};
278 std::vector<TProfile*> fvhHitChRatio = {};
279 std::vector<TProfile*> fvhDupliChRatio = {};
280 std::vector<TProfile*> fvhRawHitRatioPerCh = {};
281 std::vector<TProfile*> fvhRawDupliRatioPerCh = {};
282 std::vector<TH1*> fvhMuchFebChanCntRaw;
283 std::vector<TH2*> fvhMuchFebChanAdcRaw;
284 std::vector<TProfile*> fvhMuchFebChanAdcRawProf;
285 std::vector<TH2*> fvhMuchFebChanAdcCal;
286 std::vector<TProfile*> fvhMuchFebChanAdcCalProf;
287 std::vector<TH2*> fvhMuchFebChanRawTs;
288 std::vector<TH2*> fvhMuchFebChanMissEvt;
289 std::vector<TH2*> fvhMuchFebChanMissEvtEvo;
290 std::vector<TH2*> fvhMuchFebAsicMissEvtEvo;
291 std::vector<TH1*> fvhMuchFebMissEvtEvo;
292 std::vector<TH2*> fvhMuchFebChanHitRateEvo;
293 std::vector<TH2*> fvhMuchFebAsicHitRateEvo;
294 std::vector<TH1*> fvhMuchFebHitRateEvo;
297 std::vector<TH1*> fvhMuchFebHitRateEvoLong;
298
300 bool fDebugMode = false;
301
303 TH1* fhMuchMessType = nullptr;
304 TH2* fhMuchMessTypePerDpb = nullptr;
306 TH2* fhMuchHitsElinkPerDpb = nullptr;
307 TH2* fhMuchDpbRawTsMsb = nullptr;
308 TH2* fhMuchDpbRawTsMsbSx = nullptr;
309 TH2* fhMuchDpbRawTsMsbDpb = nullptr;
310
311 TProfile2D* fhRawHitRatioEvoPerFeb = nullptr;
312 std::vector<TH2*> fvhChDupliAdc = {};
313 std::vector<TProfile2D*> fvhRawChRatioEvo = {};
314 std::vector<TProfile2D*> fvhHitChRatioEvo = {};
315 std::vector<TProfile2D*> fvhDupliChRatioEvo = {};
316 std::vector<TProfile2D*> fvhRawHitRatioEvoPerCh = {};
317 std::vector<TProfile2D*> fvhRawDupliRatioEvoPerCh = {};
318
319 static const UInt_t kiMaxNbFlibLinks = 32;
322
324 std::vector<TH1*> fvhMuchChanCntRaw;
325 std::vector<TH2*> fvhMuchChanAdcRaw;
326 std::vector<TProfile*> fvhMuchChanAdcRawProf;
327 std::vector<TH2*> fvhMuchChanRawTs;
328 std::vector<TH2*> fvhMuchChanMissEvt;
329
331 uint32_t fNrElinksPerDpb = 0;
332
333
345 std::vector<std::pair<TNamed*, std::string>>
347 std::vector<std::pair<TCanvas*, std::string>>
349
352
353 ClassDef(CbmMuchUnpackMonitor, 1)
354};
355
356#endif
static double dTsStartTime
std::vector< std::vector< uint32_t > > fvvuNbDigisTsChan
Bool_t CreateMsComponentSizeHistos(UInt_t component)
void FillMuchChanMissEvt(UInt_t uAsicIdx, UShort_t usChan, bool missedEvtFlag)
void FillMuchMessTypePerDpb(UInt_t DpbIdx, uint16_t typeMess)
void FillMuchDpbRawTsMsbDpb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
void FillMuchAllFebsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uFebIdx)
void PrintDebugInfo(const uint64_t MsStartTime, const size_t NrProcessedTs, const uint16_t msDescriptorFlags, const uint32_t uSize)
std::vector< TProfile * > fvhHitChRatio
void FillPerTimesliceCountersHistos(double_t dTsStartTime)
void FillMuchFebMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
void ProcessDebugInfo(const stsxyter::Message &Mess, const UInt_t &uCurrDpbIdx)
void FillMuchFebChanHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uChanInFeb)
Bool_t CreateDebugHistograms(CbmMuchUnpackPar *pUnpackPar)
std::vector< std::pair< TNamed *, std::string > > GetHistoVector()
double_t dFirstTsStartTime
Rate evolution histos.
void FillMuchFebChanRawTs(UInt_t uFebIdx, UInt_t uChan, UShort_t usRawTs)
CbmMuchUnpackMonitor(const CbmMuchUnpackMonitor &)
Vector of pointers to canvases + optional folder name.
std::vector< std::pair< TCanvas *, std::string > > fvpAllCanvasPointers
Vector of pointers to histograms + optional folder name.
void SetDebugMode(bool value)
Activate the debug mode.
std::vector< uint32_t > vNbMessType
void CountRawHit(uint32_t uFebIdx, uint32_t uChanInFeb)
std::vector< TProfile * > fvhRawChRatio
General "per Feb" histogram vectors.
TH1 * fhDigisTimeInRun
General histograms.
std::vector< std::pair< TNamed *, std::string > > fvpAllHistoPointers
static const UInt_t kiMaxNbFlibLinks
void SetLongDurationLimits(UInt_t uDurationSeconds, UInt_t uBinSize)
std::vector< TH2 * > fvhMuchChanRawTs
void FillMuchChanRawTs(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawTs)
void FillMuchAllAsicsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uAsicIdx)
Bool_t Init(CbmMuchUnpackPar *digiParSet)
Init all required parameter informations and histograms.
std::vector< TH1 * > fvhMuchFebChanCntRaw
std::vector< TH1 * > fvhMuchFebHitRateEvoLong
bool GetDebugMode()
Activate the debug mode.
void FillVectorCapacity(ULong64_t TsIdx, UInt_t Capacity)
void FillMuchFebChanMissEvt(UInt_t uFebIdx, UInt_t uChan, bool missEvtFlag)
std::vector< TProfile2D * > fvhHitChRatioEvo
void FillMuchFebChanAdcRaw(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
std::vector< TH1 * > fvhMuchFebMissEvtEvo
std::vector< TH2 * > fvhMuchFebAsicHitRateEvo
std::vector< TProfile * > fvhRawDupliRatioPerCh
void FillDuplicateHitsAdc(const uint32_t &uFebIdx, const uint32_t &uChanInFeb, const uint16_t &usAdc)
TH1 * fvhMsSize[kiMaxNbFlibLinks]
std::vector< TH2 * > fvhMuchFebChanHitRateEvoLong
void FillMuchFebHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin)
void FillMuchFebAsicHitCounts(UInt_t uFebIdx, UInt_t uAsicInFeb)
std::vector< TH2 * > fvhMuchChanMissEvt
void FillMsErrorsEvo(ULong64_t MsIdx, uint16_t MsErrorType)
std::vector< TH1 * > fvhMuchFebHitRateEvo
std::vector< TProfile2D * > fvhRawDupliRatioEvoPerCh
std::vector< TProfile2D * > fvhRawChRatioEvo
void FillMuchStatusMessType(UInt_t uAsicIdx, UShort_t usStatusField)
void FillMuchMessTypePerElink(UInt_t ElinkIdx, uint16_t typeMess)
std::vector< TH2 * > fvhMuchFebChanHitRateEvo
std::vector< std::pair< TCanvas *, std::string > > GetCanvasVector()
void FillHitDebugMonitoringHistos(const UInt_t &uAsicIdx, const UShort_t &usChan, const UShort_t &usRawAdc, const UShort_t &usRawTs, const bool &isHitMissedEvts)
std::vector< TH2 * > fvhMuchFebAsicHitRateEvoLong
void SetHistoFileName(TString nameIn)
void AddCanvasToVector(TCanvas *pointer, std::string sFolder="")
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)
std::vector< TCanvas * > fvcMuchSumm
Canvases.
void FillMuchFebChanAdcCalProf(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
void FillMsSizeTime(UInt_t uMsComp, Double_t dTime, UInt_t uSize)
void FillMuchDpbRawTsMsbSx(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)
void FillMuchFebAsicMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
std::vector< TH2 * > fvhChDupliAdc
std::vector< TProfile2D * > fvhRawHitRatioEvoPerCh
void FillMuchFebAsicHitRateEvoLong(UInt_t uFebIdx, Double_t dTimeSinceStartMin, UInt_t uAsicInFeb)
void FillMuchFebChanCntRaw(UInt_t uFebIdx, UInt_t uChanInFeb)
Fill general "per Feb" histogram vectors.
void FillDigisTimeInRun(Double_t Time)
std::vector< TH2 * > fvhMuchChanAdcRaw
std::vector< TH1 * > fvhMuchChanCntRaw
Debugging "per Asic" histogram vectors.
std::vector< TProfile2D * > fvhDupliChRatioEvo
std::vector< uint32_t > fvuNbRawTsFeb
Per timeslice counters to evaluate the eventual raw messages rejection per FEB.
void FillMuchFebChanAdcRawProf(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
TProfile * fvhMsSizeTime[kiMaxNbFlibLinks]
TH1 * fhMuchMessType
Debugging histograms.
Bool_t ResetMsComponentSizeHistos(UInt_t component)
void FillMuchFebHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec)
void FillMuchChanAdcRawProf(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
void FillMuchFebChanHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
std::vector< TProfile * > fvhRawHitRatioPerCh
bool fDebugMode
Flag if debug mode is active or not.
std::vector< TProfile * > fvhMuchChanAdcRawProf
void FillMsSize(UInt_t uMsComp, UInt_t uSize)
std::vector< std::vector< uint32_t > > fvvuNbRawTsChan
Per timeslice counters to evaluate the eventual raw messages rejection per [FEB, chan] pairs.
std::vector< TProfile * > fvhMuchFebChanAdcCalProf
void FillMuchFebAsicHitRateEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uAsicInFeb)
std::vector< TH2 * > fvhMuchFebAsicMissEvtEvo
void FillVectorSize(ULong64_t TsIdx, UInt_t Size)
Fill general histograms.
void FillMuchChanCntRaw(UInt_t uAsicIdx, UShort_t usChan)
Fill debugging "per Asic" histogram vectors.
void Finish()
Write all histograms and canvases to file.
std::vector< TH2 * > fvhMuchFebChanRawTs
Bool_t CreateHistograms(CbmMuchUnpackPar *pUnpackPar)
void FillMsCntEvo(ULong64_t MsIdx)
std::vector< TH2 * > fvhMuchFebChanMissEvtEvo
void CountDigi(uint32_t uFebIdx, uint32_t uChanInFeb)
void FillMuchFebChanMissEvtEvo(UInt_t uFebIdx, Double_t dTimeSinceStartSec, UInt_t uChanInFeb)
CbmMuchUnpackMonitor operator=(const CbmMuchUnpackMonitor &)
void FillMuchChanAdcRaw(UInt_t uAsicIdx, UShort_t usChan, UShort_t usRawAdc)
std::vector< uint32_t > fvuNbDigisTsFeb
void FillMuchFebChanAdcCal(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
void FillMuchDpbRawTsMsb(UInt_t uCurrDpbIdx, ULong_t ulCurrentTsMsb)
std::vector< TProfile * > fvhMuchFebChanAdcRawProf
std::vector< TCanvas * > fvcMuchSmxErr
std::vector< TH2 * > fvhMuchFebChanMissEvt
std::vector< TH2 * > fvhMuchFebChanAdcRaw
uint32_t fNrElinksPerDpb
Number of elinks per dpb, extracted from the parset.
void AddHistoToVector(TNamed *pointer, std::string sFolder="")
std::vector< TH2 * > fvhMuchFebChanAdcCal
void FillMuchMessType(uint16_t typeMess)
Fill debugging histograms.
void FillMuchHitsElinkPerDpb(UInt_t DpbIdx, UInt_t ElinkIdx)
std::vector< TProfile * > fvhDupliChRatio