File indexing completed on 2025-02-23 09:20:26
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 "STCyclotronPrimaryGeneratorActionMessenger.hh"
0030 #include "STCyclotronPrimaryGeneratorAction.hh"
0031 #include "G4UIdirectory.hh"
0032 #include "G4UIcmdWithADouble.hh"
0033 #include "G4SystemOfUnits.hh"
0034 #include "G4UnitsTable.hh"
0035
0036 STCyclotronPrimaryGeneratorActionMessenger::STCyclotronPrimaryGeneratorActionMessenger(STCyclotronPrimaryGeneratorAction* primary)
0037 :fG4Primary(primary)
0038 {
0039
0040 fBeamCurrent = new G4UIdirectory("/setBeamCurrent/");
0041 fBeamCurrent -> SetGuidance("Change the beam current of the cyclotron");
0042
0043 fChangeBeamCurrentCmd = new G4UIcmdWithADouble("/setBeamCurrent/beamCurrent", this);
0044 fChangeBeamCurrentCmd -> SetGuidance("Change the value of the current (in ampere)."
0045 "\nThe default value is 30E-6 ampere.");
0046 fChangeBeamCurrentCmd -> SetParameterName("BeamCurrent", true);
0047 fChangeBeamCurrentCmd -> SetRange("BeamCurrent > 0.");
0048 fChangeBeamCurrentCmd -> SetDefaultValue(30.E-6);
0049 fChangeBeamCurrentCmd -> AvailableForStates(G4State_Idle);
0050
0051 }
0052
0053 STCyclotronPrimaryGeneratorActionMessenger::~STCyclotronPrimaryGeneratorActionMessenger()
0054 {
0055 delete fBeamCurrent;
0056 delete fChangeBeamCurrentCmd;
0057
0058 }
0059
0060 void STCyclotronPrimaryGeneratorActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
0061 {
0062
0063 if( command == fChangeBeamCurrentCmd)
0064 {
0065 G4double updatedValue = fChangeBeamCurrentCmd -> GetNewDoubleValue(newValue);
0066 fG4Primary -> SetBeamCurrent(updatedValue);
0067 }
0068
0069 }