52 physicalTreatmentRoom(0), hadrontherapyDetectorConstruction(0),
 
   53 physiBeamLineSupport(0), physiBeamLineCover(0), physiBeamLineCover2(0), 
 
   55 physiFirstMonitorLayer1(0), physiFirstMonitorLayer2(0),
 
   56 physiFirstMonitorLayer3(0), physiFirstMonitorLayer4(0),
 
   57 physiNozzleSupport(0), physiHoleNozzleSupport(0),
 
   58 physiSecondHoleNozzleSupport(0),
 
   59 solidFinalCollimator(0),
 
   60 physiFinalCollimator(0)
 
   65   static G4String ROGeometryName = 
"DetectorROGeometry";
 
   70   G4cout << 
"Going to register Parallel world...";
 
  122         white -> SetVisibility(
true);
 
  123         white -> SetForceSolid(
true);
 
  126         blue -> SetVisibility(
true);
 
  127         blue -> SetForceSolid(
true);
 
  130         gray-> SetVisibility(
true);
 
  131         gray-> SetForceSolid(
true);
 
  134         red-> SetVisibility(
true);
 
  135         red-> SetForceSolid(
true);
 
  138         yellow-> SetVisibility(
true);
 
  139         yellow-> SetForceSolid(
true);
 
  142         green -> SetVisibility(
true);
 
  143         green -> SetForceSolid(
true);
 
  154         skyBlue -> SetVisibility(
true);
 
  155         skyBlue -> SetForceSolid(
true);
 
  160         G4double defaultVacuumZoneXSize = 80.5325 *
mm;
 
  170         G4double defaultVacuumZoneXPosition = -1855.5075 *
mm;
 
  184         G4double defaultKaptonWindowXPosition = 80.5075*
mm;
 
  189         G4double defaultFirstScatteringFoilXSize = 0.025 *
mm;
 
  192         G4double defaultFirstScatteringFoilYSize = 105.0   *
mm;
 
  195         G4double defaultFirstScatteringFoilZSize = 105   *
mm;
 
  198         G4double defaultFirstScatteringFoilXPosition = 0.0 *
mm;
 
  220         G4double defaultStopperXPosition = -1675.0 *
mm;
 
  235         G4double defaultSecondScatteringFoilXSize = 0.025 *
mm;  
 
  238         G4double defaultSecondScatteringFoilYSize = 105.0   *
mm;
 
  241         G4double defaultSecondScatteringFoilZSize = 105.0   *
mm;
 
  244         G4double defaultSecondScatteringFoilXPosition = defaultStopperXPosition + defaultHeightStopper + defaultSecondScatteringFoilXSize/2;
 
  247         G4double defaultSecondScatteringFoilYPosition =  0 *
mm;
 
  250         G4double defaultSecondScatteringFoilZPosition =  0 *
mm;
 
  256         G4double defaultinnerRadiusFinalCollimator = 12.5 *
mm;
 
  342         G4Box* treatmentRoom = 
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
 
  345                                                                                                                           "logicTreatmentRoom", 
 
  349                                                                                           "physicalTreatmentRoom", 
 
  372         const G4double beamLineSupportXSize = 1.5*
m;
 
  374         const G4double beamLineSupportZSize = 600.*
mm;
 
  376         const G4double beamLineSupportXPosition = -1745.09 *
mm;
 
  377         const G4double beamLineSupportYPosition = -230. *
mm; 
 
  378         const G4double beamLineSupportZPosition = 0.*
mm;
 
  380         G4Box* beamLineSupport = 
new G4Box(
"BeamLineSupport", 
 
  381                                                                            beamLineSupportXSize, 
 
  382                                                                            beamLineSupportYSize, 
 
  383                                                                            beamLineSupportZSize);
 
  389                                                                                                                           beamLineSupportYPosition,
 
  390                                                                                                                           beamLineSupportZPosition),
 
  392                                                                                          logicBeamLineSupport, 
 
  397         logicBeamLineSupport -> SetVisAttributes(
gray);
 
  402         const G4double beamLineCoverXSize = 1.5*
m;
 
  406         const G4double beamLineCoverXPosition = -1745.09 *
mm;
 
  407         const G4double beamLineCoverYPosition = -1000.*
mm; 
 
  408         const G4double beamLineCoverZPosition = 610.*
mm;
 
  410         G4Box* beamLineCover = 
new G4Box(
"BeamLineCover",
 
  420                                                                                                                         beamLineCoverYPosition,
 
  421                                                                                                                         beamLineCoverZPosition),
 
  433                                                                                                                          beamLineCoverYPosition,
 
  434                                                                                                                          - beamLineCoverZPosition),
 
  442         logicBeamLineCover -> SetVisAttributes(
blue);
 
  488                                                                                                                                         "FirstScatteringFoil");
 
  492                                                                                                  "FirstScatteringFoil", 
 
  493                                                                                                  logicFirstScatteringFoil, 
 
  497         logicFirstScatteringFoil -> SetVisAttributes(
skyBlue);
 
  506         G4Box* solidKaptonWindow = 
new G4Box(
"KaptonWindow", 
 
  516                                                                                   "KaptonWindow", logicKaptonWindow,
 
  517                                                                                   physiVacuumZone, 
false,       0); 
 
  519         logicKaptonWindow -> SetVisAttributes(
darkOrange3);
 
  574                                                                                                                                          "SecondScatteringFoil");
 
  579                                                                                                   "SeconScatteringFoil", 
 
  580                                                                                                   logicSecondScatteringFoil, 
 
  585         logicSecondScatteringFoil -> SetVisAttributes(
skyBlue);
 
  608         const G4double monitor1XPosition = -1450.474956 *
mm;
 
  609         const G4double monitor2XPosition = -4.500011*
mm;
 
  610         const G4double monitor4XPosition = 4.500011*
mm;
 
  612         G4Box* solidFirstMonitorLayer1 = 
new G4Box(
"FirstMonitorLayer1", 
 
  619                                                                                                                                    "FirstMonitorLayer1");
 
  623                                                                                                 "FirstMonitorLayer1", 
 
  624                                                                                                 logicFirstMonitorLayer1, 
 
  629         G4Box* solidFirstMonitorLayer2 = 
new G4Box(
"FirstMonitorLayer2", 
 
  636                                                                                                                                    "FirstMonitorLayer2");
 
  639                                                                                                 "FirstMonitorLayer2", 
 
  640                                                                                                 logicFirstMonitorLayer2, 
 
  645         G4Box* solidFirstMonitorLayer3 = 
new G4Box(
"FirstMonitorLayer3", 
 
  652                                                                                                                                    "FirstMonitorLayer3");
 
  657                                                                                                 logicFirstMonitorLayer3, 
 
  662         G4Box* solidFirstMonitorLayer4 = 
new G4Box(
"FirstMonitorLayer4", 
 
  669                                                                                                                                    "FirstMonitorLayer4");
 
  672                                                                                                 "FirstMonitorLayer4",
 
  673                                                                                                 logicFirstMonitorLayer4,
 
  676         logicFirstMonitorLayer3 -> SetVisAttributes(
white);
 
  700         const G4double nozzleSupportXPosition = -558. *
mm;
 
  707         G4Box* solidNozzleSupport = 
new G4Box(
"NozzleSupport", 
 
  723         logicNozzleSupport -> SetVisAttributes(
yellow);
 
  727         const G4double innerRadiusHoleNozzleSupport = 18.*
mm;
 
  728         const G4double outerRadiusHoleNozzleSupport = 21.5 *
mm;
 
  730         const G4double hightHoleNozzleSupportFirst = nozzleSupportXSize;
 
  731         const G4double hightHoleNozzleSupport = 113.0*
mm;
 
  732         const G4double startAngleHoleNozzleSupport = 0.*
deg;
 
  733         const G4double spanningAngleHoleNozzleSupport = 360.*
deg;
 
  734         const G4double holeNozzleSupportXPosition = -415.5 *
mm;
 
  735         G4Tubs* solidNozzleSupportHole = 
new G4Tubs(
"NozzleSupportHole1",       innerRadiusHoleNozzleSupport, 
 
  736                                                                                                 outerRadiusHoleNozzleSupport,
 
  737                                                                                                 hightHoleNozzleSupportFirst, 
 
  738                                                                                                 startAngleHoleNozzleSupport, 
 
  739                                                                                                 spanningAngleHoleNozzleSupport);
 
  743                                                                                                                           "NozzleSupportHole1");
 
  746                                                                                            "HoleNozzleSupportHole1", 
 
  747                                                                                            logicNozzleSupportHole, 
 
  750         G4Tubs* solidHoleNozzleSupport = 
new G4Tubs(
"HoleNozzleSupport", 
 
  751                                                                                                 innerRadiusHoleNozzleSupport, 
 
  752                                                                                                 outerRadiusHoleNozzleSupport,
 
  753                                                                                                 hightHoleNozzleSupport, 
 
  754                                                                                                 startAngleHoleNozzleSupport, 
 
  755                                                                                                 spanningAngleHoleNozzleSupport);
 
  764                                                                                            logicHoleNozzleSupport, 
 
  766         logicNozzleSupportHole -> SetVisAttributes(
darkOrange3);                
 
  767         logicHoleNozzleSupport -> SetVisAttributes(
darkOrange3);
 
  772         const G4double innerRadiusSecondHoleNozzleSupport = 0.*
mm;
 
  773         const G4double outerRadiusSecondHoleNozzleSupport = 18.*
mm;
 
  774         const G4double hightSecondHoleNozzleSupport = 29.5 *
mm;
 
  775         const G4double startAngleSecondHoleNozzleSupport = 0.*
deg;
 
  776         const G4double spanningAngleSecondHoleNozzleSupport = 360.*
deg;
 
  778         G4Tubs* solidSecondHoleNozzleSupport = 
new G4Tubs(
"SecondHoleNozzleSupport",
 
  779                                                                                                           innerRadiusSecondHoleNozzleSupport,
 
  780                                                                                                           outerRadiusSecondHoleNozzleSupport, 
 
  781                                                                                                           hightSecondHoleNozzleSupport,
 
  782                                                                                                           startAngleSecondHoleNozzleSupport, 
 
  783                                                                                                           spanningAngleSecondHoleNozzleSupport);
 
  787                                                                                                                                                 "SecondHoleNozzleSupport",
 
  793                                                                                                          "SecondHoleNozzleSupport",
 
  794                                                                                                          logicSecondHoleNozzleSupport, 
 
  799         logicHoleNozzleSupport -> SetVisAttributes(
darkOrange3); 
 
  808         const G4double outerRadiusFinalCollimator = 21.5*
mm;
 
  811         const G4double spanningAngleFinalCollimator = 360.*
deg;
 
  813         const G4double finalCollimatorXPosition = -299.0 *
mm;  
 
  823                                                                           outerRadiusFinalCollimator,
 
  824                                                                           hightFinalCollimator, 
 
  825                                                                           startAngleFinalCollimator, 
 
  826                                                                           spanningAngleFinalCollimator);
 
  838         logicFinalCollimator -> SetVisAttributes(
yellow); 
 
G4Material * finalCollimatorMaterial
 
G4double innerRadiusFinalCollimator
 
G4double kaptonWindowZSize
 
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
 
G4Material * holeNozzleSupportMaterial
 
CLHEP::Hep3Vector G4ThreeVector
 
CLHEP::HepRotation G4RotationMatrix
 
G4double secondScatteringFoilYPosition
 
G4Tubs * solidFinalCollimator
 
HadrontherapyDetectorConstruction * hadrontherapyDetectorConstruction
 
G4Material * layer2MonitorChamberMaterial
 
G4double firstScatteringFoilZSize
 
G4VPhysicalVolume * physiKaptonWindow
 
G4Material * layer3MonitorChamberMaterial
 
G4Material * seconHoleNozzleSupportMaterial
 
G4double firstScatteringFoilYSize
 
G4VPhysicalVolume * physiFirstMonitorLayer4
 
G4VPhysicalVolume * physiStopper
 
G4Material * beamLineSupportMaterial
 
G4VPhysicalVolume * Construct()
 
G4VPhysicalVolume * physiBeamLineSupport
 
G4VPhysicalVolume * physiHoleNozzleSupport
 
G4VPhysicalVolume * physiNozzleSupportHole
 
G4Material * firstScatteringFoilMaterial
 
G4double startAngleStopper
 
G4Material * secondScatteringFoilMaterial
 
void HadrontherapyBeamLineSupport()
 
static G4NistManager * Instance()
 
G4double secondScatteringFoilXSize
 
void HadrontherapyBeamNozzle()
 
void RegisterParallelWorld(G4VUserParallelWorld *)
 
G4double vacuumZoneXPosition
 
HadrontherapyDetectorROGeometry * RO
 
void SetDefaultDimensions()
 
G4double stopperZPosition
 
G4double firstScatteringFoilXSize
 
G4double secondScatteringFoilZPosition
 
G4double innerRadiusStopper
 
G4VPhysicalVolume * physicalTreatmentRoom
 
G4GLOB_DLL std::ostream G4cout
 
G4VisAttributes * darkGreen
 
G4Material * layer1MonitorChamberMaterial
 
G4double spanningAngleStopper
 
G4VPhysicalVolume * physiFinalCollimator
 
G4VPhysicalVolume * physiSecondScatteringFoil
 
G4VPhysicalVolume * physiBeamLineCover
 
static const double perCent
 
G4Box * firstScatteringFoil
 
G4VPhysicalVolume * physiFirstMonitorLayer3
 
void HadrontherapyBeamFinalCollimator()
 
G4VisAttributes * skyBlue
 
G4VisAttributes * darkOrange3
 
G4VPhysicalVolume * physiNozzleSupport
 
G4Material * layer4MonitorChamberMaterial
 
void HadrontherapyBeamMonitoring()
 
G4Material * kaptonWindowMaterial
 
G4Material * nozzleSupportMaterial
 
G4double kaptonWindowXSize
 
G4double outerRadiusStopper
 
static const G4VisAttributes Invisible
 
G4double kaptonWindowXPosition
 
void VacuumToAirInterface()
 
G4double secondScatteringFoilXPosition
 
G4double secondScatteringFoilYSize
 
G4Box * secondScatteringFoil
 
G4VPhysicalVolume * physiBeamLineCover2
 
G4VPhysicalVolume * physiFirstScatteringFoil
 
G4double kaptonWindowYSize
 
G4VPhysicalVolume * physiFirstMonitorLayer1
 
G4Material * stopperMaterial
 
void InitializeDetectorROGeometry(HadrontherapyDetectorROGeometry *, G4ThreeVector detectorToWorldPosition)
 
G4VPhysicalVolume * physiFirstMonitorLayer2
 
G4LogicalVolume * logicStopper
 
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
 
G4ThreeVector GetDetectorToWorldPosition()
 
G4double stopperYPosition
 
G4double stopperXPosition
 
G4VPhysicalVolume * physiSecondHoleNozzleSupport
 
G4double firstScatteringFoilXPosition
 
void ConstructPassiveCarbonBeamLine()
 
G4double secondScatteringFoilZSize
 
G4Material * vacuumZoneMaterial