00001
00002
00003
00004
00005
00006
00007
00008 #include "MyVGeometryParameterMessenger.hh"
00009
00010 #include "myglobals.hh"
00011 #include "G4UIdirectory.hh"
00012 #include "G4UIcmdWithAnInteger.hh"
00013 #include "G4UIcmdWithABool.hh"
00014 #include "G4UIcmdWithAString.hh"
00015
00016 #include "MyVGeometryParameter.hh"
00017
00018 MyVGeometryParameterMessenger::MyVGeometryParameterMessenger(MyVGeometryParameter* fGeometryParameter, G4String name )
00019 {
00020 set_Name(name);
00021 set_GeometryParameter(fGeometryParameter);
00022
00023 m_GeoDirName = "/g4sim/det/" + name + "/";
00024
00025 g4simDir = new G4UIdirectory("/g4sim/");
00026 g4simDir->SetGuidance("UI commands of this example");
00027
00028 detDir = new G4UIdirectory("/g4sim/det/");
00029 detDir->SetGuidance("detector control");
00030
00031 geoDir = new G4UIdirectory(m_GeoDirName);
00032 geoDir->SetGuidance("geometry control");
00033
00034 G4String CmdName;
00035
00036 CmdName = m_GeoDirName + "ReadCard";
00037 ReadCard_cmd = new G4UIcmdWithAString(CmdName, this);
00038 ReadCard_cmd->SetGuidance("ReadCard.");
00039 ReadCard_cmd->SetParameterName("filename",false);
00040 ReadCard_cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
00041
00042 CmdName = m_GeoDirName + "checkoverlap";
00043 set_checkoverlap_cmd = new G4UIcmdWithABool(CmdName, this);
00044 set_checkoverlap_cmd->SetGuidance("set checkoverlap.");
00045 set_checkoverlap_cmd->SetParameterName("checkoverlap",false);
00046 set_checkoverlap_cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
00047
00048 CmdName = m_GeoDirName + "VerboseLevel";
00049 set_VerboseLevel_cmd = new G4UIcmdWithAnInteger(CmdName, this);
00050 set_VerboseLevel_cmd->SetGuidance("set VerboseLevel.");
00051 set_VerboseLevel_cmd->SetParameterName("VerboseLevel",false);
00052 set_VerboseLevel_cmd->AvailableForStates(G4State_PreInit,G4State_Idle);
00053 }
00054
00055 MyVGeometryParameterMessenger::~MyVGeometryParameterMessenger()
00056 {
00057 delete g4simDir;
00058 delete geoDir;
00059 delete detDir;
00060 delete ReadCard_cmd;
00061 delete set_checkoverlap_cmd;
00062 delete set_VerboseLevel_cmd;
00063 }
00064
00065 int MyVGeometryParameterMessenger::MySetNewValue(G4UIcommand* command,G4String newValue)
00066 {
00067
00068 int status = 0;
00069
00070 MyVGeometryParameter* fMyVGeometryParameter = get_GeometryParameter();
00071
00072 if( command == ReadCard_cmd ) { m_GeometryParameter->InitFromFile(newValue); }
00073
00074 else if( command == set_checkoverlap_cmd ) { fMyVGeometryParameter->set_checkoverlap(set_checkoverlap_cmd->GetNewBoolValue(newValue));}
00075
00076 else if( command == set_VerboseLevel_cmd ) { fMyVGeometryParameter->set_VerboseLevel(set_VerboseLevel_cmd->GetNewIntValue(newValue));}
00077
00078 else status = 1;
00079
00080 return status;
00081
00082 }
00083