BinningProjectorXML.cxx

Go to the documentation of this file.
00001 
00012 // for truncation warning
00013 #ifdef _MSC_VER
00014 #include "msdevstudio/MSconfig.h"
00015 #endif
00016 
00017 #include "BinningProjectorXML.h"
00018 
00019 #include "BinsBaseXML.h"
00020 #include "NTupleXML.h"
00021 
00022 #include "XmlController.h"
00023 #include "XmlDocument.h"
00024 #include "XmlElement.h"
00025 
00026 #include "axes/Range.h"
00027 #include "binners/BinsBase.h"
00028 #include "datasrcs/DataSource.h"
00029 #include "projectors/BinningProjector.h"
00030 
00031 #include <cassert>
00032 
00033 using std::list;
00034 using std::string;
00035 using std::vector;
00036 
00037 using namespace hippodraw;
00038 
00039 BinningProjectorXML::BinningProjectorXML ( XmlController * controller )
00040   : BaseXML ( "BinningProjector", controller )
00041 {
00042   m_binsbaseXML = new BinsBaseXML ( controller );
00043   m_ntupleXML = new NTupleXML ( controller );
00044 }
00045 
00046 BinningProjectorXML::
00047 ~BinningProjectorXML ()
00048 {
00049   delete m_binsbaseXML;
00050   delete m_ntupleXML;
00051 }
00052 
00053 XmlElement *
00054 BinningProjectorXML::
00055 createElement ( const BinningProjector & projector )
00056 {
00057   XmlElement * tag = BaseXML::createElement (); // in base class
00058   const void * addr = reinterpret_cast < const void * > ( & projector );
00059   int id = m_controller -> getId ( addr );
00060   setId ( *tag, id );
00061 
00062   createChildren ( tag, projector );
00063 
00064   return tag;
00065 }
00066 void
00067 BinningProjectorXML::
00068 createChildren ( XmlElement * tag, const BinningProjector & projector )
00069 {
00070   const BinsBase * bins = projector.getBinner ();
00071   XmlElement * element = m_binsbaseXML->createElement ( *bins );
00072 
00073   tag->appendChild ( *element );
00074   delete element;
00075 
00076   BinningProjector & proj = const_cast < BinningProjector & > ( projector );
00077   if ( projector.hasDataSourceBindings () == false ) {
00078     proj.prepareValues ();
00079     const DataSource * ntuple = projector.getProjectedValues ();
00080     element = m_ntupleXML -> createElement ( *ntuple );
00081 
00082     tag -> appendChild ( *element );
00083     delete element;
00084   }
00085 }
00086 
00087 void
00088 BinningProjectorXML::
00089 getObject ( const XmlElement * parent, ProjectorBase * pbase )
00090 {
00091   const XmlElement * bp_element = getNode ( parent );
00092   if ( bp_element == 0 ) return;
00093 
00094   const XmlElement * element = m_binsbaseXML->getNode ( bp_element );
00095   BinsBase * bins = m_binsbaseXML->createObject ( element );
00096 
00097   BinningProjector * projector = dynamic_cast < BinningProjector * > ( pbase );
00098   projector->setBinner ( bins );
00099 }
00100 
00101 void
00102 BinningProjectorXML::
00103 setBins ( const XmlElement * parent, ProjectorBase * pbase )
00104 {
00105   const XmlElement * bp_element = getNode ( parent );
00106   if ( bp_element == 0 ) return;
00107 
00108   const XmlElement * nt_element = m_ntupleXML -> getNode ( bp_element );
00109   const DataSource * ntuple = m_ntupleXML -> getObject ( *nt_element );
00110 
00111   BinningProjector * projector = dynamic_cast < BinningProjector * > ( pbase );
00112   projector -> setBinContents ( ntuple );
00113 }

Generated for HippoDraw Class Library by doxygen