CMS 3D CMS Logo

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