00001
00002
00003
00004
00005
00006
00007
00008 #include "MyDetectorManagerMessenger.hh"
00009
00010 #include "MyDetectorManager.hh"
00011 #include "G4UIdirectory.hh"
00012 #include "G4UIcmdWithAString.hh"
00013 #include "MyString2Anything.hh"
00014 #include "G4UIcmdWithoutParameter.hh"
00015
00016 MyDetectorManagerMessenger::MyDetectorManagerMessenger(MyDetectorManager* pointer)
00017 :m_MyDetectorManager(pointer)
00018 {
00019 g4simDir = new G4UIdirectory("/g4sim/");
00020 g4simDir->SetGuidance("UI commands of this example");
00021
00022 detDir = new G4UIdirectory("/g4sim/det/");
00023 detDir->SetGuidance("detector control");
00024
00025 ReadCardCmd = new G4UIcmdWithAString("/g4sim/det/ReadCard",this);
00026 ReadCardCmd->SetGuidance("Read geometry file.");
00027 ReadCardCmd->SetGuidance("You have to call update before you start a new run.");
00028 ReadCardCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
00029
00030 AddGeoCmd = new G4UIcmdWithAString("/g4sim/det/AddGeo",this);
00031 AddGeoCmd->SetGuidance("Read geometry file.");
00032 AddGeoCmd->SetGuidance("You have to call update before you start a new run.");
00033 AddGeoCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
00034
00035 ClearGeoCmd = new G4UIcmdWithoutParameter("/g4sim/det/ClearGeo",this);
00036 ClearGeoCmd->SetGuidance("Clear geometry.");
00037 ClearGeoCmd->AvailableForStates(G4State_Idle);
00038 }
00039
00040 MyDetectorManagerMessenger::~MyDetectorManagerMessenger()
00041 {
00042 delete g4simDir;
00043 delete detDir;
00044 delete ReadCardCmd;
00045 delete AddGeoCmd;
00046 delete ClearGeoCmd;
00047 }
00048
00049 void MyDetectorManagerMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
00050 {
00051 if( command == ReadCardCmd ) { m_MyDetectorManager->ReadCard(newValue); }
00052 if( command == AddGeoCmd ) {
00053 G4String file, type, name;
00054 MyString2Anything::get_SSS(newValue, name, file, type);
00055 m_MyDetectorManager->AddGeo(name, file, type);
00056 }
00057 if (command == ClearGeoCmd){ m_MyDetectorManager->ClearGeo(); }
00058 }