Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // Hadrontherapy advanced example for Geant4 26 // Hadrontherapy advanced example for Geant4 27 // See more at: https://twiki.cern.ch/twiki/bi 27 // See more at: https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesHadrontherapy 28 28 29 #include "LaserDrivenBeamLineMessenger.hh" 29 #include "LaserDrivenBeamLineMessenger.hh" 30 #include "LaserDrivenBeamLine.hh" 30 #include "LaserDrivenBeamLine.hh" 31 #include "G4UIdirectory.hh" 31 #include "G4UIdirectory.hh" 32 #include "G4UIcmdWithADoubleAndUnit.hh" 32 #include "G4UIcmdWithADoubleAndUnit.hh" 33 #include "G4UIcmdWithoutParameter.hh" 33 #include "G4UIcmdWithoutParameter.hh" 34 #include "G4UIcmdWithAString.hh" 34 #include "G4UIcmdWithAString.hh" 35 #include "G4SystemOfUnits.hh" 35 #include "G4SystemOfUnits.hh" 36 36 37 ////////////////////////////////////////////// 37 ///////////////////////////////////////////////////////////////////////////// 38 LaserDrivenBeamLineMessenger::LaserDrivenBeamL 38 LaserDrivenBeamLineMessenger::LaserDrivenBeamLineMessenger(LaserDrivenBeamLine* laserDriven) 39 :laserDrivenMessengerPointer(laserDriven) 39 :laserDrivenMessengerPointer(laserDriven) 40 { 40 { 41 // Messenger directories for the Energy Select 41 // Messenger directories for the Energy Selector module 42 laserDrivenDir = new G4UIdirectory("/LaserDr 42 laserDrivenDir = new G4UIdirectory("/LaserDriven/"); 43 laserDrivenDir -> SetGuidance("The Laser Dri 43 laserDrivenDir -> SetGuidance("The Laser Driven Beam Line module of Hadrontherapy"); 44 44 45 // Messenger directories for the Energy Sele 45 // Messenger directories for the Energy Selector module 46 energySelectorDir = new G4UIdirectory("/Lase 46 energySelectorDir = new G4UIdirectory("/LaserDriven/EnergySelector/"); 47 energySelectorDir -> SetGuidance("The Energy 47 energySelectorDir -> SetGuidance("The Energy selector (ESS) module of Hadrontherapy"); 48 48 49 FcollimatorDir = new G4UIdirectory("/LaserD 49 FcollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/FirstCollimator/"); 50 FcollimatorDir -> SetGuidance("Define geomet 50 FcollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS first collimator"); 51 51 52 ScollimatorDir = new G4UIdirectory("/LaserD 52 ScollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/SecondCollimator/"); 53 ScollimatorDir -> SetGuidance("Define geomet 53 ScollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS second collimator"); 54 54 55 slitDir = new G4UIdirectory("/LaserDriven/E 55 slitDir = new G4UIdirectory("/LaserDriven/EnergySelector/Slit/"); 56 slitDir -> SetGuidance("Define geometrical c 56 slitDir -> SetGuidance("Define geometrical characteristics of the ESS slit"); 57 57 58 // Messenger directories for the Quadrupole m 58 // Messenger directories for the Quadrupole module 59 quadrupoleDir = new G4UIdirectory("/LaserDri 59 quadrupoleDir = new G4UIdirectory("/LaserDriven/Quadrupoles/"); 60 quadrupoleDir -> SetGuidance("The Quadrupole 60 quadrupoleDir -> SetGuidance("The Quadrupoles module of Hadrontherapy"); 61 61 62 relativePosDir = new G4UIdirectory("/LaserDr 62 relativePosDir = new G4UIdirectory("/LaserDriven/Quadrupoles/xRelPosition/"); 63 relativePosDir -> SetGuidance("Define the x 63 relativePosDir -> SetGuidance("Define the x relative positions of the quadrupoles"); 64 64 65 // ESS DISABLE 65 // ESS DISABLE 66 DisableESSCmd = new G4UIcmdWithoutParameter( 66 DisableESSCmd = new G4UIcmdWithoutParameter("/LaserDriven/EnergySelector/Disable", this); 67 DisableESSCmd -> SetGuidance("Disable the En 67 DisableESSCmd -> SetGuidance("Disable the Energy Selector."); 68 DisableESSCmd -> SetGuidance("This command M 68 DisableESSCmd -> SetGuidance("This command MUST be applied before \"beamOn\" "); 69 DisableESSCmd -> AvailableForStates(G4State_ 69 DisableESSCmd -> AvailableForStates(G4State_Idle); 70 70 71 // THE FIRST ESS COLLIMATOR 71 // THE FIRST ESS COLLIMATOR 72 // 72 // 73 // Diameter of the first collimator 73 // Diameter of the first collimator 74 FcollimatorRadiusCmd = new G4UIcmdWithADoubl 74 FcollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Radius", this); 75 FcollimatorRadiusCmd -> SetGuidance("Set the 75 FcollimatorRadiusCmd -> SetGuidance("Set the Radius of the first collimator"); 76 FcollimatorRadiusCmd -> SetParameterName("Si 76 FcollimatorRadiusCmd -> SetParameterName("Size",false); 77 FcollimatorRadiusCmd -> SetDefaultUnit("mm") 77 FcollimatorRadiusCmd -> SetDefaultUnit("mm"); 78 FcollimatorRadiusCmd -> SetUnitCandidates("m 78 FcollimatorRadiusCmd -> SetUnitCandidates("mm cm m"); 79 FcollimatorRadiusCmd -> AvailableForStates(G 79 FcollimatorRadiusCmd -> AvailableForStates(G4State_Idle); 80 80 81 // Thickness of the first collimator 81 // Thickness of the first collimator 82 FcollimatorThicknessCmd = new G4UIcmdWithADo 82 FcollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Thickness", this); 83 FcollimatorThicknessCmd -> SetGuidance("Set 83 FcollimatorThicknessCmd -> SetGuidance("Set the thickness of the first collimator"); 84 FcollimatorThicknessCmd -> SetParameterName( 84 FcollimatorThicknessCmd -> SetParameterName("Size",false); 85 FcollimatorThicknessCmd -> SetDefaultUnit("m 85 FcollimatorThicknessCmd -> SetDefaultUnit("mm"); 86 FcollimatorThicknessCmd -> SetUnitCandidates 86 FcollimatorThicknessCmd -> SetUnitCandidates("mm cm m"); 87 FcollimatorThicknessCmd -> AvailableForState 87 FcollimatorThicknessCmd -> AvailableForStates(G4State_Idle); 88 88 89 // Z Position of the first collimator hole 89 // Z Position of the first collimator hole 90 FcollimatorZpositionCmd = new G4UIcmdWithADo 90 FcollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/zPosizion", this); 91 FcollimatorZpositionCmd -> SetGuidance("Set 91 FcollimatorZpositionCmd -> SetGuidance("Set the Z position of the first collimator hole as respect the internal vacuum chamber center axis"); 92 FcollimatorZpositionCmd -> SetParameterName( 92 FcollimatorZpositionCmd -> SetParameterName("Size",false); 93 FcollimatorZpositionCmd -> SetDefaultUnit("m 93 FcollimatorZpositionCmd -> SetDefaultUnit("mm"); 94 FcollimatorZpositionCmd -> SetUnitCandidates 94 FcollimatorZpositionCmd -> SetUnitCandidates("mm cm m"); 95 FcollimatorZpositionCmd -> AvailableForState 95 FcollimatorZpositionCmd -> AvailableForStates(G4State_Idle); 96 96 97 // THE SECOND ESS COLLIMATOR 97 // THE SECOND ESS COLLIMATOR 98 // 98 // 99 // Diameter of the second collimator 99 // Diameter of the second collimator 100 ScollimatorRadiusCmd = new G4UIcmdWithADoubl 100 ScollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Radius", this); 101 ScollimatorRadiusCmd -> SetGuidance("Set the 101 ScollimatorRadiusCmd -> SetGuidance("Set the Radius of the second collimator"); 102 ScollimatorRadiusCmd -> SetParameterName("Si 102 ScollimatorRadiusCmd -> SetParameterName("Size",false); 103 ScollimatorRadiusCmd -> SetDefaultUnit("mm") 103 ScollimatorRadiusCmd -> SetDefaultUnit("mm"); 104 ScollimatorRadiusCmd -> SetUnitCandidates("m 104 ScollimatorRadiusCmd -> SetUnitCandidates("mm cm m"); 105 ScollimatorRadiusCmd -> AvailableForStates(G 105 ScollimatorRadiusCmd -> AvailableForStates(G4State_Idle); 106 106 107 // Thickness of the second collimator 107 // Thickness of the second collimator 108 ScollimatorThicknessCmd = new G4UIcmdWithADo 108 ScollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Thickness", this); 109 ScollimatorThicknessCmd -> SetGuidance("Set 109 ScollimatorThicknessCmd -> SetGuidance("Set the thickness of the second collimator"); 110 ScollimatorThicknessCmd -> SetParameterName( 110 ScollimatorThicknessCmd -> SetParameterName("Size",false); 111 ScollimatorThicknessCmd -> SetDefaultUnit("m 111 ScollimatorThicknessCmd -> SetDefaultUnit("mm"); 112 ScollimatorThicknessCmd -> SetUnitCandidates 112 ScollimatorThicknessCmd -> SetUnitCandidates("mm cm m"); 113 ScollimatorThicknessCmd -> AvailableForState 113 ScollimatorThicknessCmd -> AvailableForStates(G4State_Idle); 114 114 115 // Z Position of the second collimator hole 115 // Z Position of the second collimator hole 116 ScollimatorZpositionCmd = new G4UIcmdWithADo 116 ScollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/zPosizion", this); 117 ScollimatorZpositionCmd -> SetGuidance("Set 117 ScollimatorZpositionCmd -> SetGuidance("Set the Z position of the second collimator hole as respect the internal vacuum chamber center axis"); 118 ScollimatorZpositionCmd -> SetParameterName( 118 ScollimatorZpositionCmd -> SetParameterName("Size",false); 119 ScollimatorZpositionCmd -> SetDefaultUnit("m 119 ScollimatorZpositionCmd -> SetDefaultUnit("mm"); 120 ScollimatorZpositionCmd -> SetUnitCandidates 120 ScollimatorZpositionCmd -> SetUnitCandidates("mm cm m"); 121 ScollimatorZpositionCmd -> AvailableForState 121 ScollimatorZpositionCmd -> AvailableForStates(G4State_Idle); 122 122 123 // THE SLIT 123 // THE SLIT 124 // 124 // 125 // Thickness Slit 125 // Thickness Slit 126 SlitThicknessCmd = new G4UIcmdWithADoubleAnd 126 SlitThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/thickness",this); 127 SlitThicknessCmd -> SetGuidance("Set the X d 127 SlitThicknessCmd -> SetGuidance("Set the X dimension of the Slit, the maximum value is 10 mm"); 128 SlitThicknessCmd -> SetParameterName("Size", 128 SlitThicknessCmd -> SetParameterName("Size",false); 129 SlitThicknessCmd -> SetDefaultUnit("mm"); 129 SlitThicknessCmd -> SetDefaultUnit("mm"); 130 SlitThicknessCmd -> SetUnitCandidates("mm cm 130 SlitThicknessCmd -> SetUnitCandidates("mm cm m"); 131 SlitThicknessCmd -> AvailableForStates(G4Sta 131 SlitThicknessCmd -> AvailableForStates(G4State_Idle); 132 132 133 //Hole dimension of the Slit (in Y direction 133 //Hole dimension of the Slit (in Y direction) 134 holeSlitDimensionYCmd = new G4UIcmdWithADoub 134 holeSlitDimensionYCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionY",this); 135 holeSlitDimensionYCmd -> SetGuidance("Set th 135 holeSlitDimensionYCmd -> SetGuidance("Set the Y dimension of the Slit Hole"); 136 holeSlitDimensionYCmd -> SetParameterName("S 136 holeSlitDimensionYCmd -> SetParameterName("Size",false); 137 holeSlitDimensionYCmd -> SetDefaultUnit("mm" 137 holeSlitDimensionYCmd -> SetDefaultUnit("mm"); 138 holeSlitDimensionYCmd -> SetUnitCandidates(" 138 holeSlitDimensionYCmd -> SetUnitCandidates("mm cm m"); 139 holeSlitDimensionYCmd -> AvailableForStates( 139 holeSlitDimensionYCmd -> AvailableForStates(G4State_Idle); 140 140 141 // Hole dimension of the Slit (in Z directio 141 // Hole dimension of the Slit (in Z direction) 142 holeSlitDimensionZCmd = new G4UIcmdWithADoub 142 holeSlitDimensionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionZ",this); 143 holeSlitDimensionZCmd -> SetGuidance("Set th 143 holeSlitDimensionZCmd -> SetGuidance("Set the Z dimension of the external part of magnet 4"); 144 holeSlitDimensionZCmd -> SetParameterName("S 144 holeSlitDimensionZCmd -> SetParameterName("Size",false); 145 holeSlitDimensionZCmd -> SetDefaultUnit("mm" 145 holeSlitDimensionZCmd -> SetDefaultUnit("mm"); 146 holeSlitDimensionZCmd -> SetUnitCandidates(" 146 holeSlitDimensionZCmd -> SetUnitCandidates("mm cm m"); 147 holeSlitDimensionZCmd -> AvailableForStates( 147 holeSlitDimensionZCmd -> AvailableForStates(G4State_Idle); 148 148 149 // Hole position of the Slit (in Z direction 149 // Hole position of the Slit (in Z direction as respect the Slit body) 150 slitHolePositionZCmd = new G4UIcmdWithADoubl 150 slitHolePositionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HolePositionZ", this); 151 slitHolePositionZCmd -> SetGuidance("Set the 151 slitHolePositionZCmd -> SetGuidance("Set the Slit hole position in the Z direction as respect the Slit body center"); 152 slitHolePositionZCmd -> SetParameterName("Si 152 slitHolePositionZCmd -> SetParameterName("Size",false); 153 slitHolePositionZCmd -> SetDefaultUnit("mm") 153 slitHolePositionZCmd -> SetDefaultUnit("mm"); 154 slitHolePositionZCmd -> SetUnitCandidates("m 154 slitHolePositionZCmd -> SetUnitCandidates("mm cm m"); 155 slitHolePositionZCmd -> AvailableForStates(G 155 slitHolePositionZCmd -> AvailableForStates(G4State_Idle); 156 156 157 // Quadrupole system DISABLE 157 // Quadrupole system DISABLE 158 DisableQuadsCmd = new G4UIcmdWithoutParamet 158 DisableQuadsCmd = new G4UIcmdWithoutParameter("/LaserDriven/Quadrupoles/DisableQuads", this); 159 DisableQuadsCmd -> SetGuidance("Disable the 159 DisableQuadsCmd -> SetGuidance("Disable the Quadrupole system."); 160 DisableQuadsCmd -> SetGuidance("This comman 160 DisableQuadsCmd -> SetGuidance("This command MUST be applied before \"beamOn\" "); 161 DisableQuadsCmd -> AvailableForStates(G4Sta 161 DisableQuadsCmd -> AvailableForStates(G4State_Idle); 162 } 162 } 163 163 164 ////////////////////////////////////////////// 164 ///////////////////////////////////////////////////////////////////////////// 165 LaserDrivenBeamLineMessenger::~LaserDrivenBeam 165 LaserDrivenBeamLineMessenger::~LaserDrivenBeamLineMessenger() 166 { 166 { 167 167 168 delete laserDrivenDir; 168 delete laserDrivenDir; 169 delete energySelectorDir; 169 delete energySelectorDir; 170 delete FcollimatorDir; 170 delete FcollimatorDir; 171 delete ScollimatorDir; 171 delete ScollimatorDir; 172 delete slitDir; 172 delete slitDir; 173 delete quadrupoleDir; 173 delete quadrupoleDir; 174 delete relativePosDir; 174 delete relativePosDir; 175 delete DisableESSCmd; 175 delete DisableESSCmd; 176 delete FcollimatorRadiusCmd; 176 delete FcollimatorRadiusCmd; 177 delete FcollimatorThicknessCmd; 177 delete FcollimatorThicknessCmd; 178 delete FcollimatorZpositionCmd; 178 delete FcollimatorZpositionCmd; 179 delete ScollimatorRadiusCmd; 179 delete ScollimatorRadiusCmd; 180 delete ScollimatorThicknessCmd; 180 delete ScollimatorThicknessCmd; 181 delete ScollimatorZpositionCmd; 181 delete ScollimatorZpositionCmd; 182 182 183 delete SlitThicknessCmd; 183 delete SlitThicknessCmd; 184 delete holeSlitDimensionYCmd; 184 delete holeSlitDimensionYCmd; 185 delete holeSlitDimensionZCmd; 185 delete holeSlitDimensionZCmd; 186 delete slitHolePositionZCmd; 186 delete slitHolePositionZCmd; 187 187 188 delete DisableQuadsCmd; 188 delete DisableQuadsCmd; 189 189 190 } 190 } 191 ////////////////////////////////////////////// 191 ///////////////////////////////////////////////////////////////////////////// 192 void LaserDrivenBeamLineMessenger::SetNewValue 192 void LaserDrivenBeamLineMessenger::SetNewValue(G4UIcommand* command,G4String newValue) 193 { 193 { 194 if (command == DisableESSCmd) 194 if (command == DisableESSCmd) 195 { 195 { 196 laserDrivenMessengerPointer -> RemoveESS 196 laserDrivenMessengerPointer -> RemoveESS(); 197 } 197 } 198 if( command == FcollimatorRadiusCmd ) 198 if( command == FcollimatorRadiusCmd ) 199 { 199 { 200 laserDrivenMessengerPointer -> SetFirstC 200 laserDrivenMessengerPointer -> SetFirstCollimatorRadius 201 (FcollimatorRadiusCmd -> GetNewDoubleValue(n 201 (FcollimatorRadiusCmd -> GetNewDoubleValue(newValue)); 202 } 202 } 203 else if( command == FcollimatorThicknessCmd 203 else if( command == FcollimatorThicknessCmd ) 204 { 204 { 205 laserDrivenMessengerPointer -> SetFirstC 205 laserDrivenMessengerPointer -> SetFirstCollimatorThickness 206 (FcollimatorThicknessCmd -> GetNewDoubleValu 206 (FcollimatorThicknessCmd -> GetNewDoubleValue(newValue)); 207 } 207 } 208 else if( command == FcollimatorZpositionCmd 208 else if( command == FcollimatorZpositionCmd ) 209 { 209 { 210 laserDrivenMessengerPointer -> SetFirstC 210 laserDrivenMessengerPointer -> SetFirstCollimatorPositionZ 211 (FcollimatorZpositionCmd -> GetNewDoubleValu 211 (FcollimatorZpositionCmd -> GetNewDoubleValue(newValue)); 212 } 212 } 213 else if( command == ScollimatorRadiusCmd ) 213 else if( command == ScollimatorRadiusCmd ) 214 { 214 { 215 laserDrivenMessengerPointer -> SetSecond 215 laserDrivenMessengerPointer -> SetSecondCollimatorRadius 216 (ScollimatorRadiusCmd -> GetNewDoubleValue(n 216 (ScollimatorRadiusCmd -> GetNewDoubleValue(newValue)); 217 } 217 } 218 else if( command == ScollimatorThicknessCmd 218 else if( command == ScollimatorThicknessCmd ) 219 { 219 { 220 laserDrivenMessengerPointer -> SetSecond 220 laserDrivenMessengerPointer -> SetSecondCollimatorThickness 221 (ScollimatorThicknessCmd -> GetNewDoubleValu 221 (ScollimatorThicknessCmd -> GetNewDoubleValue(newValue)); 222 } 222 } 223 else if( command == ScollimatorZpositionCmd 223 else if( command == ScollimatorZpositionCmd ) 224 { 224 { 225 laserDrivenMessengerPointer -> SetSecond 225 laserDrivenMessengerPointer -> SetSecondCollimatorPositionZ 226 (ScollimatorZpositionCmd -> GetNewDoubleValu 226 (ScollimatorZpositionCmd -> GetNewDoubleValue(newValue)); 227 } 227 } 228 else if( command == SlitThicknessCmd ) 228 else if( command == SlitThicknessCmd ) 229 { 229 { 230 laserDrivenMessengerPointer -> SetThickn 230 laserDrivenMessengerPointer -> SetThicknessSlit 231 (SlitThicknessCmd -> GetNewDoubleValue(newVa 231 (SlitThicknessCmd -> GetNewDoubleValue(newValue)); 232 } 232 } 233 else if( command == holeSlitDimensionYCmd ) 233 else if( command == holeSlitDimensionYCmd ) 234 { 234 { 235 laserDrivenMessengerPointer -> SetSlitHo 235 laserDrivenMessengerPointer -> SetSlitHoleDimensionY 236 (holeSlitDimensionYCmd -> GetNewDoubleValue( 236 (holeSlitDimensionYCmd -> GetNewDoubleValue(newValue)); 237 } 237 } 238 else if( command == holeSlitDimensionZCmd ) 238 else if( command == holeSlitDimensionZCmd ) 239 { 239 { 240 laserDrivenMessengerPointer -> SetSlitHo 240 laserDrivenMessengerPointer -> SetSlitHoleDimensionZ 241 (holeSlitDimensionZCmd -> GetNewDoubleValue( 241 (holeSlitDimensionZCmd -> GetNewDoubleValue(newValue)); 242 } 242 } 243 else if( command == slitHolePositionZCmd ) 243 else if( command == slitHolePositionZCmd ) 244 { 244 { 245 laserDrivenMessengerPointer -> SetSlitHo 245 laserDrivenMessengerPointer -> SetSlitHolePositionZ 246 (slitHolePositionZCmd -> GetNewDoubleValue(n 246 (slitHolePositionZCmd -> GetNewDoubleValue(newValue)); 247 } 247 } 248 else if (command==DisableQuadsCmd) 248 else if (command==DisableQuadsCmd) 249 { 249 { 250 laserDrivenMessengerPointer -> RemoveQua 250 laserDrivenMessengerPointer -> RemoveQuads(); 251 } 251 } 252 252 253 } 253 } 254 254 255 255