Geant4 Cross Reference

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

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

Diff markup

Differences between /examples/advanced/iort_therapy/src/Collimator70BeamLine.cc (Version 11.3.0) and /examples/advanced/iort_therapy/src/Collimator70BeamLine.cc (Version 11.0.p2)


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