// // $Id: smt_setup_geometers.cpp,v 1.2 2001/09/28 19:29:49 hobbs Exp $ // // File: smt_setup_Goemeter.cpp // Purpose: // Created: 16-AUG-2001 John Hobbs // // $Revision: 1.2 $ // // // Include files #include #include "rcp/RCPManager.hpp" #include "silicon_geometry/utils/smt_setup_geometers.hpp" #include "silicon_geometry/utils/StandaloneGeometry.hpp" #include "silicon_geometry/base/SiGeometer.hpp" #include "silicon_geometry/channel/SiChannelGeometer.hpp" #include "silicon_geometry/material/SiMaterialGeometer.hpp" // Global definitions using namespace std; using namespace edm; // Constructors/Destructors // Accessors void smt_setup_geometers(const std::string geomfilename, const std::string chanrcp, const std::string matrcp, const std::string rcppkg/* "silicon_geometry" */) { // First set up the base geometry SiGeometer *sig = SiGeometer::get_instance(); if( !sig ) { cout << "smt_setup_geometers: Cannot find base geometer. Exit" << endl; throw "Missing geometer"; } // Get the SMT base geometry, and update the base geometer d0_Ref sigeom = StandaloneGeometry::smt_read_geometry(geomfilename,"EVPACK"); sig->refresh(sigeom); // Get an rcp manager, extract the specified RCP's RCPManager* rcpman = RCPManager::instance(); RCP SiChanRCP = rcpman->extract(rcppkg,chanrcp); RCP SiMatRCP = rcpman->extract(rcppkg,matrcp); // Then set up the channel geometry SiChannelGeometer *sic = SiChannelGeometer::get_instance(); if( !sic ) { cout << "smt_setup_geometers: Cannot find channel geometer. Exit" << endl; throw "Missing geometer"; } sic->absRefresh(&SiChanRCP); // and then the material geometry SiMaterialGeometer *sim = SiMaterialGeometer::make_instance(&SiMatRCP); if( !sim ) { cout << "smt_setup_geometers: Cannot find material geometer. Exit" << endl; throw "Missing geometer"; } // DONE }