// // $Id: convert_smt2b.cpp,v 1.1 2005/05/19 23:15:42 shfu Exp $ // // File: convert_smt.cpp // Purpose: // Created: 3-FEB-2001 John D. Hobbs // // Modified: MAR-2005 by John D. Hobbs // Now it takes an existing geometry file, // add layer0 which is created by RCP file, // then output a new geometry file. // // $Revision: 1.1 $ // // // Include files #include #include #include #include #include "silicon_geometry/base/SiBaseGeometry.hpp" #include "silicon_geometry/utils/smt_check_geometry.hpp" #include "d0_geometry/base/BaseGeometry.hpp" #include "d0_geometry/base/d0StandaloneGeometry.hpp" #include "d0stream/d0StreamFactory.hpp" #include "d0stream/d0Stream.hpp" #include "rcp/RCP.hpp" #include "rcp/RCPManager.hpp" // Global definitions // Constructors/Destructors using namespace std; using namespace edm; // Accessors int main(int argc, char **argv) { // Read the geometry file d0om_init("ABC"); d0StandaloneGeometry d0geom(argc,argv); d0_Ref d0 = d0geom.get_geometry(); vector rest; d0geom.get_modified_args(rest); // Get a pointer to silicon, and if necessary, modify it in situ. d0_Ref smt = d0->get_mutable_silicon(); // Build the layer0 by building a complete default SMT. RCPManager* rcpman = RCPManager::instance(); RCP smtRCP = rcpman->extract("silicon_geometry","SiBaseGeometry"); d0_Ref defaultSMT = SiBaseGeometry::build_default(&smtRCP); cout << "There are " << defaultSMT->get_l0_count() << " layer0 detectors" << endl; SiL0 *l0 = defaultSMT->get_mutable_l0(1); smt->add_L0(l0,0.0); // Write out the geometry if it's been modified // Open the output file and write the requested subdetector d0StreamFactory *dsf = d0StreamFactory::locateStreamFactory(); d0Stream* os = dsf->make_d0Stream(rest[1],"EVPACK",ios::out); if( !os ) { cout << "Error opening output file " << rest[1] << endl; return 2; } os->write(*d0); os->close(); return 0; } ////////////////////////////// usage ////////////////////////////// // [-f=] [-r=] [-d] // [-d] means DSPACK (but we usually use EVPACK file) ///////////////////////////////////////////////////////////////////