00001 /*************************************************************************** 00002 DDLOrb.cc - description 00003 ------------------- 00004 begin : Thu Aug 19 2010 00005 email : case@ucdhep.ucdavis.edu 00006 ***************************************************************************/ 00007 00008 /*************************************************************************** 00009 * * 00010 * DDDParser sub-component of DDD * 00011 * * 00012 ***************************************************************************/ 00013 00014 #include "DetectorDescription/Parser/src/DDLOrb.h" 00015 00016 #include "DetectorDescription/Core/interface/DDName.h" 00017 #include "DetectorDescription/Core/interface/DDSolid.h" 00018 #include "DetectorDescription/Base/interface/DDdebug.h" 00019 00020 #include "DetectorDescription/ExprAlgo/interface/ExprEvalSingleton.h" 00021 00022 DDLOrb::DDLOrb( DDLElementRegistry* myreg ) 00023 : DDLSolid( myreg ) 00024 {} 00025 00026 DDLOrb::~DDLOrb( void ) 00027 {} 00028 00029 // Upon encountering the end of the Orb element, call DDCore. 00030 void 00031 DDLOrb::processElement( const std::string& name, const std::string& nmspace, DDCompactView& cpv ) 00032 { 00033 DCOUT_V( 'P', "DDLOrb::processElement started" ); 00034 ExprEvalInterface & ev = ExprEvalSingleton::instance(); 00035 DDXMLAttribute atts = getAttributeSet(); 00036 00037 DDSolid ddorb = DDSolidFactory::orb( getDDName( nmspace ), 00038 ev.eval( nmspace, atts.find( "radius" )->second )); 00039 00040 DDLSolid::setReference( nmspace, cpv ); 00041 00042 DCOUT_V( 'P', "DDLOrb::processElement completed" ); 00043 }