CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/CondTools/Ecal/src/EcalTPGLinearizationConstXMLTranslator.cc

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   // open also a flat text file
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 }