CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalOmdsCalibrations.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Original Author: Gena Kukartsev Mar 11, 2009
4 // Adapted from HcalAsciiCalibrations
5 // $Id: HcalOmdsCalibrations.cc,v 1.14 2012/11/12 20:49:45 dlange Exp $
6 //
7 
8 #include <memory>
9 #include <iostream>
10 #include <fstream>
11 
14 
17 
19 
33 
35 
37 //
38 // class decleration
39 //
40 
41 using namespace cms;
42 
44 
45 {
46  //parsing parameters
47  std::vector<edm::ParameterSet> data = iConfig.getParameter<std::vector<edm::ParameterSet> >("input");
48  std::vector<edm::ParameterSet>::iterator request = data.begin ();
49  for (; request != data.end (); request++) {
50  std::string objectName = request->getParameter<std::string> ("object");
51 
52  if (request->exists("version")) mVersion[objectName] = request->getParameter<std::string>("version");
53  if (request->exists("subversion")) mSubversion[objectName] = request->getParameter<int>("subversion");
54  if (request->exists("iov_begin")) mIOVBegin[objectName] = request->getParameter<int>("iov_begin");
55  if (request->exists("accessor")) mAccessor[objectName] = request->getParameter<std::string>("accessor");
56  if (request->exists("query")) mQuery[objectName] = request->getParameter<std::string>("query");
57 
58  mInputs [objectName] = request->getParameter<std::string>("tag");
59  if (objectName == "Pedestals") {
60  setWhatProduced (this, &HcalOmdsCalibrations::producePedestals);
61  findingRecord <HcalPedestalsRcd> ();
62  }
63  else if (objectName == "PedestalWidths") {
64  setWhatProduced (this, &HcalOmdsCalibrations::producePedestalWidths);
65  findingRecord <HcalPedestalWidthsRcd> ();
66  }
67  else if (objectName == "Gains") {
68  setWhatProduced (this, &HcalOmdsCalibrations::produceGains);
69  findingRecord <HcalGainsRcd> ();
70  }
71  else if (objectName == "GainWidths") {
72  setWhatProduced (this, &HcalOmdsCalibrations::produceGainWidths);
73  findingRecord <HcalGainWidthsRcd> ();
74  }
75  else if (objectName == "QIEData") {
76  setWhatProduced (this, &HcalOmdsCalibrations::produceQIEData);
77  findingRecord <HcalQIEDataRcd> ();
78  }
79  else if (objectName == "ChannelQuality") {
80  setWhatProduced (this, &HcalOmdsCalibrations::produceChannelQuality);
81  findingRecord <HcalChannelQualityRcd> ();
82  }
83  else if (objectName == "ZSThresholds") {
84  setWhatProduced (this, &HcalOmdsCalibrations::produceZSThresholds);
85  findingRecord <HcalZSThresholdsRcd> ();
86  }
87  else if (objectName == "RespCorrs") {
88  setWhatProduced (this, &HcalOmdsCalibrations::produceRespCorrs);
89  findingRecord <HcalRespCorrsRcd> ();
90  }
91  else if (objectName == "L1TriggerObjects") {
92  setWhatProduced (this, &HcalOmdsCalibrations::produceL1TriggerObjects);
93  findingRecord <HcalL1TriggerObjectsRcd> ();
94  }
95  else if (objectName == "ElectronicsMap") {
96  setWhatProduced (this, &HcalOmdsCalibrations::produceElectronicsMap);
97  findingRecord <HcalElectronicsMapRcd> ();
98  }
99  else if (objectName == "ValidationCorrs") {
100  setWhatProduced (this, &HcalOmdsCalibrations::produceValidationCorrs);
101  findingRecord <HcalValidationCorrsRcd> ();
102  }
103  else if (objectName == "LutMetadata") {
104  setWhatProduced (this, &HcalOmdsCalibrations::produceLutMetadata);
105  findingRecord <HcalLutMetadataRcd> ();
106  }
107  else if (objectName == "DcsValues") {
108  setWhatProduced (this, &HcalOmdsCalibrations::produceDcsValues);
109  findingRecord <HcalDcsRcd> ();
110  }
111  else {
112  std::cerr << "HcalOmdsCalibrations-> Unknown object name '" << objectName
113  << "', known names are: "
114  << "Pedestals PedestalWidths Gains GainWidths QIEData ChannelQuality ElectronicsMap "
115  << "ZSThresholds RespCorrs L1TriggerObjects ValidationCorrs LutMetadata DcsValues "
116  << std::endl;
117  }
118  }
119  // setWhatProduced(this);
120 }
121 
122 
124 {
125 }
126 
127 
128 //
129 // member functions
130 //
131 void
133  std::string record = iKey.name ();
135 }
136 
137 // FIXME: put this into the HcalDbOmds namespace
138 //const static std::string omds_occi_default_accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22";
139 const static std::string omds_occi_default_accessor = "occi://CMS_HCL_APPUSER_R@anyhost/cms_omds_lb?PASSWORD=HCAL_Reader_44,LHWM_VERSION=22";
140 const static std::string default_version = "";
141 const static std::string default_query = "";
142 
143 template <class T>
144 std::auto_ptr<T> produce_impl (const HcalTopology* topo,
145  const std::string & fTag,
146  const std::string & fVersion=default_version,
147  const int fSubversion=1,
148  const int fIOVBegin=1,
149  const std::string & fQuery = default_query,
150  const std::string& fAccessor = omds_occi_default_accessor ) {
151  std::auto_ptr<T> result (new T (topo));
152 
153  HCALConfigDB * db = new HCALConfigDB();
154  try {
155  db -> connect( fAccessor );
156  } catch (hcal::exception::ConfigurationDatabaseException & e) {
157  std::cerr << "Cannot connect to the database" << std::endl;
158  }
159  oracle::occi::Connection * _connection = db -> getConnection();
160  if (_connection){
161  if (!HcalDbOmds::getObject (_connection, fTag, fVersion, fSubversion, fIOVBegin, fQuery, &*result)) {
162  std::cerr << "HcalOmdsCalibrations-> Can not read tag name '" << fTag << "' from database '" << fAccessor << "'" << std::endl;
163  throw cms::Exception("ReadError") << "Can not read tag name '" << fTag << "' from database '" << fAccessor << "'" << std::endl;
164  }
165  }
166  else{
167  std::cerr << "Database connection is null. This should NEVER happen here. Something fishy is going on..." << std::endl;
168  }
169  return result;
170 }
171 template <class T>
172 std::auto_ptr<T> produce_impl (const std::string & fTag,
173  const std::string & fVersion=default_version,
174  const int fSubversion=1,
175  const int fIOVBegin=1,
176  const std::string & fQuery = default_query,
177  const std::string& fAccessor = omds_occi_default_accessor ) {
178  std::auto_ptr<T> result (new T ());
179 
180  HCALConfigDB * db = new HCALConfigDB();
181  try {
182  db -> connect( fAccessor );
183  } catch (hcal::exception::ConfigurationDatabaseException & e) {
184  std::cerr << "Cannot connect to the database" << std::endl;
185  }
186  oracle::occi::Connection * _connection = db -> getConnection();
187  if (_connection){
188  if (!HcalDbOmds::getObject (_connection, fTag, fVersion, fSubversion, fIOVBegin, fQuery, &*result)) {
189  std::cerr << "HcalOmdsCalibrations-> Can not read tag name '" << fTag << "' from database '" << fAccessor << "'" << std::endl;
190  throw cms::Exception("ReadError") << "Can not read tag name '" << fTag << "' from database '" << fAccessor << "'" << std::endl;
191  }
192  }
193  else{
194  std::cerr << "Database connection is null. This should NEVER happen here. Something fishy is going on..." << std::endl;
195  }
196  return result;
197 }
198 
199 
200 
201 std::auto_ptr<HcalPedestals> HcalOmdsCalibrations::producePedestals (const HcalPedestalsRcd& rcd) {
203  rcd.getRecord<IdealGeometryRecord>().get(htopo);
204  const HcalTopology* topo=&(*htopo);
205 
206  return produce_impl<HcalPedestals> (topo, mInputs ["Pedestals"],
207  mVersion["Pedestals"],
208  mSubversion["Pedestals"],
209  mIOVBegin["Pedestals"],
210  mQuery["Pedestals"],
211  mAccessor["Pedestals"]);
212 }
213 
214 std::auto_ptr<HcalPedestalWidths> HcalOmdsCalibrations::producePedestalWidths (const HcalPedestalWidthsRcd& rcd) {
216  rcd.getRecord<IdealGeometryRecord>().get(htopo);
217  const HcalTopology* topo=&(*htopo);
218  return produce_impl<HcalPedestalWidths> (topo, mInputs ["PedestalWidths"],
219  mVersion["PedestalWidths"],
220  mSubversion["PedestalWidths"],
221  mIOVBegin["PedestalWidths"],
222  mQuery["PedestalWidths"],
223  mAccessor["PedestalWidths"]);
224 }
225 
226 std::auto_ptr<HcalGains> HcalOmdsCalibrations::produceGains (const HcalGainsRcd& rcd) {
228  rcd.getRecord<IdealGeometryRecord>().get(htopo);
229  const HcalTopology* topo=&(*htopo);
230  return produce_impl<HcalGains> (topo, mInputs ["Gains"],
231  mVersion["Gains"],
232  mSubversion["Gains"],
233  mIOVBegin["Gains"],
234  mQuery["Gains"],
235  mAccessor["Gains"]);
236 }
237 
238 std::auto_ptr<HcalGainWidths> HcalOmdsCalibrations::produceGainWidths (const HcalGainWidthsRcd& rcd) {
240  rcd.getRecord<IdealGeometryRecord>().get(htopo);
241  const HcalTopology* topo=&(*htopo);
242  return produce_impl<HcalGainWidths> (topo, mInputs ["GainWidths"],
243  mVersion["GainWidths"],
244  mSubversion["GainWidths"],
245  mIOVBegin["GainWidths"],
246  mQuery["GainWidths"],
247  mAccessor["GainWidths"]);
248 }
249 
250 std::auto_ptr<HcalQIEData> HcalOmdsCalibrations::produceQIEData (const HcalQIEDataRcd& rcd) {
252  rcd.getRecord<IdealGeometryRecord>().get(htopo);
253  const HcalTopology* topo=&(*htopo);
254  return produce_impl<HcalQIEData> (topo, mInputs ["QIEData"],
255  mVersion["QIEData"],
256  mSubversion["QIEData"],
257  mIOVBegin["QIEData"],
258  mQuery["QIEData"],
259  mAccessor["QIEData"]);
260 }
261 
262 std::auto_ptr<HcalChannelQuality> HcalOmdsCalibrations::produceChannelQuality (const HcalChannelQualityRcd& rcd) {
264  rcd.getRecord<IdealGeometryRecord>().get(htopo);
265  const HcalTopology* topo=&(*htopo);
266  return produce_impl<HcalChannelQuality> (topo, mInputs ["ChannelQuality"],
267  mVersion["ChannelQuality"],
268  mSubversion["ChannelQuality"],
269  mIOVBegin["ChannelQuality"],
270  mQuery["ChannelQuality"],
271  mAccessor["ChannelQuality"]);
272 }
273 
274 std::auto_ptr<HcalZSThresholds> HcalOmdsCalibrations::produceZSThresholds (const HcalZSThresholdsRcd& rcd) {
276  rcd.getRecord<IdealGeometryRecord>().get(htopo);
277  const HcalTopology* topo=&(*htopo);
278  return produce_impl<HcalZSThresholds> (topo, mInputs ["ZSThresholds"],
279  mVersion["ZSThresholds"],
280  mSubversion["ZSThresholds"],
281  mIOVBegin["ZSThresholds"],
282  mQuery["ZSThresholds"],
283  mAccessor["ZSThresholds"]);
284 }
285 
286 std::auto_ptr<HcalRespCorrs> HcalOmdsCalibrations::produceRespCorrs (const HcalRespCorrsRcd& rcd) {
288  rcd.getRecord<IdealGeometryRecord>().get(htopo);
289  const HcalTopology* topo=&(*htopo);
290  return produce_impl<HcalRespCorrs> (topo, mInputs ["RespCorrs"],
291  mVersion["RespCorrs"],
292  mSubversion["RespCorrs"],
293  mIOVBegin["RespCorrs"],
294  mQuery["RespCorrs"],
295  mAccessor["RespCorrs"]);
296 }
297 
298 std::auto_ptr<HcalL1TriggerObjects> HcalOmdsCalibrations::produceL1TriggerObjects (const HcalL1TriggerObjectsRcd& rcd) {
300  rcd.getRecord<IdealGeometryRecord>().get(htopo);
301  const HcalTopology* topo=&(*htopo);
302  return produce_impl<HcalL1TriggerObjects> (topo, mInputs ["L1TriggerObjects"],
303  mVersion["L1TriggerObjects"],
304  mSubversion["L1TriggerObjects"],
305  mIOVBegin["L1TriggerObjects"],
306  mQuery["L1TriggerObjects"],
307  mAccessor["L1TriggerObjects"]);
308 }
309 
310 std::auto_ptr<HcalElectronicsMap> HcalOmdsCalibrations::produceElectronicsMap (const HcalElectronicsMapRcd& rcd) {
311  return produce_impl<HcalElectronicsMap> (mInputs ["ElectronicsMap"],
312  mVersion["ElectronicsMap"],
313  mSubversion["ElectronicsMap"],
314  mIOVBegin["ElectronicsMap"],
315  mQuery["ElectronicsMap"],
316  mAccessor["ElectronicsMap"]);
317 }
318 
319 std::auto_ptr<HcalValidationCorrs> HcalOmdsCalibrations::produceValidationCorrs (const HcalValidationCorrsRcd& rcd) {
321  rcd.getRecord<IdealGeometryRecord>().get(htopo);
322  const HcalTopology* topo=&(*htopo);
323  return produce_impl<HcalValidationCorrs> (topo, mInputs ["ValidationCorrs"],
324  mVersion["ValidationCorrs"],
325  mSubversion["ValidationCorrs"],
326  mIOVBegin["ValidationCorrs"],
327  mQuery["ValidationCorrs"],
328  mAccessor["ValidationCorrs"]);
329 }
330 
331 std::auto_ptr<HcalLutMetadata> HcalOmdsCalibrations::produceLutMetadata (const HcalLutMetadataRcd& rcd) {
333  rcd.getRecord<IdealGeometryRecord>().get(htopo);
334  const HcalTopology* topo=&(*htopo);
335  return produce_impl<HcalLutMetadata> (topo, mInputs ["LutMetadata"],
336  mVersion["LutMetadata"],
337  mSubversion["LutMetadata"],
338  mIOVBegin["LutMetadata"],
339  mQuery["LutMetadata"],
340  mAccessor["LutMetadata"]);
341 }
342 
343 std::auto_ptr<HcalDcsValues> HcalOmdsCalibrations::produceDcsValues (const HcalDcsRcd& rcd) {
344  return produce_impl<HcalDcsValues> (mInputs ["DcsValues"],
345  mVersion["DcsValues"],
346  mSubversion["DcsValues"],
347  mIOVBegin["DcsValues"],
348  mQuery["DcsValues"],
349  mAccessor["DcsValues"]);
350 }
351 
std::auto_ptr< HcalZSThresholds > produceZSThresholds(const HcalZSThresholdsRcd &rcd)
T getParameter(std::string const &) const
static const std::string default_version
virtual void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &)
std::auto_ptr< HcalQIEData > produceQIEData(const HcalQIEDataRcd &rcd)
std::auto_ptr< HcalDcsValues > produceDcsValues(const HcalDcsRcd &rcd)
bool getObject(oracle::occi::Connection *connection, const std::string &fTag, const std::string &fVersion, const int fSubversion, const int fIOVBegin, const std::string &fQuery, HcalPedestals *fObject)
JetCorrectorParameters::Record record
Definition: classes.h:13
std::auto_ptr< HcalL1TriggerObjects > produceL1TriggerObjects(const HcalL1TriggerObjectsRcd &rcd)
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:97
tuple db
Definition: EcalCondDB.py:151
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:19
HcalOmdsCalibrations(const edm::ParameterSet &)
std::auto_ptr< HcalPedestalWidths > producePedestalWidths(const HcalPedestalWidthsRcd &rcd)
std::auto_ptr< HcalPedestals > producePedestals(const HcalPedestalsRcd &rcd)
std::auto_ptr< HcalGainWidths > produceGainWidths(const HcalGainWidthsRcd &rcd)
static const IOVSyncValue & beginOfTime()
tuple result
Definition: query.py:137
std::auto_ptr< HcalRespCorrs > produceRespCorrs(const HcalRespCorrsRcd &rcd)
std::auto_ptr< HcalLutMetadata > produceLutMetadata(const HcalLutMetadataRcd &rcd)
Gather config data from online DB.
Definition: HCALConfigDB.h:21
static const std::string omds_occi_default_accessor
static const std::string default_query
std::auto_ptr< HcalChannelQuality > produceChannelQuality(const HcalChannelQualityRcd &rcd)
std::auto_ptr< HcalElectronicsMap > produceElectronicsMap(const HcalElectronicsMapRcd &rcd)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
std::auto_ptr< HcalGains > produceGains(const HcalGainsRcd &rcd)
std::auto_ptr< HcalValidationCorrs > produceValidationCorrs(const HcalValidationCorrsRcd &rcd)
std::auto_ptr< T > produce_impl(const std::string &fFile)
long double T