Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/iort_therapy/src/IORTDetectorMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 // This is the *BASIC* version of IORT, a Geant4-based application
 27 //
 28 // Main Authors: G.Russo(a,b), C.Casarino*(c), G.C. Candiano(c), G.A.P. Cirrone(d), F.Romano(d)
 29 // Contributor Authors: S.Guatelli(e)
 30 // Past Authors: G.Arnetta(c), S.E.Mazzaglia(d)
 31 //    
 32 //   (a) Fondazione Istituto San Raffaele G.Giglio, Cefalù, Italy
 33 //   (b) IBFM-CNR , Segrate (Milano), Italy
 34 //   (c) LATO (Laboratorio di Tecnologie Oncologiche), Cefalù, Italy
 35 //   (d) Laboratori Nazionali del Sud of the INFN, Catania, Italy
 36 //   (e) University of Wollongong, Australia
 37 //
 38 //   *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
 39 //////////////////////////////////////////////////////////////////////////////////////////////
 40 
 41 #include "IORTDetectorMessenger.hh"
 42 #include "IORTDetectorConstruction.hh"
 43 #include "G4UIdirectory.hh"
 44 #include "G4UIcmdWith3VectorAndUnit.hh"
 45 #include "G4UIcmdWithoutParameter.hh"
 46 #include "G4UIcmdWithAString.hh"
 47 #include "G4UIcmdWithADoubleAndUnit.hh"   // aggiunto
 48 
 49 /////////////////////////////////////////////////////////////////////////////
 50 IORTDetectorMessenger::IORTDetectorMessenger(IORTDetectorConstruction* detector)
 51   :iortDetector(detector)
 52 {
 53     // Change Phantom size
 54     changeThePhantomDir = new G4UIdirectory("/changePhantom/");
 55     changeThePhantomDir -> SetGuidance("Command to change the Phantom Size/position");
 56     changeThePhantomSizeCmd = new G4UIcmdWith3VectorAndUnit("/changePhantom/size", this);
 57     changeThePhantomSizeCmd -> SetGuidance("Insert sizes X Y and Z"
 58                                      "\n   0 or negative values mean <<Don't change it!>>");
 59     changeThePhantomSizeCmd -> SetParameterName("PhantomSizeAlongX", 
 60             "PhantomSizeAlongY", 
 61             "PhantomSizeAlongZ", false);
 62     changeThePhantomSizeCmd -> SetDefaultUnit("mm");
 63     changeThePhantomSizeCmd -> SetUnitCandidates("nm um mm cm"); 
 64     changeThePhantomSizeCmd -> AvailableForStates(G4State_Idle);
 65 
 66 
 67     // Change Phantom material 
 68     changeThePhantomMaterialCmd = new G4UIcmdWithAString("/changePhantom/material", this);
 69     changeThePhantomMaterialCmd -> SetGuidance("Change the Phantom and the detector material"); 
 70     changeThePhantomMaterialCmd -> SetParameterName("PhantomMaterial", false);
 71     changeThePhantomMaterialCmd -> SetDefaultValue("G4_WATER");
 72     changeThePhantomMaterialCmd -> AvailableForStates(G4State_Idle);
 73 
 74     // Change Phantom position
 75     changeThePhantomPositionCmd = new G4UIcmdWith3VectorAndUnit("/changePhantom/position", this);
 76     changeThePhantomPositionCmd -> SetGuidance("Insert X Y and Z dimensions for the position of the center of the Phantom"
 77             " respect to that of the \"World\""); 
 78     changeThePhantomPositionCmd -> SetParameterName("PositionAlongX", 
 79                 "PositionAlongY", 
 80                 "PositionAlongZ", false);
 81     changeThePhantomPositionCmd -> SetDefaultUnit("mm");
 82     changeThePhantomPositionCmd -> SetUnitCandidates("um mm cm m"); 
 83     changeThePhantomPositionCmd -> AvailableForStates(G4State_Idle);
 84 
 85 
 86     updateCmd = new G4UIcmdWithoutParameter("/changePhantom/update",this);
 87     updateCmd->SetGuidance("Update Phantom/Detector geometry.");
 88     updateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
 89     updateCmd->SetGuidance("if you changed geometrical value(s).");
 90     updateCmd->AvailableForStates(G4State_Idle);
 91 
 92     //  Change detector size
 93     changeTheDetectorDir = new G4UIdirectory("/changeDetector/");
 94     changeTheDetectorDir -> SetGuidance("Command to change the Detector's Size/position/Voxels");
 95     
 96     changeTheDetectorSizeCmd = new G4UIcmdWith3VectorAndUnit("/changeDetector/size",this);
 97     changeTheDetectorSizeCmd -> SetGuidance("Insert sizes for X Y and Z dimensions of the Detector"
 98               "\n   0 or negative values mean <<Don't change it>>");
 99     changeTheDetectorSizeCmd -> SetParameterName("DetectorSizeAlongX", "DetectorSizeAlongY", "DetectorSizeAlongZ", false);
100     changeTheDetectorSizeCmd -> SetDefaultUnit("mm");
101     changeTheDetectorSizeCmd -> SetUnitCandidates("nm um mm cm"); 
102     changeTheDetectorSizeCmd -> AvailableForStates(G4State_Idle);
103 
104     //  Change the detector to phantom displacement
105     changeTheDetectorToPhantomPositionCmd = new G4UIcmdWith3VectorAndUnit("/changeDetector/displacement",this);
106     changeTheDetectorToPhantomPositionCmd -> SetGuidance("Insert X Y and Z displacements between Detector and Phantom"
107                                                    "\nNegative values mean <<Don't change it!>>"); 
108     changeTheDetectorToPhantomPositionCmd -> SetParameterName("DisplacementAlongX",
109                     "DisplacementAlongY", 
110                     "DisplacementAlongZ", false);
111     changeTheDetectorToPhantomPositionCmd -> SetDefaultUnit("mm");
112     changeTheDetectorToPhantomPositionCmd -> SetUnitCandidates("nm um mm cm"); 
113     changeTheDetectorToPhantomPositionCmd -> AvailableForStates(G4State_Idle);
114     
115     // Change voxels by its size
116     changeTheDetectorVoxelCmd = new G4UIcmdWith3VectorAndUnit("/changeDetector/voxelSize",this);
117     changeTheDetectorVoxelCmd -> SetGuidance("Insert Voxel sizes for X Y and Z dimensions"
118                                  "\n   0 or negative values mean <<Don't change it!>>");
119     changeTheDetectorVoxelCmd -> SetParameterName("VoxelSizeAlongX", "VoxelSizeAlongY", "VoxelSizeAlongZ", false);
120     changeTheDetectorVoxelCmd -> SetDefaultUnit("mm");
121     changeTheDetectorVoxelCmd -> SetUnitCandidates("nm um mm cm");
122     changeTheDetectorVoxelCmd -> AvailableForStates(G4State_Idle);
123 
124 
125     // Change disc1 
126     changeTheDisc1Dir = new G4UIdirectory("/ProtectionDisc1/");
127     changeTheDisc1Dir -> SetGuidance("Command to change the Disc1");
128     
129     changeOuterRadiusDiscoIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/OuterRadiusDisc1",this);
130     changeOuterRadiusDiscoIORTCmd -> SetGuidance("Set size of outer radius");
131     changeOuterRadiusDiscoIORTCmd -> SetParameterName("Size",false);
132     changeOuterRadiusDiscoIORTCmd -> SetDefaultUnit("mm");  
133     changeOuterRadiusDiscoIORTCmd -> SetUnitCandidates("mm cm m");  
134     changeOuterRadiusDiscoIORTCmd -> AvailableForStates(G4State_Idle);
135 
136     changeinnerRadiusDiscoIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/InnerRadiusDisc1",this);
137     changeinnerRadiusDiscoIORTCmd -> SetGuidance("Set size of inner radius");
138     changeinnerRadiusDiscoIORTCmd -> SetParameterName("Size",false);
139     changeinnerRadiusDiscoIORTCmd -> SetDefaultUnit("mm");  
140     changeinnerRadiusDiscoIORTCmd -> SetUnitCandidates("mm cm m");  
141     changeinnerRadiusDiscoIORTCmd -> AvailableForStates(G4State_Idle);
142 
143 
144     changeheightDiscoIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/HeightDisc1",this);
145     changeheightDiscoIORTCmd -> SetGuidance("Set size of higth");
146     changeheightDiscoIORTCmd -> SetParameterName("Size",false);
147     changeheightDiscoIORTCmd -> SetDefaultUnit("mm");  
148     changeheightDiscoIORTCmd -> SetUnitCandidates("mm cm m");  
149     changeheightDiscoIORTCmd -> AvailableForStates(G4State_Idle);
150 
151     changeDiscoXPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/XPositionDisc1",this);
152     changeDiscoXPositionIORTCmd -> SetGuidance("Set the X position");
153     changeDiscoXPositionIORTCmd -> SetParameterName("Size",false);
154     changeDiscoXPositionIORTCmd -> SetDefaultUnit("mm");  
155     changeDiscoXPositionIORTCmd -> SetUnitCandidates("mm cm m");  
156     changeDiscoXPositionIORTCmd -> AvailableForStates(G4State_Idle);
157 
158     changeDiscoYPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/YPositionDisc1",this);
159     changeDiscoYPositionIORTCmd -> SetGuidance("Set the Y position");
160     changeDiscoYPositionIORTCmd -> SetParameterName("Size",false);
161     changeDiscoYPositionIORTCmd -> SetDefaultUnit("mm");  
162     changeDiscoYPositionIORTCmd -> SetUnitCandidates("mm cm m");  
163     changeDiscoYPositionIORTCmd -> AvailableForStates(G4State_Idle);
164 
165     changeDiscoZPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/ZPositionDisc1",this);
166     changeDiscoZPositionIORTCmd -> SetGuidance("Set the Z position");
167     changeDiscoZPositionIORTCmd -> SetParameterName("Size",false);
168     changeDiscoZPositionIORTCmd -> SetDefaultUnit("mm");  
169     changeDiscoZPositionIORTCmd -> SetUnitCandidates("mm cm m");  
170     changeDiscoZPositionIORTCmd -> AvailableForStates(G4State_Idle);
171 
172     changeTheDisc1MaterialCmd = new G4UIcmdWithAString("/ProtectionDisc1/material", this);
173     changeTheDisc1MaterialCmd -> SetGuidance("Change the Disc1 material"); 
174     changeTheDisc1MaterialCmd -> SetParameterName("Disc1Material", false);
175     changeTheDisc1MaterialCmd -> SetDefaultValue("G4_WATER");
176     changeTheDisc1MaterialCmd -> AvailableForStates(G4State_Idle);
177 
178 
179 
180     // Change disc2 
181     changeTheDisc2Dir = new G4UIdirectory("/ProtectionDisc2/");
182     changeTheDisc2Dir -> SetGuidance("Command to change the Disc2");
183     
184     changeOuterRadiusDisco1IORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc2/OuterRadiusDisc2",this);
185     changeOuterRadiusDisco1IORTCmd -> SetGuidance("Set size of outer radius");
186     changeOuterRadiusDisco1IORTCmd -> SetParameterName("Size",false);
187     changeOuterRadiusDisco1IORTCmd -> SetDefaultUnit("mm");  
188     changeOuterRadiusDisco1IORTCmd -> SetUnitCandidates("mm cm m");  
189     changeOuterRadiusDisco1IORTCmd -> AvailableForStates(G4State_Idle);
190 
191     changeinnerRadiusDisco1IORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc2/InnerRadiusDisc2",this);
192     changeinnerRadiusDisco1IORTCmd -> SetGuidance("Set size of inner radius");
193     changeinnerRadiusDisco1IORTCmd -> SetParameterName("Size",false);
194     changeinnerRadiusDisco1IORTCmd -> SetDefaultUnit("mm");  
195     changeinnerRadiusDisco1IORTCmd -> SetUnitCandidates("mm cm m");  
196     changeinnerRadiusDisco1IORTCmd -> AvailableForStates(G4State_Idle);
197 
198 
199     changeheightDisco1IORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc2/HeightDisc2",this);
200     changeheightDisco1IORTCmd -> SetGuidance("Set size of higth");
201     changeheightDisco1IORTCmd -> SetParameterName("Size",false);
202     changeheightDisco1IORTCmd -> SetDefaultUnit("mm");  
203     changeheightDisco1IORTCmd -> SetUnitCandidates("mm cm m");  
204     changeheightDisco1IORTCmd -> AvailableForStates(G4State_Idle);
205 
206     changeDisco1XPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc2/XPositionDisc2",this);
207     changeDisco1XPositionIORTCmd -> SetGuidance("Set the X position");
208     changeDisco1XPositionIORTCmd -> SetParameterName("Size",false);
209     changeDisco1XPositionIORTCmd -> SetDefaultUnit("mm");  
210     changeDisco1XPositionIORTCmd -> SetUnitCandidates("mm cm m");  
211     changeDisco1XPositionIORTCmd -> AvailableForStates(G4State_Idle);
212 
213     changeTheDisc2MaterialCmd = new G4UIcmdWithAString("/ProtectionDisc2/material", this);
214     changeTheDisc2MaterialCmd -> SetGuidance("Change the Disc2 material"); 
215     changeTheDisc2MaterialCmd -> SetParameterName("Disc1Material", false);
216     changeTheDisc2MaterialCmd -> SetDefaultValue("G4_WATER");
217     changeTheDisc2MaterialCmd -> AvailableForStates(G4State_Idle);
218 
219     // Delete disc 1-2
220     deleteTheDiscDir = new G4UIdirectory("/DeleteProtectionDisc/");
221     deleteTheDiscDir -> SetGuidance("Command to delete the 1-2 Discs ");
222 
223     deletediscCmd = new G4UIcmdWithoutParameter("/DeleteProtectionDisc/delete",this);
224     deletediscCmd->SetGuidance("Delete the 1-2 Discs geometry.");
225     deletediscCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
226     deletediscCmd->AvailableForStates(G4State_Idle);
227 
228     // Insert disc 1-2
229     insertTheDiscDir = new G4UIdirectory("/InsertProtectionDisc/");
230     insertTheDiscDir -> SetGuidance("Command to insert the 1-2 Discs ");
231 
232     insertdiscCmd = new G4UIcmdWithoutParameter("/InsertProtectionDisc/insert",this);
233     insertdiscCmd->SetGuidance("Insert the 1-2 Discs geometry.");
234     insertdiscCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
235     insertdiscCmd->SetGuidance("After this command MUST be applied update command \"beamOn\" ");
236     insertdiscCmd->AvailableForStates(G4State_Idle);
237 
238     // Change Tilt angle disc1 + disc2
239     changeTheAnglediscDir = new G4UIdirectory("/ChangeTiltAngleDisc1-2/");
240     changeTheAnglediscDir -> SetGuidance("Set tilt angle of the 1-2 Discs");
241 
242     changeTheAnglediscCmd = new G4UIcmdWithADoubleAndUnit("/ChangeTiltAngleDisc1-2/TiltAngleDisc1-2",this);
243     changeTheAnglediscCmd -> SetParameterName("Angle",false);
244     changeTheAnglediscCmd -> SetDefaultUnit("deg");  
245     changeTheAnglediscCmd -> SetUnitCandidates("deg rad");  
246     changeTheAnglediscCmd -> AvailableForStates(G4State_Idle); 
247    }
248 
249 /////////////////////////////////////////////////////////////////////////////
250 IORTDetectorMessenger::~IORTDetectorMessenger()
251 {
252     delete changeThePhantomDir; 
253     delete changeThePhantomSizeCmd; 
254     delete changeThePhantomPositionCmd; 
255     delete changeThePhantomMaterialCmd; 
256     delete updateCmd;
257     delete changeTheDetectorDir; 
258     delete changeTheDetectorSizeCmd; 
259     delete changeTheDetectorToPhantomPositionCmd; 
260     delete changeTheDetectorVoxelCmd;
261     
262     delete changeTheDisc1Dir;
263     delete changeOuterRadiusDiscoIORTCmd;
264     delete changeinnerRadiusDiscoIORTCmd;
265     delete changeheightDiscoIORTCmd; 
266     delete changeDiscoXPositionIORTCmd;
267     delete changeDiscoYPositionIORTCmd;
268     delete changeDiscoZPositionIORTCmd;
269     delete changeTheDisc1MaterialCmd;
270 
271     delete changeTheDisc2Dir;
272     delete changeOuterRadiusDisco1IORTCmd;
273     delete changeinnerRadiusDisco1IORTCmd;
274     delete changeheightDisco1IORTCmd; 
275     delete changeDisco1XPositionIORTCmd;
276     delete changeTheDisc2MaterialCmd;
277 
278     delete deletediscCmd;
279     delete insertdiscCmd;
280 
281     delete changeTheAnglediscDir;
282     delete changeTheAnglediscCmd;
283 }
284 
285 /////////////////////////////////////////////////////////////////////////////
286 void IORTDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
287 {
288   
289   if( command == changeThePhantomSizeCmd)
290     {
291   G4ThreeVector size = changeThePhantomSizeCmd -> GetNew3VectorValue(newValue);
292   iortDetector -> SetPhantomSize(size.getX(),size.getY(),size.getZ());
293     }
294   else if (command == changeThePhantomPositionCmd )
295   {
296    G4ThreeVector size = changeThePhantomPositionCmd -> GetNew3VectorValue(newValue);
297          iortDetector -> SetPhantomPosition(size);
298   }
299   else if (command == changeThePhantomMaterialCmd)
300   {
301       iortDetector -> SetPhantomMaterial(newValue);
302   }
303   else if (command == changeTheDetectorSizeCmd)
304   {
305   G4ThreeVector size = changeTheDetectorSizeCmd  -> GetNew3VectorValue(newValue);
306         iortDetector -> SetDetectorSize(size.getX(),size.getY(),size.getZ());
307   }
308   else if (command == changeTheDetectorToPhantomPositionCmd)
309   {
310   G4ThreeVector size = changeTheDetectorToPhantomPositionCmd-> GetNew3VectorValue(newValue);
311         iortDetector -> SetDetectorToPhantomPosition(size);
312   }
313   else if (command == changeTheDetectorVoxelCmd)
314   {
315   G4ThreeVector size = changeTheDetectorVoxelCmd  -> GetNew3VectorValue(newValue);
316         iortDetector -> SetVoxelSize(size.getX(),size.getY(),size.getZ());
317   }
318 /////////////////////disc/////////////////////////////////
319 
320   else if( command == changeOuterRadiusDiscoIORTCmd )
321     { 
322          iortDetector -> SetOuterRadiusDiscoIORT
323   (changeOuterRadiusDiscoIORTCmd -> GetNewDoubleValue(newValue));
324     }
325   else if( command == changeinnerRadiusDiscoIORTCmd )
326     { iortDetector -> SetinnerRadiusDiscoIORT
327   (changeinnerRadiusDiscoIORTCmd -> GetNewDoubleValue(newValue));
328     }
329   else if( command == changeheightDiscoIORTCmd )
330     { iortDetector -> SetheightDiscoIORT
331   (changeheightDiscoIORTCmd -> GetNewDoubleValue(newValue));
332     }
333   else if( command == changeDiscoXPositionIORTCmd )
334     { iortDetector -> SetDiscoXPositionIORT
335   (changeDiscoXPositionIORTCmd -> GetNewDoubleValue(newValue));
336     }
337   else if( command == changeDiscoYPositionIORTCmd )
338     { iortDetector -> SetDiscoYPositionIORT
339   (changeDiscoYPositionIORTCmd -> GetNewDoubleValue(newValue));
340     }
341   else if( command == changeDiscoZPositionIORTCmd )
342     { iortDetector -> SetDiscoZPositionIORT
343   (changeDiscoZPositionIORTCmd -> GetNewDoubleValue(newValue));
344     }
345   else if (command == changeTheDisc1MaterialCmd)
346   {
347       iortDetector -> SetDiscoMaterialIORT(newValue);
348   }
349 
350   else if( command == changeOuterRadiusDisco1IORTCmd )
351     { iortDetector -> SetOuterRadiusDiscoIORT1
352   (changeOuterRadiusDisco1IORTCmd -> GetNewDoubleValue(newValue));
353     }
354   else if( command == changeinnerRadiusDisco1IORTCmd )
355     { iortDetector -> SetinnerRadiusDiscoIORT1
356   (changeinnerRadiusDisco1IORTCmd -> GetNewDoubleValue(newValue));
357     }
358   else if( command == changeheightDisco1IORTCmd )
359     { iortDetector -> SetheightDiscoIORT1
360   (changeheightDisco1IORTCmd -> GetNewDoubleValue(newValue));
361     }
362   else if( command == changeDisco1XPositionIORTCmd )
363     { iortDetector -> SetDiscoXPositionIORT1
364   (changeDisco1XPositionIORTCmd -> GetNewDoubleValue(newValue));
365     }
366   else if (command == changeTheDisc2MaterialCmd)
367   {
368       iortDetector -> SetDiscoMaterialIORT1(newValue);
369   }
370   else if (command == changeTheAnglediscCmd)
371   {
372       iortDetector -> SetAngleDiscoIORT0
373         (changeTheAnglediscCmd -> GetNewDoubleValue(newValue));
374   }  
375 
376 
377 
378   else if (command == updateCmd)
379   {
380       iortDetector -> UpdateGeometry();
381   }
382 
383   else if (command == deletediscCmd)
384   {
385       iortDetector -> DeleteDisc();
386   }
387 
388 else if (command == insertdiscCmd)
389   {
390       iortDetector -> ConstructDisc();
391   }
392 }
393