// // $Id: set_versions.cpp,v 1.1 2001/03/16 01:49:34 hobbs Exp $ // // File: set_versions.cpp // Purpose: Read a geometry file, and set the version numbers. // Created: 15-MAR-2001 John Hobbs // // $Revision: 1.1 $ // // // Include files #include #include #include "d0_geometry/base/BaseGeometry.hpp" #include "silicon_geometry/base/SiBaseGeometry.hpp" #include "cft_geometry/base/CftBaseGeometry.hpp" #include "cps_geometry/base/CpsBaseGeometry.hpp" #include "fps_geometry/base/FPSBaseGeometry.hpp" #include "calorimeter_geometry/base/CalBaseGeometry.hpp" #include "muon_geometry/base/MuoBaseGeometry.hpp" using namespace std; static int get_version(string dn, int curver); int main() { bool changed=false; // Get the data file string fname,ftype("EVPACK"); cout << "Geometry file? "; cin >> fname; d0om_init("set_versions"); d0_Ref theDet = BaseGeometry::readGeometry(fname,ftype); if( theDet.is_null() ) { throw "No geometry read"; exit(1); } int ivers = get_version("D0",theDet->get_constants_version()); if( ivers != theDet->get_constants_version() ) { changed=true; theDet->set_constants_version(ivers); } // Prompt for the new version for each subdetector in turn. d0_Ref smt = theDet->get_mutable_silicon(); if( !smt.is_null() ) { ivers = get_version("SMT",smt->get_constants_version()); if( ivers != smt->get_constants_version() ) { changed=true; smt->set_constants_version(ivers); } } d0_Ref cft = theDet->get_mutable_cft(); if( !cft.is_null() ) { ivers = get_version("CFT",cft->get_constants_version()); if( ivers != cft->get_constants_version() ) { changed=true; cft->set_constants_version(ivers); } } d0_Ref cps = theDet->get_mutable_cps(); if( !cps.is_null() ) { ivers = get_version("CPS",cps->get_constants_version()); if( ivers != cps->get_constants_version() ) { changed=true; cps->set_constants_version(ivers); } } d0_Ref fps = theDet->get_mutable_fps(); if( !fps.is_null() ) { ivers = get_version("FPS",fps->get_constants_version()); if( ivers != fps->get_constants_version() ) { changed=true; fps->set_constants_version(ivers); } } d0_Ref cal = theDet->get_mutable_calorimeter(); if( !cal.is_null() ) { ivers = get_version("CAL",cal->get_constants_version()); if( ivers != cal->get_constants_version() ) { changed=true; cal->set_constants_version(ivers); } } d0_Ref muo = theDet->get_mutable_muon(); if( !muo.is_null() ) { ivers = get_version("MUON",muo->get_constants_version()); if( ivers != muo->get_constants_version() ) { changed=true; muo->set_constants_version(ivers); } } // Write it... if( changed ) BaseGeometry::writeGeometry(theDet,fname,ftype); else cout << "No changes needed. Geometry not written" << endl; } int get_version(string detname,int curver) { int newver=-1; cout << " What version number for " << detname << "[" << curver << "]? "; cin >> newver; return newver; }