File indexing completed on 2026-04-03 07:52:21
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 #include "F01PrimaryGeneratorMessenger.hh"
0030
0031 #include "F01PrimaryGeneratorAction.hh"
0032
0033 #include "G4SystemOfUnits.hh"
0034 #include "G4UIcmdWithADoubleAndUnit.hh"
0035 #include "G4UIcmdWithAString.hh"
0036
0037
0038
0039 F01PrimaryGeneratorMessenger::F01PrimaryGeneratorMessenger(F01PrimaryGeneratorAction* action)
0040 : fAction(action)
0041 {
0042 fRndmCmd = new G4UIcmdWithAString("/gun/random", this);
0043 fRndmCmd->SetGuidance("Shoot randomly the incident particle.");
0044 fRndmCmd->SetGuidance(" Choice : on, off(default)");
0045 fRndmCmd->SetParameterName("choice", true);
0046 fRndmCmd->SetDefaultValue("off");
0047 fRndmCmd->SetCandidates("on off");
0048 fRndmCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0049
0050 fSetXVertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex", this);
0051 fSetXVertexCmd->SetGuidance(" Set x coord. of the primary vertex.");
0052 fSetXVertexCmd->SetParameterName("xv", true);
0053 fSetXVertexCmd->SetDefaultValue(0.0 * mm);
0054 fSetXVertexCmd->SetDefaultUnit("mm");
0055
0056 fSetYVertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex", this);
0057 fSetYVertexCmd->SetGuidance(" Set y coord. of the primary vertex.");
0058 fSetYVertexCmd->SetParameterName("yv", true);
0059 fSetYVertexCmd->SetDefaultValue(0.0 * mm);
0060 fSetYVertexCmd->SetDefaultUnit("mm");
0061
0062 fSetZVertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex", this);
0063 fSetZVertexCmd->SetGuidance(" Set z coord. of the primary vertex.");
0064 fSetZVertexCmd->SetParameterName("zv", true);
0065 fSetZVertexCmd->SetDefaultValue(0.0 * mm);
0066 fSetZVertexCmd->SetDefaultUnit("mm");
0067 }
0068
0069
0070
0071 F01PrimaryGeneratorMessenger::~F01PrimaryGeneratorMessenger()
0072 {
0073 delete fRndmCmd;
0074 delete fSetXVertexCmd;
0075 delete fSetYVertexCmd;
0076 delete fSetZVertexCmd;
0077 }
0078
0079
0080
0081 void F01PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0082 {
0083 if (command == fRndmCmd) {
0084 fAction->SetRndmFlag(newValue);
0085 }
0086 if (command == fSetXVertexCmd) {
0087 fAction->SetXVertex(fSetXVertexCmd->GetNewDoubleValue(newValue));
0088 }
0089 if (command == fSetYVertexCmd) {
0090 fAction->SetYVertex(fSetYVertexCmd->GetNewDoubleValue(newValue));
0091 }
0092 if (command == fSetZVertexCmd) {
0093 fAction->SetZVertex(fSetZVertexCmd->GetNewDoubleValue(newValue));
0094 }
0095 }
0096
0097