File indexing completed on 2025-02-23 09:20:54
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
0037 #include "G4UIcmdWithADoubleAndUnit.hh"
0038 #include "G4UIcmdWithAString.hh"
0039 #include "G4UIcmdWithoutParameter.hh"
0040 #include "G4UIdirectory.hh"
0041
0042
0043
0044 DetectorMessenger::DetectorMessenger(DetectorConstruction* Det) : G4UImessenger(), fDetector(Det)
0045 {
0046 fTestemDir = new G4UIdirectory("/testem/");
0047 fTestemDir->SetGuidance(" detector control.");
0048
0049 fDetDir = new G4UIdirectory("/testem/det/");
0050 fDetDir->SetGuidance("detector construction commands");
0051
0052 fMaterCmd = new G4UIcmdWithAString("/testem/det/setMat", this);
0053 fMaterCmd->SetGuidance("Select material of the box.");
0054 fMaterCmd->SetParameterName("choice", false);
0055 fMaterCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0056
0057 fSizeCmd = new G4UIcmdWithADoubleAndUnit("/testem/det/setSize", this);
0058 fSizeCmd->SetGuidance("Set size of the box");
0059 fSizeCmd->SetParameterName("Size", false);
0060 fSizeCmd->SetRange("Size>0.");
0061 fSizeCmd->SetUnitCategory("Length");
0062 fSizeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0063
0064 fGeomFileCmd = new G4UIcmdWithAString("/testem/det/GeomFile", this);
0065 fGeomFileCmd->SetGuidance("Give sgml input file name like Box.gdml");
0066 fGeomFileCmd->SetParameterName("choice", false);
0067 fGeomFileCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0068
0069 fMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/testem/tracking/stepMax", this);
0070 fMaxStepCmd->SetGuidance("Set max allowed step size");
0071 fMaxStepCmd->SetParameterName("Size", false);
0072 fMaxStepCmd->SetRange("Size>0.");
0073 fMaxStepCmd->SetUnitCategory("Length");
0074 fMaxStepCmd->AvailableForStates(G4State_Idle);
0075
0076 fTrackdir = new G4UIdirectory("/testem/tracking/");
0077 fTrackdir->SetGuidance("step length");
0078 fMaxStepLength = new G4UIcmdWithADoubleAndUnit("/testem/tracking/setMaxStepLength", this);
0079 fMaxStepLength->SetGuidance("Set the maximum length of tracking step");
0080 fMaxStepLength->SetGuidance("when integrating magnetic field line.");
0081 fMaxStepLength->SetParameterName("Size", false);
0082 fMaxStepLength->SetRange("Size>0.");
0083 fMaxStepLength->SetUnitCategory("Length");
0084 fMaxStepLength->AvailableForStates(G4State_Idle);
0085 }
0086
0087
0088
0089 void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0090 {
0091 if (command == fMaterCmd) {
0092 fDetector->SetMaterial(newValue);
0093 }
0094
0095 if (command == fSizeCmd) {
0096 fDetector->SetSize(fSizeCmd->GetNewDoubleValue(newValue));
0097 }
0098
0099 if (command == fMaxStepCmd) {
0100 fDetector->SetMaxStepSize(fMaxStepCmd->GetNewDoubleValue(newValue));
0101 }
0102
0103 if (command == fMaxStepLength) {
0104 fDetector->SetMaxStepLength(fMaxStepLength->GetNewDoubleValue(newValue));
0105 }
0106
0107 if (command == fGeomFileCmd) {
0108 fDetector->SetGeomFileName(newValue);
0109 }
0110 }
0111
0112