Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/iort_therapy/src/Collimator70BeamLine.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 Wallongong, Australia
 37 //
 38 //   *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
 39 //////////////////////////////////////////////////////////////////////////////////////////////
 40 
 41 #include "globals.hh"
 42 #include "G4SystemOfUnits.hh"
 43 #include "G4Box.hh"
 44 #include "G4Tubs.hh"
 45 #include "G4Cons.hh"  
 46 #include "G4VisAttributes.hh"
 47 #include "G4Colour.hh"
 48 #include "G4RunManager.hh"
 49 #include "G4LogicalVolume.hh"
 50 #include "G4PVPlacement.hh"
 51 #include "G4RotationMatrix.hh"
 52 #include "G4NistManager.hh"
 53 #include "G4NistElementBuilder.hh"
 54 #include "G4SubtractionSolid.hh"   
 55 #include "IORTDetectorConstruction.hh" 
 56 #include "Collimator70BeamLine.hh"
 57 #include "Collimator70BeamLineMessenger.hh"  
 58 
 59 Collimator70BeamLine::Collimator70BeamLine():
 60   physicalTreatmentRoom(0),iortDetectorConstruction(0),
 61   
 62   
 63 
 64   solidFinalCollimatorIORT(0),
 65   physiFinalCollimatorIORT(0),
 66 
 67   solidGiunz1FinalCollIORT(0),
 68   physiGiunz1FinalCollIORT(0),
 69 
 70   solidGiunz2FinalCollIORT(0),  
 71   physiGiunz2FinalCollIORT(0),
 72 
 73   solidGiunz3FinalCollIORT(0),
 74   physiGiunz3FinalCollIORT(0),  
 75 
 76   solidGiunz3FinalCollIntIORT(0),
 77   physiGiunz3FinalCollIntIORT(0), 
 78   
 79   solidGiunz4FinalCollIORT(0),
 80   physiGiunz4FinalCollIORT(0),
 81 
 82   solidGiunz5FinalCollIORT(0),
 83   physiGiunz5FinalCollIORT(0),
 84   
 85   solidBlocco1IORT(0),
 86   physiBlocco1IORT(0),
 87 
 88   solidBlocco2IORT(0),
 89   physiBlocco2IORT(0),
 90 
 91   solidBlocco3IORT(0),
 92   physiBlocco3IORT(0),
 93 
 94   solidBlocco20mmIORT(0),
 95   physiBlocco20mmIORT(0),  
 96 
 97   solidCM1_1_2IORT(0),
 98   physiCM1_1_2IORT(0),
 99   
100   solidCM1_2_2IORT(0),
101   physiCM1_2_2IORT(0),
102   
103   solidCM2_1_2IORT(0),
104   physiCM2_1_2IORT(0),
105 
106   solidCM2_2_2IORT(0),
107   physiCM2_2_2IORT(0),  
108 
109   solidCCMIORT(0),
110   physiCCMIORT(0),
111 
112   solidPFS1IORT(0),
113   physiPFS1IORT(0),
114 
115   solidPFS2IORT(0),
116   physiPFS2IORT(0),
117 
118   solidPFS3IORT(0),
119   physiPFS3IORT(0),
120 
121   solidFTIORT(0),
122   physiFTIORT(0)
123 
124 
125 {
126   // Messenger to change parameters of the collimator70BeamLine geometry
127   collimatorMessenger = new Collimator70BeamLineMessenger(this);
128 
129 }
130 /////////////////////////////////////////////////////////////////////////////
131 Collimator70BeamLine::~Collimator70BeamLine()
132 {
133   delete collimatorMessenger;
134   delete iortDetectorConstruction;
135 }
136 
137 /////////////////////////////////////////////////////////////////////////////
138 
139 
140 G4VPhysicalVolume* Collimator70BeamLine::Construct()
141 { 
142   // Sets default geometry and materials
143   SetDefaultDimensions();
144   
145   // Construct the whole Collimator Beam Line 
146   ConstructCollimator70BeamLine();
147 
148   
149   // IORTDetectorConstruction builds ONLY the phantom and the detector with its associated ROGeometry
150   iortDetectorConstruction = new IORTDetectorConstruction(physicalTreatmentRoom); 
151   
152   return physicalTreatmentRoom;
153 }
154 
155 // In the following method the DEFAULTS used in the geometry of 
156 // collimator beam line are provided
157 // HERE THE USER CAN CHANGE THE GEOMETRY CHARACTERISTICS OF BEAM
158 // LINE ELEMENTS, ALTERNATIVELY HE/SHE CAN USE THE MACRO FILE (IF A 
159 // MESSENGER IS PROVIDED)
160 //
161 // DEFAULT MATERIAL ARE ALSO PROVIDED 
162 // and COLOURS ARE ALSO DEFINED
163 // ----------------------------------------------------------
164 /////////////////////////////////////////////////////////////////////////////
165 void Collimator70BeamLine::SetDefaultDimensions()
166 {
167 
168    // Set of coulors that can be used
169   white = new G4VisAttributes( G4Colour());
170   white -> SetVisibility(true);
171   //white -> SetForceSolid(true);
172   
173   blue = new G4VisAttributes(G4Colour(0. ,0. ,1.));
174   blue -> SetVisibility(true);
175   //blue -> SetForceSolid(true);
176   
177   gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
178   gray-> SetVisibility(true);
179   //gray-> SetForceSolid(true);
180   
181   red = new G4VisAttributes(G4Colour(1. ,0. ,0.));
182   red-> SetVisibility(true);
183   //red-> SetForceSolid(true);
184   
185   yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
186   yellow-> SetVisibility(true);
187   //yellow-> SetForceSolid(true);
188   
189   green = new G4VisAttributes( G4Colour(25/255. , 255/255. ,  25/255. ));
190   green -> SetVisibility(true);
191   //green -> SetForceSolid(true);
192   
193   darkGreen = new G4VisAttributes( G4Colour(0/255. , 100/255. ,  0/255. ));
194   darkGreen -> SetVisibility(true);
195   //darkGreen -> SetForceSolid(true);
196     
197   darkOrange3 = new G4VisAttributes( G4Colour(205/255. , 102/255. ,  000/255. ));
198   darkOrange3 -> SetVisibility(true);
199   //darkOrange3 -> SetForceSolid(true);
200   
201   skyBlue = new G4VisAttributes( G4Colour(135/255. , 206/255. ,  235/255. ));
202   skyBlue -> SetVisibility(true);
203   //skyBlue -> SetForceSolid(true);
204   
205 
206   // Geometry FINAL COLLIMATOR DEFAULTS
207 
208   G4double defaultOuterRadiusFinalCollimatorIORT = 40. *mm;
209   OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
210 
211   G4double defaultinnerRadiusFinalCollimatorIORT = 35. *mm;
212   innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
213 
214   // DEFAULT DEFINITION OF THE MATERIALS
215   // All elements and compound definition follows the NIST database
216  
217   // ELEMENTS
218   G4bool isotopes = false;
219   G4Material* aluminumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Al", isotopes);
220   //G4Material* tantalumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ta", isotopes); 
221   //G4Material* copperNistAsMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cu", isotopes);
222   G4Element* zincNist = G4NistManager::Instance()->FindOrBuildElement("Zn");
223   G4Element* copperNist = G4NistManager::Instance()->FindOrBuildElement("Cu");
224 
225   // COMPOUND
226   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
227   //G4Material* kaptonNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_KAPTON", isotopes);
228   G4Material* galacticNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Galactic", isotopes);
229   G4Material* PMMANist = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);
230   //G4Material* mylarNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_MYLAR", isotopes);
231   G4Material* titanioNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ti", isotopes); 
232   
233   
234   G4double d; // Density
235   G4int nComponents;// Number of components 
236   G4double fractionmass; // Fraction in mass of an element in a material
237 
238   d = 8.40*g/cm3;   // brass 
239   nComponents = 2;
240   G4Material* brass = new G4Material("Brass", d, nComponents);  
241   brass -> AddElement(zincNist, fractionmass = 30 *perCent);
242   brass -> AddElement(copperNist, fractionmass = 70 *perCent);
243 
244  
245   // MATERIAL ASSIGNMENT
246 
247 
248  // Material of the FINAL COLLIMATOR IORT
249   finalCollimatorMaterialIORT = PMMANist;
250 
251  // Junction 1 FINAL COLLIMATOR IORT
252   Giunz1FinalCollMaterialIORT = PMMANist;
253 
254  // Junction 2 FINAL COLLIMATOR IORT
255   Giunz2FinalCollMaterialIORT = PMMANist;
256  
257  // Junction 3 FINAL COLLIMATOR IORT
258   Giunz3FinalCollMaterialIORT = PMMANist;
259  
260  // Junction 3 FINAL COLLIMATOR Int IORT
261   Giunz3FinalCollMaterialIntIORT = airNist;
262 
263  // Junction 4 FINAL COLLIMATOR IORT
264   Giunz4FinalCollMaterialIORT = PMMANist;
265 
266  // Junction 5 FINAL COLLIMATOR IORT
267   Giunz5FinalCollMaterialIORT = PMMANist;
268 
269  // Block 1 Diameter 30 mm 
270   Blocco1IORTMaterialIORT = PMMANist; 
271 
272  // Block 2 Diameter 30 mm 
273   Blocco2IORTMaterialIORT = PMMANist; 
274 
275  // Block 3 Diameter 30 mm 
276   Blocco3IORTMaterialIORT = PMMANist;
277 
278  // Block Diameter 20 mm 
279   Blocco20mmIORTMaterialIORT = PMMANist;
280 
281  // First Monitor Chamber Lamina Al 1 of 2  
282     CM1_1_2IORTMaterialIORT = aluminumNist;
283 
284  // First Monitor Chamber Lamina Al 2 of 2  
285     CM1_2_2IORTMaterialIORT = aluminumNist;
286 
287  // Second Monitor Chamber Lamina Al 1 of 2  
288     CM2_1_2IORTMaterialIORT = aluminumNist;
289 
290  // Second Monitor Chamber Lamina Al 2 of 2  
291     CM2_2_2IORTMaterialIORT = aluminumNist;
292     
293  // Monitor Chamber Cylinder 
294     CCMIORTMaterialIORT = PMMANist;
295 
296  // Superior Final Part Monitor Chambers
297     PFS1IORTMaterialIORT = PMMANist;
298 
299  // Superior Final Part Monitor Chambers
300     PFS2IORTMaterialIORT = PMMANist;
301 
302  // Superior Final Part Monitor Chambers
303     PFS3IORTMaterialIORT = PMMANist;
304 
305  // Superior Final Part Monitor Chambers Material
306     FTIORTMaterialIORT = titanioNist;
307 
308  // Vacuum Source
309     VSIORTMaterialIORT = galacticNist;
310 
311 }
312 
313 /////////////////////////////////////////////////////////////////////////////
314 void Collimator70BeamLine::ConstructCollimator70BeamLine()
315 { 
316   // -----------------------------
317   // Treatment room - World volume
318   //------------------------------
319   // Treatment room sizes
320   const G4double worldX = 400.0 *cm;
321   const G4double worldY = 400.0 *cm;
322   const G4double worldZ = 400.0 *cm;
323   G4bool isotopes = false;
324  
325   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
326   G4Box* treatmentRoom = new G4Box("TreatmentRoom",worldX,worldY,worldZ);
327   G4LogicalVolume* logicTreatmentRoom = new G4LogicalVolume(treatmentRoom, 
328                                                             airNist, 
329                                                             "logicTreatmentRoom", 
330                   0,0,0);
331   physicalTreatmentRoom = new G4PVPlacement(0,
332               G4ThreeVector(),
333               "physicalTreatmentRoom", 
334               logicTreatmentRoom, 
335               0,false,0);
336  
337 
338   // The treatment room is invisible in the Visualisation
339   logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
340  
341   // Components of the Collimator Beam Line
342 
343   IortBeamLineVacuumSource();
344   IortBeamLineTitaniumWindows();
345   IortBeamLineMonitorChambers();
346   IortBeamLineBlocks() ;
347   IortBeamLineJunctions(); 
348   IortBeamLineFinalCollimator();
349     
350 }
351 
352 
353 void Collimator70BeamLine::IortBeamLineVacuumSource()
354 {
355  // ---------------------------------------------------------------//
356   //                    Vacuum Source                            //
357   // ---------------------------------------------------------------//
358 
359   
360   G4double phi1 = 90. *deg;     
361 
362             
363    G4RotationMatrix rm1;               
364    rm1.rotateY(phi1);
365 
366   const G4double outRadiusVSIORT = 44.75 *mm;
367   const G4double innRadiusVSIORT = 0.*mm;
368   const G4double hightVSIORT = 1. *mm;
369   const G4double startAngleVSIORT = 0.*deg;
370   const G4double spanningAngleVSIORT = 360.*deg;
371   const G4double XPositionVSIORT = -862.797 *mm;
372     
373   solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT, 
374             outRadiusVSIORT,
375             hightVSIORT, 
376             startAngleVSIORT, 
377             spanningAngleVSIORT);
378 
379   G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT, 
380                     VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
381 
382   physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
383              "VSIORT", logVSIORT, physicalTreatmentRoom, false, 0); 
384 
385   logVSIORT -> SetVisAttributes(green);
386 }
387 
388 void Collimator70BeamLine::IortBeamLineTitaniumWindows()
389 {
390 // ---------------------------------------------------------------//
391   //                     Titanium Window                        //
392   // ---------------------------------------------------------------//
393 
394   G4double phi2 = 90. *deg;     
395 
396             
397    G4RotationMatrix rm2;               
398    rm2.rotateY(phi2);
399 
400 
401   const G4double outRadiusFTIORT = 44.75 *mm;
402   const G4double innRadiusFTIORT = 8.5 *mm;
403   const G4double hightFTIORT = 0.006 *mm;
404   const G4double startAngleFTIORT = 0.*deg;
405   const G4double spanningAngleFTIORT = 360.*deg;
406   const G4double XPositionFTIORT = -861.791 *mm;
407 
408   solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT, 
409             outRadiusFTIORT,
410             hightFTIORT, 
411             startAngleFTIORT, 
412             spanningAngleFTIORT);
413 
414   G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT, 
415                     FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
416 
417   physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
418              "FTIORT", logFTIORT, physicalTreatmentRoom, false, 0); 
419 
420   logFTIORT -> SetVisAttributes(yellow);
421 }
422 
423 void Collimator70BeamLine::IortBeamLineMonitorChambers()
424 {
425 
426    G4double phi3 = 90. *deg;     
427 
428      // Matrix definition for a 90 deg rotation. Also used for other volumes       
429    G4RotationMatrix rm3;               
430    rm3.rotateY(phi3);
431 ///////////////////////////////////////////////////////////////////////////////
432 
433   // Monitor Chambers System
434 
435 ///////////////////////////////////////////////////////////////////////////////
436  
437 
438   // ---------------------------------------------------------------//
439   //             Superior Final Part Monitor Chambers   3      //
440   // ---------------------------------------------------------------//
441 
442   const G4double outRadiusPFS3IORT = 44.75 *mm;
443   const G4double innRadiusPFS3IORT = 17.5 *mm;
444   const G4double hightPFS3IORT = 3.03 *mm;
445   const G4double startAnglePFS3IORT = 0.*deg;
446   const G4double spanningAnglePFS3IORT = 360.*deg;
447   const G4double XPositionPFS3IORT = -848.755 *mm;
448 
449   solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT, 
450             outRadiusPFS3IORT,
451             hightPFS3IORT, 
452             startAnglePFS3IORT, 
453             spanningAnglePFS3IORT);
454 
455   G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT, 
456                     PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
457 
458   physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
459              "PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0); 
460 
461   logPFS3IORT -> SetVisAttributes(white);
462 
463   
464   // ---------------------------------------------------------------//
465   //             Superior Final Part Monitor Chambers   2       //
466   // ---------------------------------------------------------------//
467 
468   const G4double outRadiusPFS2IORT = 44.75 *mm;
469   const G4double innRadiusPFS2IORT = 10. *mm;
470   const G4double hightPFS2IORT = 1.47 *mm;
471   const G4double startAnglePFS2IORT = 0.*deg;
472   const G4double spanningAnglePFS2IORT = 360.*deg;
473   const G4double XPositionPFS2IORT = -844.255 *mm;
474 
475   solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT, 
476             outRadiusPFS2IORT,
477             hightPFS2IORT, 
478             startAnglePFS2IORT, 
479             spanningAnglePFS2IORT);
480 
481   G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT, 
482                     PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
483 
484   physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
485              "PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0); 
486 
487   logPFS2IORT -> SetVisAttributes(green);
488 
489   // ---------------------------------------------------------------//
490   //             Superior Final Part Monitor Chambers   1       //
491   // ---------------------------------------------------------------//
492 
493   const G4double outRadiusPFS1IORT = 35. *mm;
494   const G4double innRadiusPFS1IORT = 10. *mm;
495   const G4double hightPFS1IORT = 0.88 *mm;
496   const G4double startAnglePFS1IORT = 0.*deg;
497   const G4double spanningAnglePFS1IORT = 360.*deg;
498   const G4double XPositionPFS1IORT = -841.905 *mm;
499 
500   solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT, 
501             outRadiusPFS1IORT,
502             hightPFS1IORT, 
503             startAnglePFS1IORT, 
504             spanningAnglePFS1IORT);
505 
506   G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT, 
507                     PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
508 
509   physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
510              "PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0); 
511 
512   logPFS1IORT -> SetVisAttributes(green);
513 
514   // ------------------------------------------------//
515   //           Monitor Chambers Cylinder               //
516   // ------------------------------------------------//
517 
518   const G4double outRadiusCCMIORT = 35. *mm;
519   const G4double innRadiusCCMIORT = 10. *mm;
520   const G4double hightCCMIORT = 4.0125 *mm;
521   const G4double startAngleCCMIORT = 0.*deg;
522   const G4double spanningAngleCCMIORT = 360.*deg;
523   const G4double XPositionCCMIORT = -837.0125 *mm;
524 
525   solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT, 
526             outRadiusCCMIORT,
527             hightCCMIORT, 
528             startAngleCCMIORT, 
529             spanningAngleCCMIORT);
530 
531   G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT, 
532                     CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
533 
534   physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
535              "CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0); 
536 
537   logCCMIORT -> SetVisAttributes(green);
538 
539 
540   // ------------------------------------------------//
541   //        Second Monitor Chamber Lamina Al 2 of 2  //
542   // ------------------------------------------------//
543 
544   const G4double outRadiusCM2_2_2IORT = 20. *mm;
545   const G4double innRadiusCM2_2_2IORT = 0. *mm;
546   const G4double hightCM2_2_2IORT = 0.025 *mm;
547   const G4double startAngleCM2_2_2IORT = 0.*deg;
548   const G4double spanningAngleCM2_2_2IORT = 360.*deg;
549   const G4double XPositionCM2_2_2IORT = -841. *mm;
550 
551   solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT, 
552             outRadiusCM2_2_2IORT,
553             hightCM2_2_2IORT, 
554             startAngleCM2_2_2IORT, 
555             spanningAngleCM2_2_2IORT);
556 
557   G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT, 
558                     CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
559 
560   physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
561              "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0); 
562 
563   logCM2_2_2IORT -> SetVisAttributes(green);  
564 
565 
566 // ------------------------------------------------//
567   //        Second Monitor Chamber Lamina Al 1 of 2  //
568   // ------------------------------------------------//
569 
570   const G4double outRadiusCM2_1_2IORT = 20. *mm;
571   const G4double innRadiusCM2_1_2IORT = 0. *mm;
572   const G4double hightCM2_1_2IORT = 0.025 *mm;
573   const G4double startAngleCM2_1_2IORT = 0.*deg;
574   const G4double spanningAngleCM2_1_2IORT = 360.*deg;
575   const G4double XPositionCM2_1_2IORT = -839. *mm;
576 
577   solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT, 
578             outRadiusCM2_1_2IORT,
579             hightCM2_1_2IORT, 
580             startAngleCM2_1_2IORT, 
581             spanningAngleCM2_1_2IORT);
582 
583   G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT, 
584                     CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
585 
586   physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
587              "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0); 
588 
589   logCM2_1_2IORT -> SetVisAttributes(yellow); 
590 
591   // ------------------------------------------------//
592   //        First Monitor Chamber Lamina Al 2 of 2    //
593   // ------------------------------------------------//
594 
595   const G4double outRadiusCM1_2_2IORT = 20. *mm;
596   const G4double innRadiusCM1_2_2IORT = 0. *mm;
597   const G4double hightCM1_2_2IORT = 0.025 *mm;
598   const G4double startAngleCM1_2_2IORT = 0.*deg;
599   const G4double spanningAngleCM1_2_2IORT = 360.*deg;
600   const G4double XPositionCM1_2_2IORT = -837. *mm;
601 
602   solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT, 
603             outRadiusCM1_2_2IORT,
604             hightCM1_2_2IORT, 
605             startAngleCM1_2_2IORT, 
606             spanningAngleCM1_2_2IORT);
607 
608   G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT, 
609                 CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
610 
611   physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
612              "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0); 
613 
614   logCM1_2_2IORT -> SetVisAttributes(yellow);
615   
616   // ------------------------------------------------//
617   //        First Monitor Chamber Lamina Al 1 of 2         //
618   // ------------------------------------------------//
619 
620   const G4double outRadiusCM1_1_2IORT = 20. *mm;
621   const G4double innRadiusCM1_1_2IORT = 0. *mm;
622   const G4double hightCM1_1_2IORT = 0.025 *mm;
623   const G4double startAngleCM1_1_2IORT = 0.*deg;
624   const G4double spanningAngleCM1_1_2IORT = 360.*deg;
625   const G4double XPositionCM1_1_2IORT = -835. *mm;
626 
627   solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT, 
628             outRadiusCM1_1_2IORT,
629             hightCM1_1_2IORT, 
630             startAngleCM1_1_2IORT, 
631             spanningAngleCM1_1_2IORT);
632 
633   G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT, 
634                     CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
635 
636   physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
637              "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0); 
638 
639   logCM1_1_2IORT -> SetVisAttributes(yellow);
640 }
641 
642 void Collimator70BeamLine::IortBeamLineBlocks()
643 {
644 
645    G4double phi4 = 90. *deg;     
646 
647            
648    G4RotationMatrix rm4;               
649    rm4.rotateY(phi4);
650 
651  ///////////////////////////////////////////////////////////////////////////////
652 
653   // IORT BEAM LINE BLOCKS
654   
655 ///////////////////////////////////////////////////////////////////////////////
656 
657   // ------------------------------------------------//
658   //        Block 4       //
659   // ------------------------------------------------//
660 
661   const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
662   const G4double innRadiusBlocco20mmIORT = 10. *mm;
663   const G4double hightBlocco20mmIORT = 3. *mm;
664   const G4double startAngleBlocco20mmIORT = 0.*deg;
665   const G4double spanningAngleBlocco20mmIORT = 360.*deg;
666   const G4double XPositionBlocco20mmIORT = -830. *mm;
667 
668   solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT, 
669             outRadiusBlocco20mmIORT,
670             hightBlocco20mmIORT, 
671             startAngleBlocco20mmIORT, 
672             spanningAngleBlocco20mmIORT);
673 
674   G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT, 
675                     Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
676 
677   physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
678              "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0); 
679 
680   logBlocco20mmIORT -> SetVisAttributes(green);
681 
682 
683   // -----------------------//
684   //        Block 3        //
685   // -----------------------//
686 
687   const G4double outRadiusBlocco3IORT = 36.5 *mm;
688   const G4double innRadiusBlocco3IORT = 15. *mm;
689   const G4double hightBlocco3IORT = 3.5 *mm;
690   const G4double startAngleBlocco3IORT = 0.*deg;
691   const G4double spanningAngleBlocco3IORT = 360.*deg;
692   const G4double XPositionBlocco3IORT = -823.5 *mm;
693 
694   solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT, 
695             outRadiusBlocco3IORT,
696             hightBlocco3IORT, 
697             startAngleBlocco3IORT, 
698             spanningAngleBlocco3IORT);
699 
700   G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT, 
701                     Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
702 
703   physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
704              "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0); 
705 
706   logBlocco3IORT -> SetVisAttributes(yellow);
707 
708  // -----------------------//
709   //        Block 2        //
710   // -----------------------//
711 
712   const G4double outRadiusBlocco2IORT = 41.5 *mm;
713   const G4double innRadiusBlocco2IORT = 15. *mm;
714   const G4double hightBlocco2IORT = 8. *mm;
715   const G4double startAngleBlocco2IORT = 0.*deg;
716   const G4double spanningAngleBlocco2IORT = 360.*deg;
717   const G4double XPositionBlocco2IORT = -812. *mm;
718 
719   solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT, 
720             outRadiusBlocco2IORT,
721             hightBlocco2IORT, 
722             startAngleBlocco2IORT, 
723             spanningAngleBlocco2IORT);
724 
725   G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT, 
726                     Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
727 
728   physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
729              "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0); 
730 
731   logBlocco2IORT -> SetVisAttributes(red);
732 
733   // ----------------------- //
734   //       Block 1          //
735   // ----------------------- //
736 
737   const G4double outRadiusBlocco1IORT = 52.0 *mm;
738   const G4double innRadiusBlocco1IORT = 15. *mm;
739   const G4double hightBlocco1IORT = 8.5 *mm;
740   const G4double startAngleBlocco1IORT = 0.*deg;
741   const G4double spanningAngleBlocco1IORT = 360.*deg;
742   const G4double XPositionBlocco1IORT = -795.5*mm;
743 
744   solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT, 
745             outRadiusBlocco1IORT,
746             hightBlocco1IORT, 
747             startAngleBlocco1IORT, 
748             spanningAngleBlocco1IORT);
749 
750   G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT, 
751                     Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
752 
753   physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
754              "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0); 
755 
756   logBlocco1IORT -> SetVisAttributes(white);
757 }
758 
759 void Collimator70BeamLine::IortBeamLineJunctions()
760 {
761  
762 
763   G4double phi5 = 90. *deg;     
764 
765           
766    G4RotationMatrix rm5;               
767    rm5.rotateY(phi5);
768 // --------------------------------- //
769   // Junction 5 FINAL COLLIMATOR IORT //
770   // --------------------------------- //
771 
772   const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
773   const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
774   const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
775   const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
776   const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
777   const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
778 
779   solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT, 
780             outRadiusGiunz5FinalCollIORT,
781             hightGiunz5FinalCollIORT, 
782             startAngleGiunz5FinalCollIORT, 
783             spanningAngleGiunz5FinalCollIORT);
784 
785   G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT, 
786                     Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
787 
788   physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
789              "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0); 
790 
791   logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
792 
793 // --------------------------------- //
794   // Junction 4 FINAL COLLIMATOR IORT //
795   // --------------------------------- //
796 
797   const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
798   const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
799   const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
800   const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
801   const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
802   const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
803 
804   solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT, 
805             outRadiusGiunz4FinalCollIORT,
806             hightGiunz4FinalCollIORT, 
807             startAngleGiunz4FinalCollIORT, 
808             spanningAngleGiunz4FinalCollIORT);
809 
810   G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT, 
811                     Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
812 
813   physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
814              "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0); 
815 
816   logGiunz4FinalCollIORT -> SetVisAttributes(blue); 
817 
818 
819   
820  // --------------------------------- //
821   // Junction 3 FINAL COLLIMATOR IORT //
822   // --------------------------------- //
823    
824   const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
825   const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
826   const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
827   const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
828   const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
829   const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
830 
831   solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT, 
832             outRadiusGiunz3FinalCollIORT,
833             hightGiunz3FinalCollIORT, 
834             startAngleGiunz3FinalCollIORT, 
835             spanningAngleGiunz3FinalCollIORT);
836 
837   G4LogicalVolume* logicsolidGiunz3FinalCollIORT = new G4LogicalVolume(solidGiunz3FinalCollIORT, 
838                     Giunz3FinalCollMaterialIORT, "Giunz3FinalCollIORT", 0, 0, 0);
839 
840   physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
841              "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0); 
842 
843   logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
844   //  logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::GetInvisible());
845 
846 
847 
848   // --------------------------------- //
849   // Junction 3 FINAL COLLIMATOR IORT internal //
850   // --------------------------------- //
851    
852  
853      
854   solidGiunz3FinalCollIntIORT = new G4Cons("Giunz3FinalCollIntIORT",0.*mm,13.75*mm,0.*mm,22.25*mm,4.25*mm,0.*deg,360.*deg);
855 
856   G4LogicalVolume* logicsolidGiunz3FinalCollIntIORT = new G4LogicalVolume(solidGiunz3FinalCollIntIORT, 
857                     Giunz3FinalCollMaterialIntIORT, "Giunz3FinalCollIntIORT", 0, 0, 0);
858 
859   physiGiunz3FinalCollIntIORT = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT, false, 0); 
860 
861   logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow); 
862 
863 
864 // --------------------------------- //
865   // Junction 2 FINAL COLLIMATOR IORT //
866   // --------------------------------- //
867 
868   const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
869   const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
870   const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
871   const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
872   const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
873   const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
874 
875   solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT, 
876             outRadiusGiunz2FinalCollIORT,
877             hightGiunz2FinalCollIORT, 
878             startAngleGiunz2FinalCollIORT, 
879             spanningAngleGiunz2FinalCollIORT);
880 
881   G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT, 
882                     Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
883 
884   physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
885              "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0); 
886 
887   logGiunz2FinalCollIORT -> SetVisAttributes(red); 
888  
889 // --------------------------------- //
890   // Junction 1 FINAL COLLIMATOR IORT //
891   // --------------------------------- //
892 
893   const G4double outRadiusGiunz1FinalCollIORT = 50. *mm;
894   const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
895   const G4double hightGiunz1FinalCollIORT = 10. *mm;
896   const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
897   const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
898   const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
899    
900   solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT, 
901             outRadiusGiunz1FinalCollIORT,
902             hightGiunz1FinalCollIORT, 
903             startAngleGiunz1FinalCollIORT, 
904             spanningAngleGiunz1FinalCollIORT);
905 
906   G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT, 
907                     Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
908 
909   physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
910              "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0); 
911 
912   logGiunz1FinalCollIORT -> SetVisAttributes(gray); 
913 
914 }
915 
916 void Collimator70BeamLine::IortBeamLineFinalCollimator()
917 {
918 // -----------------------//
919   // FINAL COLLIMATOR IORT  //
920   //------------------------//
921 
922  // const G4double outRadiusFinalCollimatorIORT = 40. *mm;
923  // const G4double innRadiusFinalCollimatorIORT = 35. *mm;
924   const G4double hightFinalCollimatorIORT = 334. *mm;
925   const G4double startAngleFinalCollimatorIORT = 0.*deg;
926   const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
927   const G4double finalCollimatorXPositionIORT = -389.*mm;
928 
929   
930  
931   
932   G4double phi6 = 90. *deg;     
933 
934            
935    G4RotationMatrix rm6;               
936    rm6.rotateY(phi6);
937 
938     
939   solidFinalCollimatorIORT = new G4Tubs("FinalCollimatorIORT", innerRadiusFinalCollimatorIORT, 
940             OuterRadiusFinalCollimatorIORT,
941             hightFinalCollimatorIORT, 
942             startAngleFinalCollimatorIORT, 
943             spanningAngleFinalCollimatorIORT);
944 
945   G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT, 
946                     finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
947 
948   physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
949              "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0); 
950 
951   //  logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::GetInvisible()); 
952   logFinalCollimatorIORT -> SetVisAttributes(darkOrange3);
953 }
954 
955 /////////////////////////////////////////////////////////////////////////////
956 /////////////////////////// MESSENGER ///////////////////////////////////////
957 /////////////////////////////////////////////////////////////////////////////
958 
959 
960 void Collimator70BeamLine::SetInnerRadiusFinalCollimatorIORT(G4double value)
961 {
962   solidFinalCollimatorIORT -> SetInnerRadius(value);
963   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
964   G4cout<<"Inner Radius of the final collimator IORT is (mm):"
965   << solidFinalCollimatorIORT -> GetInnerRadius()/mm
966   << G4endl; 
967 }
968 
969 /////////////////////////////////////////////////////////////////////////
970 
971 void Collimator70BeamLine::SetOuterRadiusFinalCollimatorIORT(G4double value)
972 {
973   solidFinalCollimatorIORT -> SetOuterRadius(value);
974   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
975   G4cout<<"Outer Radius of the final collimator IORT is (mm):"
976   << solidFinalCollimatorIORT -> GetOuterRadius()/mm
977   << G4endl; 
978 }
979 
980 /////////////////////////////////////////////////////////////////////////////
981 
982 
983 
984