49 physicalTreatmentRoom(0), hadrontherapyDetectorConstruction(0),
 
   50 physiBeamLineSupport(0), physiBeamLineCover(0), physiBeamLineCover2(0), 
 
   52 physiFirstMonitorLayer1(0), physiFirstMonitorLayer2(0),
 
   53 physiFirstMonitorLayer3(0), physiFirstMonitorLayer4(0),
 
   54 physiNozzleSupport(0), physiHoleNozzleSupport(0),
 
   55 physiSecondHoleNozzleSupport(0),
 
   56 solidFinalCollimator(0),
 
   57 physiFinalCollimator(0)
 
   62   static G4String ROGeometryName = 
"DetectorROGeometry";
 
   67   G4cout << 
"Going to register Parallel world...";
 
  119         white -> SetVisibility(
true);
 
  120         white -> SetForceSolid(
true);
 
  123         blue -> SetVisibility(
true);
 
  124         blue -> SetForceSolid(
true);
 
  127         gray-> SetVisibility(
true);
 
  128         gray-> SetForceSolid(
true);
 
  131         red-> SetVisibility(
true);
 
  132         red-> SetForceSolid(
true);
 
  135         yellow-> SetVisibility(
true);
 
  136         yellow-> SetForceSolid(
true);
 
  139         green -> SetVisibility(
true);
 
  140         green -> SetForceSolid(
true);
 
  151         skyBlue -> SetVisibility(
true);
 
  152         skyBlue -> SetForceSolid(
true);
 
  157         G4double defaultVacuumZoneXSize = 80.5325 *
mm;
 
  167         G4double defaultVacuumZoneXPosition = -1855.5075 *
mm;
 
  181         G4double defaultKaptonWindowXPosition = 80.5075*
mm;
 
  186         G4double defaultFirstScatteringFoilXSize = 0.025 *
mm;
 
  189         G4double defaultFirstScatteringFoilYSize = 105.0   *
mm;
 
  192         G4double defaultFirstScatteringFoilZSize = 105   *
mm;
 
  195         G4double defaultFirstScatteringFoilXPosition = 0.0 *
mm;
 
  217         G4double defaultStopperXPosition = -1675.0 *
mm;
 
  232         G4double defaultSecondScatteringFoilXSize = 0.025 *
mm;  
 
  235         G4double defaultSecondScatteringFoilYSize = 105.0   *
mm;
 
  238         G4double defaultSecondScatteringFoilZSize = 105.0   *
mm;
 
  241         G4double defaultSecondScatteringFoilXPosition = defaultStopperXPosition + defaultHeightStopper + defaultSecondScatteringFoilXSize/2;
 
  244         G4double defaultSecondScatteringFoilYPosition =  0 *
mm;
 
  247         G4double defaultSecondScatteringFoilZPosition =  0 *
mm;
 
  253         G4double defaultinnerRadiusFinalCollimator = 12.5 *
mm;
 
  280         brass -> AddElement(zincNist, fractionmass = 30 *
perCent);
 
  281         brass -> AddElement(copperNist, fractionmass = 70 *
perCent);
 
  339         G4Box* treatmentRoom = 
new G4Box(
"TreatmentRoom",worldX,worldY,worldZ);
 
  342                                                                                                                           "logicTreatmentRoom", 
 
  346                                                                                           "physicalTreatmentRoom", 
 
  369         const G4double beamLineSupportXSize = 1.5*
m;
 
  371         const G4double beamLineSupportZSize = 600.*
mm;
 
  373         const G4double beamLineSupportXPosition = -1745.09 *
mm;
 
  374         const G4double beamLineSupportYPosition = -230. *
mm; 
 
  375         const G4double beamLineSupportZPosition = 0.*
mm;
 
  377         G4Box* beamLineSupport = 
new G4Box(
"BeamLineSupport", 
 
  378                                                                            beamLineSupportXSize, 
 
  379                                                                            beamLineSupportYSize, 
 
  380                                                                            beamLineSupportZSize);
 
  386                                                                                                                           beamLineSupportYPosition,
 
  387                                                                                                                           beamLineSupportZPosition),
 
  389                                                                                          logicBeamLineSupport, 
 
  394         logicBeamLineSupport -> SetVisAttributes(
gray);
 
  399         const G4double beamLineCoverXSize = 1.5*
m;
 
  403         const G4double beamLineCoverXPosition = -1745.09 *
mm;
 
  404         const G4double beamLineCoverYPosition = -1000.*
mm; 
 
  405         const G4double beamLineCoverZPosition = 610.*
mm;
 
  407         G4Box* beamLineCover = 
new G4Box(
"BeamLineCover",
 
  417                                                                                                                         beamLineCoverYPosition,
 
  418                                                                                                                         beamLineCoverZPosition),
 
  430                                                                                                                          beamLineCoverYPosition,
 
  431                                                                                                                          - beamLineCoverZPosition),
 
  439         logicBeamLineCover -> SetVisAttributes(
blue);
 
  485                                                                                                                                         "FirstScatteringFoil");
 
  489                                                                                                  "FirstScatteringFoil", 
 
  490                                                                                                  logicFirstScatteringFoil, 
 
  494         logicFirstScatteringFoil -> SetVisAttributes(
skyBlue);
 
  503         G4Box* solidKaptonWindow = 
new G4Box(
"KaptonWindow", 
 
  513                                                                                   "KaptonWindow", logicKaptonWindow,
 
  514                                                                                   physiVacuumZone, 
false,       0); 
 
  516         logicKaptonWindow -> SetVisAttributes(
darkOrange3);
 
  571                                                                                                                                          "SecondScatteringFoil");
 
  576                                                                                                   "SeconScatteringFoil", 
 
  577                                                                                                   logicSecondScatteringFoil, 
 
  582         logicSecondScatteringFoil -> SetVisAttributes(
skyBlue);
 
  605         const G4double monitor1XPosition = -1450.474956 *
mm;
 
  606         const G4double monitor2XPosition = -4.500011*
mm;
 
  607         const G4double monitor4XPosition = 4.500011*
mm;
 
  609         G4Box* solidFirstMonitorLayer1 = 
new G4Box(
"FirstMonitorLayer1", 
 
  616                                                                                                                                    "FirstMonitorLayer1");
 
  620                                                                                                 "FirstMonitorLayer1", 
 
  621                                                                                                 logicFirstMonitorLayer1, 
 
  626         G4Box* solidFirstMonitorLayer2 = 
new G4Box(
"FirstMonitorLayer2", 
 
  633                                                                                                                                    "FirstMonitorLayer2");
 
  636                                                                                                 "FirstMonitorLayer2", 
 
  637                                                                                                 logicFirstMonitorLayer2, 
 
  642         G4Box* solidFirstMonitorLayer3 = 
new G4Box(
"FirstMonitorLayer3", 
 
  649                                                                                                                                    "FirstMonitorLayer3");
 
  654                                                                                                 logicFirstMonitorLayer3, 
 
  659         G4Box* solidFirstMonitorLayer4 = 
new G4Box(
"FirstMonitorLayer4", 
 
  666                                                                                                                                    "FirstMonitorLayer4");
 
  669                                                                                                 "FirstMonitorLayer4",
 
  670                                                                                                 logicFirstMonitorLayer4,
 
  673         logicFirstMonitorLayer3 -> SetVisAttributes(
white);
 
  697         const G4double nozzleSupportXPosition = -558. *
mm;
 
  704         G4Box* solidNozzleSupport = 
new G4Box(
"NozzleSupport", 
 
  720         logicNozzleSupport -> SetVisAttributes(
yellow);
 
  724         const G4double innerRadiusHoleNozzleSupport = 18.*
mm;
 
  725         const G4double outerRadiusHoleNozzleSupport = 21.5 *
mm;
 
  727         const G4double hightHoleNozzleSupportFirst = nozzleSupportXSize;
 
  728         const G4double hightHoleNozzleSupport = 113.0*
mm;
 
  729         const G4double startAngleHoleNozzleSupport = 0.*
deg;
 
  730         const G4double spanningAngleHoleNozzleSupport = 360.*
deg;
 
  731         const G4double holeNozzleSupportXPosition = -415.5 *
mm;
 
  732         G4Tubs* solidNozzleSupportHole = 
new G4Tubs(
"NozzleSupportHole1",       innerRadiusHoleNozzleSupport, 
 
  733                                                                                                 outerRadiusHoleNozzleSupport,
 
  734                                                                                                 hightHoleNozzleSupportFirst, 
 
  735                                                                                                 startAngleHoleNozzleSupport, 
 
  736                                                                                                 spanningAngleHoleNozzleSupport);
 
  740                                                                                                                           "NozzleSupportHole1");
 
  743                                                                                            "HoleNozzleSupportHole1", 
 
  744                                                                                            logicNozzleSupportHole, 
 
  747         G4Tubs* solidHoleNozzleSupport = 
new G4Tubs(
"HoleNozzleSupport", 
 
  748                                                                                                 innerRadiusHoleNozzleSupport, 
 
  749                                                                                                 outerRadiusHoleNozzleSupport,
 
  750                                                                                                 hightHoleNozzleSupport, 
 
  751                                                                                                 startAngleHoleNozzleSupport, 
 
  752                                                                                                 spanningAngleHoleNozzleSupport);
 
  761                                                                                            logicHoleNozzleSupport, 
 
  763         logicNozzleSupportHole -> SetVisAttributes(
darkOrange3);                
 
  764         logicHoleNozzleSupport -> SetVisAttributes(
darkOrange3);
 
  769         const G4double innerRadiusSecondHoleNozzleSupport = 0.*
mm;
 
  770         const G4double outerRadiusSecondHoleNozzleSupport = 18.*
mm;
 
  771         const G4double hightSecondHoleNozzleSupport = 29.5 *
mm;
 
  772         const G4double startAngleSecondHoleNozzleSupport = 0.*
deg;
 
  773         const G4double spanningAngleSecondHoleNozzleSupport = 360.*
deg;
 
  775         G4Tubs* solidSecondHoleNozzleSupport = 
new G4Tubs(
"SecondHoleNozzleSupport",
 
  776                                                                                                           innerRadiusSecondHoleNozzleSupport,
 
  777                                                                                                           outerRadiusSecondHoleNozzleSupport, 
 
  778                                                                                                           hightSecondHoleNozzleSupport,
 
  779                                                                                                           startAngleSecondHoleNozzleSupport, 
 
  780                                                                                                           spanningAngleSecondHoleNozzleSupport);
 
  784                                                                                                                                                 "SecondHoleNozzleSupport",
 
  790                                                                                                          "SecondHoleNozzleSupport",
 
  791                                                                                                          logicSecondHoleNozzleSupport, 
 
  796         logicHoleNozzleSupport -> SetVisAttributes(
darkOrange3); 
 
  805         const G4double outerRadiusFinalCollimator = 21.5*
mm;
 
  808         const G4double spanningAngleFinalCollimator = 360.*
deg;
 
  810         const G4double finalCollimatorXPosition = -299.0 *
mm;  
 
  820                                                                           outerRadiusFinalCollimator,
 
  821                                                                           hightFinalCollimator, 
 
  822                                                                           startAngleFinalCollimator, 
 
  823                                                                           spanningAngleFinalCollimator);
 
  835         logicFinalCollimator -> SetVisAttributes(
yellow); 
 
G4Material * finalCollimatorMaterial
 
G4double innerRadiusFinalCollimator
 
G4double kaptonWindowZSize
 
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
 
G4Material * holeNozzleSupportMaterial
 
static constexpr double mm
 
CLHEP::Hep3Vector G4ThreeVector
 
CLHEP::HepRotation G4RotationMatrix
 
G4double secondScatteringFoilYPosition
 
G4Tubs * solidFinalCollimator
 
HadrontherapyDetectorConstruction * hadrontherapyDetectorConstruction
 
G4Material * layer2MonitorChamberMaterial
 
G4double firstScatteringFoilZSize
 
G4VPhysicalVolume * physiKaptonWindow
 
G4Material * layer3MonitorChamberMaterial
 
static constexpr double perCent
 
G4Material * seconHoleNozzleSupportMaterial
 
G4double firstScatteringFoilYSize
 
G4VPhysicalVolume * physiFirstMonitorLayer4
 
G4VPhysicalVolume * physiStopper
 
G4Material * beamLineSupportMaterial
 
G4VPhysicalVolume * Construct()
 
G4VPhysicalVolume * physiBeamLineSupport
 
G4VPhysicalVolume * physiHoleNozzleSupport
 
G4VPhysicalVolume * physiNozzleSupportHole
 
G4Material * firstScatteringFoilMaterial
 
G4double startAngleStopper
 
G4Material * secondScatteringFoilMaterial
 
static constexpr double g
 
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
 
static constexpr double m
 
G4VisAttributes * darkGreen
 
G4Material * layer1MonitorChamberMaterial
 
G4double spanningAngleStopper
 
G4VPhysicalVolume * physiFinalCollimator
 
static constexpr double cm
 
G4VPhysicalVolume * physiSecondScatteringFoil
 
G4VPhysicalVolume * physiBeamLineCover
 
G4Box * firstScatteringFoil
 
G4VPhysicalVolume * physiFirstMonitorLayer3
 
void HadrontherapyBeamFinalCollimator()
 
static constexpr double cm3
 
G4VisAttributes * skyBlue
 
G4VisAttributes * darkOrange3
 
G4VPhysicalVolume * physiNozzleSupport
 
G4Material * layer4MonitorChamberMaterial
 
void HadrontherapyBeamMonitoring()
 
G4Material * kaptonWindowMaterial
 
G4Material * nozzleSupportMaterial
 
G4double kaptonWindowXSize
 
G4double outerRadiusStopper
 
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
 
static constexpr double deg
 
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
 
G4ThreeVector GetDetectorToWorldPosition()
 
G4double stopperYPosition
 
G4double stopperXPosition
 
G4VPhysicalVolume * physiSecondHoleNozzleSupport
 
static constexpr double mole
 
static const G4VisAttributes & GetInvisible()
 
G4double firstScatteringFoilXPosition
 
void ConstructPassiveCarbonBeamLine()
 
G4double secondScatteringFoilZSize
 
G4Material * vacuumZoneMaterial