Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/iort_therapy/src/Collimator50BeamLine.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/Collimator50BeamLine.cc (Version 11.3.0) and /examples/advanced/iort_therapy/src/Collimator50BeamLine.cc (Version 10.4)


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