Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-31 09:22:30

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 // This is the *BASIC* version of IORT, a Geant4-based application
0027 //
0028 // Main Authors: G.Russo(a,b), C.Casarino*(c), G.C. Candiano(c), G.A.P. Cirrone(d), F.Romano(d)
0029 // Contributor Authors: S.Guatelli(e)
0030 // Past Authors: G.Arnetta(c), S.E.Mazzaglia(d)
0031 //    
0032 //   (a) Fondazione Istituto San Raffaele G.Giglio, Cefalù, Italy
0033 //   (b) IBFM-CNR , Segrate (Milano), Italy
0034 //   (c) LATO (Laboratorio di Tecnologie Oncologiche), Cefalù, Italy
0035 //   (d) Laboratori Nazionali del Sud of the INFN, Catania, Italy
0036 //   (e) University of Wallongong, Australia
0037 //
0038 //   *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
0039 //////////////////////////////////////////////////////////////////////////////////////////////
0040 
0041 #include "globals.hh"
0042 #include "G4SystemOfUnits.hh"
0043 #include "G4Box.hh"
0044 #include "G4Tubs.hh"
0045 #include "G4Cons.hh"  
0046 #include "G4VisAttributes.hh"
0047 #include "G4Colour.hh"
0048 #include "G4RunManager.hh"
0049 #include "G4LogicalVolume.hh"
0050 #include "G4PVPlacement.hh"
0051 #include "G4RotationMatrix.hh"
0052 #include "G4NistManager.hh"
0053 #include "G4NistElementBuilder.hh"
0054 #include "G4SubtractionSolid.hh"   
0055 #include "IORTDetectorConstruction.hh" 
0056 #include "Collimator80BeamLine.hh"
0057 #include "Collimator80BeamLineMessenger.hh" 
0058 
0059 Collimator80BeamLine::Collimator80BeamLine():
0060   physicalTreatmentRoom(0),iortDetectorConstruction(0),
0061   
0062   
0063 
0064   solidFinalCollimatorIORT(0),
0065   physiFinalCollimatorIORT(0),
0066 
0067   solidGiunz1FinalCollIORT(0),
0068   physiGiunz1FinalCollIORT(0),
0069 
0070   solidGiunz2FinalCollIORT(0),  
0071   physiGiunz2FinalCollIORT(0),
0072 
0073   solidGiunz3FinalCollIORT(0),
0074   physiGiunz3FinalCollIORT(0),  
0075 
0076   solidGiunz3FinalCollIntIORT(0),
0077   physiGiunz3FinalCollIntIORT(0), 
0078   
0079   solidGiunz4FinalCollIORT(0),
0080   physiGiunz4FinalCollIORT(0),
0081 
0082   solidGiunz5FinalCollIORT(0),
0083   physiGiunz5FinalCollIORT(0),
0084   
0085   solidBlocco1IORT(0),
0086   physiBlocco1IORT(0),
0087 
0088   solidBlocco2IORT(0),
0089   physiBlocco2IORT(0),
0090 
0091   solidBlocco3IORT(0),
0092   physiBlocco3IORT(0),
0093 
0094   solidBlocco20mmIORT(0),
0095   physiBlocco20mmIORT(0),  
0096 
0097   solidCM1_1_2IORT(0),
0098   physiCM1_1_2IORT(0),
0099   
0100   solidCM1_2_2IORT(0),
0101   physiCM1_2_2IORT(0),
0102   
0103   solidCM2_1_2IORT(0),
0104   physiCM2_1_2IORT(0),
0105 
0106   solidCM2_2_2IORT(0),
0107   physiCM2_2_2IORT(0),  
0108 
0109   solidCCMIORT(0),
0110   physiCCMIORT(0),
0111 
0112   solidPFS1IORT(0),
0113   physiPFS1IORT(0),
0114 
0115   solidPFS2IORT(0),
0116   physiPFS2IORT(0),
0117 
0118   solidPFS3IORT(0),
0119   physiPFS3IORT(0),
0120 
0121   solidFTIORT(0),
0122   physiFTIORT(0)
0123 
0124 
0125 {
0126   // Messenger to change parameters of the collimator80BeamLine geometry
0127   collimatorMessenger = new Collimator80BeamLineMessenger(this);
0128 
0129 }
0130 /////////////////////////////////////////////////////////////////////////////
0131 Collimator80BeamLine::~Collimator80BeamLine()
0132 {
0133   delete collimatorMessenger;
0134   delete iortDetectorConstruction;
0135 }
0136 
0137 /////////////////////////////////////////////////////////////////////////////
0138 
0139 
0140 G4VPhysicalVolume* Collimator80BeamLine::Construct()
0141 { 
0142   // Sets default geometry and materials
0143   SetDefaultDimensions();
0144   
0145   // Construct the whole Collimator Beam Line 
0146   ConstructCollimator80BeamLine();
0147 
0148   
0149   // IORTDetectorConstruction builds ONLY the phantom and the detector with its associated ROGeometry
0150   iortDetectorConstruction = new IORTDetectorConstruction(physicalTreatmentRoom); 
0151   
0152   return physicalTreatmentRoom;
0153 }
0154 
0155 // In the following method the DEFAULTS used in the geometry of 
0156 // collimator beam line are provided
0157 // HERE THE USER CAN CHANGE THE GEOMETRY CHARACTERISTICS OF BEAM
0158 // LINE ELEMENTS, ALTERNATIVELY HE/SHE CAN USE THE MACRO FILE (IF A 
0159 // MESSENGER IS PROVIDED)
0160 //
0161 // DEFAULT MATERIAL ARE ALSO PROVIDED   
0162 // and COLOURS ARE ALSO DEFINED
0163 // ----------------------------------------------------------
0164 /////////////////////////////////////////////////////////////////////////////
0165 void Collimator80BeamLine::SetDefaultDimensions()
0166 {
0167 
0168    // Set of coulors that can be used
0169   white = new G4VisAttributes( G4Colour());
0170   white -> SetVisibility(true);
0171   //white -> SetForceSolid(true);
0172     
0173   blue = new G4VisAttributes(G4Colour(0. ,0. ,1.));
0174   blue -> SetVisibility(true);
0175   //blue -> SetForceSolid(true);
0176     
0177   gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
0178   gray-> SetVisibility(true);
0179   //gray-> SetForceSolid(true);
0180     
0181   red = new G4VisAttributes(G4Colour(1. ,0. ,0.));
0182   red-> SetVisibility(true);
0183   //red-> SetForceSolid(true);
0184     
0185   yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
0186   yellow-> SetVisibility(true);
0187   //yellow-> SetForceSolid(true);
0188     
0189   green = new G4VisAttributes( G4Colour(25/255. , 255/255. ,  25/255. ));
0190   green -> SetVisibility(true);
0191   //green -> SetForceSolid(true);
0192     
0193   darkGreen = new G4VisAttributes( G4Colour(0/255. , 100/255. ,  0/255. ));
0194   darkGreen -> SetVisibility(true);
0195   //darkGreen -> SetForceSolid(true);
0196         
0197   darkOrange3 = new G4VisAttributes( G4Colour(205/255. , 102/255. ,  000/255. ));
0198   darkOrange3 -> SetVisibility(true);
0199   //darkOrange3 -> SetForceSolid(true);
0200     
0201   skyBlue = new G4VisAttributes( G4Colour(135/255. , 206/255. ,  235/255. ));
0202   skyBlue -> SetVisibility(true);
0203   //skyBlue -> SetForceSolid(true);
0204 
0205   
0206 
0207   // Geometry FINAL COLLIMATOR DEFAULTS
0208 
0209   G4double defaultOuterRadiusFinalCollimatorIORT = 45. *mm;
0210   OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
0211 
0212   G4double defaultinnerRadiusFinalCollimatorIORT = 40. *mm;
0213   innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
0214 
0215   // DEFAULT DEFINITION OF THE MATERIALS
0216   // All elements and compound definition follows the NIST database
0217  
0218   // ELEMENTS
0219   G4bool isotopes = false;
0220   G4Material* aluminumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Al", isotopes);
0221   //G4Material* tantalumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ta", isotopes); 
0222   //G4Material* copperNistAsMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cu", isotopes);
0223   G4Element* zincNist = G4NistManager::Instance()->FindOrBuildElement("Zn");
0224   G4Element* copperNist = G4NistManager::Instance()->FindOrBuildElement("Cu");
0225 
0226   // COMPOUND
0227   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
0228   //G4Material* kaptonNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_KAPTON", isotopes);
0229   G4Material* galacticNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Galactic", isotopes);
0230   G4Material* PMMANist = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);
0231   //G4Material* mylarNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_MYLAR", isotopes);
0232   G4Material* titanioNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ti", isotopes); 
0233   
0234   
0235   G4double d; // Density
0236   G4int nComponents;// Number of components 
0237   G4double fractionmass; // Fraction in mass of an element in a material
0238 
0239   d = 8.40*g/cm3;   // brass 
0240   nComponents = 2;
0241   G4Material* brass = new G4Material("Brass", d, nComponents);  
0242   brass -> AddElement(zincNist, fractionmass = 30 *perCent);
0243   brass -> AddElement(copperNist, fractionmass = 70 *perCent);
0244 
0245  
0246   // MATERIAL ASSIGNMENT
0247 
0248 
0249 // Material of the FINAL COLLIMATOR IORT
0250   finalCollimatorMaterialIORT = PMMANist;
0251 
0252  // Junction 1 FINAL COLLIMATOR IORT
0253   Giunz1FinalCollMaterialIORT = PMMANist;
0254 
0255  // Junction 2 FINAL COLLIMATOR IORT
0256   Giunz2FinalCollMaterialIORT = PMMANist;
0257  
0258  // Junction 3 FINAL COLLIMATOR IORT
0259   Giunz3FinalCollMaterialIORT = PMMANist;
0260  
0261  // Junction 3 FINAL COLLIMATOR Int IORT
0262   Giunz3FinalCollMaterialIntIORT = airNist;
0263 
0264  // Junction 4 FINAL COLLIMATOR IORT
0265   Giunz4FinalCollMaterialIORT = PMMANist;
0266 
0267  // Junction 5 FINAL COLLIMATOR IORT
0268   Giunz5FinalCollMaterialIORT = PMMANist;
0269 
0270  // Block 1 Diameter 30 mm 
0271   Blocco1IORTMaterialIORT = PMMANist; 
0272 
0273  // Block 2 Diameter 30 mm 
0274   Blocco2IORTMaterialIORT = PMMANist; 
0275 
0276  // Block 3 Diameter 30 mm 
0277   Blocco3IORTMaterialIORT = PMMANist;
0278 
0279  // Block Diameter 20 mm 
0280   Blocco20mmIORTMaterialIORT = PMMANist;
0281 
0282  // First Monitor Chamber Lamina Al 1 of 2  
0283     CM1_1_2IORTMaterialIORT = aluminumNist;
0284 
0285  // First Monitor Chamber Lamina Al 2 of 2  
0286     CM1_2_2IORTMaterialIORT = aluminumNist;
0287 
0288  // Second Monitor Chamber Lamina Al 1 of 2  
0289     CM2_1_2IORTMaterialIORT = aluminumNist;
0290 
0291  // Second Monitor Chamber Lamina Al 2 of 2  
0292     CM2_2_2IORTMaterialIORT = aluminumNist;
0293     
0294  // Monitor Chamber Cylinder 
0295     CCMIORTMaterialIORT = PMMANist;
0296 
0297  // Superior Final Part Monitor Chambers
0298     PFS1IORTMaterialIORT = PMMANist;
0299 
0300  // Superior Final Part Monitor Chambers
0301     PFS2IORTMaterialIORT = PMMANist;
0302 
0303  // Superior Final Part Monitor Chambers
0304     PFS3IORTMaterialIORT = PMMANist;
0305 
0306  // Superior Final Part Monitor Chambers Material
0307     FTIORTMaterialIORT = titanioNist;
0308 
0309  // Vacuum Source
0310     VSIORTMaterialIORT = galacticNist;
0311 
0312 }
0313 
0314 /////////////////////////////////////////////////////////////////////////////
0315 void Collimator80BeamLine::ConstructCollimator80BeamLine()
0316 { 
0317   // -----------------------------
0318   // Treatment room - World volume
0319   //------------------------------
0320   // Treatment room sizes
0321   const G4double worldX = 400.0 *cm;
0322   const G4double worldY = 400.0 *cm;
0323   const G4double worldZ = 400.0 *cm;
0324   G4bool isotopes = false;
0325  
0326   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
0327   G4Box* treatmentRoom = new G4Box("TreatmentRoom",worldX,worldY,worldZ);
0328   G4LogicalVolume* logicTreatmentRoom = new G4LogicalVolume(treatmentRoom, 
0329                                                             airNist, 
0330                                                             "logicTreatmentRoom", 
0331                                 0,0,0);
0332   physicalTreatmentRoom = new G4PVPlacement(0,
0333                         G4ThreeVector(),
0334                         "physicalTreatmentRoom", 
0335                         logicTreatmentRoom, 
0336                         0,false,0);
0337  
0338 
0339   // The treatment room is invisible in the Visualisation
0340   logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
0341  
0342   // Components of the Collimator Beam Line
0343 
0344   IortBeamLineVacuumSource();
0345   IortBeamLineTitaniumWindows();
0346   IortBeamLineMonitorChambers();
0347   IortBeamLineBlocks() ;
0348   IortBeamLineJunctions(); 
0349   IortBeamLineFinalCollimator();
0350     
0351 }
0352 
0353 
0354 void Collimator80BeamLine::IortBeamLineVacuumSource()
0355 {
0356  // ---------------------------------------------------------------//
0357   //                     Vacuum Source                             //
0358   // ---------------------------------------------------------------//
0359 
0360   
0361   G4double phi1 = 90. *deg;     
0362 
0363             
0364    G4RotationMatrix rm1;               
0365    rm1.rotateY(phi1);
0366 
0367   const G4double outRadiusVSIORT = 44.75 *mm;
0368   const G4double innRadiusVSIORT = 0.*mm;
0369   const G4double hightVSIORT = 1. *mm;
0370   const G4double startAngleVSIORT = 0.*deg;
0371   const G4double spanningAngleVSIORT = 360.*deg;
0372   const G4double XPositionVSIORT = -862.797 *mm;
0373     
0374   solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT, 
0375                     outRadiusVSIORT,
0376                     hightVSIORT, 
0377                     startAngleVSIORT, 
0378                     spanningAngleVSIORT);
0379 
0380   G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT, 
0381                                   VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
0382 
0383   physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
0384                        "VSIORT", logVSIORT, physicalTreatmentRoom, false, 0); 
0385 
0386   logVSIORT -> SetVisAttributes(green);
0387 }
0388 
0389 void Collimator80BeamLine::IortBeamLineTitaniumWindows()
0390 {
0391 // ---------------------------------------------------------------//
0392   //                     Titanium Window                        //
0393   // ---------------------------------------------------------------//
0394 
0395   G4double phi2 = 90. *deg;     
0396 
0397             
0398    G4RotationMatrix rm2;               
0399    rm2.rotateY(phi2);
0400 
0401 
0402   const G4double outRadiusFTIORT = 44.75 *mm;
0403   const G4double innRadiusFTIORT = 8.5 *mm;
0404   const G4double hightFTIORT = 0.006 *mm;
0405   const G4double startAngleFTIORT = 0.*deg;
0406   const G4double spanningAngleFTIORT = 360.*deg;
0407   const G4double XPositionFTIORT = -861.791 *mm;
0408 
0409   solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT, 
0410                     outRadiusFTIORT,
0411                     hightFTIORT, 
0412                     startAngleFTIORT, 
0413                     spanningAngleFTIORT);
0414 
0415   G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT, 
0416                                   FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
0417 
0418   physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
0419                        "FTIORT", logFTIORT, physicalTreatmentRoom, false, 0); 
0420 
0421   logFTIORT -> SetVisAttributes(yellow);
0422 }
0423 
0424 void Collimator80BeamLine::IortBeamLineMonitorChambers()
0425 {
0426 
0427    G4double phi3 = 90. *deg;     
0428 
0429      // Matrix definition for a 90 deg rotation. Also used for other volumes       
0430    G4RotationMatrix rm3;               
0431    rm3.rotateY(phi3);
0432 ///////////////////////////////////////////////////////////////////////////////
0433 
0434   // Monitor Chambers System
0435 
0436 ///////////////////////////////////////////////////////////////////////////////
0437  
0438 
0439   // ---------------------------------------------------------------//
0440   //             Superior Final Part Monitor Chambers   3      //
0441   // ---------------------------------------------------------------//
0442 
0443   const G4double outRadiusPFS3IORT = 44.75 *mm;
0444   const G4double innRadiusPFS3IORT = 17.5 *mm;
0445   const G4double hightPFS3IORT = 3.03 *mm;
0446   const G4double startAnglePFS3IORT = 0.*deg;
0447   const G4double spanningAnglePFS3IORT = 360.*deg;
0448   const G4double XPositionPFS3IORT = -848.755 *mm;
0449 
0450   solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT, 
0451                     outRadiusPFS3IORT,
0452                     hightPFS3IORT, 
0453                     startAnglePFS3IORT, 
0454                     spanningAnglePFS3IORT);
0455 
0456   G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT, 
0457                                   PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
0458 
0459   physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
0460                        "PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0); 
0461 
0462   logPFS3IORT -> SetVisAttributes(white);
0463 
0464   
0465   // ---------------------------------------------------------------//
0466   //             Superior Final Part Monitor Chambers   2       //
0467   // ---------------------------------------------------------------//
0468 
0469   const G4double outRadiusPFS2IORT = 44.75 *mm;
0470   const G4double innRadiusPFS2IORT = 10. *mm;
0471   const G4double hightPFS2IORT = 1.47 *mm;
0472   const G4double startAnglePFS2IORT = 0.*deg;
0473   const G4double spanningAnglePFS2IORT = 360.*deg;
0474   const G4double XPositionPFS2IORT = -844.255 *mm;
0475 
0476   solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT, 
0477                     outRadiusPFS2IORT,
0478                     hightPFS2IORT, 
0479                     startAnglePFS2IORT, 
0480                     spanningAnglePFS2IORT);
0481 
0482   G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT, 
0483                                   PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
0484 
0485   physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
0486                        "PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0); 
0487 
0488   logPFS2IORT -> SetVisAttributes(green);
0489 
0490   // ---------------------------------------------------------------//
0491   //             Superior Final Part Monitor Chambers   1       //
0492   // ---------------------------------------------------------------//
0493 
0494   const G4double outRadiusPFS1IORT = 35. *mm;
0495   const G4double innRadiusPFS1IORT = 10. *mm;
0496   const G4double hightPFS1IORT = 0.88 *mm;
0497   const G4double startAnglePFS1IORT = 0.*deg;
0498   const G4double spanningAnglePFS1IORT = 360.*deg;
0499   const G4double XPositionPFS1IORT = -841.905 *mm;
0500 
0501   solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT, 
0502                     outRadiusPFS1IORT,
0503                     hightPFS1IORT, 
0504                     startAnglePFS1IORT, 
0505                     spanningAnglePFS1IORT);
0506 
0507   G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT, 
0508                                   PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
0509 
0510   physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
0511                        "PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0); 
0512 
0513   logPFS1IORT -> SetVisAttributes(green);
0514 
0515   // ------------------------------------------------//
0516   //           Monitor Chambers Cylinder               //
0517   // ------------------------------------------------//
0518 
0519   const G4double outRadiusCCMIORT = 35. *mm;
0520   const G4double innRadiusCCMIORT = 10. *mm;
0521   const G4double hightCCMIORT = 4.0125 *mm;
0522   const G4double startAngleCCMIORT = 0.*deg;
0523   const G4double spanningAngleCCMIORT = 360.*deg;
0524   const G4double XPositionCCMIORT = -837.0125 *mm;
0525 
0526   solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT, 
0527                     outRadiusCCMIORT,
0528                     hightCCMIORT, 
0529                     startAngleCCMIORT, 
0530                     spanningAngleCCMIORT);
0531 
0532   G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT, 
0533                                   CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
0534 
0535   physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
0536                        "CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0); 
0537 
0538   logCCMIORT -> SetVisAttributes(green);
0539 
0540 
0541   // ------------------------------------------------//
0542   //        Second Monitor Chamber Lamina Al 2 of 2 //
0543   // ------------------------------------------------//
0544 
0545   const G4double outRadiusCM2_2_2IORT = 20. *mm;
0546   const G4double innRadiusCM2_2_2IORT = 0. *mm;
0547   const G4double hightCM2_2_2IORT = 0.025 *mm;
0548   const G4double startAngleCM2_2_2IORT = 0.*deg;
0549   const G4double spanningAngleCM2_2_2IORT = 360.*deg;
0550   const G4double XPositionCM2_2_2IORT = -841. *mm;
0551 
0552   solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT, 
0553                     outRadiusCM2_2_2IORT,
0554                     hightCM2_2_2IORT, 
0555                     startAngleCM2_2_2IORT, 
0556                     spanningAngleCM2_2_2IORT);
0557 
0558   G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT, 
0559                                   CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
0560 
0561   physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
0562                        "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0); 
0563 
0564   logCM2_2_2IORT -> SetVisAttributes(green);  
0565 
0566 
0567 // ------------------------------------------------//
0568   //        Second Monitor Chamber Lamina Al 1 of 2  //
0569   // ------------------------------------------------//
0570 
0571   const G4double outRadiusCM2_1_2IORT = 20. *mm;
0572   const G4double innRadiusCM2_1_2IORT = 0. *mm;
0573   const G4double hightCM2_1_2IORT = 0.025 *mm;
0574   const G4double startAngleCM2_1_2IORT = 0.*deg;
0575   const G4double spanningAngleCM2_1_2IORT = 360.*deg;
0576   const G4double XPositionCM2_1_2IORT = -839. *mm;
0577 
0578   solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT, 
0579                     outRadiusCM2_1_2IORT,
0580                     hightCM2_1_2IORT, 
0581                     startAngleCM2_1_2IORT, 
0582                     spanningAngleCM2_1_2IORT);
0583 
0584   G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT, 
0585                                   CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
0586 
0587   physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
0588                        "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0); 
0589 
0590   logCM2_1_2IORT -> SetVisAttributes(yellow); 
0591 
0592   // ------------------------------------------------//
0593   //        First Monitor Chamber Lamina Al 2 of 2   //
0594   // ------------------------------------------------//
0595 
0596   const G4double outRadiusCM1_2_2IORT = 20. *mm;
0597   const G4double innRadiusCM1_2_2IORT = 0. *mm;
0598   const G4double hightCM1_2_2IORT = 0.025 *mm;
0599   const G4double startAngleCM1_2_2IORT = 0.*deg;
0600   const G4double spanningAngleCM1_2_2IORT = 360.*deg;
0601   const G4double XPositionCM1_2_2IORT = -837. *mm;
0602 
0603   solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT, 
0604                     outRadiusCM1_2_2IORT,
0605                     hightCM1_2_2IORT, 
0606                     startAngleCM1_2_2IORT, 
0607                     spanningAngleCM1_2_2IORT);
0608 
0609   G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT, 
0610                               CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
0611 
0612   physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
0613                        "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0); 
0614 
0615   logCM1_2_2IORT -> SetVisAttributes(yellow);
0616   
0617   // ------------------------------------------------//
0618   //        First Monitor Chamber Lamina Al 1 of 2         //
0619   // ------------------------------------------------//
0620 
0621   const G4double outRadiusCM1_1_2IORT = 20. *mm;
0622   const G4double innRadiusCM1_1_2IORT = 0. *mm;
0623   const G4double hightCM1_1_2IORT = 0.025 *mm;
0624   const G4double startAngleCM1_1_2IORT = 0.*deg;
0625   const G4double spanningAngleCM1_1_2IORT = 360.*deg;
0626   const G4double XPositionCM1_1_2IORT = -835. *mm;
0627 
0628   solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT, 
0629                     outRadiusCM1_1_2IORT,
0630                     hightCM1_1_2IORT, 
0631                     startAngleCM1_1_2IORT, 
0632                     spanningAngleCM1_1_2IORT);
0633 
0634   G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT, 
0635                                   CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
0636 
0637   physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
0638                        "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
0639 
0640   logCM1_1_2IORT -> SetVisAttributes(yellow);
0641 }
0642 
0643 void Collimator80BeamLine::IortBeamLineBlocks()
0644 {
0645 
0646    G4double phi4 = 90. *deg;     
0647 
0648         
0649    G4RotationMatrix rm4;               
0650    rm4.rotateY(phi4);
0651 
0652 ///////////////////////////////////////////////////////////////////////////////
0653 
0654   // IORT BEAM LINE BLOCKS
0655   
0656 ///////////////////////////////////////////////////////////////////////////////
0657 
0658   // ------------------------------------------------//
0659   //        Block 4       //
0660   // ------------------------------------------------//
0661 
0662   const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
0663   const G4double innRadiusBlocco20mmIORT = 10. *mm;
0664   const G4double hightBlocco20mmIORT = 3. *mm;
0665   const G4double startAngleBlocco20mmIORT = 0.*deg;
0666   const G4double spanningAngleBlocco20mmIORT = 360.*deg;
0667   const G4double XPositionBlocco20mmIORT = -830. *mm;
0668 
0669   solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT, 
0670                     outRadiusBlocco20mmIORT,
0671                     hightBlocco20mmIORT, 
0672                     startAngleBlocco20mmIORT, 
0673                     spanningAngleBlocco20mmIORT);
0674 
0675   G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT, 
0676                                   Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
0677 
0678   physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
0679                        "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0); 
0680 
0681   logBlocco20mmIORT -> SetVisAttributes(green);
0682 
0683 
0684   // -----------------------//
0685   //        Block 3        //
0686   // -----------------------//
0687 
0688   const G4double outRadiusBlocco3IORT = 36.5 *mm;
0689   const G4double innRadiusBlocco3IORT = 15. *mm;
0690   const G4double hightBlocco3IORT = 3.5 *mm;
0691   const G4double startAngleBlocco3IORT = 0.*deg;
0692   const G4double spanningAngleBlocco3IORT = 360.*deg;
0693   const G4double XPositionBlocco3IORT = -823.5 *mm;
0694 
0695   solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT, 
0696                     outRadiusBlocco3IORT,
0697                     hightBlocco3IORT, 
0698                     startAngleBlocco3IORT, 
0699                     spanningAngleBlocco3IORT);
0700 
0701   G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT, 
0702                                   Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
0703 
0704   physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
0705                        "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0); 
0706 
0707   logBlocco3IORT -> SetVisAttributes(yellow);
0708 
0709  // -----------------------//
0710   //        Block 2        //
0711   // -----------------------//
0712 
0713   const G4double outRadiusBlocco2IORT = 41.5 *mm;
0714   const G4double innRadiusBlocco2IORT = 15. *mm;
0715   const G4double hightBlocco2IORT = 8. *mm;
0716   const G4double startAngleBlocco2IORT = 0.*deg;
0717   const G4double spanningAngleBlocco2IORT = 360.*deg;
0718   const G4double XPositionBlocco2IORT = -812. *mm;
0719 
0720   solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT, 
0721                     outRadiusBlocco2IORT,
0722                     hightBlocco2IORT, 
0723                     startAngleBlocco2IORT, 
0724                     spanningAngleBlocco2IORT);
0725 
0726   G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT, 
0727                                   Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
0728 
0729   physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
0730                        "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0); 
0731 
0732   logBlocco2IORT -> SetVisAttributes(red);
0733 
0734   // ----------------------- //
0735   //       Block 1          //
0736   // ----------------------- //
0737 
0738   const G4double outRadiusBlocco1IORT = 52.0 *mm;
0739   const G4double innRadiusBlocco1IORT = 15. *mm;
0740   const G4double hightBlocco1IORT = 8.5 *mm;
0741   const G4double startAngleBlocco1IORT = 0.*deg;
0742   const G4double spanningAngleBlocco1IORT = 360.*deg;
0743   const G4double XPositionBlocco1IORT = -795.5*mm;
0744 
0745   solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT, 
0746                     outRadiusBlocco1IORT,
0747                     hightBlocco1IORT, 
0748                     startAngleBlocco1IORT, 
0749                     spanningAngleBlocco1IORT);
0750 
0751   G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT, 
0752                                   Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
0753 
0754   physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
0755                        "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0); 
0756 
0757   logBlocco1IORT -> SetVisAttributes(white);
0758 }
0759 
0760 void Collimator80BeamLine::IortBeamLineJunctions()
0761 {
0762  
0763 
0764   G4double phi5 = 90. *deg;     
0765 
0766          
0767    G4RotationMatrix rm5;               
0768    rm5.rotateY(phi5);
0769 // --------------------------------- //
0770   // Junction 5 FINAL COLLIMATOR IORT //
0771   // --------------------------------- //
0772 
0773   const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
0774   const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
0775   const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
0776   const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
0777   const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
0778   const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
0779 
0780   solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT, 
0781                     outRadiusGiunz5FinalCollIORT,
0782                     hightGiunz5FinalCollIORT, 
0783                     startAngleGiunz5FinalCollIORT, 
0784                     spanningAngleGiunz5FinalCollIORT);
0785 
0786   G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT, 
0787                                   Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
0788 
0789   physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
0790                        "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0); 
0791 
0792   logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
0793 
0794 // --------------------------------- //
0795   // Junction 4 FINAL COLLIMATOR IORT //
0796   // --------------------------------- //
0797 
0798   const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
0799   const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
0800   const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
0801   const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
0802   const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
0803   const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
0804 
0805   solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT, 
0806                     outRadiusGiunz4FinalCollIORT,
0807                     hightGiunz4FinalCollIORT, 
0808                     startAngleGiunz4FinalCollIORT, 
0809                     spanningAngleGiunz4FinalCollIORT);
0810 
0811   G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT, 
0812                                   Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
0813 
0814   physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
0815                        "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0); 
0816 
0817   logGiunz4FinalCollIORT -> SetVisAttributes(blue); 
0818 
0819 
0820   
0821  // --------------------------------- //
0822   // Junction 3 FINAL COLLIMATOR IORT //
0823   // --------------------------------- //
0824    
0825   const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
0826   const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
0827   const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
0828   const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
0829   const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
0830   const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
0831 
0832   solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT, 
0833                     outRadiusGiunz3FinalCollIORT,
0834                     hightGiunz3FinalCollIORT, 
0835                     startAngleGiunz3FinalCollIORT, 
0836                     spanningAngleGiunz3FinalCollIORT);
0837 
0838   G4LogicalVolume* logicsolidGiunz3FinalCollIORT = new G4LogicalVolume(solidGiunz3FinalCollIORT, 
0839                                   Giunz3FinalCollMaterialIORT, "Giunz3FinalCollIORT", 0, 0, 0);
0840 
0841   physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
0842                        "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0); 
0843 
0844   logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
0845   //  logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::GetInvisible());
0846 
0847 
0848 
0849   // --------------------------------- //
0850   // Junction 3 FINAL COLLIMATOR IORT internal //
0851   // --------------------------------- //
0852    
0853  
0854      
0855   solidGiunz3FinalCollIntIORT = new G4Cons("Giunz3FinalCollIntIORT",0.*mm,13.75*mm,0.*mm,22.25*mm,4.25*mm,0.*deg,360.*deg);
0856 
0857   G4LogicalVolume* logicsolidGiunz3FinalCollIntIORT = new G4LogicalVolume(solidGiunz3FinalCollIntIORT, 
0858                                   Giunz3FinalCollMaterialIntIORT, "Giunz3FinalCollIntIORT", 0, 0, 0);
0859 
0860   physiGiunz3FinalCollIntIORT = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT, false, 0); 
0861 
0862   logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow); 
0863 
0864 
0865 // --------------------------------- //
0866   // Junction 2 FINAL COLLIMATOR IORT //
0867   // --------------------------------- //
0868 
0869   const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
0870   const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
0871   const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
0872   const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
0873   const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
0874   const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
0875 
0876   solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT, 
0877                     outRadiusGiunz2FinalCollIORT,
0878                     hightGiunz2FinalCollIORT, 
0879                     startAngleGiunz2FinalCollIORT, 
0880                     spanningAngleGiunz2FinalCollIORT);
0881 
0882   G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT, 
0883                                   Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
0884 
0885   physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
0886                        "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0); 
0887 
0888   logGiunz2FinalCollIORT -> SetVisAttributes(red); 
0889  
0890 // --------------------------------- //
0891   // Junction 1 FINAL COLLIMATOR IORT //
0892   // --------------------------------- //
0893 
0894   const G4double outRadiusGiunz1FinalCollIORT = 55. *mm;
0895   const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
0896   const G4double hightGiunz1FinalCollIORT = 10. *mm;
0897   const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
0898   const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
0899   const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
0900 
0901   solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT, 
0902                     outRadiusGiunz1FinalCollIORT,
0903                     hightGiunz1FinalCollIORT, 
0904                     startAngleGiunz1FinalCollIORT, 
0905                     spanningAngleGiunz1FinalCollIORT);
0906 
0907   G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT, 
0908                                   Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
0909 
0910   physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
0911                        "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0); 
0912 
0913   logGiunz1FinalCollIORT -> SetVisAttributes(gray); 
0914 }
0915 
0916 void Collimator80BeamLine::IortBeamLineFinalCollimator()
0917 {
0918 // -----------------------//
0919   // FINAL COLLIMATOR IORT  //
0920   //------------------------//
0921 
0922  // const G4double outRadiusFinalCollimatorIORT = 45. *mm;
0923  // const G4double innRadiusFinalCollimatorIORT = 40. *mm;
0924   const G4double hightFinalCollimatorIORT = 334. *mm;
0925   const G4double startAngleFinalCollimatorIORT = 0.*deg;
0926   const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
0927   const G4double finalCollimatorXPositionIORT = -389.*mm;
0928 
0929   
0930  
0931   
0932   G4double phi6 = 90. *deg;     
0933 
0934          
0935    G4RotationMatrix rm6;               
0936    rm6.rotateY(phi6);
0937 
0938     
0939   solidFinalCollimatorIORT = new G4Tubs("FinalCollimatorIORT", innerRadiusFinalCollimatorIORT, 
0940                     OuterRadiusFinalCollimatorIORT,
0941                     hightFinalCollimatorIORT, 
0942                     startAngleFinalCollimatorIORT, 
0943                     spanningAngleFinalCollimatorIORT);
0944 
0945   G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT, 
0946                                   finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
0947 
0948   physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
0949                        "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0); 
0950 
0951   //  logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::GetInvisible()); 
0952   logFinalCollimatorIORT -> SetVisAttributes(red); 
0953 }
0954 
0955 /////////////////////////////////////////////////////////////////////////////
0956 /////////////////////////// MESSENGER ///////////////////////////////////////
0957 /////////////////////////////////////////////////////////////////////////////
0958 
0959 
0960 void Collimator80BeamLine::SetInnerRadiusFinalCollimatorIORT(G4double value)
0961 {
0962   solidFinalCollimatorIORT -> SetInnerRadius(value);
0963   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
0964   G4cout<<"Inner Radius of the final collimator IORT is (mm):"
0965     << solidFinalCollimatorIORT -> GetInnerRadius()/mm
0966     << G4endl; 
0967 }
0968 
0969 /////////////////////////////////////////////////////////////////////////
0970 
0971 void Collimator80BeamLine::SetOuterRadiusFinalCollimatorIORT(G4double value)
0972 {
0973   solidFinalCollimatorIORT -> SetOuterRadius(value);
0974   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
0975   G4cout<<"Outer Radius of the final collimator IORT is (mm):"
0976     << solidFinalCollimatorIORT -> GetOuterRadius()/mm
0977     << G4endl; 
0978 }
0979 
0980 /////////////////////////////////////////////////////////////////////////////
0981 
0982 
0983