Go to the documentation of this file.00001 #include "RecoBTag/XMLCalibration/interface/CalibratedHistogramXML.h"
00002 #include "RecoBTag/XMLCalibration/interface/CalibrationXML.h"
00003 #include <iostream>
00004
00005 using namespace std;
00006 void CalibratedHistogramXML::read (XERCES_CPP_NAMESPACE::DOMElement * dom)
00007 {
00008 binValues.clear();
00009 binULimits.clear();
00010 int size= CalibrationXML::readAttribute<int>(dom,"size");
00011
00012 DOMNode * n1 = dom->getFirstChild();
00013 int bin;
00014 for(bin=0; bin < size; bin ++)
00015 {
00016 while( ( n1->getNodeType() != DOMNode::ELEMENT_NODE ) && ( n1 != 0 ) ) n1 = n1->getNextSibling();
00017 if (n1)
00018 {
00019 DOMElement * binElement = (DOMElement *) n1;
00020 binValues.push_back(CalibrationXML::readAttribute<double>(binElement,"value"));
00021
00022 binULimits.push_back(CalibrationXML::readAttribute<double>(binElement,"uLimit"));
00023 n1 = n1->getNextSibling();
00024 }
00025 }
00026 if(bin>0)
00027 binValues.push_back(CalibrationXML::readAttribute<int>(dom,"overFlowValue"));
00028
00029 limits = Range(binULimits.front(), binULimits.back());
00030 totalValid = false;
00031 }
00032
00033 void CalibratedHistogramXML::write (XERCES_CPP_NAMESPACE::DOMElement * dom) const
00034 {
00035
00036 int size=binULimits.size();
00037 CalibrationXML::writeAttribute(dom,"size",size);
00038 DOMElement * binElement;
00039 for(int bin=0; bin < size; bin ++)
00040 {
00041 binElement = CalibrationXML::addChild(dom,"Bin");
00042 CalibrationXML::writeAttribute(binElement,"value",binValues[bin]);
00043 CalibrationXML::writeAttribute(binElement,"uLimit",binULimits[bin]);
00044 }
00045 CalibrationXML::writeAttribute(dom,"overFlowValue",binValues[size]);
00046
00047 }
00048