2424#include " DataFormatsTOF/Diagnostic.h"
2525#include " DataFormatsTOF/TOFFEElightInfo.h"
2626
27+ class TH2F ;
28+
2729namespace o2
2830{
2931namespace tof
@@ -38,10 +40,12 @@ class CalibTOFapi
3840 using CcdbApi = o2::ccdb::CcdbApi;
3941
4042 public:
43+ static o2::tof::Diagnostic doDRMerrCalibFromQCHisto (const TH2F* histo, const char * file_output_name);
44+
4145 void resetDia ();
4246 CalibTOFapi () = default ;
4347 CalibTOFapi (const std::string url);
44- CalibTOFapi (long timestamp, o2::dataformats::CalibLHCphaseTOF* phase, o2::dataformats::CalibTimeSlewingParamTOF* slew, Diagnostic* dia = nullptr ) : mTimeStamp (timestamp), mLHCphase (phase), mSlewParam (slew), mDiaFreq (dia) {}
48+ CalibTOFapi (long timestamp, o2::dataformats::CalibLHCphaseTOF* phase, o2::dataformats::CalibTimeSlewingParamTOF* slew, Diagnostic* dia = nullptr , Diagnostic* diaDRM = nullptr ) : mTimeStamp (timestamp), mLHCphase (phase), mSlewParam (slew), mDiaFreq (dia), mDiaDRMFreq (diaDRM ) {}
4549 ~CalibTOFapi ()
4650 {
4751 if (mLHCphase ) {
@@ -53,6 +57,9 @@ class CalibTOFapi
5357 if (mDiaFreq ) {
5458 // delete mDiaFreq;
5559 }
60+ if (mDiaDRMFreq ) {
61+ // delete mDiaDRMFreq;
62+ }
5663 }
5764
5865 void setTimeStamp (long t)
@@ -69,6 +76,8 @@ class CalibTOFapi
6976 void readTimeSlewingParamFromFile (const char * filename);
7077 void readDiagnosticFrequencies ();
7178 void loadDiagnosticFrequencies ();
79+ void readDiagnosticDRMFrequencies ();
80+ void loadDiagnosticDRMFrequencies ();
7281 void readActiveMap ();
7382 void loadActiveMap (TOFFEElightInfo* fee);
7483 void writeLHCphase (LhcPhase* phase, std::map<std::string, std::string> metadataLHCphase, uint64_t minTimeSTamp, uint64_t maxTimeStamp);
@@ -89,6 +98,8 @@ class CalibTOFapi
8998 void setLhcPhase (LhcPhase* obj) { mLHCphase = obj; }
9099 Diagnostic* getDiagnostic () { return mDiaFreq ; }
91100 void setDiagnostic (Diagnostic* obj) { mDiaFreq = obj; }
101+ Diagnostic* getDiagnosticDRM () { return mDiaDRMFreq ; }
102+ void setDiagnosticDRM (Diagnostic* obj) { mDiaDRMFreq = obj; }
92103
93104 int getNoisyThreshold () const { return mNoisyThreshold ; }
94105 void setNoisyThreshold (int val) { mNoisyThreshold = val; }
@@ -103,11 +114,15 @@ class CalibTOFapi
103114 bool isChannelError (int channel) const ;
104115 bool checkTRMPolicy (int mask) const ;
105116
117+ void setDRMCriticalErrorMask (uint32_t val) { mDRMCriticalErrorMask = val; }
118+ uint32_t getDRMCriticalErrorMask () const { return mDRMCriticalErrorMask ; }
119+
106120 private:
107- long mTimeStamp ; // /< timeStamp for queries
108- LhcPhase* mLHCphase = nullptr ; // /< object for LHC phase
109- SlewParam* mSlewParam = nullptr ; // /< object for timeslewing (containing info also for offset and problematic)
110- Diagnostic* mDiaFreq = nullptr ; // /< object for Diagnostic Frequency
121+ long mTimeStamp ; // /< timeStamp for queries
122+ LhcPhase* mLHCphase = nullptr ; // /< object for LHC phase
123+ SlewParam* mSlewParam = nullptr ; // /< object for timeslewing (containing info also for offset and problematic)
124+ Diagnostic* mDiaFreq = nullptr ; // /< object for Diagnostic Frequency
125+ Diagnostic* mDiaDRMFreq = nullptr ; // /< object for Diagnostic Frequency
111126
112127 // info from diagnostic
113128 int mNoisyThreshold = 1 ; // /< threshold to be noisy
@@ -116,13 +131,15 @@ class CalibTOFapi
116131 std::vector<std::pair<int , float >> mNoisy ; // /< probTRMerror
117132 std::vector<std::pair<int , float >> mTRMerrorProb ; // /< probTRMerror
118133 std::vector<int > mTRMmask ; // /< mask error for TRM
134+ float mErrorInDRM [72 ] = {}; // /< probability of DRM error
135+ uint32_t mDRMCriticalErrorMask = 0 ; // /< bit mask for critical DRM errors (e.g. Orbit Mismatch -> 1 << 7, see DataFormats/Detectors/TOF/include/DataFormatsTOF/CompressedDataFormat.h)
119136
120137 bool mIsErrorCh [Geo::NCHANNELS] = {}; // /< channels in error (TRM)
121138 std::vector<int > mFillErrChannel ; // /< last error channels filled
122139 bool mIsOffCh [Geo::NCHANNELS] = {}; // /< channels in error (TRM)
123140 bool mIsNoisy [Geo::NCHANNELS] = {}; // /< noisy channels
124141
125- ClassDefNV (CalibTOFapi, 1 );
142+ ClassDefNV (CalibTOFapi, 2 );
126143};
127144} // namespace tof
128145} // namespace o2
0 commit comments