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