00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "MyVGeometrySvc.hh"
00015
00016 #include "myglobals.hh"
00017 #include "G4LogicalVolume.hh"
00018 #include "G4LogicalVolumeStore.hh"
00019
00020 #include <string>
00021 #include <iostream>
00022
00023
00024 #include "MyVGeometryParameter.hh"
00025
00026 MyVGeometrySvc::MyVGeometrySvc(G4String name, G4String opt )
00027 :MyConfigure()
00028 {
00029 if ( opt == "" ){
00030 std::cout<<"MyVGeometrySvc is a virtual class, should be called with opt not empty!"<<std::endl;
00031 G4Exception("MyVGeometrySvc::MyVGeometrySvc()","Run0031",
00032 FatalException, "illegal construction.");
00033 }
00034 set_Name(name);
00035 }
00036
00037 MyVGeometrySvc::~MyVGeometrySvc(){
00038 std::cout<<"======>In ~MyVGeometrySvc, delete GeometryParameter at ("<<(void*)m_GeometryParameter<<")!"<<std::endl;
00039 delete m_GeometryParameter;
00040 }
00041
00042 void MyVGeometrySvc::ReadCard( G4String file_name ){
00043 if(file_name[0] != '/'){
00044 G4String dir_name = getenv("CONFIGUREROOT");
00045 if (dir_name[dir_name.size()-1] != '/') dir_name.append("/");
00046 file_name = dir_name + file_name;
00047 }
00048 m_GeometryParameter->InitFromFile(file_name);
00049 }
00050
00051 G4LogicalVolume* MyVGeometrySvc::get_logicalVolume(G4String name){
00052
00053 G4LogicalVolumeStore* logicalVolumeStore = G4LogicalVolumeStore::GetInstance();
00054 G4LogicalVolume* log_volume = logicalVolumeStore->GetVolume(name,false);
00055 if (!log_volume){
00056 std::cout<<"Logical volume "<<name<<" of MyVGeometry can not be found!!!"<<std::endl;
00057 G4Exception("MyVGeometrySvc::get_logicalVolume()","Run0031",
00058 FatalException, "unknown logical volume.");
00059 }
00060 return log_volume;
00061 }