CbmRoot
Loading...
Searching...
No Matches
CbmTofUnpackMonitorPulser.h
Go to the documentation of this file.
1/* Copyright (C) 2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau [committer] */
4
5#ifndef CbmTofUnpackMonitorPulser_H
6#define CbmTofUnpackMonitorPulser_H
7
8#include "CbmMcbm2018TofPar.h"
10
11#include <Rtypes.h>
12/*
13#include <TH1.h>
14#include <TH2.h>
15#include <TProfile.h>
16#include <TProfile2D.h>
17*/
18
19#include <array>
20#include <cstdint>
21#include <vector>
22
23class TH1;
24class TH2;
25class TProfile;
26class TProfile2D;
27class TCanvas;
28
30 public:
32
34
35 inline void SetFitZoomWidthPs(double_t inZoomWidth = 1000.0) { fdFitZoomWidthPs = inZoomWidth; }
36
38 virtual Bool_t Init(CbmMcbm2018TofPar* digiParSet);
39
40 virtual Bool_t CreateHistograms();
41 virtual Bool_t ResetHistograms();
42 virtual void DrawCanvases();
43
45 virtual void Finish();
46
48 virtual void FillHitMonitoringHistos(const double_t& dMsTime, const uint32_t& uCurrCompIdx, const uint32_t& uGet4Id,
49 const uint32_t& uRawCh, const uint32_t& uRemapCh, const uint32_t& uTot,
50 const double_t& dHitTime, const uint32_t& uFts, bool bDiamond = false);
52 virtual void FinalizeMsHistos();
54 virtual void FinalizeTsHistos(double_t dTsStartTime);
55
57 virtual void FillEpochMonitoringHistos(const uint32_t&, const uint32_t&, const bool&, const bool&, const bool&,
58 const bool&)
59 {
60 }
61 virtual void FillScmMonitoringHistos(const uint32_t&, const uint32_t&, const uint32_t&, const uint32_t&,
62 const uint32_t&)
63 {
64 }
65 virtual void FillSysMonitoringHistos(const uint32_t&, const uint32_t&, const uint32_t&) {}
66 virtual void FillErrMonitoringHistos(const uint32_t&, const uint32_t&, const uint32_t&, const uint32_t&) {}
67
68 void UpdateZoomedFit();
69 void UpdateNormedDnlInl();
70
71 // Overload setters for all special modes of the base class to prevent their usage
72 void SetBmonMode(bool value);
73 void SetBmonMicroSpillMode(bool value);
74 void SetBmonScvdMode(bool value);
75 void SetBmonQFactorMode(bool value);
76 void SetTofQFactorMode(bool value);
77
78 private:
80 const double_t kdMaxDtPulserPs = 300e3;
81 // Default value for nb bins in Pulser time difference histos
82 const uint32_t kuNbBinsDt = 2000;
83
85 double_t fdFitZoomWidthPs = 1000.0;
86 double_t fdLastRmsUpdateTime = -1.0;
87 uint32_t fuNbRmsUpdates = 0;
88 // Dt limits?
89 double_t dMinDt = 0.0;
90 double_t dMaxDt = 0.0;
91 // Default number of FEE per channels histograms
92 uint32_t fuNbFeePlot = 2;
93 uint32_t fuNbFeePlotsPerComp = 0;
94 // FIXME: Start using again the parameter class accessors once a new CRI oriented class is brought into use
95 const uint32_t kuNbFeePerGbtx = 5;
96 const uint32_t kuNbGbtxPerComp = 1;
97 uint32_t fuNbOfFeePerComp = 10;
98 uint32_t fuNbOfGet4PerFee = 8;
99 uint32_t fuNbOfChannelsPerFee = 0;
100
102 std::vector<uint32_t> fvuFeeNbHitsLastMs = {};
103 std::vector<double_t> fdTsLastPulserHit = {};
104
106 std::vector<std::vector<uint32_t>> fvuCoincNbHitsLastMs = {};
107 std::vector<std::vector<double_t>> fvdCoincTsLastHit = {};
108
110 std::vector<std::vector<TH1*>> fvhTimeDiffPulser = {};
111 TH2* fhTimeMeanPulser = nullptr;
112 TH2* fhTimeRmsPulser = nullptr;
113 TH2* fhTimeRmsZoomFitPuls = nullptr;
114 TH2* fhTimeResFitPuls = nullptr;
115 std::vector<TH2*> fvhPulserCountEvoPerFeeComp = {};
116 std::vector<std::vector<TProfile*>> fvvhPulserTimeDiffEvoCompComp = {};
117 /*
118 FIXME: only one GBTx per comp in CRI design!
119 std::vector<TProfile*> fvhPulserTimeDiffEvoGbtxGbtx = {};
120 */
121
122 static const UInt_t kuNbRefFeeEvo = 2;
123 const UInt_t kuRefFeeEvoIdx[kuNbRefFeeEvo] = {0, 60};
124 std::vector<std::vector<TProfile*>> fvvhPulserTimeDiffEvoFeeFee = {};
125
126 std::vector<TH2*> fhFeeFtDistribPerCh = {};
127 std::vector<TH2*> fhFeeFtNormDnl = {};
128 std::vector<TH2*> fhFeeFtNormInl = {};
129
131 TCanvas* fcPulser = nullptr;
132 TCanvas* fcPulserEvo = nullptr;
133 std::vector<TCanvas*> fcPulserEvoGbtx = {};
134
137
138 ClassDef(CbmTofUnpackMonitorPulser, 1)
139};
140
141#endif
static double dTsStartTime
bool Bool_t
std::vector< std::vector< TH1 * > > fvhTimeDiffPulser
[ fuNrOfComps ][ fuNrOfChannelsPerComp ]
const double_t kdMaxDtPulserPs
Constants.
std::vector< std::vector< double_t > > fvdCoincTsLastHit
[ fuNrOfComps ][ fuNrOfChannelsPerComp ]
const UInt_t kuRefFeeEvoIdx[kuNbRefFeeEvo]
std::vector< double_t > fdTsLastPulserHit
[ fuFeeNr ]
std::vector< TCanvas * > fcPulserEvoGbtx
std::vector< uint32_t > fvuFeeNbHitsLastMs
Number of channels in each FEE.
virtual void Finish()
Write all histograms and canvases to file.
uint32_t fuNbOfChannelsPerFee
Max number of Get4 per FEE (has to match nb FEE and GET4 per comp)
void SetFitZoomWidthPs(double_t inZoomWidth=1000.0)
std::vector< TH2 * > fvhPulserCountEvoPerFeeComp
virtual void FillHitMonitoringHistos(const double_t &dMsTime, const uint32_t &uCurrCompIdx, const uint32_t &uGet4Id, const uint32_t &uRawCh, const uint32_t &uRemapCh, const uint32_t &uTot, const double_t &dHitTime, const uint32_t &uFts, bool bDiamond=false)
Fill pulser histograms.
const uint32_t kuNbGbtxPerComp
FIXME: recheck if OK and if not conflicting with fuNrOfFeePerComp!
std::vector< std::vector< uint32_t > > fvuCoincNbHitsLastMs
[ fuFeeNr ]
CbmTofUnpackMonitorPulser(const CbmTofUnpackMonitorPulser &)
uint32_t fuNbOfFeePerComp
FIXME: recheck if OK and if not conflicting with fuNrOfFeePerComp!
virtual void FinalizeTsHistos(double_t dTsStartTime)
Finalize pulser histograms.
uint32_t fuNbOfGet4PerFee
Max number of FEE per component.
virtual void FillEpochMonitoringHistos(const uint32_t &, const uint32_t &, const bool &, const bool &, const bool &, const bool &)
Original "general histograms" filling, unused here.
double_t fdFitZoomWidthPs
Settings and tracers.
virtual Bool_t Init(CbmMcbm2018TofPar *digiParSet)
Init all required parameter informations and histograms.
virtual void FillScmMonitoringHistos(const uint32_t &, const uint32_t &, const uint32_t &, const uint32_t &, const uint32_t &)
virtual void FillSysMonitoringHistos(const uint32_t &, const uint32_t &, const uint32_t &)
std::vector< std::vector< TProfile * > > fvvhPulserTimeDiffEvoCompComp
CbmTofUnpackMonitorPulser operator=(const CbmTofUnpackMonitorPulser &)
std::vector< std::vector< TProfile * > > fvvhPulserTimeDiffEvoFeeFee
virtual void FillErrMonitoringHistos(const uint32_t &, const uint32_t &, const uint32_t &, const uint32_t &)
virtual void FinalizeMsHistos()
Finalize pulser histograms.