1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
#ifndef CalibFormats_HcalObjects_HcalDbService_h
#define CalibFormats_HcalObjects_HcalDbService_h
//
// F.Ratnikov (UMd), Aug. 9, 2005
//
#include <memory>
#include <map>
#include <atomic>
#include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
#include "CalibFormats/HcalObjects/interface/HcalCoder.h"
#include "CalibFormats/HcalObjects/interface/HcalCalibrationsSet.h"
#include "CalibFormats/HcalObjects/interface/HcalCalibrationWidthsSet.h"
#include "CondFormats/HcalObjects/interface/AllObjects.h"
class HcalCalibrations;
class HcalCalibrationWidths;
class HcalTopology;
class HcalDbService {
public:
HcalDbService();
~HcalDbService();
const HcalTopology* getTopologyUsed() const;
const HcalCalibrations& getHcalCalibrations(const HcalGenericDetId& fId) const;
const HcalCalibrationWidths& getHcalCalibrationWidths(const HcalGenericDetId& fId) const;
const HcalCalibrationsSet* getHcalCalibrationsSet() const;
const HcalCalibrationWidthsSet* getHcalCalibrationWidthsSet() const;
const HcalPedestal* getPedestal(const HcalGenericDetId& fId) const;
const HcalPedestalWidth* getPedestalWidth(const HcalGenericDetId& fId) const;
const HcalPedestal* getEffectivePedestal(const HcalGenericDetId& fId) const;
const HcalPedestalWidth* getEffectivePedestalWidth(const HcalGenericDetId& fId) const;
const HcalGain* getGain(const HcalGenericDetId& fId) const;
const HcalGainWidth* getGainWidth(const HcalGenericDetId& fId) const;
const HcalQIECoder* getHcalCoder(const HcalGenericDetId& fId) const;
const HcalQIEShape* getHcalShape(const HcalGenericDetId& fId) const;
const HcalQIEShape* getHcalShape(const HcalQIECoder* coder) const;
const HcalElectronicsMap* getHcalMapping() const;
const HcalFrontEndMap* getHcalFrontEndMapping() const;
const HcalRespCorr* getHcalRespCorr(const HcalGenericDetId& fId) const;
const HcalTimeCorr* getHcalTimeCorr(const HcalGenericDetId& fId) const;
const HcalL1TriggerObject* getHcalL1TriggerObject(const HcalGenericDetId& fId) const;
const HcalChannelStatus* getHcalChannelStatus(const HcalGenericDetId& fId) const;
const HcalZSThreshold* getHcalZSThreshold(const HcalGenericDetId& fId) const;
const HcalLUTCorr* getHcalLUTCorr(const HcalGenericDetId& fId) const;
const HcalPFCorr* getHcalPFCorr(const HcalGenericDetId& fId) const;
const HcalLutMetadata* getHcalLutMetadata() const;
const HcalQIEType* getHcalQIEType(const HcalGenericDetId& fId) const;
const HcalSiPMParameter* getHcalSiPMParameter(const HcalGenericDetId& fId) const;
const HcalSiPMCharacteristics* getHcalSiPMCharacteristics() const;
const HcalTPChannelParameter* getHcalTPChannelParameter(const HcalGenericDetId& fId, bool throwOnFail = true) const;
const HcalTPParameters* getHcalTPParameters() const;
const HcalMCParam* getHcalMCParam(const HcalGenericDetId& fId) const;
const HcalRecoParam* getHcalRecoParam(const HcalGenericDetId& fId) const;
void setData(const HcalPedestals* fItem, bool eff = false) {
if (eff)
mEffectivePedestals = fItem;
else
mPedestals = fItem;
mCalibSet = nullptr;
}
void setData(const HcalPedestalWidths* fItem, bool eff = false) {
if (eff)
mEffectivePedestalWidths = fItem;
else
mPedestalWidths = fItem;
mCalibWidthSet = nullptr;
}
void setData(const HcalGains* fItem) {
mGains = fItem;
mCalibSet = nullptr;
}
void setData(const HcalGainWidths* fItem) {
mGainWidths = fItem;
mCalibWidthSet = nullptr;
}
void setData(const HcalQIEData* fItem) {
mQIEData = fItem;
mCalibSet = nullptr;
mCalibWidthSet = nullptr;
}
void setData(const HcalQIETypes* fItem) {
mQIETypes = fItem;
mCalibSet = nullptr;
}
void setData(const HcalChannelQuality* fItem) { mChannelQuality = fItem; }
void setData(const HcalElectronicsMap* fItem) { mElectronicsMap = fItem; }
void setData(const HcalFrontEndMap* fItem) { mFrontEndMap = fItem; }
void setData(const HcalRespCorrs* fItem) {
mRespCorrs = fItem;
mCalibSet = nullptr;
}
void setData(const HcalTimeCorrs* fItem) {
mTimeCorrs = fItem;
mCalibSet = nullptr;
}
void setData(const HcalZSThresholds* fItem) { mZSThresholds = fItem; }
void setData(const HcalL1TriggerObjects* fItem) { mL1TriggerObjects = fItem; }
void setData(const HcalLUTCorrs* fItem) {
mLUTCorrs = fItem;
mCalibSet = nullptr;
}
void setData(const HcalPFCorrs* fItem) { mPFCorrs = fItem; }
void setData(const HcalLutMetadata* fItem) { mLutMetadata = fItem; }
void setData(const HcalSiPMParameters* fItem) {
mSiPMParameters = fItem;
mCalibSet = nullptr;
}
void setData(const HcalSiPMCharacteristics* fItem) { mSiPMCharacteristics = fItem; }
void setData(const HcalTPChannelParameters* fItem) {
mTPChannelParameters = fItem;
mCalibSet = nullptr;
}
void setData(const HcalTPParameters* fItem) { mTPParameters = fItem; }
void setData(const HcalMCParams* fItem) { mMCParams = fItem; }
void setData(const HcalRecoParams* fItem) { mRecoParams = fItem; }
private:
bool makeHcalCalibration(const HcalGenericDetId& fId,
HcalCalibrations* fObject,
bool pedestalInADC,
bool effPedestalInADC) const;
void buildCalibrations() const;
bool makeHcalCalibrationWidth(const HcalGenericDetId& fId,
HcalCalibrationWidths* fObject,
bool pedestalInADC,
bool effPedestalInADC) const;
void buildCalibWidths() const;
bool convertPedestals(const HcalGenericDetId& fId, const HcalPedestal* pedestal, float* pedTrue, bool inADC) const;
bool convertPedestalWidths(const HcalGenericDetId& fId,
const HcalPedestalWidth* pedestalwidth,
const HcalPedestal* pedestal,
float* pedTrueWidth,
bool inADC) const;
const HcalPedestals* mPedestals;
const HcalPedestalWidths* mPedestalWidths;
const HcalPedestals* mEffectivePedestals;
const HcalPedestalWidths* mEffectivePedestalWidths;
const HcalGains* mGains;
const HcalGainWidths* mGainWidths;
const HcalQIEData* mQIEData;
const HcalQIETypes* mQIETypes;
const HcalChannelQuality* mChannelQuality;
const HcalElectronicsMap* mElectronicsMap;
const HcalFrontEndMap* mFrontEndMap;
const HcalRespCorrs* mRespCorrs;
const HcalZSThresholds* mZSThresholds;
const HcalL1TriggerObjects* mL1TriggerObjects;
const HcalTimeCorrs* mTimeCorrs;
const HcalLUTCorrs* mLUTCorrs;
const HcalPFCorrs* mPFCorrs;
const HcalLutMetadata* mLutMetadata;
const HcalSiPMParameters* mSiPMParameters;
const HcalSiPMCharacteristics* mSiPMCharacteristics;
const HcalTPChannelParameters* mTPChannelParameters;
const HcalTPParameters* mTPParameters;
const HcalMCParams* mMCParams;
const HcalRecoParams* mRecoParams;
// bool mPedestalInADC;
mutable std::atomic<HcalCalibrationsSet const*> mCalibSet;
mutable std::atomic<HcalCalibrationWidthsSet const*> mCalibWidthSet;
};
#endif
|