File indexing completed on 2026-03-31 07:50:07
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 "F04PrimaryGeneratorMessenger.hh"
0030
0031 #include "F04PrimaryGeneratorAction.hh"
0032
0033 #include "G4SystemOfUnits.hh"
0034 #include "G4UIcmdWithADoubleAndUnit.hh"
0035 #include "G4UIcmdWithAString.hh"
0036
0037
0038
0039 F04PrimaryGeneratorMessenger::F04PrimaryGeneratorMessenger(F04PrimaryGeneratorAction* gun)
0040 : fAction(gun)
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 F04PrimaryGeneratorMessenger::~F04PrimaryGeneratorMessenger()
0072 {
0073 delete fRndmCmd;
0074 delete fSetXvertexCmd;
0075 delete fSetYvertexCmd;
0076 delete fSetZvertexCmd;
0077 }
0078
0079
0080
0081 void F04PrimaryGeneratorMessenger::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 }