CMS 3D CMS Logo

HcalDbXml.cc
Go to the documentation of this file.
1 
2 //
3 // F.Ratnikov (UMd), Oct 28, 2005
4 // $Id: HcalDbXml.cc,v 1.9 2008/11/10 10:13:28 rofierzy Exp $
5 //
6 #include <vector>
7 #include <string>
8 #include <fstream>
9 #include <sstream>
10 
11 
13 
15 
16 // Xerces-C
17 #include <xercesc/util/XMLString.hpp>
18 #include <xercesc/dom/DOMElement.hpp>
19 #include <xercesc/dom/DOMText.hpp>
20 #include <xercesc/dom/DOMImplementation.hpp>
21 #include <xercesc/dom/DOMImplementationRegistry.hpp>
22 #include <xercesc/dom/DOMConfiguration.hpp>
23 #include <xercesc/dom/DOMDocument.hpp>
24 #include <xercesc/dom/DOMLSOutput.hpp>
25 #include <xercesc/dom/DOMLSSerializer.hpp>
26 
29 
31 
32 using namespace std;
33 using namespace xercesc;
34 
35 namespace {
36  template <class T> XMLCh* transcode (const T& fInput) {
37  ostringstream ost;
38  ost << fInput;
39  return XMLString::transcode (ost.str().c_str());
40  }
41 
42  const char* IOV_ID = "IOV_ID";
43  const char* TAG_ID = "TAG_ID";
44 
45  std::string kind (const HcalPedestals& fObject) { return "HCAL_PEDESTALS_V2";}
46  std::string kind (const HcalGains& fObject) { return "HCAL Gains";}
47  std::string kind (const HcalRawGains& fObject) { return "HCAL Raw Gains";}
48 
49  std::string extensionTableName (const std::string& fKind) {
50  if (fKind == "HCAL_PEDESTALS_V2") return "HCAL_PEDESTALS_V2";
51  if (fKind == "HCAL Gains") return "HCAL_GAIN_PEDSTL_CALIBRATIONS";
52  if (fKind == "HCAL Raw Gains") return "HCAL_RAW_GAINS";
53  return "UNKNOWN";
54  }
55 }
56 
57 class XMLDocument {
58 public:
59  XMLDocument ();
60  template <class T> DOMElement* newElement (DOMElement* fParent, const T& fName);
61  template <class T> DOMElement* newValue (DOMElement* fParent, const std::string& fName, const T& fValue);
62  template <class T> void addAttribute (DOMElement* fElement, const std::string& fName, const T& fValue);
63  const DOMDocument* document ();
64  void streamOut (std::ostream& fOut);
65 
66  DOMElement* root ();
67  DOMElement* makeHeader (DOMElement* fRoot, const std::string& fExtensionName, unsigned long fRun);
68  DOMElement* makeDataset (DOMElement* fRoot, const std::string& fVersion);
69  DOMElement* makeElement (DOMElement* fRoot);
70  DOMElement* makeMaps (DOMElement* fRoot);
71 
72  DOMElement* makeType (DOMElement* fHeader, const std::string& fExtensionName);
73  DOMElement* makeRun (DOMElement* fHeader, unsigned long fRun);
74 
75  DOMElement* makeChId (DOMElement* fDataset, DetId fId);
76 
77  DOMElement* makeElementDataset (DOMElement* fElement, int fXMLId, DetId fDetId, const std::string& fVersion, const std::string& fKind, unsigned long fRun);
78  DOMElement* makeElementIOV (DOMElement* fElement, unsigned long long fIovBegin, unsigned long long fIovEnd = 0);
79  DOMElement* makeElementTag (DOMElement* fElement, const std::string& fTagName, const std::string& fDetectorName, const std::string& fComment = "Automatically created by HcalDbXml");
80 
81  DOMElement* makeMapTag (DOMElement* fMap);
82  DOMElement* makeMapIOV (DOMElement* fTag);
83  DOMElement* makeMapDataset (DOMElement* fIov, int fXMLId);
84 
85  DOMElement* makeData (DOMElement* fDataset, const HcalPedestal& fPed, const HcalPedestalWidth& fWidth);
86  DOMElement* makeData (DOMElement* fDataset);
87 
88  // specializations
89  void addData (DOMElement* fData, const HcalPedestal& fItem);
90  void addData (DOMElement* fData, const HcalPedestalWidth& fItem);
91  void addData (DOMElement* fData, const HcalGain& fItem);
92  void addData (DOMElement* fData, const HcalRawGain& fItem);
93  void addData (DOMElement* fData, const HcalGainWidth& fItem);
94 
95 private:
96  DOMImplementation* mDom;
97  DOMDocument* mDoc;
98 };
99 
101  : mDoc (nullptr)
102  {
104  mDom = DOMImplementationRegistry::getDOMImplementation (transcode ("Core"));
105  mDoc = mDom->createDocument(
106  nullptr, // root element namespace URI.
107  transcode ("ROOT"), // root element name
108  nullptr); // document type object (DTD).
109  }
110 
111  template <class T> DOMElement* XMLDocument::newElement (DOMElement* fParent, const T& fName) {
112  DOMElement* element = mDoc->createElement (transcode (fName));
113  fParent->appendChild (element);
114  return element;
115  }
116 
117  template <class T> DOMElement* XMLDocument::newValue (DOMElement* fParent, const std::string& fName, const T& fValue) {
118  DOMElement* element = newElement (fParent, fName);
119  DOMText* text = mDoc->createTextNode (transcode (fValue));
120  element->appendChild (text);
121  return element;
122  }
123 
124  template <class T> void XMLDocument::addAttribute (DOMElement* fElement, const std::string& fName, const T& fValue) {
125  fElement->setAttribute (transcode (fName), transcode (fValue));
126  }
127 
128  DOMElement* XMLDocument::root () { return mDoc->getDocumentElement();}
129 
130  DOMElement* XMLDocument::makeHeader (DOMElement* fRoot, const std::string& fExtensionName, unsigned long fRun) {
131  DOMElement* header = newElement (fRoot, "HEADER");
132  makeType (header, fExtensionName);
133  makeRun (header, fRun);
134  return header;
135  }
136 
137  DOMElement* XMLDocument::makeType (DOMElement* fHeader, const std::string& fKind) {
138  DOMElement* type = newElement (fHeader, "TYPE");
139  newValue (type, "EXTENSION_TABLE_NAME", extensionTableName (fKind));
140  newValue (type, "NAME", fKind);
141  return type;
142  }
143 
144  DOMElement* XMLDocument::makeRun (DOMElement* fHeader, unsigned long fRun) {
145  DOMElement* run =newElement (fHeader, "RUN");
146  newValue (run, "RUN_TYPE", "HcalDbXml");
147  newValue (run, "RUN_NUMBER", fRun);
148  return run;
149  }
150 
151  DOMElement* XMLDocument::makeDataset (DOMElement* fRoot, const std::string& fVersion) {
152  DOMElement* dataset =newElement (fRoot, "DATA_SET");
153  newValue (dataset, "VERSION", fVersion);
154  return dataset;
155  }
156 
157  DOMElement* XMLDocument::makeChId (DOMElement* fDataset, DetId fId) {
158  DOMElement* channel = newElement (fDataset, "CHANNEL");
159  newValue (channel, "EXTENSION_TABLE_NAME", "HCAL_CHANNELS");
161  newValue (channel, "DETECTOR_NAME", parser.getFlavor ());
162  int eta = parser.getField (1);
163  newValue (channel, "ETA", abs(eta));
164  newValue (channel, "Z", eta > 0 ? 1 : -1);
165  newValue (channel, "PHI", parser.getField2 ());
166  newValue (channel, "DEPTH", parser.getField3 ());
167  newValue (channel, "HCAL_CHANNEL_ID", fId.rawId());
168  return channel;
169  }
170 
171  DOMElement* XMLDocument::makeElementDataset (DOMElement* fElement, int fXMLId, DetId fDetId, const std::string& fVersion, const std::string& fKind, unsigned long fRun) {
172  DOMElement* dataset = newElement (fElement, "DATA_SET");
173  addAttribute (dataset, "id", fXMLId);
174  newValue (newElement (dataset, "KIND_OF_CONDITION"), "NAME", fKind);
175  newValue (dataset, "VERSION", fVersion);
176  makeRun (dataset, fRun);
177  makeChId (dataset, fDetId);
178  return dataset;
179  }
180 
181  DOMElement* XMLDocument::makeElementIOV (DOMElement* fElement, unsigned long long fIovBegin, unsigned long long fIovEnd) {
182  DOMElement* iov = newElement (fElement, "IOV");
183  addAttribute (iov, "id", IOV_ID);
184  newValue (iov, "INTERVAL_OF_VALIDITY_BEGIN", fIovBegin);
185  if (fIovEnd) {
186  newValue (iov, "INTERVAL_OF_VALIDITY_END", fIovEnd);
187  }
188  return iov;
189  }
190 
191  DOMElement* XMLDocument::makeElementTag (DOMElement* fElement, const std::string& fTagName, const std::string& fDetectorName, const std::string& fComment) {
192  DOMElement* tag = newElement (fElement, "TAG");
193  addAttribute (tag, "id", TAG_ID);
194  addAttribute (tag, "mode", "create");
195  newValue (tag, "TAG_NAME", fTagName);
196  newValue (tag, "DETECTOR_NAME", fDetectorName);
197  newValue (tag, "COMMENT_DESCRIPTION", fComment);
198  return tag;
199  }
200 
201  DOMElement* XMLDocument::makeElement (DOMElement* fRoot) {
202  DOMElement* element = newElement (fRoot, "ELEMENTS");
203  return element;
204  }
205 
206  DOMElement* XMLDocument::makeMaps (DOMElement* fRoot) {
207  DOMElement* map = newElement (fRoot, "MAPS");
208  return map;
209  }
210 
211  DOMElement* XMLDocument::makeMapTag (DOMElement* fMap) {
212  DOMElement* tag = newElement (fMap, "TAG");
213  addAttribute (tag, "idref", TAG_ID);
214  return tag;
215  }
216 
217  DOMElement* XMLDocument::makeMapIOV (DOMElement* fTag) {
218  DOMElement* iov = newElement (fTag, "IOV");
219  addAttribute (iov, "idref", IOV_ID);
220  return iov;
221  }
222 
223  DOMElement* XMLDocument::makeMapDataset (DOMElement* fIov, int fXMLId) {
224  DOMElement* element = newElement (fIov, "DATA_SET");
225  addAttribute (element, "idref", fXMLId);
226  return element;
227  }
228 
229  DOMElement* XMLDocument::makeData (DOMElement* fDataset) {
230  return newElement (fDataset, "DATA");
231  }
232 
233  void XMLDocument::addData (DOMElement* fData, const HcalPedestal& fItem) {
234  newValue (fData, "CAPACITOR_0_VALUE", fItem.getValue (0));
235  newValue (fData, "CAPACITOR_1_VALUE", fItem.getValue (1));
236  newValue (fData, "CAPACITOR_2_VALUE", fItem.getValue (2));
237  newValue (fData, "CAPACITOR_3_VALUE", fItem.getValue (3));
238  }
239 
240  void XMLDocument::addData (DOMElement* fData, const HcalPedestalWidth& fItem) {
241  // widths
242  newValue (fData, "SIGMA_0_0", fItem.getSigma (0, 0));
243  newValue (fData, "SIGMA_1_1", fItem.getSigma (1, 1));
244  newValue (fData, "SIGMA_2_2", fItem.getSigma (2, 2));
245  newValue (fData, "SIGMA_3_3", fItem.getSigma (3, 3));
246  newValue (fData, "SIGMA_0_1", fItem.getSigma (0, 1));
247  newValue (fData, "SIGMA_0_2", fItem.getSigma (0, 2));
248  newValue (fData, "SIGMA_0_3", fItem.getSigma (0, 3));
249  newValue (fData, "SIGMA_1_2", fItem.getSigma (1, 2));
250  newValue (fData, "SIGMA_1_3", fItem.getSigma (1, 3));
251  newValue (fData, "SIGMA_2_3", fItem.getSigma (2, 3));
252  }
253 
254  void XMLDocument::addData (DOMElement* fData, const HcalGain& fItem) {
255  newValue (fData, "CAPACITOR_0_VALUE", fItem.getValue (0));
256  newValue (fData, "CAPACITOR_1_VALUE", fItem.getValue (1));
257  newValue (fData, "CAPACITOR_2_VALUE", fItem.getValue (2));
258  newValue (fData, "CAPACITOR_3_VALUE", fItem.getValue (3));
259  }
260 
261  void XMLDocument::addData (DOMElement* fData, const HcalRawGain& fItem) {
262  newValue (fData, "VALUE", fItem.getValue ());
263  newValue (fData, "ERROR", fItem.getError ());
264  newValue (fData, "VOLTAGE", fItem.getVoltage ());
265  newValue (fData, "STATUS", fItem.strStatus ());
266  }
267 
268  void XMLDocument::addData (DOMElement* fData, const HcalGainWidth& fItem) {
269  newValue (fData, "CAPACITOR_0_ERROR", fItem.getValue (0));
270  newValue (fData, "CAPACITOR_1_ERROR", fItem.getValue (1));
271  newValue (fData, "CAPACITOR_2_ERROR", fItem.getValue (2));
272  newValue (fData, "CAPACITOR_3_ERROR", fItem.getValue (3));
273  }
274 
275 
276  DOMElement* XMLDocument::makeData (DOMElement* fDataset, const HcalPedestal& fPed, const HcalPedestalWidth& fWidth) {
277  DOMElement* data = newElement (fDataset, "DATA");
278  // pedestals
279  newValue (data, "CAPACITOR_0_VALUE", fPed.getValue (0));
280  newValue (data, "CAPACITOR_1_VALUE", fPed.getValue (1));
281  newValue (data, "CAPACITOR_2_VALUE", fPed.getValue (2));
282  newValue (data, "CAPACITOR_3_VALUE", fPed.getValue (3));
283  // widths
284  newValue (data, "SIGMA_0_0", fWidth.getSigma (0, 0));
285  newValue (data, "SIGMA_1_1", fWidth.getSigma (1, 1));
286  newValue (data, "SIGMA_2_2", fWidth.getSigma (2, 2));
287  newValue (data, "SIGMA_3_3", fWidth.getSigma (3, 3));
288  newValue (data, "SIGMA_0_1", fWidth.getSigma (0, 1));
289  newValue (data, "SIGMA_0_2", fWidth.getSigma (0, 2));
290  newValue (data, "SIGMA_0_3", fWidth.getSigma (0, 3));
291  newValue (data, "SIGMA_1_2", fWidth.getSigma (1, 2));
292  newValue (data, "SIGMA_1_3", fWidth.getSigma (1, 3));
293  newValue (data, "SIGMA_2_3", fWidth.getSigma (2, 3));
294  return data;
295  }
296 
297 
298  const DOMDocument* XMLDocument::document () {return mDoc;}
299 
300  void XMLDocument::streamOut (std::ostream& fOut) {
301  StreamOutFormatTarget formTarget (fOut);
302  DOMLSSerializer* domWriter = mDom->createLSSerializer();
303  DOMConfiguration* dc = domWriter->getDomConfig();
304  dc->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true);
305 
306  DOMLSOutput* outputDesc = ((DOMImplementationLS*)mDom)->createLSOutput();
307  outputDesc->setByteStream(&formTarget);
308 
309  domWriter->write (root(), outputDesc);
310  mDoc->release ();
311  }
312 
313 
314 template <class T1, class T2>
315 bool dumpObject_ (std::ostream& fOutput,
316  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
317  const T1* fObject1, const T2* fObject2 = 0) {
318  if (!fObject1) return false;
319  const std::string KIND = kind (*fObject1);
320 
322  DOMElement* root = doc.root ();
323  doc.makeHeader (root, KIND, fRun);
324 
325  DOMElement* elements = doc.makeElement (root);
326  doc.makeElementIOV (elements, fGMTIOVBegin, fGMTIOVEnd);
327  doc.makeElementTag (elements, fTag, "HCAL");
328 
329  DOMElement* iovmap = doc.makeMapIOV (doc.makeMapTag (doc.makeMaps (root)));
330 
331  std::vector<DetId> detids = fObject1->getAllChannels ();
332  for (unsigned iCh = 0; iCh < detids.size(); iCh++) {
333  DetId id = detids [iCh];
334  ostringstream version;
335  version << fTag << '_' << fGMTIOVBegin; // CONVENTION: version == tag + iov for initial setting
336  DOMElement* dataset = doc.makeDataset (root, version.str());
337  doc.makeChId (dataset, id);
338  DOMElement* data = doc.makeData (dataset);
339  doc.addData (data, *(fObject1->getValues (id)));
340  try {
341  if (fObject2) doc.addData (data, *(fObject2->getValues (id)));
342  }
343  catch (...) {
344  std::cout << "dumpObject_-> ERROR: width is not available for cell # " << id.rawId() << std::endl;
345  }
346  doc.makeElementDataset (elements, iCh, id, version.str(), KIND, fRun);
347  doc.makeMapDataset (iovmap, iCh);
348  }
349  doc.streamOut (fOutput);
350  return true;
351 }
352 
353 
354 bool HcalDbXml::dumpObject (std::ostream& fOutput,
355  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
356  const HcalPedestals& fObject, const HcalPedestalWidths& fError) {
357  return dumpObject_ (fOutput, fRun, fGMTIOVBegin, fGMTIOVEnd, fTag, &fObject, &fError);
358 }
359 
360 bool HcalDbXml::dumpObject (std::ostream& fOutput,
361  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
362  const HcalPedestals& fObject) {
363  float dummyError = 0.0001;
364  std::cout << "HcalDbXml::dumpObject-> set default errors: 0.0001, 0.0001, 0.0001, 0.0001" << std::endl;
365  HcalPedestalWidths widths(fObject.topo(), fObject.isADC() );
366  std::vector<DetId> channels = fObject.getAllChannels ();
367  for (std::vector<DetId>::iterator channel = channels.begin ();
368  channel != channels.end ();
369  channel++) {
370 
371  HcalPedestalWidth item(*channel);
372  for (int iCapId = 0; iCapId < 4; iCapId++) {
373  item.setSigma (iCapId, iCapId, dummyError*dummyError);
374  }
375  widths.addValues(item);
376  }
377  return dumpObject (fOutput, fRun, fGMTIOVBegin, fGMTIOVEnd, fTag, fObject, widths);
378 }
379 
380 bool HcalDbXml::dumpObject (std::ostream& fOutput,
381  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
382  const HcalGains& fObject, const HcalGainWidths& fError) {
383  return dumpObject_ (fOutput, fRun, fGMTIOVBegin, fGMTIOVEnd, fTag, &fObject, &fError);
384 }
385 
386 bool HcalDbXml::dumpObject (std::ostream& fOutput,
387  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
388  const HcalGains& fObject) {
389  HcalGainWidths widths(fObject.topo());
390  std::vector<DetId> channels = fObject.getAllChannels ();
391  for (std::vector<DetId>::iterator channel = channels.begin (); channel != channels.end (); channel++)
392  {
393  HcalGainWidth item(*channel,0,0,0,0);
394  widths.addValues(item); // no error
395  }
396  return dumpObject (fOutput, fRun, fGMTIOVBegin, fGMTIOVEnd, fTag, fObject, widths);
397 }
398 
399 bool HcalDbXml::dumpObject (std::ostream& fOutput,
400  unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string& fTag,
401  const HcalRawGains& fObject) {
402  return dumpObject_ (fOutput, fRun, fGMTIOVBegin, fGMTIOVEnd, fTag, &fObject, (const HcalGainWidths*)nullptr);
403 }
type
Definition: HCALResponse.h:21
DOMElement * makeElementTag(DOMElement *fElement, const std::string &fTagName, const std::string &fDetectorName, const std::string &fComment="Automatically created by HcalDbXml")
Definition: HcalDbXml.cc:191
std::string strStatus() const
Definition: HcalRawGain.h:22
bool isADC() const
Definition: HcalPedestals.h:28
float getSigma(int fCapId1, int fCapId2) const
get correlation element for capId1/2 = 0..3
bool dumpObject(std::ostream &fOutput, unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string &fTag, unsigned fVersion, const HcalPedestals &fObject, const HcalPedestalWidths &fError)
Definition: HcalDbXml.cc:168
void streamOut(std::ostream &fOut)
Definition: HcalDbXml.cc:300
#define nullptr
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
DOMElement * makeDataset(DOMElement *fRoot, const std::string &fVersion)
Definition: HcalDbXml.cc:151
void xercesInitialize()
Definition: Xerces.cc:18
float getValue(int fCapId) const
get value for capId = 0..3
Definition: HcalGain.h:22
float getValue(int fCapId) const
get value for capId = 0..3
Definition: HcalGainWidth.h:21
DOMElement * makeMapIOV(DOMElement *fTag)
Definition: HcalDbXml.cc:217
float getValue() const
Definition: HcalRawGain.h:18
const std::string & getField3() const
DOMElement * makeElementIOV(DOMElement *fElement, unsigned long long fIovBegin, unsigned long long fIovEnd=0)
Definition: HcalDbXml.cc:181
float getError() const
Definition: HcalRawGain.h:19
std::vector< DetId > getAllChannels() const
DOMElement * makeElementDataset(DOMElement *fElement, int fXMLId, DetId fDetId, const std::string &fVersion, const std::string &fKind, unsigned long fRun)
Definition: HcalDbXml.cc:171
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * doc
Definition: XMLDocument.h:76
float getValue(int fCapId) const
get value for capId = 0..3
Definition: HcalPedestal.h:21
DOMElement * makeMapTag(DOMElement *fMap)
Definition: HcalDbXml.cc:211
float getVoltage() const
Definition: HcalRawGain.h:20
void addAttribute(DOMElement *fElement, const std::string &fName, const T &fValue)
Definition: HcalDbXml.cc:124
void addData(DOMElement *fData, const HcalPedestal &fItem)
Definition: HcalDbXml.cc:233
const DOMDocument * document()
Definition: HcalDbXml.cc:298
DOMElement * makeElement(DOMElement *fRoot)
Definition: HcalDbXml.cc:201
DOMElement * makeRun(DOMElement *fHeader, unsigned long fRun)
Definition: HcalDbXml.cc:144
Definition: DetId.h:18
const std::string & getField2() const
bool dumpObject(std::ostream &fOutput, const CastorPedestals &fObject)
DOMElement * makeChId(DOMElement *fDataset, DetId fId)
Definition: HcalDbXml.cc:157
std::unique_ptr< XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser > parser
Definition: XMLDocument.h:72
DOMElement * makeMaps(DOMElement *fRoot)
Definition: HcalDbXml.cc:206
DOMElement * makeType(DOMElement *fHeader, const std::string &fExtensionName)
Definition: HcalDbXml.cc:137
DOMElement * makeData(DOMElement *fDataset, const HcalPedestal &fPed, const HcalPedestalWidth &fWidth)
Definition: HcalDbXml.cc:276
DOMElement * makeHeader(DOMElement *fRoot, const std::string &fExtensionName, unsigned long fRun)
Definition: HcalDbXml.cc:130
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
bool dumpObject_(std::ostream &fOutput, unsigned fRun, unsigned long fGMTIOVBegin, unsigned long fGMTIOVEnd, const std::string &fTag, const T1 *fObject1, const T2 *fObject2=0)
Definition: HcalDbXml.cc:315
DOMImplementation * mDom
Definition: HcalDbXml.cc:96
DOMDocument * mDoc
Definition: HcalDbXml.cc:97
const std::string & getFlavor() const
DOMElement * newElement(DOMElement *fParent, const T &fName)
Definition: HcalDbXml.cc:111
DOMElement * newValue(DOMElement *fParent, const std::string &fName, const T &fValue)
Definition: HcalDbXml.cc:117
long double T
DOMElement * root()
Definition: HcalDbXml.cc:128
void setSigma(int fCapId1, int fCapId2, float fSigma)
const HcalTopology * topo() const
DOMElement * makeMapDataset(DOMElement *fIov, int fXMLId)
Definition: HcalDbXml.cc:223