Back to home page

EIC code displayed by LXR

 
 

    


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

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 "Collimator100BeamLine.hh"
0057 #include "Collimator100BeamLineMessenger.hh"  
0058 
0059 Collimator100BeamLine::Collimator100BeamLine():
0060   physicalTreatmentRoom(0),iortDetectorConstruction(0),
0061   
0062   
0063   solidFinalCollimatorIORT(0),
0064   physiFinalCollimatorIORT(0),
0065 
0066   solidGiunz1FinalCollIORT(0),
0067   physiGiunz1FinalCollIORT(0),
0068 
0069   solidGiunz2FinalCollIORT(0),  
0070   physiGiunz2FinalCollIORT(0),
0071 
0072   solidGiunz3FinalCollIORT(0),
0073   physiGiunz3FinalCollIORT(0),  
0074 
0075   solidGiunz3FinalCollIntIORT(0),
0076   physiGiunz3FinalCollIntIORT(0), 
0077   
0078   solidGiunz4FinalCollIORT(0),
0079   physiGiunz4FinalCollIORT(0),
0080 
0081   solidGiunz5FinalCollIORT(0),
0082   physiGiunz5FinalCollIORT(0),
0083   
0084   solidBlocco1IORT(0),
0085   physiBlocco1IORT(0),
0086 
0087   solidBlocco2IORT(0),
0088   physiBlocco2IORT(0),
0089 
0090   solidBlocco3IORT(0),
0091   physiBlocco3IORT(0),
0092 
0093   solidBlocco20mmIORT(0),
0094   physiBlocco20mmIORT(0),  
0095 
0096   solidCM1_1_2IORT(0),
0097   physiCM1_1_2IORT(0),
0098   
0099   solidCM1_2_2IORT(0),
0100   physiCM1_2_2IORT(0),
0101   
0102   solidCM2_1_2IORT(0),
0103   physiCM2_1_2IORT(0),
0104 
0105   solidCM2_2_2IORT(0),
0106   physiCM2_2_2IORT(0),  
0107 
0108   solidCCMIORT(0),
0109   physiCCMIORT(0),
0110 
0111   solidPFS1IORT(0),
0112   physiPFS1IORT(0),
0113 
0114   solidPFS2IORT(0),
0115   physiPFS2IORT(0),
0116 
0117   solidPFS3IORT(0),
0118   physiPFS3IORT(0),
0119 
0120   solidFTIORT(0),
0121   physiFTIORT(0)
0122 
0123 
0124 {
0125   // Messenger to change parameters of the collimator100BeamLine geometry
0126   collimatorMessenger = new Collimator100BeamLineMessenger(this);
0127 
0128 }
0129 /////////////////////////////////////////////////////////////////////////////
0130 Collimator100BeamLine::~Collimator100BeamLine()
0131 {
0132   delete collimatorMessenger;
0133   delete iortDetectorConstruction;
0134 }
0135 
0136 /////////////////////////////////////////////////////////////////////////////
0137 
0138 
0139 G4VPhysicalVolume* Collimator100BeamLine::Construct()
0140 { 
0141   // Sets default geometry and materials
0142   SetDefaultDimensions();
0143   
0144   // Construct the whole Collimator Beam Line 
0145   ConstructCollimator100BeamLine();
0146 
0147   
0148   // IORTDetectorConstruction builds ONLY the phantom and the detector with its associated ROGeometry
0149   iortDetectorConstruction = new IORTDetectorConstruction(physicalTreatmentRoom); 
0150   
0151   return physicalTreatmentRoom;
0152 }
0153 
0154 // In the following method the DEFAULTS used in the geometry of 
0155 // collimator beam line are provided
0156 // HERE THE USER CAN CHANGE THE GEOMETRY CHARACTERISTICS OF BEAM
0157 // LINE ELEMENTS, ALTERNATIVELY HE/SHE CAN USE THE MACRO FILE (IF A 
0158 // MESSENGER IS PROVIDED)
0159 //
0160 // DEFAULT MATERIAL ARE ALSO PROVIDED   
0161 // and COLOURS ARE ALSO DEFINED
0162 // ----------------------------------------------------------
0163 /////////////////////////////////////////////////////////////////////////////
0164 void Collimator100BeamLine::SetDefaultDimensions()
0165 {
0166 
0167    // Set of coulors that can be used
0168   white = new G4VisAttributes( G4Colour());
0169   white -> SetVisibility(true);
0170   //white -> SetForceSolid(true);
0171     
0172   blue = new G4VisAttributes(G4Colour(0. ,0. ,1.));
0173   blue -> SetVisibility(true);
0174   //blue -> SetForceSolid(true);
0175     
0176   gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
0177   gray-> SetVisibility(true);
0178   //gray-> SetForceSolid(true);
0179     
0180   red = new G4VisAttributes(G4Colour(1. ,0. ,0.));
0181   red-> SetVisibility(true);
0182   //red-> SetForceSolid(true);
0183     
0184   yellow = new G4VisAttributes(G4Colour(1., 1., 0. ));
0185   yellow-> SetVisibility(true);
0186   //yellow-> SetForceSolid(true);
0187     
0188   green = new G4VisAttributes( G4Colour(25/255. , 255/255. ,  25/255. ));
0189   green -> SetVisibility(true);
0190   //green -> SetForceSolid(true);
0191     
0192   darkGreen = new G4VisAttributes( G4Colour(0/255. , 100/255. ,  0/255. ));
0193   darkGreen -> SetVisibility(true);
0194   //darkGreen -> SetForceSolid(true);
0195         
0196   darkOrange3 = new G4VisAttributes( G4Colour(205/255. , 102/255. ,  000/255. ));
0197   darkOrange3 -> SetVisibility(true);
0198   //darkOrange3 -> SetForceSolid(true);
0199     
0200   skyBlue = new G4VisAttributes( G4Colour(135/255. , 206/255. ,  235/255. ));
0201   skyBlue -> SetVisibility(true);
0202   //skyBlue -> SetForceSolid(true);
0203 
0204   
0205 
0206   // Geometry FINAL COLLIMATOR DEFAULTS
0207 
0208   G4double defaultOuterRadiusFinalCollimatorIORT = 55. *mm;
0209   OuterRadiusFinalCollimatorIORT = defaultOuterRadiusFinalCollimatorIORT;
0210 
0211   G4double defaultinnerRadiusFinalCollimatorIORT = 50. *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 Collimator100BeamLine::ConstructCollimator100BeamLine()
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 Collimator100BeamLine::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 = -1062.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   logVSIORT -> SetVisAttributes(green);
0385 }
0386 
0387 void Collimator100BeamLine::IortBeamLineTitaniumWindows()
0388 {
0389 // ---------------------------------------------------------------//
0390   //                     Titanium Window                        //
0391   // ---------------------------------------------------------------//
0392 
0393   G4double phi2 = 90. *deg;     
0394 
0395             
0396    G4RotationMatrix rm2;               
0397    rm2.rotateY(phi2);
0398 
0399 
0400   const G4double outRadiusFTIORT = 44.75 *mm;
0401   const G4double innRadiusFTIORT = 8.5 *mm;
0402   const G4double hightFTIORT = 0.006 *mm;
0403   const G4double startAngleFTIORT = 0.*deg;
0404   const G4double spanningAngleFTIORT = 360.*deg;
0405   const G4double XPositionFTIORT = -1061.791 *mm;
0406     
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 Collimator100BeamLine::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 = -1048.755 *mm;
0448     
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 = -1044.255 *mm;
0475     
0476   
0477   solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT, 
0478                     outRadiusPFS2IORT,
0479                     hightPFS2IORT, 
0480                     startAnglePFS2IORT, 
0481                     spanningAnglePFS2IORT);
0482 
0483   G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT, 
0484                                   PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
0485 
0486   physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
0487                        "PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0); 
0488 
0489   logPFS2IORT -> SetVisAttributes(green);
0490 
0491   // ---------------------------------------------------------------//
0492   //             Superior Final Part Monitor Chambers   1       //
0493   // ---------------------------------------------------------------//
0494 
0495   const G4double outRadiusPFS1IORT = 35. *mm;
0496   const G4double innRadiusPFS1IORT = 10. *mm;
0497   const G4double hightPFS1IORT = 0.88 *mm;
0498   const G4double startAnglePFS1IORT = 0.*deg;
0499   const G4double spanningAnglePFS1IORT = 360.*deg;
0500   const G4double XPositionPFS1IORT = -1041.905 *mm;
0501     
0502   
0503   solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT, 
0504                     outRadiusPFS1IORT,
0505                     hightPFS1IORT, 
0506                     startAnglePFS1IORT, 
0507                     spanningAnglePFS1IORT);
0508 
0509   G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT, 
0510                                   PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
0511 
0512   physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
0513                        "PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0); 
0514 
0515   logPFS1IORT -> SetVisAttributes(green);
0516 
0517   // ------------------------------------------------//
0518   //           Monitor Chambers Cylinder               //
0519   // ------------------------------------------------//
0520 
0521   const G4double outRadiusCCMIORT = 35. *mm;
0522   const G4double innRadiusCCMIORT = 10. *mm;
0523   const G4double hightCCMIORT = 4.0125 *mm;
0524   const G4double startAngleCCMIORT = 0.*deg;
0525   const G4double spanningAngleCCMIORT = 360.*deg;
0526   const G4double XPositionCCMIORT = -1037.0125 *mm;
0527     
0528   
0529   solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT, 
0530                     outRadiusCCMIORT,
0531                     hightCCMIORT, 
0532                     startAngleCCMIORT, 
0533                     spanningAngleCCMIORT);
0534 
0535   G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT, 
0536                                   CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
0537 
0538   physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
0539                        "CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0); 
0540 
0541   logCCMIORT -> SetVisAttributes(green);
0542 
0543 
0544   // ------------------------------------------------//
0545   //        Second Monitor Chamber Lamina Al 2 of 2  //
0546   // ------------------------------------------------//
0547 
0548   const G4double outRadiusCM2_2_2IORT = 20. *mm;
0549   const G4double innRadiusCM2_2_2IORT = 0. *mm;
0550   const G4double hightCM2_2_2IORT = 0.025 *mm;
0551   const G4double startAngleCM2_2_2IORT = 0.*deg;
0552   const G4double spanningAngleCM2_2_2IORT = 360.*deg;
0553   const G4double XPositionCM2_2_2IORT = -1041. *mm;
0554     
0555   
0556   solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT, 
0557                     outRadiusCM2_2_2IORT,
0558                     hightCM2_2_2IORT, 
0559                     startAngleCM2_2_2IORT, 
0560                     spanningAngleCM2_2_2IORT);
0561 
0562   G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT, 
0563                                   CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
0564 
0565   physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
0566                        "CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0); 
0567 
0568   logCM2_2_2IORT -> SetVisAttributes(green);  
0569 
0570 
0571 // ------------------------------------------------//
0572   //        Second Monitor Chamber Lamina Al 1 of 2  //
0573   // ------------------------------------------------//
0574 
0575   const G4double outRadiusCM2_1_2IORT = 20. *mm;
0576   const G4double innRadiusCM2_1_2IORT = 0. *mm;
0577   const G4double hightCM2_1_2IORT = 0.025 *mm;
0578   const G4double startAngleCM2_1_2IORT = 0.*deg;
0579   const G4double spanningAngleCM2_1_2IORT = 360.*deg;
0580   const G4double XPositionCM2_1_2IORT = -1039. *mm;
0581     
0582   
0583   solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT, 
0584                     outRadiusCM2_1_2IORT,
0585                     hightCM2_1_2IORT, 
0586                     startAngleCM2_1_2IORT, 
0587                     spanningAngleCM2_1_2IORT);
0588 
0589   G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT, 
0590                                   CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
0591 
0592   physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
0593                        "CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0); 
0594 
0595   logCM2_1_2IORT -> SetVisAttributes(yellow); 
0596 
0597   // ------------------------------------------------//
0598   //        First Monitor Chamber Lamina Al 2 of 2    //
0599   // ------------------------------------------------//
0600 
0601   const G4double outRadiusCM1_2_2IORT = 20. *mm;
0602   const G4double innRadiusCM1_2_2IORT = 0. *mm;
0603   const G4double hightCM1_2_2IORT = 0.025 *mm;
0604   const G4double startAngleCM1_2_2IORT = 0.*deg;
0605   const G4double spanningAngleCM1_2_2IORT = 360.*deg;
0606   const G4double XPositionCM1_2_2IORT = -1037. *mm;
0607     
0608   
0609   solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT, 
0610                     outRadiusCM1_2_2IORT,
0611                     hightCM1_2_2IORT, 
0612                     startAngleCM1_2_2IORT, 
0613                     spanningAngleCM1_2_2IORT);
0614 
0615   G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT, 
0616                               CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
0617 
0618   physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
0619                        "CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0); 
0620 
0621 
0622   logCM1_2_2IORT -> SetVisAttributes(yellow);
0623   
0624   // ------------------------------------------------//
0625   //        First Monitor Chamber Lamina Al 1 of 2         //
0626   // ------------------------------------------------//
0627 
0628   const G4double outRadiusCM1_1_2IORT = 20. *mm;
0629   const G4double innRadiusCM1_1_2IORT = 0. *mm;
0630   const G4double hightCM1_1_2IORT = 0.025 *mm;
0631   const G4double startAngleCM1_1_2IORT = 0.*deg;
0632   const G4double spanningAngleCM1_1_2IORT = 360.*deg;
0633   const G4double XPositionCM1_1_2IORT = -1035. *mm;
0634   
0635   
0636 
0637   solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT, 
0638                     outRadiusCM1_1_2IORT,
0639                     hightCM1_1_2IORT, 
0640                     startAngleCM1_1_2IORT, 
0641                     spanningAngleCM1_1_2IORT);
0642 
0643   G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT, 
0644                                   CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
0645 
0646   physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
0647                        "CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0); 
0648   logCM1_1_2IORT -> SetVisAttributes(yellow);
0649 }
0650 
0651 void Collimator100BeamLine::IortBeamLineBlocks()
0652 {
0653 
0654    G4double phi4 = 90. *deg;     
0655 
0656             
0657    G4RotationMatrix rm4;               
0658    rm4.rotateY(phi4);
0659 
0660 ///////////////////////////////////////////////////////////////////////////////
0661 
0662   // IORT BEAM LINE BLOCKS
0663   
0664 ///////////////////////////////////////////////////////////////////////////////
0665 
0666   // ------------------------------------------------//
0667   //        Block 4       //
0668   // ------------------------------------------------//
0669 
0670   const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
0671   const G4double innRadiusBlocco20mmIORT = 10. *mm;
0672   const G4double hightBlocco20mmIORT = 3. *mm;
0673   const G4double startAngleBlocco20mmIORT = 0.*deg;
0674   const G4double spanningAngleBlocco20mmIORT = 360.*deg;
0675   const G4double XPositionBlocco20mmIORT = -1030. *mm;
0676     
0677   
0678   solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT, 
0679                     outRadiusBlocco20mmIORT,
0680                     hightBlocco20mmIORT, 
0681                     startAngleBlocco20mmIORT, 
0682                     spanningAngleBlocco20mmIORT);
0683 
0684   G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT, 
0685                                   Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
0686 
0687   physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
0688                        "Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0); 
0689 
0690 
0691   logBlocco20mmIORT -> SetVisAttributes(green);
0692 
0693 
0694   // -----------------------//
0695   //        Block 3        //
0696   // -----------------------//
0697 
0698   const G4double outRadiusBlocco3IORT = 36.5 *mm;
0699   const G4double innRadiusBlocco3IORT = 15. *mm;
0700   const G4double hightBlocco3IORT = 3.5 *mm;
0701   const G4double startAngleBlocco3IORT = 0.*deg;
0702   const G4double spanningAngleBlocco3IORT = 360.*deg;
0703   const G4double XPositionBlocco3IORT = -1023.5 *mm;
0704     
0705   
0706   solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT, 
0707                     outRadiusBlocco3IORT,
0708                     hightBlocco3IORT, 
0709                     startAngleBlocco3IORT, 
0710                     spanningAngleBlocco3IORT);
0711 
0712   G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT, 
0713                                   Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
0714 
0715   physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
0716                        "Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0); 
0717 
0718 
0719   logBlocco3IORT -> SetVisAttributes(yellow);
0720 
0721  // -----------------------//
0722   //        Block 2        //
0723   // -----------------------//
0724 
0725   const G4double outRadiusBlocco2IORT = 41.5 *mm;
0726   const G4double innRadiusBlocco2IORT = 15. *mm;
0727   const G4double hightBlocco2IORT = 8. *mm;
0728   const G4double startAngleBlocco2IORT = 0.*deg;
0729   const G4double spanningAngleBlocco2IORT = 360.*deg;
0730   const G4double XPositionBlocco2IORT = -1012. *mm;
0731     
0732   
0733   solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT, 
0734                     outRadiusBlocco2IORT,
0735                     hightBlocco2IORT, 
0736                     startAngleBlocco2IORT, 
0737                     spanningAngleBlocco2IORT);
0738 
0739   G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT, 
0740                                   Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
0741 
0742   physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
0743                        "Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0); 
0744 
0745 
0746   logBlocco2IORT -> SetVisAttributes(red);
0747 
0748   // ----------------------- //
0749   //       Block 1          //
0750   // ----------------------- //
0751 
0752   const G4double outRadiusBlocco1IORT = 52.0 *mm;
0753   const G4double innRadiusBlocco1IORT = 15. *mm;
0754   const G4double hightBlocco1IORT = 8.5 *mm;
0755   const G4double startAngleBlocco1IORT = 0.*deg;
0756   const G4double spanningAngleBlocco1IORT = 360.*deg;
0757   const G4double XPositionBlocco1IORT = -995.5*mm;
0758     
0759   
0760   solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT, 
0761                     outRadiusBlocco1IORT,
0762                     hightBlocco1IORT, 
0763                     startAngleBlocco1IORT, 
0764                     spanningAngleBlocco1IORT);
0765 
0766   G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT, 
0767                                   Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
0768 
0769   physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
0770                        "Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0); 
0771 
0772 
0773   logBlocco1IORT -> SetVisAttributes(white);
0774  
0775 }
0776 
0777 void Collimator100BeamLine::IortBeamLineJunctions()
0778 {
0779  
0780 
0781   G4double phi5 = 90. *deg;     
0782 
0783        
0784    G4RotationMatrix rm5;               
0785    rm5.rotateY(phi5);
0786 // --------------------------------- //
0787   // Junction 5 FINAL COLLIMATOR IORT //
0788   // --------------------------------- //
0789 
0790   const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
0791   const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
0792   const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
0793   const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
0794   const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
0795   const G4double Giunz5FinalCollXPositionIORT = -983.5 *mm;
0796     
0797   
0798    
0799   solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT, 
0800                     outRadiusGiunz5FinalCollIORT,
0801                     hightGiunz5FinalCollIORT, 
0802                     startAngleGiunz5FinalCollIORT, 
0803                     spanningAngleGiunz5FinalCollIORT);
0804 
0805   G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT, 
0806                                   Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
0807 
0808   physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
0809                        "Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0); 
0810 
0811   logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
0812 
0813 // --------------------------------- //
0814   // Junction 4 FINAL COLLIMATOR IORT //
0815   // --------------------------------- //
0816 
0817   const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
0818   const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
0819   const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
0820   const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
0821   const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
0822   const G4double Giunz4FinalCollXPositionIORT = -971.5 *mm;
0823     
0824  
0825    
0826   solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT, 
0827                     outRadiusGiunz4FinalCollIORT,
0828                     hightGiunz4FinalCollIORT, 
0829                     startAngleGiunz4FinalCollIORT, 
0830                     spanningAngleGiunz4FinalCollIORT);
0831 
0832   G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT, 
0833                                   Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
0834 
0835   physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
0836                        "Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0); 
0837 
0838   logGiunz4FinalCollIORT -> SetVisAttributes(blue); 
0839 
0840 
0841   
0842  // --------------------------------- //
0843   // Junction 3 FINAL COLLIMATOR IORT //
0844   // --------------------------------- //
0845    
0846   const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
0847   const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
0848   const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
0849   const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
0850   const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
0851   const G4double Giunz3FinalCollXPositionIORT = -958.75 *mm;
0852     
0853      
0854   solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT, 
0855                     outRadiusGiunz3FinalCollIORT,
0856                     hightGiunz3FinalCollIORT, 
0857                     startAngleGiunz3FinalCollIORT, 
0858                     spanningAngleGiunz3FinalCollIORT);
0859 
0860   G4LogicalVolume* logicsolidGiunz3FinalCollIORT = new G4LogicalVolume(solidGiunz3FinalCollIORT, 
0861                                   Giunz3FinalCollMaterialIORT, "Giunz3FinalCollIORT", 0, 0, 0);
0862 
0863   physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
0864                        "Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0); 
0865 
0866   logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
0867  //  logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::GetInvisible());
0868 
0869 
0870 
0871   // --------------------------------- //
0872   // Junction 3 FINAL COLLIMATOR IORT internal //
0873   // --------------------------------- //
0874    
0875  
0876      
0877   solidGiunz3FinalCollIntIORT = new G4Cons("Giunz3FinalCollIntIORT",0.*mm,13.75*mm,0.*mm,22.25*mm,4.25*mm,0.*deg,360.*deg);
0878 
0879   G4LogicalVolume* logicsolidGiunz3FinalCollIntIORT = new G4LogicalVolume(solidGiunz3FinalCollIntIORT, 
0880                                   Giunz3FinalCollMaterialIntIORT, "Giunz3FinalCollIntIORT", 0, 0, 0);
0881 
0882   physiGiunz3FinalCollIntIORT = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),"Giunz3FinalCollIntIORT", logicsolidGiunz3FinalCollIntIORT,physiGiunz3FinalCollIORT, false, 0); 
0883 
0884   logicsolidGiunz3FinalCollIntIORT -> SetVisAttributes(yellow); 
0885 
0886 
0887 // --------------------------------- //
0888   // Junction 2 FINAL COLLIMATOR IORT //
0889   // --------------------------------- //
0890 
0891   const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
0892   const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
0893   const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
0894   const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
0895   const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
0896   const G4double Giunz2FinalCollXPositionIORT = -948.75 *mm;
0897     
0898   
0899    
0900   solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT, 
0901                     outRadiusGiunz2FinalCollIORT,
0902                     hightGiunz2FinalCollIORT, 
0903                     startAngleGiunz2FinalCollIORT, 
0904                     spanningAngleGiunz2FinalCollIORT);
0905 
0906   G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT, 
0907                                   Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
0908 
0909   physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
0910                        "Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0); 
0911 
0912   logGiunz2FinalCollIORT -> SetVisAttributes(red); 
0913  
0914 // --------------------------------- //
0915   // Junction 1 FINAL COLLIMATOR IORT //
0916   // --------------------------------- //
0917 
0918   const G4double outRadiusGiunz1FinalCollIORT = 65. *mm;
0919   const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
0920   const G4double hightGiunz1FinalCollIORT = 10. *mm;
0921   const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
0922   const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
0923   const G4double Giunz1FinalCollXPositionIORT = -933.*mm;
0924     
0925   
0926    
0927   solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT, 
0928                     outRadiusGiunz1FinalCollIORT,
0929                     hightGiunz1FinalCollIORT, 
0930                     startAngleGiunz1FinalCollIORT, 
0931                     spanningAngleGiunz1FinalCollIORT);
0932 
0933   G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT, 
0934                                   Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
0935 
0936   physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
0937                        "Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0); 
0938 
0939    logGiunz1FinalCollIORT -> SetVisAttributes(gray); 
0940 
0941 }
0942 
0943 void Collimator100BeamLine::IortBeamLineFinalCollimator()
0944 {
0945 // -----------------------//
0946   // FINAL COLLIMATOR IORT  //
0947   //------------------------//
0948 
0949  // const G4double outRadiusFinalCollimatorIORT = 45. *mm;
0950  // const G4double innRadiusFinalCollimatorIORT = 40. *mm;
0951   const G4double hightFinalCollimatorIORT = 434. *mm;
0952   const G4double startAngleFinalCollimatorIORT = 0.*deg;
0953   const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
0954   const G4double finalCollimatorXPositionIORT = -489.*mm;
0955 
0956   
0957  
0958   
0959   G4double phi6 = 90. *deg;     
0960 
0961            
0962    G4RotationMatrix rm6;               
0963    rm6.rotateY(phi6);
0964 
0965     
0966   solidFinalCollimatorIORT = new G4Tubs("FinalCollimatorIORT", innerRadiusFinalCollimatorIORT, 
0967                     OuterRadiusFinalCollimatorIORT,
0968                     hightFinalCollimatorIORT, 
0969                     startAngleFinalCollimatorIORT, 
0970                     spanningAngleFinalCollimatorIORT);
0971 
0972   G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT, 
0973                                   finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
0974 
0975   physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
0976                        "FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0); 
0977 
0978   //  logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::GetInvisible()); 
0979    logFinalCollimatorIORT -> SetVisAttributes(darkGreen); 
0980 
0981 }
0982 
0983 /////////////////////////////////////////////////////////////////////////////
0984 /////////////////////////// MESSENGER ///////////////////////////////////////
0985 /////////////////////////////////////////////////////////////////////////////
0986 
0987 
0988 void Collimator100BeamLine::SetInnerRadiusFinalCollimatorIORT(G4double value)
0989 {
0990   solidFinalCollimatorIORT -> SetInnerRadius(value);
0991   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
0992   G4cout<<"Inner Radius of the final collimator IORT is (mm):"
0993     << solidFinalCollimatorIORT -> GetInnerRadius()/mm
0994     << G4endl; 
0995 }
0996 
0997 /////////////////////////////////////////////////////////////////////////
0998 
0999 void Collimator100BeamLine::SetOuterRadiusFinalCollimatorIORT(G4double value)
1000 {
1001   solidFinalCollimatorIORT -> SetOuterRadius(value);
1002   G4RunManager::GetRunManager() -> GeometryHasBeenModified();
1003   G4cout<<"Outer Radius of the final collimator IORT is (mm):"
1004     << solidFinalCollimatorIORT -> GetOuterRadius()/mm
1005     << G4endl; 
1006 }
1007 
1008 /////////////////////////////////////////////////////////////////////////////
1009 
1010 
1011