Go to the documentation of this file.00001 #include <iostream>
00002 #include <sstream>
00003 #include <fstream>
00004
00005 #include "CondFormats/EcalObjects/interface/EcalTPGLinearizationConst.h"
00006 #include "CondTools/Ecal/interface/EcalTPGLinearizationConstXMLTranslator.h"
00007
00008 #include "CondTools/Ecal/interface/DOMHelperFunctions.h"
00009 #include "CondTools/Ecal/interface/XMLTags.h"
00010
00011 using namespace XERCES_CPP_NAMESPACE;
00012 using namespace xuti;
00013 using namespace std;
00014
00015 int EcalTPGLinearizationConstXMLTranslator::writeXML(const std::string& filename,
00016 const EcalCondHeader& header,
00017 const EcalTPGLinearizationConst& record){
00018 std::fstream fs(filename.c_str(),ios::out);
00019 fs<< dumpXML(header,record);
00020 return 0;
00021 }
00022
00023 std::string EcalTPGLinearizationConstXMLTranslator::dumpXML(const EcalCondHeader& header,
00024 const EcalTPGLinearizationConst& record){
00025
00026 XMLPlatformUtils::Initialize();
00027
00028 DOMImplementation* impl =
00029 DOMImplementationRegistry::getDOMImplementation(fromNative("LS").c_str());
00030
00031 DOMWriter* writer =static_cast<DOMImplementationLS*>(impl)->createDOMWriter( );
00032 writer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
00033
00034 DOMDocumentType* doctype = impl->createDocumentType( fromNative("XML").c_str(), 0, 0 );
00035 DOMDocument * doc =
00036 impl->createDocument( 0, fromNative(Linearization_tag).c_str(), doctype );
00037
00038
00039 doc->setEncoding(fromNative("UTF-8").c_str() );
00040 doc->setStandalone(true);
00041 doc->setVersion(fromNative("1.0").c_str() );
00042
00043 DOMElement* root = doc->getDocumentElement();
00044
00045 xuti::writeHeader(root,header);
00046
00047
00048 std::ofstream fout;
00049 fout.open("Linearization.txt");
00050
00051 for(int cellid = EBDetId::MIN_HASH;
00052 cellid < EBDetId::kSizeForDenseIndexing;
00053 ++cellid) {
00054
00055 uint32_t rawid = EBDetId::unhashIndex(cellid);
00056
00057 DOMElement* cellnode= writeCell(root,rawid);
00058
00059 float m12=(record)[rawid].mult_x12;
00060 float s12=(record)[rawid].shift_x12;
00061 float m6 =(record)[rawid].mult_x6;
00062 float s6 =(record)[rawid].shift_x6;
00063 float m1 =(record)[rawid].mult_x1;
00064 float s1 =(record)[rawid].shift_x1;
00065
00066 WriteNodeWithValue(cellnode,Linearization_m12_tag,m12);
00067 WriteNodeWithValue(cellnode,Linearization_m6_tag,m6);
00068 WriteNodeWithValue(cellnode,Linearization_m1_tag,m1);
00069 WriteNodeWithValue(cellnode,Linearization_s12_tag,s12);
00070 WriteNodeWithValue(cellnode,Linearization_s6_tag,s6);
00071 WriteNodeWithValue(cellnode,Linearization_s1_tag,s1);
00072 fout << rawid << " " << m12 << " " << m6 << " " << m1 << " " << s12 << " " << s6 << " " << s1 << "\n";
00073 }
00074
00075 for(int cellid = 0;
00076 cellid < EEDetId::kSizeForDenseIndexing;
00077 ++cellid) {
00078 if(!EEDetId::validHashIndex(cellid)) continue;
00079
00080 uint32_t rawid = EEDetId::unhashIndex(cellid);
00081
00082 DOMElement* cellnode=writeCell(root,rawid);
00083
00084 float m12=(record)[rawid].mult_x12;
00085 float s12=(record)[rawid].shift_x12;
00086 float m6 =(record)[rawid].mult_x6;
00087 float s6 =(record)[rawid].shift_x6;
00088 float m1 =(record)[rawid].mult_x1;
00089 float s1 =(record)[rawid].shift_x1;
00090
00091 WriteNodeWithValue(cellnode,Linearization_m12_tag,m12);
00092 WriteNodeWithValue(cellnode,Linearization_m6_tag,m6);
00093 WriteNodeWithValue(cellnode,Linearization_m1_tag,m1);
00094 WriteNodeWithValue(cellnode,Linearization_s12_tag,s12);
00095 WriteNodeWithValue(cellnode,Linearization_s6_tag,s6);
00096 WriteNodeWithValue(cellnode,Linearization_s1_tag,s1);
00097 fout << rawid << " " << m12 << " " << m6 << " " << m1 << " " << s12 << " " << s6 << " " << s1 << "\n";
00098
00099 }
00100 fout.close();
00101 std::string dump= toNative(writer->writeToString(*root));
00102 doc->release();
00103
00104 return dump;
00105 }