Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/iort_therapy/src/Collimator60BeamLine.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 ]

Diff markup

Differences between /examples/advanced/iort_therapy/src/Collimator60BeamLine.cc (Version 11.3.0) and /examples/advanced/iort_therapy/src/Collimator60BeamLine.cc (Version 10.5.p1)


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