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 "Collimator70BeamLine.hh"
0057 #include "Collimator70BeamLineMessenger.hh"  
0058 
0059 Collimator70BeamLine::Collimator70BeamLine():
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 collimator70BeamLine geometry
0127   collimatorMessenger = new Collimator70BeamLineMessenger(this);
0128 
0129 }
0130 /////////////////////////////////////////////////////////////////////////////
0131 Collimator70BeamLine::~Collimator70BeamLine()
0132 {
0133   delete collimatorMessenger;
0134   delete iortDetectorConstruction;
0135 }
0136 
0137 /////////////////////////////////////////////////////////////////////////////
0138 
0139 
0140 G4VPhysicalVolume* Collimator70BeamLine::Construct()
0141 { 
0142   // Sets default geometry and materials
0143   SetDefaultDimensions();
0144   
0145   // Construct the whole Collimator Beam Line 
0146   ConstructCollimator70BeamLine();
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 Collimator70BeamLine::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   // Geometry FINAL COLLIMATOR DEFAULTS
0207 
0208   G4double defaultOuterRadiusFinalCollimatorIORT = 40. *mm;
0209   OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
0210 
0211   G4double defaultinnerRadiusFinalCollimatorIORT = 35. *mm;
0212   innerRadiusFinalCollimatorIORT = defaultinnerRadiusFinalCollimatorIORT;
0213 
0214   // DEFAULT DEFINITION OF THE MATERIALS
0215   // All elements and compound definition follows the NIST database
0216  
0217   // ELEMENTS
0218   G4bool isotopes = false;
0219   G4Material* aluminumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Al", isotopes);
0220   //G4Material* tantalumNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ta", isotopes); 
0221   //G4Material* copperNistAsMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cu", isotopes);
0222   G4Element* zincNist = G4NistManager::Instance()->FindOrBuildElement("Zn");
0223   G4Element* copperNist = G4NistManager::Instance()->FindOrBuildElement("Cu");
0224 
0225   // COMPOUND
0226   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
0227   //G4Material* kaptonNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_KAPTON", isotopes);
0228   G4Material* galacticNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Galactic", isotopes);
0229   G4Material* PMMANist = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);
0230   //G4Material* mylarNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_MYLAR", isotopes);
0231   G4Material* titanioNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_Ti", isotopes); 
0232   
0233   
0234   G4double d; // Density
0235   G4int nComponents;// Number of components 
0236   G4double fractionmass; // Fraction in mass of an element in a material
0237 
0238   d = 8.40*g/cm3;   // brass 
0239   nComponents = 2;
0240   G4Material* brass = new G4Material("Brass", d, nComponents);  
0241   brass -> AddElement(zincNist, fractionmass = 30 *perCent);
0242   brass -> AddElement(copperNist, fractionmass = 70 *perCent);
0243 
0244  
0245   // MATERIAL ASSIGNMENT
0246 
0247 
0248  // Material of the FINAL COLLIMATOR IORT
0249   finalCollimatorMaterialIORT = PMMANist;
0250 
0251  // Junction 1 FINAL COLLIMATOR IORT
0252   Giunz1FinalCollMaterialIORT = PMMANist;
0253 
0254  // Junction 2 FINAL COLLIMATOR IORT
0255   Giunz2FinalCollMaterialIORT = PMMANist;
0256  
0257  // Junction 3 FINAL COLLIMATOR IORT
0258   Giunz3FinalCollMaterialIORT = PMMANist;
0259  
0260  // Junction 3 FINAL COLLIMATOR Int IORT
0261   Giunz3FinalCollMaterialIntIORT = airNist;
0262 
0263  // Junction 4 FINAL COLLIMATOR IORT
0264   Giunz4FinalCollMaterialIORT = PMMANist;
0265 
0266  // Junction 5 FINAL COLLIMATOR IORT
0267   Giunz5FinalCollMaterialIORT = PMMANist;
0268 
0269  // Block 1 Diameter 30 mm 
0270   Blocco1IORTMaterialIORT = PMMANist; 
0271 
0272  // Block 2 Diameter 30 mm 
0273   Blocco2IORTMaterialIORT = PMMANist; 
0274 
0275  // Block 3 Diameter 30 mm 
0276   Blocco3IORTMaterialIORT = PMMANist;
0277 
0278  // Block Diameter 20 mm 
0279   Blocco20mmIORTMaterialIORT = PMMANist;
0280 
0281  // First Monitor Chamber Lamina Al 1 of 2  
0282     CM1_1_2IORTMaterialIORT = aluminumNist;
0283 
0284  // First Monitor Chamber Lamina Al 2 of 2  
0285     CM1_2_2IORTMaterialIORT = aluminumNist;
0286 
0287  // Second Monitor Chamber Lamina Al 1 of 2  
0288     CM2_1_2IORTMaterialIORT = aluminumNist;
0289 
0290  // Second Monitor Chamber Lamina Al 2 of 2  
0291     CM2_2_2IORTMaterialIORT = aluminumNist;
0292     
0293  // Monitor Chamber Cylinder 
0294     CCMIORTMaterialIORT = PMMANist;
0295 
0296  // Superior Final Part Monitor Chambers
0297     PFS1IORTMaterialIORT = PMMANist;
0298 
0299  // Superior Final Part Monitor Chambers
0300     PFS2IORTMaterialIORT = PMMANist;
0301 
0302  // Superior Final Part Monitor Chambers
0303     PFS3IORTMaterialIORT = PMMANist;
0304 
0305  // Superior Final Part Monitor Chambers Material
0306     FTIORTMaterialIORT = titanioNist;
0307 
0308  // Vacuum Source
0309     VSIORTMaterialIORT = galacticNist;
0310 
0311 }
0312 
0313 /////////////////////////////////////////////////////////////////////////////
0314 void Collimator70BeamLine::ConstructCollimator70BeamLine()
0315 { 
0316   // -----------------------------
0317   // Treatment room - World volume
0318   //------------------------------
0319   // Treatment room sizes
0320   const G4double worldX = 400.0 *cm;
0321   const G4double worldY = 400.0 *cm;
0322   const G4double worldZ = 400.0 *cm;
0323   G4bool isotopes = false;
0324  
0325   G4Material* airNist =  G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
0326   G4Box* treatmentRoom = new G4Box("TreatmentRoom",worldX,worldY,worldZ);
0327   G4LogicalVolume* logicTreatmentRoom = new G4LogicalVolume(treatmentRoom, 
0328                                                             airNist, 
0329                                                             "logicTreatmentRoom", 
0330                                 0,0,0);
0331   physicalTreatmentRoom = new G4PVPlacement(0,
0332                         G4ThreeVector(),
0333                         "physicalTreatmentRoom", 
0334                         logicTreatmentRoom, 
0335                         0,false,0);
0336  
0337 
0338   // The treatment room is invisible in the Visualisation
0339   logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
0340  
0341   // Components of the Collimator Beam Line
0342 
0343   IortBeamLineVacuumSource();
0344   IortBeamLineTitaniumWindows();
0345   IortBeamLineMonitorChambers();
0346   IortBeamLineBlocks() ;
0347   IortBeamLineJunctions(); 
0348   IortBeamLineFinalCollimator();
0349     
0350 }
0351 
0352 
0353 void Collimator70BeamLine::IortBeamLineVacuumSource()
0354 {
0355  // ---------------------------------------------------------------//
0356   //                    Vacuum Source                            //
0357   // ---------------------------------------------------------------//
0358 
0359   
0360   G4double phi1 = 90. *deg;     
0361 
0362             
0363    G4RotationMatrix rm1;               
0364    rm1.rotateY(phi1);
0365 
0366   const G4double outRadiusVSIORT = 44.75 *mm;
0367   const G4double innRadiusVSIORT = 0.*mm;
0368   const G4double hightVSIORT = 1. *mm;
0369   const G4double startAngleVSIORT = 0.*deg;
0370   const G4double spanningAngleVSIORT = 360.*deg;
0371   const G4double XPositionVSIORT = -862.797 *mm;
0372     
0373   solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT, 
0374                     outRadiusVSIORT,
0375                     hightVSIORT, 
0376                     startAngleVSIORT, 
0377                     spanningAngleVSIORT);
0378 
0379   G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT, 
0380                                   VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
0381 
0382   physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
0383                        "VSIORT", logVSIORT, physicalTreatmentRoom, false, 0); 
0384 
0385   logVSIORT -> SetVisAttributes(green);
0386 }
0387 
0388 void Collimator70BeamLine::IortBeamLineTitaniumWindows()
0389 {
0390 // ---------------------------------------------------------------//
0391   //                     Titanium Window                        //
0392   // ---------------------------------------------------------------//
0393 
0394   G4double phi2 = 90. *deg;     
0395 
0396             
0397    G4RotationMatrix rm2;               
0398    rm2.rotateY(phi2);
0399 
0400 
0401   const G4double outRadiusFTIORT = 44.75 *mm;
0402   const G4double innRadiusFTIORT = 8.5 *mm;
0403   const G4double hightFTIORT = 0.006 *mm;
0404   const G4double startAngleFTIORT = 0.*deg;
0405   const G4double spanningAngleFTIORT = 360.*deg;
0406   const G4double XPositionFTIORT = -861.791 *mm;
0407 
0408   solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT, 
0409                     outRadiusFTIORT,
0410                     hightFTIORT, 
0411                     startAngleFTIORT, 
0412                     spanningAngleFTIORT);
0413 
0414   G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT, 
0415                                   FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
0416 
0417   physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
0418                        "FTIORT", logFTIORT, physicalTreatmentRoom, false, 0); 
0419 
0420   logFTIORT -> SetVisAttributes(yellow);
0421 }
0422 
0423 void Collimator70BeamLine::IortBeamLineMonitorChambers()
0424 {
0425 
0426    G4double phi3 = 90. *deg;     
0427 
0428      // Matrix definition for a 90 deg rotation. Also used for other volumes       
0429    G4RotationMatrix rm3;               
0430    rm3.rotateY(phi3);
0431 ///////////////////////////////////////////////////////////////////////////////
0432 
0433   // Monitor Chambers System
0434 
0435 ///////////////////////////////////////////////////////////////////////////////
0436  
0437 
0438   // ---------------------------------------------------------------//
0439   //             Superior Final Part Monitor Chambers   3      //
0440   // ---------------------------------------------------------------//
0441 
0442   const G4double outRadiusPFS3IORT = 44.75 *mm;
0443   const G4double innRadiusPFS3IORT = 17.5 *mm;
0444   const G4double hightPFS3IORT = 3.03 *mm;
0445   const G4double startAnglePFS3IORT = 0.*deg;
0446   const G4double spanningAnglePFS3IORT = 360.*deg;
0447   const G4double XPositionPFS3IORT = -848.755 *mm;
0448 
0449   solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT, 
0450                     outRadiusPFS3IORT,
0451                     hightPFS3IORT, 
0452                     startAnglePFS3IORT, 
0453                     spanningAnglePFS3IORT);
0454 
0455   G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT, 
0456                                   PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
0457 
0458   physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
0459                        "PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0); 
0460 
0461   logPFS3IORT -> SetVisAttributes(white);
0462 
0463   
0464   // ---------------------------------------------------------------//
0465   //             Superior Final Part Monitor Chambers   2       //
0466   // ---------------------------------------------------------------//
0467 
0468   const G4double outRadiusPFS2IORT = 44.75 *mm;
0469   const G4double innRadiusPFS2IORT = 10. *mm;
0470   const G4double hightPFS2IORT = 1.47 *mm;
0471   const G4double startAnglePFS2IORT = 0.*deg;
0472   const G4double spanningAnglePFS2IORT = 360.*deg;
0473   const G4double XPositionPFS2IORT = -844.255 *mm;
0474 
0475   solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT, 
0476                     outRadiusPFS2IORT,
0477                     hightPFS2IORT, 
0478                     startAnglePFS2IORT, 
0479                     spanningAnglePFS2IORT);
0480 
0481   G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT, 
0482                                   PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
0483 
0484   physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
0485                        "PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0); 
0486 
0487   logPFS2IORT -> SetVisAttributes(green);
0488 
0489   // ---------------------------------------------------------------//
0490   //             Superior Final Part Monitor Chambers   1       //
0491   // ---------------------------------------------------------------//
0492 
0493   const G4double outRadiusPFS1IORT = 35. *mm;
0494   const G4double innRadiusPFS1IORT = 10. *mm;
0495   const G4double hightPFS1IORT = 0.88 *mm;
0496   const G4double startAnglePFS1IORT = 0.*deg;
0497   const G4double spanningAnglePFS1IORT = 360.*deg;
0498   const G4double XPositionPFS1IORT = -841.905 *mm;
0499 
0500   solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT, 
0501                     outRadiusPFS1IORT,
0502                     hightPFS1IORT, 
0503                     startAnglePFS1IORT, 
0504                     spanningAnglePFS1IORT);
0505 
0506   G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT, 
0507                                   PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
0508 
0509   physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
0510                        "PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0); 
0511 
0512   logPFS1IORT -> SetVisAttributes(green);
0513 
0514   // ------------------------------------------------//
0515   //           Monitor Chambers Cylinder               //
0516   // ------------------------------------------------//
0517 
0518   const G4double outRadiusCCMIORT = 35. *mm;
0519   const G4double innRadiusCCMIORT = 10. *mm;
0520   const G4double hightCCMIORT = 4.0125 *mm;
0521   const G4double startAngleCCMIORT = 0.*deg;
0522   const G4double spanningAngleCCMIORT = 360.*deg;
0523   const G4double XPositionCCMIORT = -837.0125 *mm;
0524 
0525   solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT, 
0526                     outRadiusCCMIORT,
0527                     hightCCMIORT, 
0528                     startAngleCCMIORT, 
0529                     spanningAngleCCMIORT);
0530 
0531   G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT, 
0532                                   CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
0533 
0534   physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
0535                        "CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0); 
0536 
0537   logCCMIORT -> SetVisAttributes(green);
0538 
0539 
0540   // ------------------------------------------------//
0541   //        Second Monitor Chamber Lamina Al 2 of 2  //
0542   // ------------------------------------------------//
0543 
0544   const G4double outRadiusCM2_2_2IORT = 20. *mm;
0545   const G4double innRadiusCM2_2_2IORT = 0. *mm;
0546   const G4double hightCM2_2_2IORT = 0.025 *mm;
0547   const G4double startAngleCM2_2_2IORT = 0.*deg;
0548   const G4double spanningAngleCM2_2_2IORT = 360.*deg;
0549   const G4double XPositionCM2_2_2IORT = -841. *mm;
0550 
0551   solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT, 
0552                     outRadiusCM2_2_2IORT,
0553                     hightCM2_2_2IORT, 
0554                     startAngleCM2_2_2IORT, 
0555                     spanningAngleCM2_2_2IORT);
0556 
0557   G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT, 
0558                                   CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
0559 
0560   physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
0561                        "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0); 
0562 
0563   logCM2_2_2IORT -> SetVisAttributes(green);  
0564 
0565 
0566 // ------------------------------------------------//
0567   //        Second Monitor Chamber Lamina Al 1 of 2  //
0568   // ------------------------------------------------//
0569 
0570   const G4double outRadiusCM2_1_2IORT = 20. *mm;
0571   const G4double innRadiusCM2_1_2IORT = 0. *mm;
0572   const G4double hightCM2_1_2IORT = 0.025 *mm;
0573   const G4double startAngleCM2_1_2IORT = 0.*deg;
0574   const G4double spanningAngleCM2_1_2IORT = 360.*deg;
0575   const G4double XPositionCM2_1_2IORT = -839. *mm;
0576 
0577   solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT, 
0578                     outRadiusCM2_1_2IORT,
0579                     hightCM2_1_2IORT, 
0580                     startAngleCM2_1_2IORT, 
0581                     spanningAngleCM2_1_2IORT);
0582 
0583   G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT, 
0584                                   CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
0585 
0586   physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
0587                        "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0); 
0588 
0589   logCM2_1_2IORT -> SetVisAttributes(yellow); 
0590 
0591   // ------------------------------------------------//
0592   //        First Monitor Chamber Lamina Al 2 of 2    //
0593   // ------------------------------------------------//
0594 
0595   const G4double outRadiusCM1_2_2IORT = 20. *mm;
0596   const G4double innRadiusCM1_2_2IORT = 0. *mm;
0597   const G4double hightCM1_2_2IORT = 0.025 *mm;
0598   const G4double startAngleCM1_2_2IORT = 0.*deg;
0599   const G4double spanningAngleCM1_2_2IORT = 360.*deg;
0600   const G4double XPositionCM1_2_2IORT = -837. *mm;
0601 
0602   solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT, 
0603                     outRadiusCM1_2_2IORT,
0604                     hightCM1_2_2IORT, 
0605                     startAngleCM1_2_2IORT, 
0606                     spanningAngleCM1_2_2IORT);
0607 
0608   G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT, 
0609                               CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
0610 
0611   physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
0612                        "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0); 
0613 
0614   logCM1_2_2IORT -> SetVisAttributes(yellow);
0615   
0616   // ------------------------------------------------//
0617   //        First Monitor Chamber Lamina Al 1 of 2         //
0618   // ------------------------------------------------//
0619 
0620   const G4double outRadiusCM1_1_2IORT = 20. *mm;
0621   const G4double innRadiusCM1_1_2IORT = 0. *mm;
0622   const G4double hightCM1_1_2IORT = 0.025 *mm;
0623   const G4double startAngleCM1_1_2IORT = 0.*deg;
0624   const G4double spanningAngleCM1_1_2IORT = 360.*deg;
0625   const G4double XPositionCM1_1_2IORT = -835. *mm;
0626 
0627   solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT, 
0628                     outRadiusCM1_1_2IORT,
0629                     hightCM1_1_2IORT, 
0630                     startAngleCM1_1_2IORT, 
0631                     spanningAngleCM1_1_2IORT);
0632 
0633   G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT, 
0634                                   CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
0635 
0636   physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
0637                        "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0); 
0638 
0639   logCM1_1_2IORT -> SetVisAttributes(yellow);
0640 }
0641 
0642 void Collimator70BeamLine::IortBeamLineBlocks()
0643 {
0644 
0645    G4double phi4 = 90. *deg;     
0646 
0647            
0648    G4RotationMatrix rm4;               
0649    rm4.rotateY(phi4);
0650 
0651  ///////////////////////////////////////////////////////////////////////////////
0652 
0653   // IORT BEAM LINE BLOCKS
0654   
0655 ///////////////////////////////////////////////////////////////////////////////
0656 
0657   // ------------------------------------------------//
0658   //        Block 4       //
0659   // ------------------------------------------------//
0660 
0661   const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
0662   const G4double innRadiusBlocco20mmIORT = 10. *mm;
0663   const G4double hightBlocco20mmIORT = 3. *mm;
0664   const G4double startAngleBlocco20mmIORT = 0.*deg;
0665   const G4double spanningAngleBlocco20mmIORT = 360.*deg;
0666   const G4double XPositionBlocco20mmIORT = -830. *mm;
0667 
0668   solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT, 
0669                     outRadiusBlocco20mmIORT,
0670                     hightBlocco20mmIORT, 
0671                     startAngleBlocco20mmIORT, 
0672                     spanningAngleBlocco20mmIORT);
0673 
0674   G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT, 
0675                                   Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
0676 
0677   physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
0678                        "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0); 
0679 
0680   logBlocco20mmIORT -> SetVisAttributes(green);
0681 
0682 
0683   // -----------------------//
0684   //        Block 3        //
0685   // -----------------------//
0686 
0687   const G4double outRadiusBlocco3IORT = 36.5 *mm;
0688   const G4double innRadiusBlocco3IORT = 15. *mm;
0689   const G4double hightBlocco3IORT = 3.5 *mm;
0690   const G4double startAngleBlocco3IORT = 0.*deg;
0691   const G4double spanningAngleBlocco3IORT = 360.*deg;
0692   const G4double XPositionBlocco3IORT = -823.5 *mm;
0693 
0694   solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT, 
0695                     outRadiusBlocco3IORT,
0696                     hightBlocco3IORT, 
0697                     startAngleBlocco3IORT, 
0698                     spanningAngleBlocco3IORT);
0699 
0700   G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT, 
0701                                   Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
0702 
0703   physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
0704                        "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0); 
0705 
0706   logBlocco3IORT -> SetVisAttributes(yellow);
0707 
0708  // -----------------------//
0709   //        Block 2        //
0710   // -----------------------//
0711 
0712   const G4double outRadiusBlocco2IORT = 41.5 *mm;
0713   const G4double innRadiusBlocco2IORT = 15. *mm;
0714   const G4double hightBlocco2IORT = 8. *mm;
0715   const G4double startAngleBlocco2IORT = 0.*deg;
0716   const G4double spanningAngleBlocco2IORT = 360.*deg;
0717   const G4double XPositionBlocco2IORT = -812. *mm;
0718 
0719   solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT, 
0720                     outRadiusBlocco2IORT,
0721                     hightBlocco2IORT, 
0722                     startAngleBlocco2IORT, 
0723                     spanningAngleBlocco2IORT);
0724 
0725   G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT, 
0726                                   Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
0727 
0728   physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
0729                        "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0); 
0730 
0731   logBlocco2IORT -> SetVisAttributes(red);
0732 
0733   // ----------------------- //
0734   //       Block 1          //
0735   // ----------------------- //
0736 
0737   const G4double outRadiusBlocco1IORT = 52.0 *mm;
0738   const G4double innRadiusBlocco1IORT = 15. *mm;
0739   const G4double hightBlocco1IORT = 8.5 *mm;
0740   const G4double startAngleBlocco1IORT = 0.*deg;
0741   const G4double spanningAngleBlocco1IORT = 360.*deg;
0742   const G4double XPositionBlocco1IORT = -795.5*mm;
0743 
0744   solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT, 
0745                     outRadiusBlocco1IORT,
0746                     hightBlocco1IORT, 
0747                     startAngleBlocco1IORT, 
0748                     spanningAngleBlocco1IORT);
0749 
0750   G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT, 
0751                                   Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
0752 
0753   physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
0754                        "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0); 
0755 
0756   logBlocco1IORT -> SetVisAttributes(white);
0757 }
0758 
0759 void Collimator70BeamLine::IortBeamLineJunctions()
0760 {
0761  
0762 
0763   G4double phi5 = 90. *deg;     
0764 
0765           
0766    G4RotationMatrix rm5;               
0767    rm5.rotateY(phi5);
0768 // --------------------------------- //
0769   // Junction 5 FINAL COLLIMATOR IORT //
0770   // --------------------------------- //
0771 
0772   const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
0773   const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
0774   const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
0775   const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
0776   const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
0777   const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
0778 
0779   solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT, 
0780                     outRadiusGiunz5FinalCollIORT,
0781                     hightGiunz5FinalCollIORT, 
0782                     startAngleGiunz5FinalCollIORT, 
0783                     spanningAngleGiunz5FinalCollIORT);
0784 
0785   G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT, 
0786                                   Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
0787 
0788   physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
0789                        "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0); 
0790 
0791   logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
0792 
0793 // --------------------------------- //
0794   // Junction 4 FINAL COLLIMATOR IORT //
0795   // --------------------------------- //
0796 
0797   const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
0798   const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
0799   const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
0800   const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
0801   const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
0802   const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
0803 
0804   solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT, 
0805                     outRadiusGiunz4FinalCollIORT,
0806                     hightGiunz4FinalCollIORT, 
0807                     startAngleGiunz4FinalCollIORT, 
0808                     spanningAngleGiunz4FinalCollIORT);
0809 
0810   G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT, 
0811                                   Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
0812 
0813   physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
0814                        "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0); 
0815 
0816   logGiunz4FinalCollIORT -> SetVisAttributes(blue); 
0817 
0818 
0819   
0820  // --------------------------------- //
0821   // Junction 3 FINAL COLLIMATOR IORT //
0822   // --------------------------------- //
0823    
0824   const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
0825   const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
0826   const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
0827   const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
0828   const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
0829   const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
0830 
0831   solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT, 
0832                     outRadiusGiunz3FinalCollIORT,
0833                     hightGiunz3FinalCollIORT, 
0834                     startAngleGiunz3FinalCollIORT, 
0835                     spanningAngleGiunz3FinalCollIORT);
0836 
0837   G4LogicalVolume* logicsolidGiunz3FinalCollIORT = new G4LogicalVolume(solidGiunz3FinalCollIORT, 
0838                                   Giunz3FinalCollMaterialIORT, "Giunz3FinalCollIORT", 0, 0, 0);
0839 
0840   physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
0841                        "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0); 
0842 
0843   logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
0844   //  logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::GetInvisible());
0845 
0846 
0847 
0848   // --------------------------------- //
0849   // Junction 3 FINAL COLLIMATOR IORT internal //
0850   // --------------------------------- //
0851    
0852  
0853      
0854   solidGiunz3FinalCollIntIORT = new G4Cons("Giunz3FinalCollIntIORT",0.*mm,13.75*mm,0.*mm,22.25*mm,4.25*mm,0.*deg,360.*deg);
0855 
0856   G4LogicalVolume* logicsolidGiunz3FinalCollIntIORT = new G4LogicalVolume(solidGiunz3FinalCollIntIORT, 
0857                                   Giunz3FinalCollMaterialIntIORT, "Giunz3FinalCollIntIORT", 0, 0, 0);
0858 
0859   physiGiunz3FinalCollIntIORT = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT, false, 0); 
0860 
0861   logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow); 
0862 
0863 
0864 // --------------------------------- //
0865   // Junction 2 FINAL COLLIMATOR IORT //
0866   // --------------------------------- //
0867 
0868   const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
0869   const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
0870   const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
0871   const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
0872   const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
0873   const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
0874 
0875   solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT, 
0876                     outRadiusGiunz2FinalCollIORT,
0877                     hightGiunz2FinalCollIORT, 
0878                     startAngleGiunz2FinalCollIORT, 
0879                     spanningAngleGiunz2FinalCollIORT);
0880 
0881   G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT, 
0882                                   Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
0883 
0884   physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
0885                        "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0); 
0886 
0887   logGiunz2FinalCollIORT -> SetVisAttributes(red); 
0888  
0889 // --------------------------------- //
0890   // Junction 1 FINAL COLLIMATOR IORT //
0891   // --------------------------------- //
0892 
0893   const G4double outRadiusGiunz1FinalCollIORT = 50. *mm;
0894   const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
0895   const G4double hightGiunz1FinalCollIORT = 10. *mm;
0896   const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
0897   const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
0898   const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
0899    
0900   solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT, 
0901                     outRadiusGiunz1FinalCollIORT,
0902                     hightGiunz1FinalCollIORT, 
0903                     startAngleGiunz1FinalCollIORT, 
0904                     spanningAngleGiunz1FinalCollIORT);
0905 
0906   G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT, 
0907                                   Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
0908 
0909   physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
0910                        "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0); 
0911 
0912   logGiunz1FinalCollIORT -> SetVisAttributes(gray); 
0913 
0914 }
0915 
0916 void Collimator70BeamLine::IortBeamLineFinalCollimator()
0917 {
0918 // -----------------------//
0919   // FINAL COLLIMATOR IORT  //
0920   //------------------------//
0921 
0922  // const G4double outRadiusFinalCollimatorIORT = 40. *mm;
0923  // const G4double innRadiusFinalCollimatorIORT = 35. *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(darkOrange3);
0953 }
0954 
0955 /////////////////////////////////////////////////////////////////////////////
0956 /////////////////////////// MESSENGER ///////////////////////////////////////
0957 /////////////////////////////////////////////////////////////////////////////
0958 
0959 
0960 void Collimator70BeamLine::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 Collimator70BeamLine::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