File indexing completed on 2025-02-23 09:22:29
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 #include "B2bDetectorMessenger.hh"
0031
0032 #include "B2bDetectorConstruction.hh"
0033
0034 #include "G4UIcmdWithADoubleAndUnit.hh"
0035 #include "G4UIcmdWithAString.hh"
0036 #include "G4UIdirectory.hh"
0037
0038
0039
0040 B2bDetectorMessenger::B2bDetectorMessenger(B2bDetectorConstruction* Det)
0041 : G4UImessenger(), fDetectorConstruction(Det)
0042 {
0043 fB2Directory = new G4UIdirectory("/B2/");
0044 fB2Directory->SetGuidance("UI commands specific to this example.");
0045
0046 fDetDirectory = new G4UIdirectory("/B2/det/");
0047 fDetDirectory->SetGuidance("Detector construction control");
0048
0049 fTargMatCmd = new G4UIcmdWithAString("/B2/det/setTargetMaterial", this);
0050 fTargMatCmd->SetGuidance("Select Material of the Target.");
0051 fTargMatCmd->SetParameterName("choice", false);
0052 fTargMatCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0053
0054 fChamMatCmd = new G4UIcmdWithAString("/B2/det/setChamberMaterial", this);
0055 fChamMatCmd->SetGuidance("Select Material of the Chamber.");
0056 fChamMatCmd->SetParameterName("choice", false);
0057 fChamMatCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0058
0059 fStepMaxCmd = new G4UIcmdWithADoubleAndUnit("/B2/det/stepMax", this);
0060 fStepMaxCmd->SetGuidance("Define a step max");
0061 fStepMaxCmd->SetParameterName("stepMax", false);
0062 fStepMaxCmd->SetUnitCategory("Length");
0063 fStepMaxCmd->AvailableForStates(G4State_Idle);
0064 }
0065
0066
0067
0068 B2bDetectorMessenger::~B2bDetectorMessenger()
0069 {
0070 delete fTargMatCmd;
0071 delete fChamMatCmd;
0072 delete fStepMaxCmd;
0073 delete fB2Directory;
0074 delete fDetDirectory;
0075 }
0076
0077
0078
0079 void B2bDetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0080 {
0081 if (command == fTargMatCmd) {
0082 fDetectorConstruction->SetTargetMaterial(newValue);
0083 }
0084
0085 if (command == fChamMatCmd) {
0086 fDetectorConstruction->SetChamberMaterial(newValue);
0087 }
0088
0089 if (command == fStepMaxCmd) {
0090 fDetectorConstruction->SetMaxStep(fStepMaxCmd->GetNewDoubleValue(newValue));
0091 }
0092 }
0093
0094