Warning, file /geant4/examples/advanced/hadrontherapy/src/LaserDrivenBeamLineMessenger.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 "LaserDrivenBeamLineMessenger.hh"
0030 #include "LaserDrivenBeamLine.hh"
0031 #include "G4UIdirectory.hh"
0032 #include "G4UIcmdWithADoubleAndUnit.hh"
0033 #include "G4UIcmdWithoutParameter.hh"
0034 #include "G4UIcmdWithAString.hh"
0035 #include "G4SystemOfUnits.hh"
0036
0037
0038 LaserDrivenBeamLineMessenger::LaserDrivenBeamLineMessenger(LaserDrivenBeamLine* laserDriven)
0039 :laserDrivenMessengerPointer(laserDriven)
0040 {
0041
0042 laserDrivenDir = new G4UIdirectory("/LaserDriven/");
0043 laserDrivenDir -> SetGuidance("The Laser Driven Beam Line module of Hadrontherapy");
0044
0045
0046 energySelectorDir = new G4UIdirectory("/LaserDriven/EnergySelector/");
0047 energySelectorDir -> SetGuidance("The Energy selector (ESS) module of Hadrontherapy");
0048
0049 FcollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/FirstCollimator/");
0050 FcollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS first collimator");
0051
0052 ScollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/SecondCollimator/");
0053 ScollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS second collimator");
0054
0055 slitDir = new G4UIdirectory("/LaserDriven/EnergySelector/Slit/");
0056 slitDir -> SetGuidance("Define geometrical characteristics of the ESS slit");
0057
0058
0059 quadrupoleDir = new G4UIdirectory("/LaserDriven/Quadrupoles/");
0060 quadrupoleDir -> SetGuidance("The Quadrupoles module of Hadrontherapy");
0061
0062 relativePosDir = new G4UIdirectory("/LaserDriven/Quadrupoles/xRelPosition/");
0063 relativePosDir -> SetGuidance("Define the x relative positions of the quadrupoles");
0064
0065
0066 DisableESSCmd = new G4UIcmdWithoutParameter("/LaserDriven/EnergySelector/Disable", this);
0067 DisableESSCmd -> SetGuidance("Disable the Energy Selector.");
0068 DisableESSCmd -> SetGuidance("This command MUST be applied before \"beamOn\" ");
0069 DisableESSCmd -> AvailableForStates(G4State_Idle);
0070
0071
0072
0073
0074 FcollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Radius", this);
0075 FcollimatorRadiusCmd -> SetGuidance("Set the Radius of the first collimator");
0076 FcollimatorRadiusCmd -> SetParameterName("Size",false);
0077 FcollimatorRadiusCmd -> SetDefaultUnit("mm");
0078 FcollimatorRadiusCmd -> SetUnitCandidates("mm cm m");
0079 FcollimatorRadiusCmd -> AvailableForStates(G4State_Idle);
0080
0081
0082 FcollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Thickness", this);
0083 FcollimatorThicknessCmd -> SetGuidance("Set the thickness of the first collimator");
0084 FcollimatorThicknessCmd -> SetParameterName("Size",false);
0085 FcollimatorThicknessCmd -> SetDefaultUnit("mm");
0086 FcollimatorThicknessCmd -> SetUnitCandidates("mm cm m");
0087 FcollimatorThicknessCmd -> AvailableForStates(G4State_Idle);
0088
0089
0090 FcollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/zPosizion", this);
0091 FcollimatorZpositionCmd -> SetGuidance("Set the Z position of the first collimator hole as respect the internal vacuum chamber center axis");
0092 FcollimatorZpositionCmd -> SetParameterName("Size",false);
0093 FcollimatorZpositionCmd -> SetDefaultUnit("mm");
0094 FcollimatorZpositionCmd -> SetUnitCandidates("mm cm m");
0095 FcollimatorZpositionCmd -> AvailableForStates(G4State_Idle);
0096
0097
0098
0099
0100 ScollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Radius", this);
0101 ScollimatorRadiusCmd -> SetGuidance("Set the Radius of the second collimator");
0102 ScollimatorRadiusCmd -> SetParameterName("Size",false);
0103 ScollimatorRadiusCmd -> SetDefaultUnit("mm");
0104 ScollimatorRadiusCmd -> SetUnitCandidates("mm cm m");
0105 ScollimatorRadiusCmd -> AvailableForStates(G4State_Idle);
0106
0107
0108 ScollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Thickness", this);
0109 ScollimatorThicknessCmd -> SetGuidance("Set the thickness of the second collimator");
0110 ScollimatorThicknessCmd -> SetParameterName("Size",false);
0111 ScollimatorThicknessCmd -> SetDefaultUnit("mm");
0112 ScollimatorThicknessCmd -> SetUnitCandidates("mm cm m");
0113 ScollimatorThicknessCmd -> AvailableForStates(G4State_Idle);
0114
0115
0116 ScollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/zPosizion", this);
0117 ScollimatorZpositionCmd -> SetGuidance("Set the Z position of the second collimator hole as respect the internal vacuum chamber center axis");
0118 ScollimatorZpositionCmd -> SetParameterName("Size",false);
0119 ScollimatorZpositionCmd -> SetDefaultUnit("mm");
0120 ScollimatorZpositionCmd -> SetUnitCandidates("mm cm m");
0121 ScollimatorZpositionCmd -> AvailableForStates(G4State_Idle);
0122
0123
0124
0125
0126 SlitThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/thickness",this);
0127 SlitThicknessCmd -> SetGuidance("Set the X dimension of the Slit, the maximum value is 10 mm");
0128 SlitThicknessCmd -> SetParameterName("Size",false);
0129 SlitThicknessCmd -> SetDefaultUnit("mm");
0130 SlitThicknessCmd -> SetUnitCandidates("mm cm m");
0131 SlitThicknessCmd -> AvailableForStates(G4State_Idle);
0132
0133
0134 holeSlitDimensionYCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionY",this);
0135 holeSlitDimensionYCmd -> SetGuidance("Set the Y dimension of the Slit Hole");
0136 holeSlitDimensionYCmd -> SetParameterName("Size",false);
0137 holeSlitDimensionYCmd -> SetDefaultUnit("mm");
0138 holeSlitDimensionYCmd -> SetUnitCandidates("mm cm m");
0139 holeSlitDimensionYCmd -> AvailableForStates(G4State_Idle);
0140
0141
0142 holeSlitDimensionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionZ",this);
0143 holeSlitDimensionZCmd -> SetGuidance("Set the Z dimension of the external part of magnet 4");
0144 holeSlitDimensionZCmd -> SetParameterName("Size",false);
0145 holeSlitDimensionZCmd -> SetDefaultUnit("mm");
0146 holeSlitDimensionZCmd -> SetUnitCandidates("mm cm m");
0147 holeSlitDimensionZCmd -> AvailableForStates(G4State_Idle);
0148
0149
0150 slitHolePositionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HolePositionZ", this);
0151 slitHolePositionZCmd -> SetGuidance("Set the Slit hole position in the Z direction as respect the Slit body center");
0152 slitHolePositionZCmd -> SetParameterName("Size",false);
0153 slitHolePositionZCmd -> SetDefaultUnit("mm");
0154 slitHolePositionZCmd -> SetUnitCandidates("mm cm m");
0155 slitHolePositionZCmd -> AvailableForStates(G4State_Idle);
0156
0157
0158 DisableQuadsCmd = new G4UIcmdWithoutParameter("/LaserDriven/Quadrupoles/DisableQuads", this);
0159 DisableQuadsCmd -> SetGuidance("Disable the Quadrupole system.");
0160 DisableQuadsCmd -> SetGuidance("This command MUST be applied before \"beamOn\" ");
0161 DisableQuadsCmd -> AvailableForStates(G4State_Idle);
0162 }
0163
0164
0165 LaserDrivenBeamLineMessenger::~LaserDrivenBeamLineMessenger()
0166 {
0167
0168 delete laserDrivenDir;
0169 delete energySelectorDir;
0170 delete FcollimatorDir;
0171 delete ScollimatorDir;
0172 delete slitDir;
0173 delete quadrupoleDir;
0174 delete relativePosDir;
0175 delete DisableESSCmd;
0176 delete FcollimatorRadiusCmd;
0177 delete FcollimatorThicknessCmd;
0178 delete FcollimatorZpositionCmd;
0179 delete ScollimatorRadiusCmd;
0180 delete ScollimatorThicknessCmd;
0181 delete ScollimatorZpositionCmd;
0182
0183 delete SlitThicknessCmd;
0184 delete holeSlitDimensionYCmd;
0185 delete holeSlitDimensionZCmd;
0186 delete slitHolePositionZCmd;
0187
0188 delete DisableQuadsCmd;
0189
0190 }
0191
0192 void LaserDrivenBeamLineMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
0193 {
0194 if (command == DisableESSCmd)
0195 {
0196 laserDrivenMessengerPointer -> RemoveESS();
0197 }
0198 if( command == FcollimatorRadiusCmd )
0199 {
0200 laserDrivenMessengerPointer -> SetFirstCollimatorRadius
0201 (FcollimatorRadiusCmd -> GetNewDoubleValue(newValue));
0202 }
0203 else if( command == FcollimatorThicknessCmd )
0204 {
0205 laserDrivenMessengerPointer -> SetFirstCollimatorThickness
0206 (FcollimatorThicknessCmd -> GetNewDoubleValue(newValue));
0207 }
0208 else if( command == FcollimatorZpositionCmd )
0209 {
0210 laserDrivenMessengerPointer -> SetFirstCollimatorPositionZ
0211 (FcollimatorZpositionCmd -> GetNewDoubleValue(newValue));
0212 }
0213 else if( command == ScollimatorRadiusCmd )
0214 {
0215 laserDrivenMessengerPointer -> SetSecondCollimatorRadius
0216 (ScollimatorRadiusCmd -> GetNewDoubleValue(newValue));
0217 }
0218 else if( command == ScollimatorThicknessCmd )
0219 {
0220 laserDrivenMessengerPointer -> SetSecondCollimatorThickness
0221 (ScollimatorThicknessCmd -> GetNewDoubleValue(newValue));
0222 }
0223 else if( command == ScollimatorZpositionCmd )
0224 {
0225 laserDrivenMessengerPointer -> SetSecondCollimatorPositionZ
0226 (ScollimatorZpositionCmd -> GetNewDoubleValue(newValue));
0227 }
0228 else if( command == SlitThicknessCmd )
0229 {
0230 laserDrivenMessengerPointer -> SetThicknessSlit
0231 (SlitThicknessCmd -> GetNewDoubleValue(newValue));
0232 }
0233 else if( command == holeSlitDimensionYCmd )
0234 {
0235 laserDrivenMessengerPointer -> SetSlitHoleDimensionY
0236 (holeSlitDimensionYCmd -> GetNewDoubleValue(newValue));
0237 }
0238 else if( command == holeSlitDimensionZCmd )
0239 {
0240 laserDrivenMessengerPointer -> SetSlitHoleDimensionZ
0241 (holeSlitDimensionZCmd -> GetNewDoubleValue(newValue));
0242 }
0243 else if( command == slitHolePositionZCmd )
0244 {
0245 laserDrivenMessengerPointer -> SetSlitHolePositionZ
0246 (slitHolePositionZCmd -> GetNewDoubleValue(newValue));
0247 }
0248 else if (command==DisableQuadsCmd)
0249 {
0250 laserDrivenMessengerPointer -> RemoveQuads();
0251 }
0252
0253 }
0254