CMS 3D CMS Logo

CastorDbService.cc
Go to the documentation of this file.
1 //
2 // F.Ratnikov (UMd), Aug. 9, 2005
3 // Adapted for CASTOR by L. Mundim
4 //
5 
7 
11 
13 
14 #include <cmath>
15 
17  : mPedestals(nullptr),
18  mPedestalWidths(nullptr),
19  mGains(nullptr),
20  mGainWidths(nullptr),
21  mQIEData(nullptr),
22  mChannelQuality(nullptr),
23  mElectronicsMap(nullptr) {}
24 
26  CastorCalibrations* fObject,
27  bool pedestalInADC) const {
28  if (fObject) {
29  const CastorPedestal* pedestal = getPedestal(fId);
30  const CastorGain* gain = getGain(fId);
31 
32  if (pedestalInADC) {
33  const CastorQIEShape* shape = getCastorShape();
34  const CastorQIECoder* coder = getCastorCoder(fId);
35  if (pedestal && gain && shape && coder) {
36  float pedTrue[4];
37  for (int i = 0; i < 4; i++) {
38  float x = pedestal->getValues()[i];
39  int x1 = (int)std::floor(x);
40  int x2 = (int)std::floor(x + 1);
41  // y = (y2-y1)/(x2-x1) * (x - x1) + y1 [note: x2-x1=1]
42  float y2 = coder->charge(*shape, x2, i);
43  float y1 = coder->charge(*shape, x1, i);
44  pedTrue[i] = (y2 - y1) * (x - x1) + y1;
45  }
46  *fObject = CastorCalibrations(gain->getValues(), pedTrue);
47  return true;
48  }
49  } else {
50  if (pedestal && gain) {
51  *fObject = CastorCalibrations(gain->getValues(), pedestal->getValues());
52  return true;
53  }
54  }
55  }
56  return false;
57 }
58 
60  // we use the set of ids for pedestals as the master list
61  if ((!mPedestals) || (!mGains) || (!mQIEData))
62  return;
63  std::vector<DetId> ids = mPedestals->getAllChannels();
64  bool pedsInADC = mPedestals->isADC();
65  // clear the calibrations set
66  mCalibSet.clear();
67  // loop!
68  CastorCalibrations tool;
69 
70  // std::cout << " length of id-vector: " << ids.size() << std::endl;
71  for (std::vector<DetId>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
72  // make
73  bool ok = makeCastorCalibration(*id, &tool, pedsInADC);
74  // store
75  if (ok)
76  mCalibSet.setCalibrations(*id, tool);
77  // std::cout << "Castor calibrations built... detid no. " << HcalGenericDetId(*id) << std::endl;
78  }
79  mCalibSet.sort();
80 }
81 
83  // we use the set of ids for pedestal widths as the master list
84  if ((!mPedestalWidths) || (!mGainWidths) || (!mQIEData))
85  return;
86 
87  std::vector<DetId> ids = mPedestalWidths->getAllChannels();
88  bool pedsInADC = mPedestalWidths->isADC();
89  // clear the calibrations set
91  // loop!
93 
94  // std::cout << " length of id-vector: " << ids.size() << std::endl;
95  for (std::vector<DetId>::const_iterator id = ids.begin(); id != ids.end(); ++id) {
96  // make
97  bool ok = makeCastorCalibrationWidth(*id, &tool, pedsInADC);
98  // store
99  if (ok)
101  // std::cout << "Castor calibrations built... detid no. " << HcalGenericDetId(*id) << std::endl;
102  }
104 }
105 
107  CastorCalibrationWidths* fObject,
108  bool pedestalInADC) const {
109  if (fObject) {
110  const CastorPedestalWidth* pedestalwidth = getPedestalWidth(fId);
111  const CastorGainWidth* gainwidth = getGainWidth(fId);
112  if (pedestalInADC) {
113  const CastorQIEShape* shape = getCastorShape();
114  const CastorQIECoder* coder = getCastorCoder(fId);
115  if (pedestalwidth && gainwidth && shape && coder) {
116  float pedTrueWidth[4];
117  for (int i = 0; i < 4; i++) {
118  float x = pedestalwidth->getWidth(i);
119  // assume QIE is linear in low range and use x1=0 and x2=1
120  // y = (y2-y1) * (x) [do not add any constant, only scale!]
121  float y2 = coder->charge(*shape, 1, i);
122  float y1 = coder->charge(*shape, 0, i);
123  pedTrueWidth[i] = (y2 - y1) * x;
124  }
125  *fObject = CastorCalibrationWidths(gainwidth->getValues(), pedTrueWidth);
126  return true;
127  }
128  } else {
129  if (pedestalwidth && gainwidth) {
130  float pedestalWidth[4];
131  for (int i = 0; i < 4; i++)
132  pedestalWidth[i] = pedestalwidth->getWidth(i);
133  *fObject = CastorCalibrationWidths(gainwidth->getValues(), pedestalWidth);
134  return true;
135  }
136  }
137  }
138  return false;
139 }
140 
142  if (mPedestals) {
143  return mPedestals->getValues(fId);
144  }
145  return nullptr;
146 }
147 
149  if (mPedestalWidths) {
150  return mPedestalWidths->getValues(fId);
151  }
152  return nullptr;
153 }
154 
156  if (mGains) {
157  return mGains->getValues(fId);
158  }
159  return nullptr;
160 }
161 
163  if (mGainWidths) {
164  return mGainWidths->getValues(fId);
165  }
166  return nullptr;
167 }
168 
170  if (mQIEData) {
171  return mQIEData->getCoder(fId);
172  }
173  return nullptr;
174 }
175 
177  if (mQIEData) {
178  return &mQIEData->getShape();
179  }
180  return nullptr;
181 }
182 
184 
186  return mChannelQuality->getValues(fId);
187 }
188 
CastorDbService::CastorDbService
CastorDbService()
Definition: CastorDbService.cc:16
CastorDbService::mChannelQuality
const CastorChannelQuality * mChannelQuality
Definition: CastorDbService.h:69
CastorCondObjectContainer::getValues
const Item * getValues(DetId fId, bool throwOnFail=true) const
Definition: CastorCondObjectContainer.h:65
mps_fire.i
i
Definition: mps_fire.py:428
CastorDbService::mPedestals
const CastorPedestals * mPedestals
Definition: CastorDbService.h:64
CastorDbService::makeCastorCalibration
bool makeCastorCalibration(const HcalGenericDetId &fId, CastorCalibrations *fObject, bool pedestalInADC) const
Definition: CastorDbService.cc:25
CastorCalibrationsSet::clear
void clear()
Definition: CastorCalibrationsSet.cc:38
HcalGenericDetId
Definition: HcalGenericDetId.h:15
CastorDbService::mCalibSet
CastorCalibrationsSet mCalibSet
Definition: CastorDbService.h:71
CastorDbService::getPedestalWidth
const CastorPedestalWidth * getPedestalWidth(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:148
testProducerWithPsetDescEmpty_cfi.x2
x2
Definition: testProducerWithPsetDescEmpty_cfi.py:28
CastorCalibrationWidthsSet::setCalibrationWidths
void setCalibrationWidths(const DetId id, const CastorCalibrationWidths &ca)
Definition: CastorCalibrationWidthsSet.cc:23
CastorPedestals::isADC
bool isADC() const
Definition: CastorPedestals.h:25
CastorDbService::mGainWidths
const CastorGainWidths * mGainWidths
Definition: CastorDbService.h:67
CastorCalibrationsSet::setCalibrations
void setCalibrations(const DetId id, const CastorCalibrations &ca)
Definition: CastorCalibrationsSet.cc:21
typelookup.h
HcalGenericDetId.h
CastorDbService::getCastorCoder
const CastorQIECoder * getCastorCoder(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:169
DDAxes::x
CastorCalibrationsSet::sort
void sort()
Definition: CastorCalibrationsSet.cc:32
CastorPedestal
Definition: CastorPedestal.h:16
CastorPedestalWidth
Definition: CastorPedestalWidth.h:16
CastorDbService::buildCalibrations
void buildCalibrations()
Definition: CastorDbService.cc:59
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
CastorPedestalWidth::getWidth
float getWidth(int fCapId) const
get width (sqrt(sigma_i_i)) for capId = 0..3
Definition: CastorPedestalWidth.cc:32
CastorCondObjectContainer::getAllChannels
std::vector< DetId > getAllChannels() const
Definition: CastorCondObjectContainer.h:119
CastorDbService::getPedestal
const CastorPedestal * getPedestal(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:141
CastorCalibrations
Definition: CastorCalibrations.h:9
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
testProducerWithPsetDescEmpty_cfi.y1
y1
Definition: testProducerWithPsetDescEmpty_cfi.py:29
CastorDbService::mCalibWidthSet
CastorCalibrationWidthsSet mCalibWidthSet
Definition: CastorDbService.h:72
CastorDbService::mPedestalWidths
const CastorPedestalWidths * mPedestalWidths
Definition: CastorDbService.h:65
CastorDbService::buildCalibWidths
void buildCalibWidths()
Definition: CastorDbService.cc:82
CastorCalibrationWidthsSet::clear
void clear()
Definition: CastorCalibrationWidthsSet.cc:39
CastorDbService::getGainWidth
const CastorGainWidth * getGainWidth(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:162
CastorCalibrationWidthsSet::sort
void sort()
Definition: CastorCalibrationWidthsSet.cc:33
CastorPedestalWidths::isADC
bool isADC() const
Definition: CastorPedestalWidths.h:25
CastorGainWidth
Definition: CastorGainWidth.h:12
testProducerWithPsetDescEmpty_cfi.y2
y2
Definition: testProducerWithPsetDescEmpty_cfi.py:30
CastorGainWidth::getValues
const float * getValues() const
get value for all capId = 0..3
Definition: CastorGainWidth.h:15
CastorDbService::getCastorShape
const CastorQIEShape * getCastorShape() const
Definition: CastorDbService.cc:176
CastorQIECoder::charge
float charge(const CastorQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.
Definition: CastorQIECoder.cc:17
createfilelist.int
int
Definition: createfilelist.py:10
CastorQIEData::getCoder
const CastorQIECoder * getCoder(DetId fId) const
get QIE parameters
Definition: CastorQIEData.h:37
CastorDbService
Definition: CastorDbService.h:28
CastorGain
Definition: CastorGain.h:13
EcalCondDBWriter_cfi.pedestal
pedestal
Definition: EcalCondDBWriter_cfi.py:49
CastorDbService::getGain
const CastorGain * getGain(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:155
QieShape.h
CastorDbService::makeCastorCalibrationWidth
bool makeCastorCalibrationWidth(const HcalGenericDetId &fId, CastorCalibrationWidths *fObject, bool pedestalInADC) const
Definition: CastorDbService.cc:106
TYPELOOKUP_DATA_REG
#define TYPELOOKUP_DATA_REG(_dataclass_)
Definition: typelookup.h:102
PedestalClient_cfi.gain
gain
Definition: PedestalClient_cfi.py:37
CastorDbService::mQIEData
const CastorQIEData * mQIEData
Definition: CastorDbService.h:68
CastorChannelStatus
Definition: CastorChannelStatus.h:15
CastorCoderDb.h
CastorDbService::mGains
const CastorGains * mGains
Definition: CastorDbService.h:66
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CastorDbService::mElectronicsMap
const CastorElectronicsMap * mElectronicsMap
Definition: CastorDbService.h:70
CastorDbService::getCastorChannelStatus
const CastorChannelStatus * getCastorChannelStatus(const HcalGenericDetId &fId) const
Definition: CastorDbService.cc:185
CastorDbService.h
CastorQIECoder
Definition: CastorQIECoder.h:21
CastorCalibrationWidths
Definition: CastorCalibrationWidths.h:9
CastorElectronicsMap
Definition: CastorElectronicsMap.h:30
CastorDbService::getCastorMapping
const CastorElectronicsMap * getCastorMapping() const
Definition: CastorDbService.cc:183
CastorQIEShape
Definition: CastorQIEShape.h:14
CastorQIEData::getShape
const CastorQIEShape & getShape() const
get basic shape
Definition: CastorQIEData.h:35