Back to home page

EIC code displayed by LXR

 
 

    


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

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 Wollongong, 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 "Collimator60BeamLine.hh"
0057 #include "Collimator60BeamLineMessenger.hh"  
0058 
0059 Collimator60BeamLine::Collimator60BeamLine():
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 collimator60BeamLine geometry
0127   collimatorMessenger = new Collimator60BeamLineMessenger(this);
0128 
0129 }
0130 /////////////////////////////////////////////////////////////////////////////
0131 Collimator60BeamLine::~Collimator60BeamLine()
0132 {
0133   delete collimatorMessenger;
0134   delete iortDetectorConstruction;
0135 }
0136 
0137 /////////////////////////////////////////////////////////////////////////////
0138 
0139 
0140 G4VPhysicalVolume* Collimator60BeamLine::Construct()
0141 { 
0142   // Sets default geometry and materials
0143   SetDefaultDimensions();
0144   
0145   // Construct the whole Collimator Beam Line 
0146   ConstructCollimator60BeamLine();
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 Collimator60BeamLine::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 = 35. *mm;
0210   OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
0211 
0212   G4double defaultinnerRadiusFinalCollimatorIORT = 30. *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 Collimator60BeamLine::ConstructCollimator60BeamLine()
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 Collimator60BeamLine::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 
0390 void Collimator60BeamLine::IortBeamLineTitaniumWindows()
0391 {
0392 // ---------------------------------------------------------------//
0393   //                     Titanium Window                        //
0394   // ---------------------------------------------------------------//
0395 
0396   G4double phi2 = 90. *deg;     
0397 
0398             
0399    G4RotationMatrix rm2;               
0400    rm2.rotateY(phi2);
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 Collimator60BeamLine::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 Collimator60BeamLine::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   
0696   solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT, 
0697                     outRadiusBlocco3IORT,
0698                     hightBlocco3IORT, 
0699                     startAngleBlocco3IORT, 
0700                     spanningAngleBlocco3IORT);
0701 
0702   G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT, 
0703                                   Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
0704 
0705   physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
0706                        "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0); 
0707 
0708   logBlocco3IORT -> SetVisAttributes(yellow);
0709 
0710  // -----------------------//
0711   //        Block 2        //
0712   // -----------------------//
0713 
0714   const G4double outRadiusBlocco2IORT = 41.5 *mm;
0715   const G4double innRadiusBlocco2IORT = 15. *mm;
0716   const G4double hightBlocco2IORT = 8. *mm;
0717   const G4double startAngleBlocco2IORT = 0.*deg;
0718   const G4double spanningAngleBlocco2IORT = 360.*deg;
0719   const G4double XPositionBlocco2IORT = -812. *mm;
0720     
0721   
0722   solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT, 
0723                     outRadiusBlocco2IORT,
0724                     hightBlocco2IORT, 
0725                     startAngleBlocco2IORT, 
0726                     spanningAngleBlocco2IORT);
0727 
0728   G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT, 
0729                                   Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
0730 
0731   physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
0732                        "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0); 
0733 
0734   logBlocco2IORT -> SetVisAttributes(red);
0735 
0736   // ----------------------- //
0737   //       Block 1          //
0738   // ----------------------- //
0739 
0740   const G4double outRadiusBlocco1IORT = 52.0 *mm;
0741   const G4double innRadiusBlocco1IORT = 15. *mm;
0742   const G4double hightBlocco1IORT = 8.5 *mm;
0743   const G4double startAngleBlocco1IORT = 0.*deg;
0744   const G4double spanningAngleBlocco1IORT = 360.*deg;
0745   const G4double XPositionBlocco1IORT = -795.5*mm;
0746 
0747   solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT, 
0748                     outRadiusBlocco1IORT,
0749                     hightBlocco1IORT, 
0750                     startAngleBlocco1IORT, 
0751                     spanningAngleBlocco1IORT);
0752 
0753   G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT, 
0754                                   Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
0755 
0756   physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
0757                        "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0); 
0758 
0759   logBlocco1IORT -> SetVisAttributes(white);
0760 }
0761 
0762 void Collimator60BeamLine::IortBeamLineJunctions()
0763 {
0764  
0765 
0766   G4double phi5 = 90. *deg;     
0767 
0768             
0769    G4RotationMatrix rm5;               
0770    rm5.rotateY(phi5);
0771 
0772   // --------------------------------- //
0773   // Junction 5 FINAL COLLIMATOR IORT //
0774   // --------------------------------- //
0775 
0776   const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
0777   const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
0778   const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
0779   const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
0780   const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
0781   const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
0782 
0783   solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT, 
0784                     outRadiusGiunz5FinalCollIORT,
0785                     hightGiunz5FinalCollIORT, 
0786                     startAngleGiunz5FinalCollIORT, 
0787                     spanningAngleGiunz5FinalCollIORT);
0788 
0789   G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT, 
0790                                   Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
0791 
0792   physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
0793                        "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0); 
0794 
0795   logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
0796 
0797 // --------------------------------- //
0798   // Junction 4 FINAL COLLIMATOR IORT //
0799   // --------------------------------- //
0800 
0801   const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
0802   const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
0803   const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
0804   const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
0805   const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
0806   const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
0807 
0808   solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT, 
0809                     outRadiusGiunz4FinalCollIORT,
0810                     hightGiunz4FinalCollIORT, 
0811                     startAngleGiunz4FinalCollIORT, 
0812                     spanningAngleGiunz4FinalCollIORT);
0813 
0814   G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT, 
0815                                   Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
0816 
0817   physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
0818                        "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0); 
0819 
0820   logGiunz4FinalCollIORT -> SetVisAttributes(blue); 
0821 
0822 
0823   
0824  // --------------------------------- //
0825   // Junction 3 FINAL COLLIMATOR IORT //
0826   // --------------------------------- //
0827    
0828   const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
0829   const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
0830   const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
0831   const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
0832   const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
0833   const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
0834     
0835      
0836   solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT, 
0837                     outRadiusGiunz3FinalCollIORT,
0838                     hightGiunz3FinalCollIORT, 
0839                     startAngleGiunz3FinalCollIORT, 
0840                     spanningAngleGiunz3FinalCollIORT);
0841 
0842   G4LogicalVolume* logicsolidGiunz3FinalCollIORT = new G4LogicalVolume(solidGiunz3FinalCollIORT, 
0843                                   Giunz3FinalCollMaterialIORT, "Giunz3FinalCollIORT", 0, 0, 0);
0844 
0845   physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
0846                        "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0); 
0847 
0848   logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
0849  //  logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::GetInvisible());
0850 
0851 
0852 
0853   // --------------------------------- //
0854   // Junction 3 FINAL COLLIMATOR IORT internal //
0855   // --------------------------------- //
0856    
0857  
0858      
0859   solidGiunz3FinalCollIntIORT = new G4Cons("Giunz3FinalCollIntIORT",0.*mm,13.75*mm,0.*mm,22.25*mm,4.25*mm,0.*deg,360.*deg);
0860 
0861   G4LogicalVolume* logicsolidGiunz3FinalCollIntIORT = new G4LogicalVolume(solidGiunz3FinalCollIntIORT, 
0862                                   Giunz3FinalCollMaterialIntIORT, "Giunz3FinalCollIntIORT", 0, 0, 0);
0863 
0864   physiGiunz3FinalCollIntIORT = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT, false, 0); 
0865 
0866   logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow); 
0867 
0868 
0869 // --------------------------------- //
0870   // Junction 2 FINAL COLLIMATOR IORT //
0871   // --------------------------------- //
0872 
0873   const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
0874   const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
0875   const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
0876   const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
0877   const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
0878   const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
0879 
0880   solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT, 
0881                     outRadiusGiunz2FinalCollIORT,
0882                     hightGiunz2FinalCollIORT, 
0883                     startAngleGiunz2FinalCollIORT, 
0884                     spanningAngleGiunz2FinalCollIORT);
0885 
0886   G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT, 
0887                                   Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
0888 
0889   physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
0890                        "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0); 
0891 
0892   logGiunz2FinalCollIORT -> SetVisAttributes(red); 
0893  
0894 // --------------------------------- //
0895   // Junction 1 FINAL COLLIMATOR IORT //
0896   // --------------------------------- //
0897 
0898   const G4double outRadiusGiunz1FinalCollIORT = 45. *mm;
0899   const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
0900   const G4double hightGiunz1FinalCollIORT = 10. *mm;
0901   const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
0902   const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
0903   const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
0904 
0905   solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT, 
0906                     outRadiusGiunz1FinalCollIORT,
0907                     hightGiunz1FinalCollIORT, 
0908                     startAngleGiunz1FinalCollIORT, 
0909                     spanningAngleGiunz1FinalCollIORT);
0910 
0911   G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT, 
0912                                   Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
0913 
0914   physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
0915                        "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0); 
0916 
0917   logGiunz1FinalCollIORT -> SetVisAttributes(gray);
0918 }
0919 
0920 void Collimator60BeamLine::IortBeamLineFinalCollimator()
0921 {
0922 // -----------------------//
0923   // FINAL COLLIMATOR IORT  //
0924   //------------------------//
0925 
0926  // const G4double OuterRadiusFinalCollimatorIORT = 35. *mm;
0927  // const G4double innerRadiusFinalCollimatorIORT = 30. *mm;
0928   const G4double hightFinalCollimatorIORT = 334. *mm;
0929   const G4double startAngleFinalCollimatorIORT = 0.*deg;
0930   const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
0931   const G4double finalCollimatorXPositionIORT = -389.*mm;
0932 
0933   
0934  
0935   
0936   G4double phi6 = 90. *deg;     
0937 
0938           
0939    G4RotationMatrix rm6;               
0940    rm6.rotateY(phi6);
0941 
0942     
0943   solidFinalCollimatorIORT = new G4Tubs("FinalCollimatorIORT", innerRadiusFinalCollimatorIORT, 
0944                     OuterRadiusFinalCollimatorIORT,
0945                     hightFinalCollimatorIORT, 
0946                     startAngleFinalCollimatorIORT, 
0947                     spanningAngleFinalCollimatorIORT);
0948 
0949   G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT, 
0950                                   finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
0951 
0952   physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
0953                        "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0); 
0954 
0955   //  logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::GetInvisible()); 
0956   logFinalCollimatorIORT -> SetVisAttributes(blue);
0957 }
0958 
0959 /////////////////////////////////////////////////////////////////////////////
0960 /////////////////////////// MESSENGER ///////////////////////////////////////
0961 /////////////////////////////////////////////////////////////////////////////
0962 
0963 
0964 void Collimator60BeamLine::SetInnerRadiusFinalCollimatorIORT(G4double value)
0965 {
0966   solidFinalCollimatorIORT -> SetInnerRadius(value);
0967   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
0968   G4cout<<"Inner Radius of the final collimator IORT is (mm):"
0969     << solidFinalCollimatorIORT -> GetInnerRadius()/mm
0970     << G4endl; 
0971 }
0972 
0973 /////////////////////////////////////////////////////////////////////////
0974 
0975 void Collimator60BeamLine::SetOuterRadiusFinalCollimatorIORT(G4double value)
0976 {
0977   solidFinalCollimatorIORT -> SetOuterRadius(value);
0978   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
0979   G4cout<<"Outer Radius of the final collimator IORT is (mm):"
0980     << solidFinalCollimatorIORT -> GetOuterRadius()/mm
0981     << G4endl; 
0982 }
0983 
0984 
0985 /////////////////////////////////////////////////////////////////////////////
0986 
0987 
0988