7#include "MicrosliceDescriptor.hpp"
11#include <FairRunOnline.h>
14#include <RtypesCore.h>
18#include <THttpServer.h>
42 if (iter->first !=
nullptr) {
48 if (iter->first !=
nullptr) {
57 TString sHistName{
""};
69 for (uint32_t uFebIdx = 0; uFebIdx < uNbFebs; ++uFebIdx) {
75 fhDigisTimeInRun =
new TH1I(
"hStsDigisTimeInRun",
"Digis Nb vs Time in Run; Time in run [s]; Digis Nb []", 10, 0, 1);
79 fhVectorSize =
new TH1I(
"fhStsVectorSize",
"Size of the vector VS TS index; TS index; Size [bytes]", 10, 0, 10);
84 new TH1I(
"fhStsVectorCapacity",
"Size of the vector VS TS index; TS index; Size [bytes]", 10000, 0., 10000.);
87 fhMsCntEvo =
new TH1I(
"fhStsMsCntEvo",
"; MS index [s]; Counts []", 600, 0.0, 600.0);
91 new TH2I(
"fhStsMsErrorsEvo",
"; MS index [s]; Error type []; Counts []", 600, 0.0, 600.0, 4, -0.5, 3.5);
95 sHistName =
"hStsAllFebsHitRateEvo";
96 title =
"Hits per second & FEB; Time [s]; FEB []; Hits []";
102 sHistName =
"hStsAllAsicsHitRateEvo";
103 title =
"Hits per second & ASIC; Time [s]; ASIC []; Hits []";
109 sHistName =
"hStsFebAsicHitCounts";
110 title =
"Hits per FEB & ASIC; FEB []; ASIC in FEB[]; Hits []";
112 new TH2I(sHistName, title, uNbFebs, -0.5, uNbFebs - 0.5, uNbAsicsPerFeb, -0.5, uNbAsicsPerFeb - 0.5);
115 sHistName =
"hStsStatusMessType";
116 title =
"Nb of status message of each type for each DPB; ASIC; Status Type";
121 sHistName =
"hStsRawHitRatioPerFeb";
122 title =
"Proportion of digis over raw hits in each FEB; FEB []; digis/raw [Prct]";
133 for (UInt_t uFebIdx = 0; uFebIdx < uNbFebs; ++uFebIdx) {
135 sHistName = Form(
"hStsRawChRatio_%03d", uFebIdx);
136 title = Form(
"Proportion of raw hits in each channel of FEB %2d; Channel []; Share of FEB raw msg [Prct]", uFebIdx);
137 fvhRawChRatio.push_back(
new TProfile(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
138 sHistName = Form(
"hStsHitChRatio_%03d", uFebIdx);
139 title = Form(
"Proportion of digis in each channel of FEB %2d; Channel []; Share of FEB digis [Prct]", uFebIdx);
140 fvhHitChRatio.push_back(
new TProfile(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
141 sHistName = Form(
"hStsDupliChRatio_%03d", uFebIdx);
143 Form(
"Proportion of duplicates in each channel of FEB %2d; Channel []; Share of FEB duplicates [Prct]", uFebIdx);
144 fvhDupliChRatio.push_back(
new TProfile(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
145 sHistName = Form(
"hStsRawHitRatioPerCh_%03d", uFebIdx);
146 title = Form(
"Proportion of digis over raw hits in each channel of FEB %2d; Channel []; digis/raw [Prct]", uFebIdx);
147 fvhRawHitRatioPerCh.push_back(
new TProfile(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
148 sHistName = Form(
"hStsRawDupliRatioPerCh_%03d", uFebIdx);
150 Form(
"Proportion of duplicates over raw hits in each channel of FEB %2d; Channel []; dupli/raw [Prct]", uFebIdx);
151 fvhRawDupliRatioPerCh.push_back(
new TProfile(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
154 sHistName = Form(
"hStsFebChanCntRaw_%03u", uFebIdx);
155 title = Form(
"Hits Count per channel, FEB #%03u; Channel; Hits []", uFebIdx);
156 fvhStsFebChanCntRaw.push_back(
new TH1I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
159 sHistName = Form(
"hStsFebChanAdcRaw_%03u", uFebIdx);
160 title = Form(
"Raw Adc distribution per channel, FEB #%03u; Channel []; Adc "
163 fvhStsFebChanAdcRaw.push_back(
new TH2I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5,
167 sHistName = Form(
"hStsFebChanAdcRawProfc_%03u", uFebIdx);
168 title = Form(
"Raw Adc prodile per channel, FEB #%03u; Channel []; Adc []", uFebIdx);
172 sHistName = Form(
"hStsFebChanAdcCal_%03u", uFebIdx);
173 title = Form(
"Cal. Adc distribution per channel, FEB #%03u; Channel []; Adc [e-]; Hits []", uFebIdx);
175 new TH2I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5, 50, 0., 100000.));
178 sHistName = Form(
"hStsFebChanAdcCalProfc_%03u", uFebIdx);
179 title = Form(
"Cal. Adc prodile per channel, FEB #%03u; Channel []; Adc [e-]", uFebIdx);
183 sHistName = Form(
"hStsFebChanRawTs_%03u", uFebIdx);
184 title = Form(
"Raw Timestamp distribution per channel, FEB #%03u; Channel "
185 "[]; Ts []; Hits []",
187 fvhStsFebChanRawTs.push_back(
new TH2I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5,
191 sHistName = Form(
"hStsFebChanMissEvt_%03u", uFebIdx);
192 title = Form(
"Missed Event flags per channel, FEB #%03u; Channel []; Miss "
195 fvhStsFebChanMissEvt.push_back(
new TH2I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5, 2, -0.5, 1.5));
198 sHistName = Form(
"hStsFebChanMissEvtEvo_%03u", uFebIdx);
199 title = Form(
"Missed Evt flags per second & channel in FEB #%03u; Time "
200 "[s]; Channel []; Missed Evt flags []",
203 new TH2I(sHistName, title, 600, 0, 600, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
207 sHistName = Form(
"hStsFebAsicMissEvtEvo_%03u", uFebIdx);
208 title = Form(
"Missed Evt flags per second & StsXyter in FEB #%03u; Time "
209 "[s]; Asic []; Missed Evt flags []",
212 new TH2I(sHistName, title, 600, 0, 600, uNbAsicsPerFeb, -0.5, uNbAsicsPerFeb - 0.5));
216 sHistName = Form(
"hStsFebMissEvtEvo_%03u", uFebIdx);
217 title = Form(
"Missed Evt flags per second & channel in FEB #%03u; Time "
218 "[s]; Missed Evt flags []",
224 sHistName = Form(
"hStsFebChanRateEvo_%03u", uFebIdx);
225 title = Form(
"Hits per second & channel in FEB #%03u; Time [s]; Channel []; Hits []", uFebIdx);
227 new TH2I(sHistName, title, 600, 0, 600, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
231 sHistName = Form(
"hStsFebAsicRateEvo_%03u", uFebIdx);
232 title = Form(
"Hits per second & StsXyter in FEB #%03u; Time [s]; Asic []; Hits []", uFebIdx);
234 new TH2I(sHistName, title, 600, 0, 600, uNbAsicsPerFeb, -0.5, uNbAsicsPerFeb - 0.5));
238 sHistName = Form(
"hStsFebRateEvo_%03u", uFebIdx);
239 title = Form(
"Hits per second in FEB #%03u; Time [s]; Hits []", uFebIdx);
244 sHistName = Form(
"hStsFebChanRateEvoLong_%03u", uFebIdx);
245 title = Form(
"Hits per second & channel in FEB #%03u; Time [min]; Channel []; Hits []", uFebIdx);
247 uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
250 sHistName = Form(
"hStsFebAsicRateEvoLong_%03u", uFebIdx);
251 title = Form(
"Hits per second & StsXyter in FEB #%03u; Time [min]; Asic []; Hits []", uFebIdx);
253 uNbAsicsPerFeb, -0.5, uNbAsicsPerFeb - 0.5));
256 sHistName = Form(
"hStsFebRateEvoLong_%03u", uFebIdx);
257 title = Form(
"Hits per second in FEB #%03u; Time [min]; Hits []", uFebIdx);
284 const Double_t w = 2 * 400;
285 const Double_t
h = 3 * 200;
290 for (UInt_t uFebIdx = 0; uFebIdx < uNbFebs; ++uFebIdx) {
292 fvcStsSumm[uFebIdx] =
new TCanvas(Form(
"cStsSum_%03u", uFebIdx), Form(
"Summary plots for FEB %03u", uFebIdx), w,
h);
302 for (UInt_t uFebIdx = 0; uFebIdx <
fvcStsSumm.size(); ++uFebIdx) {
359 TString sMsSizeName = Form(
"StsMsSize_link_%02u", component);
360 TString sMsSizeTitle = Form(
"Size of MS for nDPB of link %02u; Ms Size [bytes]", component);
361 fvhMsSize[component] =
new TH1F(sMsSizeName.Data(), sMsSizeTitle.Data(), 30000, 0., 30000.);
362 fvhMsSize[component]->SetCanExtend(TH2::kAllAxes);
366 TString sMsSizeName = Form(
"StsMsSizeTime_link_%02u", component);
367 TString sMsSizeTitle = Form(
"Size of MS vs time for gDPB of link %02u; Time[s] ; Ms Size [bytes]", component);
368 fvhMsSizeTime[component] =
new TProfile(sMsSizeName.Data(), sMsSizeTitle.Data(), 15000, 0., 300.);
399 for (UInt_t uFebIdx = 0; uFebIdx <
fvhRawChRatio.size(); ++uFebIdx) {
460 const UInt_t uNrOfDpbs = pUnpackPar->
GetNrOfDpbs();
464 TString sHistName{
""};
467 sHistName =
"hStsPulserMessageType";
468 title =
"Nb of message for each type; Type";
478 sHistName =
"hStsPulserMessageTypePerDpb";
479 title =
"Nb of message of each type for each DPB; DPB; Type";
489 sHistName =
"hStsMessTypePerElink";
490 title =
"Nb of message of each type for each DPB; DPB; Type";
501 sHistName =
"hStsHitsElinkPerDpb";
502 title =
"Nb of hit messages per eLink for each DPB; DPB; eLink; Hits nb []";
506 sHistName =
"hStsDpbRawTsMsb";
507 title =
"MSB messages for each DPB; DPB; TsMsb; Count []";
508 fhStsDpbRawTsMsb =
new TH2I(sHistName, title, uNrOfDpbs, 0, uNrOfDpbs, 10, 0, 10);
512 sHistName =
"hStsDpbRawTsMsbSx";
513 title =
"MSB SX messages for each DPB; DPB; TsMsb & 0x1F; Count []";
518 sHistName =
"hStsDpbRawTsMsbDpb";
519 title =
"MSB DPB messages for each DPB; DPB; TsMsb >> 5; Count []";
525 sHistName =
"hStsRawHitRatioEvoPerFeb";
526 title =
"Proportion of digis over raw hits in each FEB; Time [s]; FEB []; digis/raw [Prct]";
527 fhRawHitRatioEvoPerFeb =
new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbFebs, -0.5, uNbFebs - 0.5);
529 for (uint32_t uFebIdx = 0; uFebIdx < uNbFebs; ++uFebIdx) {
530 sHistName = Form(
"hStsChDupliAdc_%03d", uFebIdx);
531 title = Form(
"ADC in duplicate raw in each channel of FEB %2d; Channel []; ADC []", uFebIdx);
532 fvhChDupliAdc.push_back(
new TH2I(sHistName, title, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5, 32, -0.5, 31.5));
534 sHistName = Form(
"hStsRawChRatioEvo_%03d", uFebIdx);
535 title = Form(
"Proportion of raw hits in each channel of FEB %2d; Time [s]; Channel []; Share of FEB raw msg [Prct]",
538 new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
539 sHistName = Form(
"hStsHitChRatioEvo_%03d", uFebIdx);
541 Form(
"Proportion of digis in each channel of FEB %2d; Time [s]; Channel []; Share of FEB digis [Prct]", uFebIdx);
543 new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
544 sHistName = Form(
"hStsDupliChRatioEvo_%03d", uFebIdx);
546 Form(
"Proportion of duplicates in each channel of FEB %2d; Time [s]; Channel []; Share of FEB duplicates [Prct]",
549 new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
550 sHistName = Form(
"hStsRawHitRatioEvoPerCh_%03d", uFebIdx);
551 title = Form(
"Proportion of digis over raw hits in each channel of FEB %2d; Time [s]; Channel []; digis/raw [Prct]",
554 new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
555 sHistName = Form(
"hStsRawDupliRatioEvoPerCh_%03d", uFebIdx);
557 Form(
"Proportion of duplicates over raw hits in each channel of FEB %2d; Time [s]; Channel []; dupli/raw [Prct]",
560 new TProfile2D(sHistName, title, 600, -0.5, 599.5, uNbChanPerFeb, -0.5, uNbChanPerFeb - 0.5));
572 for (UInt_t uAsicIdx = 0; uAsicIdx < uNbAsics; ++uAsicIdx) {
575 sHistName = Form(
"hStsChanCntRaw_%03u", uAsicIdx);
576 title = Form(
"Hits Count per channel, Asic #%03u; Channel; Hits []", uAsicIdx);
577 fvhStsChanCntRaw.push_back(
new TH1I(sHistName, title, uNbChanPerAsic, -0.5, uNbChanPerAsic - 0.5));
580 sHistName = Form(
"hStsChanAdcRaw_%03u", uAsicIdx);
581 title = Form(
"Raw Adc distribution per channel, Asic #%03u; Channel []; Adc "
584 fvhStsChanAdcRaw.push_back(
new TH2I(sHistName, title, uNbChanPerAsic, -0.5, uNbChanPerAsic - 0.5,
588 sHistName = Form(
"hStsChanAdcRawProfc_%03u", uAsicIdx);
589 title = Form(
"Raw Adc prodile per channel, Asic #%03u; Channel []; Adc []", uAsicIdx);
590 fvhStsChanAdcRawProf.push_back(
new TProfile(sHistName, title, uNbChanPerAsic, -0.5, uNbChanPerAsic - 0.5));
593 sHistName = Form(
"hStsChanRawTs_%03u", uAsicIdx);
594 title = Form(
"Raw Timestamp distribution per channel, Asic #%03u; Channel "
595 "[]; Ts []; Hits []",
597 fvhStsChanRawTs.push_back(
new TH2I(sHistName, title, uNbChanPerAsic, -0.5, uNbChanPerAsic - 0.5,
601 sHistName = Form(
"hStsChanMissEvt_%03u", uAsicIdx);
602 title = Form(
"Missed Event flags per channel, Asic #%03u; Channel []; Miss "
605 fvhStsChanMissEvt.push_back(
new TH2I(sHistName, title, uNbChanPerAsic, -0.5, uNbChanPerAsic - 0.5, 2, -0.5, 1.5));
645 for (UInt_t uAsicIdx = 0; uAsicIdx <
fvhStsChanRawTs.size(); ++uAsicIdx) {
658 const UInt_t& uChanInFeb,
const UShort_t& usRawAdc,
659 const Double_t& dCalAdc,
const UShort_t& usRawTs,
660 const bool& isHitMissedEvts)
674 const UShort_t& usRawAdc,
const UShort_t& usRawTs,
675 const bool& isHitMissedEvts)
687 const UInt_t& uAsicInFeb,
const UInt_t& uChanInFeb,
688 const Double_t& dAbsTimeSec,
const bool& isHitMissedEvts)
695 Double_t dTimeSinceStartSec = dAbsTimeSec -
fdStartTime;
704 if (isHitMissedEvts) {
709 const Double_t dTimeSinceStartMin = dTimeSinceStartSec / 60.0;
735 for (uint32_t uFebIdx = 0; uFebIdx < uNbFebs; ++uFebIdx) {
745 for (uint32_t uChan = 0; uChan < uNbChansPerFeb; ++uChan) {
764 dRatio = uNbDupliChan * 100.0 / uNbDupliFeb;
795 const uint16_t& usAdc)
871 const uint16_t msDescriptorFlags,
const uint32_t uSize)
873 if (18967040000 == MsStartTime || 18968320000 == MsStartTime) {
876 if (
static_cast<uint16_t
>(fles::MicrosliceFlags::CrcValid) != msDescriptorFlags) {
877 LOG(debug) <<
"STS unp "
878 <<
" TS " << std::setw(12) << NrProcessedTs <<
" MS " << std::setw(12) << MsStartTime <<
" MS flags 0x"
879 << std::setw(4) << std::hex << msDescriptorFlags << std::dec <<
" Size " << std::setw(8) << uSize
895 TFile* oldFile = gFile;
896 TDirectory* oldDir = gDirectory;
911 std::vector<std::pair<TNamed*, std::string>> vHistos =
GetHistoVector();
914 std::vector<std::pair<TCanvas*, std::string>> vCanvases =
GetCanvasVector();
917 THttpServer* server = FairRunOnline::Instance()->GetHttpServer();
918 if (
nullptr != server) {
919 for (UInt_t uCanvas = 0; uCanvas < vCanvases.size(); ++uCanvas) {
920 server->Register(Form(
"/sts/%s", vCanvases[uCanvas].second.data()), vCanvases[uCanvas].first);
922 for (UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto) {
923 server->Register(Form(
"/sts/%s", vHistos[uHisto].second.data()), vHistos[uHisto].first);
938 std::vector<std::pair<TNamed*, std::string>> vHistos =
GetHistoVector();
941 std::vector<std::pair<TCanvas*, std::string>> vCanvases =
GetCanvasVector();
944 TFile* oldFile = gFile;
945 TDirectory* oldDir = gDirectory;
946 TFile* histoFile =
nullptr;
953 for (UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto) {
955 TString sFolder = vHistos[uHisto].second.data();
956 if (
nullptr == gDirectory->Get(sFolder)) gDirectory->mkdir(sFolder);
957 gDirectory->cd(sFolder);
960 vHistos[uHisto].first->Write();
966 for (UInt_t uCanvas = 0; uCanvas < vCanvases.size(); ++uCanvas) {
968 TString sFolder = vCanvases[uCanvas].second.data();
969 if (
nullptr == gDirectory->Get(sFolder)) gDirectory->mkdir(sFolder);
970 gDirectory->cd(sFolder);
973 vCanvases[uCanvas].first->Write();
ClassImp(CbmConverterManager)
static constexpr UInt_t GetNbAsicsPerFeb()
static constexpr UInt_t GetNbElinkPerDpb()
static constexpr UInt_t GetNbChanPerAsic()
static constexpr UInt_t GetNbChanPerFeb()
Data class with information on a STS local track.
void FillStsMessTypePerDpb(UInt_t DpbIdx, uint16_t typeMess)
Bool_t ResetDebugHistograms()
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)
TH2 * fhStsMessTypePerElink
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)
virtual ~CbmStsUnpackMonitor()
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
Bool_t CreateDebugHistograms(CbmMcbm2018StsPar *pUnpackPar)
void FillStsAllFebsHitRateEvo(Double_t dTimeSinceStartSec, UInt_t uFebIdx)
void FillStsHitsElinkPerDpb(UInt_t DpbIdx, UInt_t ElinkIdx)
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 FillStsFebChanAdcCal(UInt_t uFebIdx, UInt_t uChanInFeb, Double_t dCalAdc)
TH1 * fhDigisTimeInRun
General histograms.
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
TH2 * fhStsMessTypePerDpb
void FillStsMessType(uint16_t typeMess)
Fill debugging histograms.
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)
UInt_t fuLongHistoNbSeconds
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
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
TH2 * fhStsAllAsicsHitRateEvo
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 * fhRawHitRatioPerFeb
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
UInt_t fuLongHistoBinSizeSec
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)
TH2 * fhStsStatusMessType
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
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
Bool_t Init(CbmMcbm2018StsPar *digiParSet)
Init all required parameter informations and histograms.
TH2 * fhStsFebAsicHitCounts
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
TH1 * fvhMsSize[kiMaxNbFlibLinks]
bool fDebugMode
Flag if debug mode is active or not.
TH1 * fhStsMessType
Debugging histograms.
std::vector< TH1 * > fvhStsChanCntRaw
Debugging "per Asic" histogram vectors.
TH2 * fhStsHitsElinkPerDpb
std::vector< TH1 * > fvhStsFebHitRateEvo
std::vector< TProfile * > fvhRawHitRatioPerCh
TH2 * fhStsDpbRawTsMsbDpb
std::vector< TCanvas * > fvcStsSmxErr
void FillStsFebChanAdcRaw(UInt_t uFebIdx, UInt_t uChanInFeb, UShort_t usRawAdc)
TH2 * fhStsAllFebsHitRateEvo
std::vector< TProfile2D * > fvhHitChRatioEvo
std::vector< TH2 * > fvhStsChanRawTs
XPU_D uint16_t GetLinkIndex() const
For all data: Returns the (global) index of the eLink on which the message was received (n bit field)
XPU_D MessType GetMessType() const
Returns the message type, see enum MessType.
XPU_D uint16_t GetLinkIndexHitBinning() const
XPU_D bool IsMsErrorFlagOn() const
For End of MS data: Returns the MS error flag (1 bit field)
static constexpr uint32_t kuHitNbTsBins
static constexpr uint32_t kuHitNbAdcBins
Status/properties constants.