File indexing completed on 2026-05-14 07:48:10
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 "PrimaryGeneratorMessenger.hh"
0030
0031 #include "PrimaryGeneratorAction.hh"
0032
0033 #include "G4UIcmdWithADoubleAndUnit.hh"
0034 #include "G4UIcmdWithoutParameter.hh"
0035 #include "G4UIdirectory.hh"
0036
0037
0038
0039 PrimaryGeneratorMessenger::PrimaryGeneratorMessenger(PrimaryGeneratorAction* gun) : fAction(gun)
0040 {
0041 fGunDir = new G4UIdirectory("/testhadr/gun/");
0042 fGunDir->SetGuidance("gun control");
0043
0044 fDefaultCmd = new G4UIcmdWithoutParameter("/testhadr/gun/setDefault", this);
0045 fDefaultCmd->SetGuidance("set/reset kinematic defined in PrimaryGenerator");
0046 fDefaultCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0047
0048 fRndmCmd = new G4UIcmdWithADoubleAndUnit("/testhadr/gun/beamSize", this);
0049 fRndmCmd->SetGuidance("random lateral extension on the beam");
0050 fRndmCmd->SetParameterName("rBeam", false);
0051 fRndmCmd->SetRange("rBeam>=0.");
0052 fRndmCmd->SetUnitCategory("Length");
0053 fRndmCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0054
0055 fTimeCmd = new G4UIcmdWithADoubleAndUnit("/testhadr/gun/beamTime", this);
0056 fTimeCmd->SetGuidance("set time of exposure");
0057 fTimeCmd->SetParameterName("tBeam", false);
0058 fTimeCmd->SetRange("tBeam>=0.");
0059 fTimeCmd->SetUnitCategory("Time");
0060 fTimeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
0061 }
0062
0063
0064
0065 PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger()
0066 {
0067 delete fDefaultCmd;
0068 delete fRndmCmd;
0069 delete fTimeCmd;
0070 delete fGunDir;
0071 }
0072
0073
0074
0075 void PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
0076 {
0077 if (command == fDefaultCmd) {
0078 fAction->SetDefaultKinematic();
0079 }
0080
0081 if (command == fRndmCmd) {
0082 fAction->SetRndmBeam(fRndmCmd->GetNewDoubleValue(newValue));
0083 }
0084
0085 if (command == fTimeCmd) {
0086 fAction->SetTimeExposure(fTimeCmd->GetNewDoubleValue(newValue));
0087 }
0088 }
0089
0090