00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "G4SDmessenger.hh"
00032 #include "G4SDManager.hh"
00033 #include "G4UIdirectory.hh"
00034 #include "G4UIcmdWithoutParameter.hh"
00035 #include "G4UIcmdWithAString.hh"
00036 #include "G4UIcmdWithAnInteger.hh"
00037
00038 G4SDmessenger::G4SDmessenger(G4SDManager* SDManager):fSDMan(SDManager)
00039 {
00040 hitsDir = new G4UIdirectory("/hits/");
00041 hitsDir->SetGuidance("Sensitive detectors and Hits");
00042
00043 listCmd = new G4UIcmdWithoutParameter("/hits/list",this);
00044 listCmd->SetGuidance("List sensitive detector tree.");
00045
00046 activeCmd = new G4UIcmdWithAString("/hits/activate",this);
00047 activeCmd->SetGuidance("Activate sensitive detector(s).");
00048 activeCmd->SetParameterName("detector",true);
00049 activeCmd->SetDefaultValue("/");
00050
00051 inactiveCmd = new G4UIcmdWithAString("/hits/inactivate",this);
00052 inactiveCmd->SetGuidance("Inactivate sensitive detector(s).");
00053 inactiveCmd->SetParameterName("detector",true);
00054 inactiveCmd->SetDefaultValue("/");
00055
00056 verboseCmd = new G4UIcmdWithAnInteger("/hits/verbose",this);
00057 verboseCmd->SetGuidance("Set the Verbose level.");
00058 verboseCmd->SetParameterName("level",false);
00059 }
00060
00061 G4SDmessenger::~G4SDmessenger()
00062 {
00063 delete listCmd;
00064 delete activeCmd;
00065 delete inactiveCmd;
00066 delete verboseCmd;
00067 delete hitsDir;
00068 }
00069
00070 void G4SDmessenger::SetNewValue(G4UIcommand * command,G4String newVal)
00071 {
00072 if( command==listCmd )
00073 { fSDMan->ListTree(); }
00074 if( command==activeCmd )
00075 { fSDMan->Activate(newVal,1); }
00076 if( command==inactiveCmd )
00077 { fSDMan->Activate(newVal,0); }
00078 if( command==verboseCmd )
00079 { fSDMan->SetVerboseLevel(verboseCmd->GetNewIntValue(newVal)); }
00080 return;
00081 }
00082
00083