Warning, file /geant4/examples/advanced/microelectronics/src/DetectorMessenger.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033 #include "DetectorMessenger.hh"
0034
0035 #include "DetectorConstruction.hh"
0036 #include "G4UIdirectory.hh"
0037 #include "G4UIcmdWithAString.hh"
0038 #include "G4UIcmdWithADoubleAndUnit.hh"
0039 #include "G4UIcmdWithoutParameter.hh"
0040
0041
0042
0043 DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
0044 :G4UImessenger(),fDetector(Det),
0045 fmicroelectronicsDir(0),
0046 fDetDir(0),
0047 fMaterCmd(0),
0048 fSizeCmd(0)
0049 {
0050
0051 fmicroelectronicsDir = new G4UIdirectory("/microelectronics/");
0052 fmicroelectronicsDir->SetGuidance("commands specific to this example");
0053
0054 fDetDir = new G4UIdirectory("/microelectronics/det/");
0055 fDetDir->SetGuidance("detector construction commands");
0056
0057 fMaterCmd = new G4UIcmdWithAString("/microelectronics/det/setMat",this);
0058 fMaterCmd->SetGuidance("Select material of the box.");
0059 fMaterCmd->SetParameterName("choice",false);
0060 fMaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
0061 fMaterCmd->SetToBeBroadcasted(false);
0062
0063 fSizeCmd = new G4UIcmdWithADoubleAndUnit("/microelectronics/det/setSize",this);
0064 fSizeCmd->SetGuidance("Set size of the box");
0065 fSizeCmd->SetParameterName("Size",false);
0066 fSizeCmd->SetRange("Size>0.");
0067 fSizeCmd->SetUnitCategory("Length");
0068 fSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
0069 fSizeCmd->SetToBeBroadcasted(false);
0070 }
0071
0072
0073
0074 DetectorMessenger::~DetectorMessenger()
0075 {
0076 delete fMaterCmd;
0077 delete fSizeCmd;
0078 delete fDetDir;
0079 delete fmicroelectronicsDir;
0080 }
0081
0082
0083
0084 void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
0085 {
0086 if( command == fMaterCmd )
0087 { fDetector->SetMaterial(newValue);}
0088
0089 if( command == fSizeCmd )
0090 { fDetector->SetSize(fSizeCmd->GetNewDoubleValue(newValue));}
0091
0092 }
0093
0094