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 // Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request 27 // See more at: https://twiki.cern.ch/twiki/bi << 27 // the *COMPLETE* version of this program, together with its documentation; >> 28 // Hadrontherapy (both basic and full version) are supported by the Italian INFN >> 29 // Institute in the framework of the MC-INFN Group >> 30 // 28 31 29 #include "LaserDrivenBeamLineMessenger.hh" 32 #include "LaserDrivenBeamLineMessenger.hh" 30 #include "LaserDrivenBeamLine.hh" 33 #include "LaserDrivenBeamLine.hh" 31 #include "G4UIdirectory.hh" 34 #include "G4UIdirectory.hh" 32 #include "G4UIcmdWithADoubleAndUnit.hh" 35 #include "G4UIcmdWithADoubleAndUnit.hh" 33 #include "G4UIcmdWithoutParameter.hh" 36 #include "G4UIcmdWithoutParameter.hh" 34 #include "G4UIcmdWithAString.hh" 37 #include "G4UIcmdWithAString.hh" 35 #include "G4SystemOfUnits.hh" 38 #include "G4SystemOfUnits.hh" 36 39 37 ////////////////////////////////////////////// 40 ///////////////////////////////////////////////////////////////////////////// 38 LaserDrivenBeamLineMessenger::LaserDrivenBeamL 41 LaserDrivenBeamLineMessenger::LaserDrivenBeamLineMessenger(LaserDrivenBeamLine* laserDriven) 39 :laserDrivenMessengerPointer(laserDriven) 42 :laserDrivenMessengerPointer(laserDriven) 40 { 43 { 41 // Messenger directories for the Energy Select 44 // Messenger directories for the Energy Selector module 42 laserDrivenDir = new G4UIdirectory("/LaserDr 45 laserDrivenDir = new G4UIdirectory("/LaserDriven/"); 43 laserDrivenDir -> SetGuidance("The Laser Dri 46 laserDrivenDir -> SetGuidance("The Laser Driven Beam Line module of Hadrontherapy"); 44 47 45 // Messenger directories for the Energy Sele 48 // Messenger directories for the Energy Selector module 46 energySelectorDir = new G4UIdirectory("/Lase 49 energySelectorDir = new G4UIdirectory("/LaserDriven/EnergySelector/"); 47 energySelectorDir -> SetGuidance("The Energy 50 energySelectorDir -> SetGuidance("The Energy selector (ESS) module of Hadrontherapy"); 48 51 49 FcollimatorDir = new G4UIdirectory("/LaserD 52 FcollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/FirstCollimator/"); 50 FcollimatorDir -> SetGuidance("Define geomet 53 FcollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS first collimator"); 51 54 52 ScollimatorDir = new G4UIdirectory("/LaserD 55 ScollimatorDir = new G4UIdirectory("/LaserDriven/EnergySelector/SecondCollimator/"); 53 ScollimatorDir -> SetGuidance("Define geomet 56 ScollimatorDir -> SetGuidance("Define geometrical characteristics of the ESS second collimator"); 54 57 55 slitDir = new G4UIdirectory("/LaserDriven/E 58 slitDir = new G4UIdirectory("/LaserDriven/EnergySelector/Slit/"); 56 slitDir -> SetGuidance("Define geometrical c 59 slitDir -> SetGuidance("Define geometrical characteristics of the ESS slit"); 57 60 58 // Messenger directories for the Quadrupole m 61 // Messenger directories for the Quadrupole module 59 quadrupoleDir = new G4UIdirectory("/LaserDri 62 quadrupoleDir = new G4UIdirectory("/LaserDriven/Quadrupoles/"); 60 quadrupoleDir -> SetGuidance("The Quadrupole 63 quadrupoleDir -> SetGuidance("The Quadrupoles module of Hadrontherapy"); 61 64 62 relativePosDir = new G4UIdirectory("/LaserDr 65 relativePosDir = new G4UIdirectory("/LaserDriven/Quadrupoles/xRelPosition/"); 63 relativePosDir -> SetGuidance("Define the x 66 relativePosDir -> SetGuidance("Define the x relative positions of the quadrupoles"); 64 67 65 // ESS DISABLE 68 // ESS DISABLE 66 DisableESSCmd = new G4UIcmdWithoutParameter( 69 DisableESSCmd = new G4UIcmdWithoutParameter("/LaserDriven/EnergySelector/Disable", this); 67 DisableESSCmd -> SetGuidance("Disable the En 70 DisableESSCmd -> SetGuidance("Disable the Energy Selector."); 68 DisableESSCmd -> SetGuidance("This command M 71 DisableESSCmd -> SetGuidance("This command MUST be applied before \"beamOn\" "); 69 DisableESSCmd -> AvailableForStates(G4State_ 72 DisableESSCmd -> AvailableForStates(G4State_Idle); 70 73 71 // THE FIRST ESS COLLIMATOR 74 // THE FIRST ESS COLLIMATOR 72 // 75 // 73 // Diameter of the first collimator 76 // Diameter of the first collimator 74 FcollimatorRadiusCmd = new G4UIcmdWithADoubl 77 FcollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Radius", this); 75 FcollimatorRadiusCmd -> SetGuidance("Set the 78 FcollimatorRadiusCmd -> SetGuidance("Set the Radius of the first collimator"); 76 FcollimatorRadiusCmd -> SetParameterName("Si 79 FcollimatorRadiusCmd -> SetParameterName("Size",false); 77 FcollimatorRadiusCmd -> SetDefaultUnit("mm") 80 FcollimatorRadiusCmd -> SetDefaultUnit("mm"); 78 FcollimatorRadiusCmd -> SetUnitCandidates("m 81 FcollimatorRadiusCmd -> SetUnitCandidates("mm cm m"); 79 FcollimatorRadiusCmd -> AvailableForStates(G 82 FcollimatorRadiusCmd -> AvailableForStates(G4State_Idle); 80 83 81 // Thickness of the first collimator 84 // Thickness of the first collimator 82 FcollimatorThicknessCmd = new G4UIcmdWithADo 85 FcollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/Thickness", this); 83 FcollimatorThicknessCmd -> SetGuidance("Set 86 FcollimatorThicknessCmd -> SetGuidance("Set the thickness of the first collimator"); 84 FcollimatorThicknessCmd -> SetParameterName( 87 FcollimatorThicknessCmd -> SetParameterName("Size",false); 85 FcollimatorThicknessCmd -> SetDefaultUnit("m 88 FcollimatorThicknessCmd -> SetDefaultUnit("mm"); 86 FcollimatorThicknessCmd -> SetUnitCandidates 89 FcollimatorThicknessCmd -> SetUnitCandidates("mm cm m"); 87 FcollimatorThicknessCmd -> AvailableForState 90 FcollimatorThicknessCmd -> AvailableForStates(G4State_Idle); 88 91 89 // Z Position of the first collimator hole 92 // Z Position of the first collimator hole 90 FcollimatorZpositionCmd = new G4UIcmdWithADo 93 FcollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/FirstCollimator/zPosizion", this); 91 FcollimatorZpositionCmd -> SetGuidance("Set 94 FcollimatorZpositionCmd -> SetGuidance("Set the Z position of the first collimator hole as respect the internal vacuum chamber center axis"); 92 FcollimatorZpositionCmd -> SetParameterName( 95 FcollimatorZpositionCmd -> SetParameterName("Size",false); 93 FcollimatorZpositionCmd -> SetDefaultUnit("m 96 FcollimatorZpositionCmd -> SetDefaultUnit("mm"); 94 FcollimatorZpositionCmd -> SetUnitCandidates 97 FcollimatorZpositionCmd -> SetUnitCandidates("mm cm m"); 95 FcollimatorZpositionCmd -> AvailableForState 98 FcollimatorZpositionCmd -> AvailableForStates(G4State_Idle); 96 99 97 // THE SECOND ESS COLLIMATOR 100 // THE SECOND ESS COLLIMATOR 98 // 101 // 99 // Diameter of the second collimator 102 // Diameter of the second collimator 100 ScollimatorRadiusCmd = new G4UIcmdWithADoubl 103 ScollimatorRadiusCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Radius", this); 101 ScollimatorRadiusCmd -> SetGuidance("Set the 104 ScollimatorRadiusCmd -> SetGuidance("Set the Radius of the second collimator"); 102 ScollimatorRadiusCmd -> SetParameterName("Si 105 ScollimatorRadiusCmd -> SetParameterName("Size",false); 103 ScollimatorRadiusCmd -> SetDefaultUnit("mm") 106 ScollimatorRadiusCmd -> SetDefaultUnit("mm"); 104 ScollimatorRadiusCmd -> SetUnitCandidates("m 107 ScollimatorRadiusCmd -> SetUnitCandidates("mm cm m"); 105 ScollimatorRadiusCmd -> AvailableForStates(G 108 ScollimatorRadiusCmd -> AvailableForStates(G4State_Idle); 106 109 107 // Thickness of the second collimator 110 // Thickness of the second collimator 108 ScollimatorThicknessCmd = new G4UIcmdWithADo 111 ScollimatorThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/Thickness", this); 109 ScollimatorThicknessCmd -> SetGuidance("Set 112 ScollimatorThicknessCmd -> SetGuidance("Set the thickness of the second collimator"); 110 ScollimatorThicknessCmd -> SetParameterName( 113 ScollimatorThicknessCmd -> SetParameterName("Size",false); 111 ScollimatorThicknessCmd -> SetDefaultUnit("m 114 ScollimatorThicknessCmd -> SetDefaultUnit("mm"); 112 ScollimatorThicknessCmd -> SetUnitCandidates 115 ScollimatorThicknessCmd -> SetUnitCandidates("mm cm m"); 113 ScollimatorThicknessCmd -> AvailableForState 116 ScollimatorThicknessCmd -> AvailableForStates(G4State_Idle); 114 117 115 // Z Position of the second collimator hole 118 // Z Position of the second collimator hole 116 ScollimatorZpositionCmd = new G4UIcmdWithADo 119 ScollimatorZpositionCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/SecondCollimator/zPosizion", this); 117 ScollimatorZpositionCmd -> SetGuidance("Set 120 ScollimatorZpositionCmd -> SetGuidance("Set the Z position of the second collimator hole as respect the internal vacuum chamber center axis"); 118 ScollimatorZpositionCmd -> SetParameterName( 121 ScollimatorZpositionCmd -> SetParameterName("Size",false); 119 ScollimatorZpositionCmd -> SetDefaultUnit("m 122 ScollimatorZpositionCmd -> SetDefaultUnit("mm"); 120 ScollimatorZpositionCmd -> SetUnitCandidates 123 ScollimatorZpositionCmd -> SetUnitCandidates("mm cm m"); 121 ScollimatorZpositionCmd -> AvailableForState 124 ScollimatorZpositionCmd -> AvailableForStates(G4State_Idle); 122 125 123 // THE SLIT 126 // THE SLIT 124 // 127 // 125 // Thickness Slit 128 // Thickness Slit 126 SlitThicknessCmd = new G4UIcmdWithADoubleAnd 129 SlitThicknessCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/thickness",this); 127 SlitThicknessCmd -> SetGuidance("Set the X d 130 SlitThicknessCmd -> SetGuidance("Set the X dimension of the Slit, the maximum value is 10 mm"); 128 SlitThicknessCmd -> SetParameterName("Size", 131 SlitThicknessCmd -> SetParameterName("Size",false); 129 SlitThicknessCmd -> SetDefaultUnit("mm"); 132 SlitThicknessCmd -> SetDefaultUnit("mm"); 130 SlitThicknessCmd -> SetUnitCandidates("mm cm 133 SlitThicknessCmd -> SetUnitCandidates("mm cm m"); 131 SlitThicknessCmd -> AvailableForStates(G4Sta 134 SlitThicknessCmd -> AvailableForStates(G4State_Idle); 132 135 133 //Hole dimension of the Slit (in Y direction 136 //Hole dimension of the Slit (in Y direction) 134 holeSlitDimensionYCmd = new G4UIcmdWithADoub 137 holeSlitDimensionYCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionY",this); 135 holeSlitDimensionYCmd -> SetGuidance("Set th 138 holeSlitDimensionYCmd -> SetGuidance("Set the Y dimension of the Slit Hole"); 136 holeSlitDimensionYCmd -> SetParameterName("S 139 holeSlitDimensionYCmd -> SetParameterName("Size",false); 137 holeSlitDimensionYCmd -> SetDefaultUnit("mm" 140 holeSlitDimensionYCmd -> SetDefaultUnit("mm"); 138 holeSlitDimensionYCmd -> SetUnitCandidates(" 141 holeSlitDimensionYCmd -> SetUnitCandidates("mm cm m"); 139 holeSlitDimensionYCmd -> AvailableForStates( 142 holeSlitDimensionYCmd -> AvailableForStates(G4State_Idle); 140 143 141 // Hole dimension of the Slit (in Z directio 144 // Hole dimension of the Slit (in Z direction) 142 holeSlitDimensionZCmd = new G4UIcmdWithADoub 145 holeSlitDimensionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HoleDimensionZ",this); 143 holeSlitDimensionZCmd -> SetGuidance("Set th 146 holeSlitDimensionZCmd -> SetGuidance("Set the Z dimension of the external part of magnet 4"); 144 holeSlitDimensionZCmd -> SetParameterName("S 147 holeSlitDimensionZCmd -> SetParameterName("Size",false); 145 holeSlitDimensionZCmd -> SetDefaultUnit("mm" 148 holeSlitDimensionZCmd -> SetDefaultUnit("mm"); 146 holeSlitDimensionZCmd -> SetUnitCandidates(" 149 holeSlitDimensionZCmd -> SetUnitCandidates("mm cm m"); 147 holeSlitDimensionZCmd -> AvailableForStates( 150 holeSlitDimensionZCmd -> AvailableForStates(G4State_Idle); 148 151 149 // Hole position of the Slit (in Z direction 152 // Hole position of the Slit (in Z direction as respect the Slit body) 150 slitHolePositionZCmd = new G4UIcmdWithADoubl 153 slitHolePositionZCmd = new G4UIcmdWithADoubleAndUnit("/LaserDriven/EnergySelector/Slit/HolePositionZ", this); 151 slitHolePositionZCmd -> SetGuidance("Set the 154 slitHolePositionZCmd -> SetGuidance("Set the Slit hole position in the Z direction as respect the Slit body center"); 152 slitHolePositionZCmd -> SetParameterName("Si 155 slitHolePositionZCmd -> SetParameterName("Size",false); 153 slitHolePositionZCmd -> SetDefaultUnit("mm") 156 slitHolePositionZCmd -> SetDefaultUnit("mm"); 154 slitHolePositionZCmd -> SetUnitCandidates("m 157 slitHolePositionZCmd -> SetUnitCandidates("mm cm m"); 155 slitHolePositionZCmd -> AvailableForStates(G 158 slitHolePositionZCmd -> AvailableForStates(G4State_Idle); 156 159 157 // Quadrupole system DISABLE 160 // Quadrupole system DISABLE 158 DisableQuadsCmd = new G4UIcmdWithoutParamet 161 DisableQuadsCmd = new G4UIcmdWithoutParameter("/LaserDriven/Quadrupoles/DisableQuads", this); 159 DisableQuadsCmd -> SetGuidance("Disable the 162 DisableQuadsCmd -> SetGuidance("Disable the Quadrupole system."); 160 DisableQuadsCmd -> SetGuidance("This comman 163 DisableQuadsCmd -> SetGuidance("This command MUST be applied before \"beamOn\" "); 161 DisableQuadsCmd -> AvailableForStates(G4Sta 164 DisableQuadsCmd -> AvailableForStates(G4State_Idle); 162 } 165 } 163 166 164 ////////////////////////////////////////////// 167 ///////////////////////////////////////////////////////////////////////////// 165 LaserDrivenBeamLineMessenger::~LaserDrivenBeam 168 LaserDrivenBeamLineMessenger::~LaserDrivenBeamLineMessenger() 166 { 169 { 167 170 168 delete laserDrivenDir; 171 delete laserDrivenDir; 169 delete energySelectorDir; 172 delete energySelectorDir; 170 delete FcollimatorDir; 173 delete FcollimatorDir; 171 delete ScollimatorDir; 174 delete ScollimatorDir; 172 delete slitDir; 175 delete slitDir; 173 delete quadrupoleDir; 176 delete quadrupoleDir; 174 delete relativePosDir; 177 delete relativePosDir; 175 delete DisableESSCmd; 178 delete DisableESSCmd; 176 delete FcollimatorRadiusCmd; 179 delete FcollimatorRadiusCmd; 177 delete FcollimatorThicknessCmd; 180 delete FcollimatorThicknessCmd; 178 delete FcollimatorZpositionCmd; 181 delete FcollimatorZpositionCmd; 179 delete ScollimatorRadiusCmd; 182 delete ScollimatorRadiusCmd; 180 delete ScollimatorThicknessCmd; 183 delete ScollimatorThicknessCmd; 181 delete ScollimatorZpositionCmd; 184 delete ScollimatorZpositionCmd; 182 185 183 delete SlitThicknessCmd; 186 delete SlitThicknessCmd; 184 delete holeSlitDimensionYCmd; 187 delete holeSlitDimensionYCmd; 185 delete holeSlitDimensionZCmd; 188 delete holeSlitDimensionZCmd; 186 delete slitHolePositionZCmd; 189 delete slitHolePositionZCmd; 187 190 188 delete DisableQuadsCmd; 191 delete DisableQuadsCmd; 189 192 190 } 193 } 191 ////////////////////////////////////////////// 194 ///////////////////////////////////////////////////////////////////////////// 192 void LaserDrivenBeamLineMessenger::SetNewValue 195 void LaserDrivenBeamLineMessenger::SetNewValue(G4UIcommand* command,G4String newValue) 193 { 196 { 194 if (command == DisableESSCmd) 197 if (command == DisableESSCmd) 195 { 198 { 196 laserDrivenMessengerPointer -> RemoveESS 199 laserDrivenMessengerPointer -> RemoveESS(); 197 } 200 } 198 if( command == FcollimatorRadiusCmd ) 201 if( command == FcollimatorRadiusCmd ) 199 { 202 { 200 laserDrivenMessengerPointer -> SetFirstC 203 laserDrivenMessengerPointer -> SetFirstCollimatorRadius 201 (FcollimatorRadiusCmd -> GetNewDoubleValue(n 204 (FcollimatorRadiusCmd -> GetNewDoubleValue(newValue)); 202 } 205 } 203 else if( command == FcollimatorThicknessCmd 206 else if( command == FcollimatorThicknessCmd ) 204 { 207 { 205 laserDrivenMessengerPointer -> SetFirstC 208 laserDrivenMessengerPointer -> SetFirstCollimatorThickness 206 (FcollimatorThicknessCmd -> GetNewDoubleValu 209 (FcollimatorThicknessCmd -> GetNewDoubleValue(newValue)); 207 } 210 } 208 else if( command == FcollimatorZpositionCmd 211 else if( command == FcollimatorZpositionCmd ) 209 { 212 { 210 laserDrivenMessengerPointer -> SetFirstC 213 laserDrivenMessengerPointer -> SetFirstCollimatorPositionZ 211 (FcollimatorZpositionCmd -> GetNewDoubleValu 214 (FcollimatorZpositionCmd -> GetNewDoubleValue(newValue)); 212 } 215 } 213 else if( command == ScollimatorRadiusCmd ) 216 else if( command == ScollimatorRadiusCmd ) 214 { 217 { 215 laserDrivenMessengerPointer -> SetSecond 218 laserDrivenMessengerPointer -> SetSecondCollimatorRadius 216 (ScollimatorRadiusCmd -> GetNewDoubleValue(n 219 (ScollimatorRadiusCmd -> GetNewDoubleValue(newValue)); 217 } 220 } 218 else if( command == ScollimatorThicknessCmd 221 else if( command == ScollimatorThicknessCmd ) 219 { 222 { 220 laserDrivenMessengerPointer -> SetSecond 223 laserDrivenMessengerPointer -> SetSecondCollimatorThickness 221 (ScollimatorThicknessCmd -> GetNewDoubleValu 224 (ScollimatorThicknessCmd -> GetNewDoubleValue(newValue)); 222 } 225 } 223 else if( command == ScollimatorZpositionCmd 226 else if( command == ScollimatorZpositionCmd ) 224 { 227 { 225 laserDrivenMessengerPointer -> SetSecond 228 laserDrivenMessengerPointer -> SetSecondCollimatorPositionZ 226 (ScollimatorZpositionCmd -> GetNewDoubleValu 229 (ScollimatorZpositionCmd -> GetNewDoubleValue(newValue)); 227 } 230 } 228 else if( command == SlitThicknessCmd ) 231 else if( command == SlitThicknessCmd ) 229 { 232 { 230 laserDrivenMessengerPointer -> SetThickn 233 laserDrivenMessengerPointer -> SetThicknessSlit 231 (SlitThicknessCmd -> GetNewDoubleValue(newVa 234 (SlitThicknessCmd -> GetNewDoubleValue(newValue)); 232 } 235 } 233 else if( command == holeSlitDimensionYCmd ) 236 else if( command == holeSlitDimensionYCmd ) 234 { 237 { 235 laserDrivenMessengerPointer -> SetSlitHo 238 laserDrivenMessengerPointer -> SetSlitHoleDimensionY 236 (holeSlitDimensionYCmd -> GetNewDoubleValue( 239 (holeSlitDimensionYCmd -> GetNewDoubleValue(newValue)); 237 } 240 } 238 else if( command == holeSlitDimensionZCmd ) 241 else if( command == holeSlitDimensionZCmd ) 239 { 242 { 240 laserDrivenMessengerPointer -> SetSlitHo 243 laserDrivenMessengerPointer -> SetSlitHoleDimensionZ 241 (holeSlitDimensionZCmd -> GetNewDoubleValue( 244 (holeSlitDimensionZCmd -> GetNewDoubleValue(newValue)); 242 } 245 } 243 else if( command == slitHolePositionZCmd ) 246 else if( command == slitHolePositionZCmd ) 244 { 247 { 245 laserDrivenMessengerPointer -> SetSlitHo 248 laserDrivenMessengerPointer -> SetSlitHolePositionZ 246 (slitHolePositionZCmd -> GetNewDoubleValue(n 249 (slitHolePositionZCmd -> GetNewDoubleValue(newValue)); 247 } 250 } 248 else if (command==DisableQuadsCmd) 251 else if (command==DisableQuadsCmd) 249 { 252 { 250 laserDrivenMessengerPointer -> RemoveQua 253 laserDrivenMessengerPointer -> RemoveQuads(); 251 } 254 } 252 255 253 } 256 } 254 257 255 258