Geant4 Cross Reference |
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::Invisible); 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::Invisible); 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::Invisible); 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