Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BinningProjectorXML.cxx

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

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3