Project
Loading...
Searching...
No Matches
CalibDB.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef ALICEO2_EMCAL_CALIBDB
13#define ALICEO2_EMCAL_CALIBDB
14
15#include <exception>
16#include <map>
17#include <string>
18#include "Rtypes.h"
19#include "RStringView.h"
20#include "CCDB/CcdbApi.h"
22
23namespace o2
24{
25
26namespace emcal
27{
28
29class BadChannelMap;
34class GainCalibrationFactors;
36class FeeDCS;
37class ElmbData;
38class Pedestal;
39
68{
69
71
72 public:
81 class ObjectNotFoundException final : public std::exception
82 {
83 public:
89 ObjectNotFoundException(const std::string_view server, const std::string_view path, const std::map<std::string, std::string>& metadata, ULong_t timestamp) : std::exception(),
90 mServ(server),
91 mPath(path),
92 mMetaDat(metadata),
93 mTimestamp(timestamp)
94 {
95 mMessage = "Not possible to access entry \"" + mPath + "\" on " + mServ + " for timestamp " + std::to_string(mTimestamp);
96 }
97
99 ~ObjectNotFoundException() noexcept final = default;
100
103 const char* what() const noexcept final
104 {
105 return mMessage.data();
106 }
107
110 const std::map<std::string, std::string> getMetaData() const { return mMetaDat; }
111
114 const std::string& getServer() const { return mServ; }
115
118 const std::string& getPath() const { return mPath; }
119
122 ULong_t getTimestamp() const { return mTimestamp; }
123
124 private:
125 const std::string mServ;
126 const std::string mPath;
127 std::string mMessage;
128 const std::map<std::string, std::string> mMetaDat;
129 ULong_t mTimestamp;
130 };
131
139 class TypeMismatchException final : public std::exception
140 {
141 public:
145 TypeMismatchException(const std::string_view obtained, const std::string_view expected) : std::exception(),
146 mTypeObtained(obtained),
147 mTypeExpected(expected),
148 mMessage()
149 {
150 mMessage = "Incorrect type, expected " + mTypeExpected + ", obtained " + mTypeObtained;
151 }
152
154 ~TypeMismatchException() noexcept final = default;
155
158 const char* what() const noexcept final
159 {
160 return mMessage.data();
161 }
162
165 const std::string& getExpectedType() const { return mTypeExpected; }
166
169 const std::string& getObtainedType() const { return mTypeObtained; }
170
171 private:
172 const std::string mTypeObtained;
173 const std::string mTypeExpected;
174 std::string mMessage;
175 };
176
178 CalibDB() = default;
179
182 CalibDB(const std::string_view server);
183
185 ~CalibDB() = default;
186
192 void storeBadChannelMap(BadChannelMap* bcm, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
193
199 BadChannelMap* readBadChannelMap(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
200
206 void storeTimeCalibParam(TimeCalibrationParams* tcp, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
207
213 TimeCalibrationParams* readTimeCalibParam(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
214
220 void storeTimeCalibParamL1Phase(TimeCalibParamL1Phase* tcp, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
221
227 TimeCalibParamL1Phase* readTimeCalibParamL1Phase(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
228
234 void storeTempCalibParam(TempCalibrationParams* tcp, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
235
241 TempCalibrationParams* readTempCalibParam(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
242
248 void storeTempCalibParamSM(TempCalibParamSM* tcp, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
249
255 TempCalibParamSM* readTempCalibParamSM(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
256
262 void storeGainCalibFactors(GainCalibrationFactors* gcf, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
263
269 GainCalibrationFactors* readGainCalibFactors(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
270
276 EMCALChannelScaleFactors* readChannelScaleFactors(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
277
283 void storeFeeDCSData(FeeDCS* dcs, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
284
290 FeeDCS* readFeeDCSData(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
291
297 void storeTemperatureSensorData(ElmbData* dcs, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
298
304 ElmbData* readTemperatureSensorData(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
305
311 void storePedestalData(Pedestal* pedestals, const std::map<std::string, std::string>& metadata, ULong_t timestart, ULong_t timeend);
312
318 Pedestal* readPedestalData(ULong_t timestamp, const std::map<std::string, std::string>& metadata);
319
326 void setServer(const std::string_view server)
327 {
328 mCCDBServer = server;
329 mInit = false;
330 }
331
334 static const char* getCDBPathBadChannelMap() { return "EMC/Calib/BadChannelMap"; }
335
338 static const char* getCDBPathTimeCalibrationParams() { return "EMC/Calib/TimeCalibParams"; }
339
342 static const char* getCDBPathL1Phase() { return "EMC/Calib/TimeCalibParamsL1Phase"; }
343
346 static const char* getCDBPathTemperatureCalibrationParams() { return "EMC/Calib/TempCalibParams"; }
347
350 static const char* getCDBPathTemperatureCalibrationParamsSM() { return "EMC/Calib/TempCalibParamsSM"; }
351
354 static const char* getCDBPathGainCalibrationParams() { return "EMC/Calib/GainCalibFactors"; }
355
358 static const char* getCDBPathFeeDCS() { return "EMC/Calib/FeeDCS"; }
359
362 static const char* getCDBPathTemperatureSensor() { return "EMC/Calib/Temperature"; }
363
366 static const char* getCDBPathChannelScaleFactors() { return "EMC/Config/ChannelScaleFactors"; }
367
370 static const char* getCDBPathChannelPedestals() { return "EMC/Calib/Pedestal"; }
371
372 private:
374 void
375 init();
376
377 ccdb::CcdbApi mCCDBManager;
378 std::string mCCDBServer = "emcccdb-test.cern.ch";
379 Bool_t mInit = false;
380
381 ClassDefNV(CalibDB, 2);
382};
383} // namespace emcal
384
385} // namespace o2
386
387#endif
Container for energy dependent scale factors for number of hits in a cell.
CCDB container for the temperature calibration coefficients per SM.
CCDB container for the temperature calibration coefficients.
CCDB container for the L1 phase shifts.
CCDB container for the time calibration coefficients.
CCDB container for masked cells in EMCAL.
Handling errors due to objects not found in the CCDB.
Definition CalibDB.h:82
const std::string & getServer() const
Accessor to URL of the CCDB server.
Definition CalibDB.h:114
const char * what() const noexcept final
Creating error message with relevant query paramters.
Definition CalibDB.h:103
const std::map< std::string, std::string > getMetaData() const
Accessor to meta data.
Definition CalibDB.h:110
~ObjectNotFoundException() noexcept final=default
destructor
const std::string & getPath() const
Accessor to the CCDB path in the query.
Definition CalibDB.h:118
ULong_t getTimestamp() const
Accessor to timestamp used in the query.
Definition CalibDB.h:122
ObjectNotFoundException(const std::string_view server, const std::string_view path, const std::map< std::string, std::string > &metadata, ULong_t timestamp)
Constructor with query parameters.
Definition CalibDB.h:89
Class handling errors of wrong type of a query result.
Definition CalibDB.h:140
const std::string & getObtainedType() const
Accessor to the type of the object obtained from the CCDB.
Definition CalibDB.h:169
const char * what() const noexcept final
Creating error message.
Definition CalibDB.h:158
TypeMismatchException(const std::string_view obtained, const std::string_view expected)
Constructor.
Definition CalibDB.h:145
const std::string & getExpectedType() const
Accessor to expected type.
Definition CalibDB.h:165
~TypeMismatchException() noexcept final=default
Destructor.
Interface to calibration data from CCDB for EMCAL.
Definition CalibDB.h:68
TimeCalibParamL1Phase * readTimeCalibParamL1Phase(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find L1 phase shifts in the CCDB for given timestamp.
Definition CalibDB.cxx:137
ElmbData * readTemperatureSensorData(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find Temperature Sensor data in the CCDB for given timestamp.
Definition CalibDB.cxx:215
static const char * getCDBPathTemperatureSensor()
Get CDB path for the Temperature Sensor data.
Definition CalibDB.h:362
EMCALChannelScaleFactors * readChannelScaleFactors(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find scale factors used for bad channel calibration in the CCDB for given timestamp.
Definition CalibDB.cxx:189
void storeBadChannelMap(BadChannelMap *bcm, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store bad channel map in the CCDB.
Definition CalibDB.cxx:39
static const char * getCDBPathTemperatureCalibrationParamsSM()
Get CDB path for the SM-dependent temperature calibration.
Definition CalibDB.h:350
void storeTempCalibParam(TempCalibrationParams *tcp, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store temperature calibration coefficiencts in the CCDB.
Definition CalibDB.cxx:63
~CalibDB()=default
Destructor.
void setServer(const std::string_view server)
Set new CCDB server URL.
Definition CalibDB.h:326
static const char * getCDBPathChannelPedestals()
Get CCDB path for the pedestal data.
Definition CalibDB.h:370
void storeTempCalibParamSM(TempCalibParamSM *tcp, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store temperature calibration coefficiencts per SM in the CCDB.
Definition CalibDB.cxx:71
Pedestal * readPedestalData(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find pedestal data in the CCDB for given timestamp.
Definition CalibDB.cxx:228
FeeDCS * readFeeDCSData(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find FEE DCS data in the CCDB for given timestamp.
Definition CalibDB.cxx:202
TempCalibParamSM * readTempCalibParamSM(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find temperature calibration coefficiencts per SM in the CCDB for given timestamp.
Definition CalibDB.cxx:163
void storeTemperatureSensorData(ElmbData *dcs, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store Temperature Sensor data in the CCDB.
Definition CalibDB.cxx:95
static const char * getCDBPathTimeCalibrationParams()
Get CDB path for the time calibration.
Definition CalibDB.h:338
GainCalibrationFactors * readGainCalibFactors(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find gain calibration factors in the CCDB for given timestamp.
Definition CalibDB.cxx:176
void storeTimeCalibParam(TimeCalibrationParams *tcp, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store time calibration coefficiencts in the CCDB.
Definition CalibDB.cxx:47
static const char * getCDBPathBadChannelMap()
Get CDB path for the bad channel map.
Definition CalibDB.h:334
static const char * getCDBPathFeeDCS()
Get CDB path for the FEE DCS settings.
Definition CalibDB.h:358
void storeTimeCalibParamL1Phase(TimeCalibParamL1Phase *tcp, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store L1 phase shifts in the CCDB.
Definition CalibDB.cxx:55
static const char * getCDBPathChannelScaleFactors()
Get CCDB path for the scale factors used in the bad channel calibration.
Definition CalibDB.h:366
void storeFeeDCSData(FeeDCS *dcs, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store FEE DCS data in the CCDB.
Definition CalibDB.cxx:87
CalibDB()=default
Default constructor.
TempCalibrationParams * readTempCalibParam(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find temperature calibration coefficiencts in the CCDB for given timestamp.
Definition CalibDB.cxx:150
static const char * getCDBPathGainCalibrationParams()
Get CDB path for the gain calibration.
Definition CalibDB.h:354
static const char * getCDBPathTemperatureCalibrationParams()
Get CDB path for the temperature calibration.
Definition CalibDB.h:346
void storeGainCalibFactors(GainCalibrationFactors *gcf, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store gain calibration factors in the CCDB.
Definition CalibDB.cxx:79
void storePedestalData(Pedestal *pedestals, const std::map< std::string, std::string > &metadata, ULong_t timestart, ULong_t timeend)
Store pedestal data in the CCDB.
Definition CalibDB.cxx:103
static const char * getCDBPathL1Phase()
Get CDB path for the L1 Phase.
Definition CalibDB.h:342
TimeCalibrationParams * readTimeCalibParam(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find time calibration coefficiencts in the CCDB for given timestamp.
Definition CalibDB.cxx:124
BadChannelMap * readBadChannelMap(ULong_t timestamp, const std::map< std::string, std::string > &metadata)
Find bad channel map in the CCDB for given timestamp.
Definition CalibDB.cxx:111
CCDB container for the gain calibration factors.
CCDB container for pedestal values.
Definition Pedestal.h:48
GLsizei const GLchar *const * path
Definition glcorearb.h:3591
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
std::string to_string(gsl::span< T, Size > span)
Definition common.h:52
std::map< std::string, ID > expected