Import Geant4 9.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 17:01:34 +02:00
parent b1eb5424d2
commit e2d2f9810a
10384 changed files with 698580 additions and 628834 deletions
@@ -0,0 +1,72 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(iort_therapy)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
#
include(${Geant4_USE_FILE})
#----------------------------------------------------------------------------
# Find ROOT (optional package)
#
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
find_package(ROOT QUIET)
if(ROOT_FOUND)
message(STATUS "G4 Examples: ROOT found. --> iort_therapy example with ROOT enabled.")
# Uncomment this line if suitable (some customization may be needed)
add_definitions(-DG4ANALYSIS_USE_ROOT)
else()
message(STATUS "G4 Examples: ROOT not found. --> iort_therapy example with ROOT disabled.")
endif()
#----------------------------------------------------------------------------
# Locate sources and headers for this project
#
include_directories(${PROJECT_SOURCE_DIR}/include
${Geant4_INCLUDE_DIR}
${ROOT_INCLUDE_DIR})
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(iort_therapy iort_therapy.cc ${sources} ${headers})
target_link_libraries(iort_therapy ${Geant4_LIBRARIES} ${ROOT_LIBRARIES} )
#----------------------------------------------------------------------------
# Copy all scripts to the build directory, i.e. the directory in which we
# build iort_therapy. This is so that we can run the executable directly because it
# relies on these scripts being in the current working directory.
#
set(iort_therapy_SCRIPTS
batch.mac defaultMacro.mac defaultMacroWithReferencePhysicsList.mac
)
foreach(_script ${iort_therapy_SCRIPTS})
configure_file(
${PROJECT_SOURCE_DIR}/${_script}
${PROJECT_BINARY_DIR}/${_script}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
#
install(TARGETS iort_therapy DESTINATION bin)
+33 -3
View File
@@ -7,6 +7,36 @@ carlo.casarino@polooncologicocefalu.it
History file of the IORT application
====================================================
29.11.2012 - G.Cosmo; tag iort_therapy-V09-05-14, iort_therapy-V09-05-13
More fixes for variable shadowing related to use of ROOT.
28.11.2012 - G.Cosmo; tag iort_therapy-V09-05-12
Fixed cases of variable shadowing.
07.11.2012 - F.Romano; Tag iort_therapy-V09-05-11
Included generic command for visualization vis/open OGL where needed
07.11.2012 - F.Romano; Tag iort_therapy-V09-05-10
Fix SystemOfUnits and ROOT compilation errors
06.11.2012 - L.Pandola; Tag iort_therapy-V09-05-09
Fix syntax in CMakeLists.txt
01.11.2012 - F.Romano; Tag: iort_therapy-V09-05-08
Warning in main solved
01.11.2012 - G.Folger; Tag: iort_therapy-V09-05-07
Updated iort_therapy to include ,ctime> for use of time()
26.10.2012 - F.Romano; Tag: iort_therapy-V09-05-06
Updated some files: general review of the example
26.10.2012 - L.Pandola; Tag: iort_therapy-V09-05-05
Replace CMakeLists.txt to deal with UI/VIS
24.10.2012 - A.Ribon; Tag: iort_therapy-V09-05-04
Migrated to the new stopping physics.
12.10.2012 - G.Cosmo; Tag: iort_therapy-V09-05-03
Explicit inclusion of units and constants headers.
13.06.2012 - G.Cosmo; Tag: iort_therapy-V09-05-02
Use std::string::size_type for string length instead of int
in IORTMatrix::ion. Fixes compilation warning on gcc-4.7.
15.12.2011 - P.Mato; Tag: iort_therapy-V09-05-01
Tagged changes made by Gunter (windows line endings,
invalid header files, etc.)
24.11.2011 - P.Mato; Tag: iort_therapy-V09-05-00
Added CMakeLists.txt file
24.11.2011 - G.Folger; Tag: iort_therapy-V09-04-08
Use G4lrint() in place of lrint()
17.11.2011 - G.A.P.Cirrone; Tag: iort_therapy-V09-04-07
@@ -15,11 +45,11 @@ carlo.casarino@polooncologicocefalu.it
Macro file corrected
07.11.2011 - G.A.P.Cirrone; Tag: iort_therapy-V09-04-05
Code revision and visualisation improved
03.11.2011 - F. Romano; Tag: iort_therapy-V09-04-04
03.11.2011 - F.Romano; Tag: iort_therapy-V09-04-04
Migration to new G4Exception scheme
02.11.2011 - C. Casarino; Tag: iort_therapy-V09-04-03
02.11.2011 - C.Casarino; Tag: iort_therapy-V09-04-03
Main file improved
02.11.2011 - C. Casarino; Tag: iort_therapy-V09-04-02
02.11.2011 - C.Casarino; Tag: iort_therapy-V09-04-02
Warings removed.
30.10.2011 - G.A.P. Cirrone; Tag: iort_therapy-V09-04-01
Main name changed.
+45 -45
View File
@@ -1,19 +1,19 @@
=========================================================
Text version of the IORT README file
Text version of the iort_therapy README file
=========================================================
First revision: G.Russo, C.Casarino, G.A.P. Cirrone, F.Romano, September 2011;
It will be released with the Geant4 9.4 patch 02 version or next Geant4 version
Released with the Geant4 9.5 version
------------------------------------------------------------------------------------------------
ADVERTISEMENT: this is the text version of the README file of the 'basic' IORT,
as it should be released in the official Geant4 9.4 release
ADVERTISEMENT: this is the text version of the README file of the 'basic' iort_therapy,
as it should be released in the official Geant4 9.5 release
-------------------------------------------------------------------------------------------------
=========================================================
IORT
iort_therapy
=========================================================
Main Authors:
@@ -39,20 +39,20 @@ as it should be released in the official Geant4 9.4 release
*Corresponding author, email to carlo.casarino@polooncologicocefalu.it
-------------------------------------------------------------------------------------------------
IORT:
iort_therapy:
WHAT IT IS, WHAT IT DOES AND WHAT IT WILL PROVIDE
IORT is a Geant4-based application specifically developed to address typical needs related to the Intra-Operative Radio-Therapy (IORT) tecnique. The application presents the main structure and facilities of the Hadrontherapy advanced example (developed by the G.A.P. Cirrone team).
iort_therapy is a Geant4-based application specifically developed to address typical needs related to the Intra-Operative Radio-Therapy (IORT) technique. The application presents the main structure and facilities of the Hadrontherapy advanced example (developed by the G.A.P. Cirrone team).
This is the first BETA release. At this time IORT is capable to simulate a well specified intra-operative electron radio-therapy facility: the collimator beam line system of a typical medical mobile linac and the relative target (water-phantom). IORT application is currently used by the G.Russo team in clinical and research activities carried out in Fondazione Istituto San Raffaele G.Giglio Hospital (Cefalù, Italy) where a NOVAC7 linac is installed.
This is the first BETA release. At this time iort_therapy is capable to simulate a well specified intra-operative electron radio-therapy facility: the collimator beam line system of a typical medical mobile linac and the relative target (water-phantom). iort_therapy application is currently used by the G.Russo team in clinical and research activities carried out in Fondazione Istituto San Raffaele G.Giglio Hospital (Cefalù, Italy) where a NOVAC7 linac is installed.
IORT, is flexible and show many capabilities. Its geometrical set-up, for example, is completely interchangeable permitting a simple switch between different geometrical collimator system configurations; the possibility to simulate a composite metallic protection disc inside the water-phantom was also implemented.
iort_therapy, is flexible and show many capabilities. Its geometrical set-up, for example, is completely interchangeable permitting a simple switch between different geometrical collimator system configurations; the possibility to simulate a composite metallic shielding disc inside the water-phantom was also implemented.
Folder structure of IORT
Folder structure of iort_therapy
IORT distribution contain these sub-folders:
iort_therapy distribution contain these sub-folders:
\src: where source .cc files are stored
\include: where header .hh files are stored
@@ -64,25 +64,25 @@ Currently this folders structure is in development and in the meanwhile new feat
DOWNLOAD AND INSTALLATION
IORT source code would be soon released inside the official distribution of the Geant4 toolkit in the $G4INSTALL/examples/AdvancedExamples folder.
iort_therapy source code is released inside the official distribution of the Geant4 toolkit in the $G4INSTALL/examples/AdvancedExamples folder.
To run IORT you must first install the Geant4 package. Once Geant4 is installed the example must be first compiled (with the command gmake inside the
../IORT folder). When compilation is completed the program can be executed.
To run iort_therapy you must first install the Geant4 package. Once Geant4 is installed the example must be first compiled (with the command gmake inside the
../iort_therapy folder). When compilation is completed the program can be executed.
A complete guide for the Geant4 installation in different operating systems can be found inside the official installation Geant4 pages.
If you have troubles with the Geant4 installation please send an e-mail to us.
SISTEM SET-UP: enviroment variables
SISTEM SET-UP: environment variables
A standard Geant4 example GNUmakefile is provided
The following section reports the environment variables that are necessary for the run of IORT.
The following section reports the environment variables that are necessary for the run of iort_therapy.
#-------------------------------------
# SET UP LINUX GCC
#-------------------------------------
VERSION="geant4-09-04-patch-02"
VERSION="geant4-09-05"
# Path to the directory in which you have put data files and CLHEP
LIBPATH=$HOME/Geant4Library
@@ -106,7 +106,7 @@ export G4ABLADATA=$LIBPATH/G4ABLA3.0
export LD_LIBRARY_PATH=$CLHEP_BASE_DIR/lib:$LD_LIBRARY_PATH
# For the generation .root file directly using the ROOT (if ROOT is
# instaled in you machine)
# installed in your machine)
export G4ANALYSIS_USE_ROOT=1
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
@@ -164,21 +164,21 @@ export PATH=$PATH:/usr/lib/qt4/
GEOMETRICAL SET-UP
The idea of IORT is to provide a tool useful for Users interested in the field of electron intra-operative radio-therapy. These can include the simple calculation of dose distribution curves in water or other materials, the possibility to study and plan dose distribution in the treatment region with different clinical set-up, and to optimize radio-protection of normal patient tissues simulating a composite metallic protection disc.
The idea of iort_therapy is to provide a tool useful for Users interested in the field of electron intra-operative radio-therapy. These can include the simple calculation of dose distribution curves in water or other materials, the possibility to study and plan dose distribution in the tumor treatment region with different clinical set-up, and to optimize radio-protection of normal patient tissues simulating a composite metallic shielding disc.
The main component of the simulation is collimator beam line system, the phantom, the detector and the composite metallic protection disc.
The main component of the simulation is the collimator beam line system, the phantom, the detector and the composite metallic shielding disc.
COLLIMATOR BEAM LINE SYSTEM
At moment IORT include the simulation of a collimator beam line system, based on a typical medical mobile linac structure us the NOVAC7. This collimator beam line is elaborated in the files CollimatorXXBeamLine.cc , where XX may be 40, 50, 60, 70 ,80 or 100 (mm) depending on the diameter collimator set-up chosen.
In fact,there is also a facility in IORT that allows the user to make a choice, via macro, between alternative collimator beam line set-up. This can be done by using command:
At moment iort_therapy include the simulation of a collimator beam line system, based on a typical medical mobile linac structure us the NOVAC7. This collimator beam line is elaborated in the files CollimatorXXBeamLine.cc , where XX may be 40, 50, 60, 70 ,80 or 100 (mm) depending on the diameter collimator set-up chosen.
In fact, there is also a facility in iort_therapy that allows the user to make a choice, via macro, between alternative collimator beam line set-up. This can be done by using command:
/geometrySetup/selectGeometry <name>
where <name> is coll40, coll50, coll60, coll70, coll80 or coll100 depending on the diameter collimator set-up chosen (40mm, 50mm, 60mm, 70mm, 80mm or 100mm). The standard "default" geometry is coll60.
The Collimnator beam line system class file
The Collimator beam line system class file
The following is the description of the elements of the collimator beam line system from the accelerator head to the final collimator. This line is completely simulated inside this class.
@@ -212,9 +212,9 @@ As concern the cut and stepMax values, the default configuration implies a cut v
In any case it is strongly recommended to use a stepMax value not bigger than 5% of the dose slice thickness.
PROTECTION DISC
SHIELDING DISC
Inside the detector is positioned a double layered protection disc. For both layers it is possible via macro to change the outer and inner radius,the thickness, the position along the beam axis and the material.
Inside the detector is positioned a double layered shielding disc. For both layers it is possible via macro to change the outer and inner radius, the thickness, the position along the beam axis and the material.
ADVERTISEMENT: to delete the disc out the entire geometry the relative macro command must be used!!
ADVERTISEMENT: to re-insert the disc in the entire geometry the relative macro command must be used!!
@@ -222,15 +222,15 @@ ADVERTISEMENT: to re-insert the disc in the entire geometry the relative macro c
PHYSICS PROCESSES AND PHYSICS MODELS IMPLEMENTATION
Physics models in IORT, following the Geant4 organisation, can be definided using two different approaches:
Physics models in iort_therapy, following the Geant4 organization, can be defined using two different approaches:
Activating one of the 'Reference Physics Lists' that are already prepared by the Geant4 Collaboration and are contained in the $G4INSTALL/source/physics_lists/lists folderlist.
The 'Reference Physics Lists' can be activated setting a specific enviroment variable to the name of the physics. For example if the QGSP_BIC Reference Physics Lists must be activated the User must set export PHYSLIST=QGSP_BIC (or setenv PHYSLIST QGSP_BIC). A 'Reference Physics Lists' contains all the physics process necessary to a particle transport.
If the User set the PHYSLIST variable, IORT will start with the defaultMacroWithReferencePhysicsList.mac macro. See this macro file for more details.
The 'Reference Physics Lists' can be activated setting a specific environment variable to the name of the physics. For example if the QGSP_BIC Reference Physics Lists must be activated the User must set export PHYSLIST=QGSP_BIC (or setenv PHYSLIST QGSP_BIC). A 'Reference Physics Lists' contains all the physics process necessary to a particle transport.
If the User set the PHYSLIST variable, iort_therapy will start with the defaultMacroWithReferencePhysicsList.mac macro. See this macro file for more details.
Activating the 'Builders' already prepared by the Geant4 Collaboration and contained in the $G4INSTALL/source/physics_lists/builder folder.
Each builder is specific of a given model. There are builders for the electromagnetic processes, for the hadronic one, etc.
If the PHYSLIST variable is not defined IORT starts with the defaultMacro.mac where the single builders are activated for the various processes of interest.
If the PHYSLIST variable is not defined iort_therapy starts with the defaultMacro.mac where the single builders are activated for the various processes of interest.
Each builder is activated with the /Physics/addPhysics <nome builder> command.
@@ -238,7 +238,7 @@ Each builder is activated with the /Physics/addPhysics <nome builder> command.
AT MOMENT, IF ACCURATE RESULTS ARE NEDED, WE STRONGLY RECOMMEND:
1. The use of the emstandard_opt3, or
2. the QGSP_BIC_EMY Reference Physics Lists (define the PHYSLIST eviroment variable):
2. the QGSP_BIC_EMY Reference Physics Lists (define the PHYSLIST evironment variable):
export PHYSLIST=QGSP_BIC_EMY
A particular care is addressed to the simulation of the physic processes.
@@ -247,7 +247,7 @@ INTERACTIVE COMMANDS
How to change Phantom, Detector and Protection Disc geometries
How to change Phantom, Detector and Shielding Disc geometries
In order to let the end user to change phantom and detector geometries and voxelization, some interactive commands have been provided. All parameters are mandatory, except those inside square brackets.
@@ -282,11 +282,11 @@ Command synopsis:
/changeDetector/voxelSize <dimX> <dimY> <dimZ> <[unit]>
/changeDetector/displacement <dispX> <dispY> <dispZ> <[unit]>
Default size values are 7x15x15 cm for the detector, 0.5x0.5x0.5 mm for any voxel. The default detector position is chosen so that the 15x15 detector face is aligned and centred respect the detector beam exposed face.
Default size values are 7x15x15 cm for the detector, 0.5x0.5x0.5 mm for any voxel. The default detector position is chosen so that the 15x15 detector face is aligned and centered respect the detector beam exposed face.
Protection Disc geometry
Shielding Disc geometry
Command synopsis:
@@ -374,22 +374,22 @@ Command synopsis:
HOW RUN IORT
HOW RUN iort_therapy
Run the example in interactive mode
> $G4WORDIR/bin/Linux-g++/IORT
> $G4WORDIR/bin/Linux-g++/iort_therapy
In this case the main file (IORT.cc) performs different operations depending on which environment variable is activated;
For example, if the environment variable G4UI_USE_TCSH is activated, IORT will start with the TCSH User Interface that has many useful functionalities. On the other hand, if this first variables is not defined, the program will continue searching for the G4UI_USE_QT variable and, finally, will open the standard G4UITerminal.
In this case the main file (iort_therapy.cc) performs different operations depending on which environment variable is activated;
For example, if the environment variable G4UI_USE_TCSH is activated, iort_therapy will start with the TCSH User Interface that has many useful functionalities. On the other hand, if this first variables is not defined, the program will continue searching for the G4UI_USE_QT variable and, finally, will open the standard G4UITerminal.
Run the example using macro files
IORT can be launched using a macro file:
iort_therapy can be launched using a macro file:
> $G4WORDIR/bin/Linux-g++/IORT macroFile.mac
> $G4WORDIR/bin/Linux-g++/iort_therapy macroFile.mac
The defaultMacro.mac file is contained in the main directory of IORT and is automatically readed in case the user launch the executable without a parameter.
The defaultMacro.mac file is contained in the main directory of iort_therapy and is automatically read in case the user launch the executable without a parameter.
SIMULATION OUTPUT
@@ -402,20 +402,20 @@ The file contains four columns; the first three columns represent the voxel inde
FUTURE CHALLENGES
This is a list of future components that will be added in IORT.
This is a list of future components that will be added in iort_therapy.
In the next future IORT will be improved making it possible to simulate roto-translations of the collimator beam line respect the target thus reproducing the mobility characteristics of the linac.
In the next future iort_therapy will be improved making it possible to simulate roto-translations of the collimator beam line respect the target thus reproducing the mobility characteristics of the linac.
Dicom Interface
A first work in progress version IORT-DICOM is underdeveloped. This application imports in IORT the main parts and facilities of the Dicom extended-medical exmple, so it permits to replace the water phantom with a voxellized phantom version of the dicom images.
A first work in progress version iort_therapy-DICOM is underdeveloped. This application imports in iort_therapy the main parts and facilities of the Dicom extended-medical example, so it permits to replace the water phantom with a voxellized phantom version of the dicom images.
Human-Phantom Interface
Also a second work in progress version IORT-Human-Phantom is underdeveloped. It is based on the Human-Phantom advanced example. Thus there will be the possibility to replace the water phantom with the human phantom.
Also a second work in progress version iort_therapy-Human-Phantom is underdeveloped. It is based on the Human-Phantom advanced example. Thus there will be the possibility to replace the water phantom with the human phantom.
All these configuration will be setted by macro commands.
All these configuration will be set by macro commands.
Please contact carlo.casarino@polooncologicocefalu.it for more details or suggestions and feedbacks on this document.
@@ -22,8 +22,8 @@
##########################
# Set of the physic models
#
/Physics/addPhysics emstandard_opt3 # Electromagnetic model
/Physics/addPhysics Em_extra_physics
/Physics/addPhysics standard_opt3 # Electromagnetic model
#/Physics/addPhysics Em_extra_physics
#/Physics/addPhysics Elastic # Hadronic elastic model
#/Physics/addPhysics decay
#/Physics/addPhysics radioactive_decay
@@ -50,7 +50,7 @@
# Visualisation
#
/vis/scene/create
/vis/open OGLI
/vis/open OGL
/vis/viewer/flush
#/vis/viewer/set/style solid
/vis/viewer/set/auxiliaryEdge true
@@ -109,6 +109,8 @@
#/ProtectionDisc1/InnerRadiusDisc1 # default -> 0*mm
#/ProtectionDisc1/HeightDisc1 # default -> 2*mm
#/ProtectionDisc1/XPositionDisc1 -11.0 # default -> -11*mm R90 (10.1 MeV) -> -10.68 mm from detector centre (24mm)
#/ProtectionDisc1/YPositionDisc1 5.0 # default -> 0.0*mm
#/ProtectionDisc1/ZPositionDisc1 5.0 # default -> 0.0*mm
#/ProtectionDisc1/material G4_Al # default -> G4_WATER ;
#/ProtectionDisc2/OuterRadiusDisc2 30 # default -> 40*mm ; 30(coll40);35(coll50);45(coll70);50(coll40);60(coll100)
@@ -117,6 +119,8 @@
#/ProtectionDisc2/XPositionDisc2 -8.0 # default -> -8*mm
#/ProtectionDisc2/material G4_Pb # default -> G4_WATER ;
#/ChangeTiltAngleDisc1-2/TiltAngleDisc1-2 110.0 # default -> 90.0*deg around Y
#/InsertProtectionDisc/insert
#/changePhantom/update
@@ -49,7 +49,7 @@
# Visualisation
#
/vis/scene/create
/vis/open OGLI
/vis/open OGL
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/vis/viewer/zoom 1
@@ -109,7 +109,7 @@ inline bool IsInside(G4double detectorX,
G4double phantomX,
G4double phantomY,
G4double phantomZ,
G4ThreeVector detectorToPhantomPosition)
G4ThreeVector detToPhantomPosition)
{
// Dimensions check... X Y and Z
// Firstly check what dimension we are modifying
@@ -119,7 +119,7 @@ inline bool IsInside(G4double detectorX,
G4cout << "Error: Detector X dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
return false;
}
if ( (phantomX - detectorX) < detectorToPhantomPosition.getX())
if ( (phantomX - detectorX) < detToPhantomPosition.getX())
{
G4cout << "Error: X dimension doesn't fit with detector to phantom relative position" << G4endl;
return false;
@@ -132,7 +132,7 @@ inline bool IsInside(G4double detectorX,
G4cout << "Error: Detector Y dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
return false;
}
if ( (phantomY - detectorY) < detectorToPhantomPosition.getY())
if ( (phantomY - detectorY) < detToPhantomPosition.getY())
{
G4cout << "Error: Y dimension doesn't fit with detector to phantom relative position" << G4endl;
return false;
@@ -145,7 +145,7 @@ inline bool IsInside(G4double detectorX,
G4cout << "Error: Detector Z dimension must be smaller or equal to the corrispondent of the phantom" << G4endl;
return false;
}
if ( (phantomZ - detectorZ) < detectorToPhantomPosition.getZ())
if ( (phantomZ - detectorZ) < detToPhantomPosition.getZ())
{
G4cout << "Error: Z dimension doesn't fit with detector to phantom relative position" << G4endl;
return false;
@@ -173,6 +173,8 @@ inline bool IsInside(G4double detectorX,
void SetinnerRadiusDiscoIORT(G4double innerr);
void SetheightDiscoIORT(G4double height);
void SetDiscoXPositionIORT(G4double xpos);
void SetDiscoYPositionIORT(G4double ypos);
void SetDiscoZPositionIORT(G4double zpos);
G4bool SetDiscoMaterialIORT1(G4String material);
void SetOuterRadiusDiscoIORT1(G4double outerr);
@@ -180,7 +182,7 @@ inline bool IsInside(G4double detectorX,
void SetheightDiscoIORT1(G4double height);
void SetDiscoXPositionIORT1(G4double xpos);
void SetAngleDiscoIORT0(G4double phi0);
private:
@@ -223,6 +225,13 @@ private:
G4Region* aRegion;
//Disco0 IORT
G4Tubs* solidDiscoIORT0;
G4LogicalVolume* logicDiscoIORT0;
G4VPhysicalVolume* physiDiscoIORT0;
G4double AngleDiscoIORT0;
// Disco1 IORT
G4VisAttributes* white;
G4VisAttributes* gray;
@@ -231,6 +240,8 @@ private:
G4double OuterRadiusDiscoIORT;
G4double heightDiscoIORT;
G4double DiscoXPositionIORT;
G4double DiscoYPositionIORT;
G4double DiscoZPositionIORT;
G4Tubs* solidDiscoIORT;
G4LogicalVolume* logicDiscoIORT;
G4VPhysicalVolume* physiDiscoIORT;
@@ -64,7 +64,7 @@ private:
// Pointer to the phantom/detector
IORTDetectorConstruction* iortDetector;
G4UIdirectory *changeThePhantomDir, *changeTheDetectorDir, *changeTheDisc1Dir, *changeTheDisc2Dir, *deleteTheDiscDir, *insertTheDiscDir;
G4UIdirectory *changeThePhantomDir, *changeTheDetectorDir, *changeTheDisc1Dir, *changeTheDisc2Dir, *deleteTheDiscDir, *insertTheDiscDir, *changeTheAnglediscDir;
G4UIcmdWithoutParameter *updateCmd, *deletediscCmd, *insertdiscCmd;
G4UIcmdWithAString *changeThePhantomMaterialCmd, *changeTheDisc1MaterialCmd, *changeTheDisc2MaterialCmd;
@@ -74,8 +74,7 @@ private:
*changeTheDetectorToPhantomPositionCmd,
*changeTheDetectorVoxelCmd;
G4UIcmdWithADoubleAndUnit *changeOuterRadiusDiscoIORTCmd, *changeinnerRadiusDiscoIORTCmd, *changeheightDiscoIORTCmd,*changeDiscoXPositionIORTCmd,
*changeOuterRadiusDisco1IORTCmd, *changeinnerRadiusDisco1IORTCmd, *changeheightDisco1IORTCmd,*changeDisco1XPositionIORTCmd;
G4UIcmdWithADoubleAndUnit *changeOuterRadiusDiscoIORTCmd, *changeinnerRadiusDiscoIORTCmd, *changeheightDiscoIORTCmd,*changeDiscoXPositionIORTCmd, *changeDiscoYPositionIORTCmd, *changeDiscoZPositionIORTCmd, *changeOuterRadiusDisco1IORTCmd, *changeinnerRadiusDisco1IORTCmd, *changeheightDisco1IORTCmd,*changeDisco1XPositionIORTCmd, *changeTheAnglediscCmd;
};
#endif
@@ -54,7 +54,7 @@ struct ion
G4int PDGencoding; // Particle data group id for the particle
//G4String extName; // AZ[excitation energy]: like He3[1277.4], He4[0.0], Li7[231.4], ...
G4String name; // simple name without excitation energy: He3, He4, Li7, ...
G4int len; // name length
std::string::size_type len; // name length
G4int Z; // atomic number
G4int A; // mass number
G4double *dose; // pointer to dose matrix
@@ -82,12 +82,18 @@
#include "G4UIExecutive.hh"
#endif
#include <ctime>
//////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc ,char ** argv)
{
// Set the Random engine
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine());
//imported from eliot_geant4.9.3p01// to create a different seed
G4int seed = time(NULL);
CLHEP::HepRandom::setTheSeed(seed);
//imported from eliot_geant4.9.3p01
G4RunManager* runManager = new G4RunManager;
// Geometry controller is responsible for instantiating the
@@ -146,12 +152,12 @@ int main(int argc ,char ** argv)
IORTInteractionParameters* pInteraction = new IORTInteractionParameters(true);
// Initialize analysis
/*
IORTAnalysisManager* analysis = IORTAnalysisManager::GetInstance();
#ifdef G4ANALYSIS_USE_ROOT
IORTAnalysisManager* analysis = IORTAnalysisManager::GetInstance();
analysis -> book();
#endif
*/
#ifdef G4VIS_USE
// Visualization manager
G4VisManager* visManager = new G4VisExecutive;
@@ -33,7 +33,7 @@
#############################
#
/vis/scene/create
/vis/open OGLIX
/vis/open OGL
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/tracking/storeTrajectory 1
@@ -34,7 +34,7 @@
#############################
#
/vis/scene/create
/vis/open OGLIX
/vis/open OGL
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/tracking/storeTrajectory 1
@@ -30,7 +30,7 @@
# Visualisation
#
/vis/scene/create
/vis/open OGLIX
/vis/open OGL
#/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/vis/viewer/zoom 1
@@ -32,7 +32,7 @@
#############################
#
/vis/scene/create
/vis/open OGLI
/vis/open OGL
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/tracking/storeTrajectory 1
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -382,28 +383,25 @@ void Collimator100BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -1062.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
logVSIORT -> SetVisAttributes(green);
}
void Collimator100BeamLine::IortBeamLineTitaniumWindows()
@@ -419,28 +417,27 @@ void Collimator100BeamLine::IortBeamLineTitaniumWindows()
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -1061.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator100BeamLine::IortBeamLineMonitorChambers()
@@ -462,200 +459,194 @@ void Collimator100BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -1048.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -1044.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -1041.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -1037.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -1041. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -1039. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -1037. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
@@ -663,20 +654,18 @@ void Collimator100BeamLine::IortBeamLineMonitorChambers()
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator100BeamLine::IortBeamLineBlocks()
@@ -698,110 +687,110 @@ void Collimator100BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -1030. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -1023.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -1012. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -995.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
@@ -818,8 +807,8 @@ void Collimator100BeamLine::IortBeamLineJunctions()
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
@@ -827,26 +816,26 @@ void Collimator100BeamLine::IortBeamLineJunctions()
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
@@ -854,19 +843,19 @@ void Collimator100BeamLine::IortBeamLineJunctions()
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -874,16 +863,16 @@ void Collimator100BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -958.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -894,7 +883,7 @@ void Collimator100BeamLine::IortBeamLineJunctions()
physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
"Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
@@ -919,8 +908,8 @@ void Collimator100BeamLine::IortBeamLineJunctions()
// Junction 2 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
@@ -928,26 +917,26 @@ void Collimator100BeamLine::IortBeamLineJunctions()
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innerRadiusGiunz2FinalCollIORT,
OuterRadiusGiunz2FinalCollIORT,
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
outRadiusGiunz2FinalCollIORT,
hightGiunz2FinalCollIORT,
startAngleGiunz2FinalCollIORT,
spanningAngleGiunz2FinalCollIORT);
G4LogicalVolume* logicGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
"Giunz2FinalCollIORT", logicGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz2FinalCollIORT -> SetVisAttributes(red);
logGiunz2FinalCollIORT -> SetVisAttributes(red);
// --------------------------------- //
// Junction 1 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz1FinalCollIORT = 65. *mm;
const G4double innerRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz1FinalCollIORT = 65. *mm;
const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double hightGiunz1FinalCollIORT = 10. *mm;
const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
@@ -955,19 +944,19 @@ void Collimator100BeamLine::IortBeamLineJunctions()
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innerRadiusGiunz1FinalCollIORT,
OuterRadiusGiunz1FinalCollIORT,
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
outRadiusGiunz1FinalCollIORT,
hightGiunz1FinalCollIORT,
startAngleGiunz1FinalCollIORT,
spanningAngleGiunz1FinalCollIORT);
G4LogicalVolume* logicGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
"Giunz1FinalCollIORT", logicGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz1FinalCollIORT -> SetVisAttributes(gray);
logGiunz1FinalCollIORT -> SetVisAttributes(gray);
}
@@ -977,8 +966,8 @@ void Collimator100BeamLine::IortBeamLineFinalCollimator()
// FINAL COLLIMATOR IORT //
//------------------------//
// const G4double OuterRadiusFinalCollimatorIORT = 45. *mm;
// const G4double innerRadiusFinalCollimatorIORT = 40. *mm;
// const G4double outRadiusFinalCollimatorIORT = 45. *mm;
// const G4double innRadiusFinalCollimatorIORT = 40. *mm;
const G4double hightFinalCollimatorIORT = 434. *mm;
const G4double startAngleFinalCollimatorIORT = 0.*deg;
const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
@@ -1000,14 +989,14 @@ void Collimator100BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(darkGreen);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(darkGreen);
}
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -380,27 +381,26 @@ void Collimator40BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -862.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
"VSIORT", logVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
logVSIORT -> SetVisAttributes(green);
}
@@ -416,29 +416,26 @@ void Collimator40BeamLine::IortBeamLineTitaniumWindows()
G4RotationMatrix rm2;
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -861.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator40BeamLine::IortBeamLineMonitorChambers()
@@ -461,200 +458,191 @@ void Collimator40BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -848.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -844.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -841.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -837.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -841. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -839. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -837. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
@@ -662,20 +650,19 @@ void Collimator40BeamLine::IortBeamLineMonitorChambers()
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator40BeamLine::IortBeamLineBlocks()
@@ -697,111 +684,106 @@ void Collimator40BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -830. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -823.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -812. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -795.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
void Collimator40BeamLine::IortBeamLineJunctions()
@@ -817,35 +799,33 @@ void Collimator40BeamLine::IortBeamLineJunctions()
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
@@ -853,19 +833,19 @@ void Collimator40BeamLine::IortBeamLineJunctions()
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -873,16 +853,16 @@ void Collimator40BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -920,16 +900,13 @@ void Collimator40BeamLine::IortBeamLineFinalCollimator()
// FINAL COLLIMATOR IORT //
//------------------------//
// const G4double OuterRadiusFinalCollimatorIORT = 35. *mm;
// const G4double innerRadiusFinalCollimatorIORT = 30. *mm;
// const G4double outRadiusFinalCollimatorIORT = 35. *mm;
// const G4double innRadiusFinalCollimatorIORT = 30. *mm;
const G4double hightFinalCollimatorIORT = 349.75 *mm;
const G4double startAngleFinalCollimatorIORT = 0.*deg;
const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
const G4double finalCollimatorXPositionIORT = -404.75 *mm;
G4double phi6 = 90. *deg;
@@ -943,14 +920,14 @@ void Collimator40BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(green);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(green);
}
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -383,27 +384,26 @@ void Collimator50BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -862.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
"VSIORT", logVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
logVSIORT -> SetVisAttributes(green);
}
@@ -420,28 +420,26 @@ void Collimator50BeamLine::IortBeamLineTitaniumWindows()
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -861.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator50BeamLine::IortBeamLineMonitorChambers()
@@ -463,221 +461,204 @@ void Collimator50BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -848.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -844.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -841.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -837.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -841. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -839. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -837. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
const G4double XPositionCM1_1_2IORT = -835. *mm;
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator50BeamLine::IortBeamLineBlocks()
@@ -699,110 +680,103 @@ void Collimator50BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -830. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -823.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -812. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -795.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
@@ -819,55 +793,51 @@ void Collimator50BeamLine::IortBeamLineJunctions()
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -875,16 +845,15 @@ void Collimator50BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -922,16 +891,13 @@ void Collimator50BeamLine::IortBeamLineFinalCollimator()
// FINAL COLLIMATOR IORT //
//------------------------//
// const G4double OuterRadiusFinalCollimatorIORT = 35. *mm;
// const G4double innerRadiusFinalCollimatorIORT = 30. *mm;
// const G4double outRadiusFinalCollimatorIORT = 35. *mm;
// const G4double innRadiusFinalCollimatorIORT = 30. *mm;
const G4double hightFinalCollimatorIORT = 349.75 *mm;
const G4double startAngleFinalCollimatorIORT = 0.*deg;
const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
const G4double finalCollimatorXPositionIORT = -404.75 *mm;
G4double phi6 = 90. *deg;
@@ -945,15 +911,14 @@ void Collimator50BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(gray);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(gray);
}
/////////////////////////////////////////////////////////////////////////////
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -383,27 +384,26 @@ void Collimator60BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -862.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
"VSIORT", logVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
logVSIORT -> SetVisAttributes(green);
}
@@ -419,29 +419,26 @@ void Collimator60BeamLine::IortBeamLineTitaniumWindows()
G4RotationMatrix rm2;
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -861.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator60BeamLine::IortBeamLineMonitorChambers()
@@ -463,221 +460,204 @@ void Collimator60BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -848.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -844.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -841.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -837.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -841. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -839. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -837. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
const G4double XPositionCM1_1_2IORT = -835. *mm;
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator60BeamLine::IortBeamLineBlocks()
@@ -699,111 +679,104 @@ void Collimator60BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -830. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -823.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -812. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -795.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
void Collimator60BeamLine::IortBeamLineJunctions()
@@ -815,59 +788,56 @@ void Collimator60BeamLine::IortBeamLineJunctions()
G4RotationMatrix rm5;
rm5.rotateY(phi5);
// --------------------------------- //
// --------------------------------- //
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -875,16 +845,16 @@ void Collimator60BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -895,7 +865,7 @@ void Collimator60BeamLine::IortBeamLineJunctions()
physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
"Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
@@ -920,56 +890,51 @@ void Collimator60BeamLine::IortBeamLineJunctions()
// Junction 2 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innerRadiusGiunz2FinalCollIORT,
OuterRadiusGiunz2FinalCollIORT,
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
outRadiusGiunz2FinalCollIORT,
hightGiunz2FinalCollIORT,
startAngleGiunz2FinalCollIORT,
spanningAngleGiunz2FinalCollIORT);
G4LogicalVolume* logicGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
"Giunz2FinalCollIORT", logicGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz2FinalCollIORT -> SetVisAttributes(red);
logGiunz2FinalCollIORT -> SetVisAttributes(red);
// --------------------------------- //
// Junction 1 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz1FinalCollIORT = 45. *mm;
const G4double innerRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz1FinalCollIORT = 45. *mm;
const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double hightGiunz1FinalCollIORT = 10. *mm;
const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innerRadiusGiunz1FinalCollIORT,
OuterRadiusGiunz1FinalCollIORT,
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
outRadiusGiunz1FinalCollIORT,
hightGiunz1FinalCollIORT,
startAngleGiunz1FinalCollIORT,
spanningAngleGiunz1FinalCollIORT);
G4LogicalVolume* logicGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
"Giunz1FinalCollIORT", logicGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz1FinalCollIORT -> SetVisAttributes(gray);
"Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logGiunz1FinalCollIORT -> SetVisAttributes(gray);
}
void Collimator60BeamLine::IortBeamLineFinalCollimator()
@@ -1001,15 +966,14 @@ void Collimator60BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(blue);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(blue);
}
/////////////////////////////////////////////////////////////////////////////
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -382,28 +383,26 @@ void Collimator70BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -862.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
"VSIORT", logVSIORT, physicalTreatmentRoom, false, 0);
logVSIORT -> SetVisAttributes(green);
}
void Collimator70BeamLine::IortBeamLineTitaniumWindows()
@@ -419,28 +418,26 @@ void Collimator70BeamLine::IortBeamLineTitaniumWindows()
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -861.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator70BeamLine::IortBeamLineMonitorChambers()
@@ -462,221 +459,204 @@ void Collimator70BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -848.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -844.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -841.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -837.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -841. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -839. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -837. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
const G4double XPositionCM1_1_2IORT = -835. *mm;
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator70BeamLine::IortBeamLineBlocks()
@@ -698,111 +678,102 @@ void Collimator70BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -830. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -823.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -812. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -795.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
void Collimator70BeamLine::IortBeamLineJunctions()
@@ -818,55 +789,51 @@ void Collimator70BeamLine::IortBeamLineJunctions()
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -874,16 +841,15 @@ void Collimator70BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -894,8 +860,8 @@ void Collimator70BeamLine::IortBeamLineJunctions()
physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
"Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
@@ -919,55 +885,51 @@ void Collimator70BeamLine::IortBeamLineJunctions()
// Junction 2 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innerRadiusGiunz2FinalCollIORT,
OuterRadiusGiunz2FinalCollIORT,
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
outRadiusGiunz2FinalCollIORT,
hightGiunz2FinalCollIORT,
startAngleGiunz2FinalCollIORT,
spanningAngleGiunz2FinalCollIORT);
G4LogicalVolume* logicGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
"Giunz2FinalCollIORT", logicGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz2FinalCollIORT -> SetVisAttributes(red);
logGiunz2FinalCollIORT -> SetVisAttributes(red);
// --------------------------------- //
// Junction 1 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz1FinalCollIORT = 50. *mm;
const G4double innerRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz1FinalCollIORT = 50. *mm;
const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double hightGiunz1FinalCollIORT = 10. *mm;
const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innerRadiusGiunz1FinalCollIORT,
OuterRadiusGiunz1FinalCollIORT,
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
outRadiusGiunz1FinalCollIORT,
hightGiunz1FinalCollIORT,
startAngleGiunz1FinalCollIORT,
spanningAngleGiunz1FinalCollIORT);
G4LogicalVolume* logicGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
"Giunz1FinalCollIORT", logicGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz1FinalCollIORT -> SetVisAttributes(gray);
logGiunz1FinalCollIORT -> SetVisAttributes(gray);
}
@@ -977,8 +939,8 @@ void Collimator70BeamLine::IortBeamLineFinalCollimator()
// FINAL COLLIMATOR IORT //
//------------------------//
// const G4double OuterRadiusFinalCollimatorIORT = 40. *mm;
// const G4double innerRadiusFinalCollimatorIORT = 35. *mm;
// const G4double outRadiusFinalCollimatorIORT = 40. *mm;
// const G4double innRadiusFinalCollimatorIORT = 35. *mm;
const G4double hightFinalCollimatorIORT = 334. *mm;
const G4double startAngleFinalCollimatorIORT = 0.*deg;
const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
@@ -1000,15 +962,14 @@ void Collimator70BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(darkOrange3);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(darkOrange3);
}
/////////////////////////////////////////////////////////////////////////////
@@ -38,12 +38,13 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "globals.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -383,28 +384,26 @@ void Collimator80BeamLine::IortBeamLineVacuumSource()
G4RotationMatrix rm1;
rm1.rotateY(phi1);
const G4double OuterRadiusVSIORT = 44.75 *mm;
const G4double innerRadiusVSIORT = 0.*mm;
const G4double outRadiusVSIORT = 44.75 *mm;
const G4double innRadiusVSIORT = 0.*mm;
const G4double hightVSIORT = 1. *mm;
const G4double startAngleVSIORT = 0.*deg;
const G4double spanningAngleVSIORT = 360.*deg;
const G4double XPositionVSIORT = -862.797 *mm;
solidVSIORT = new G4Tubs("VSIORT", innerRadiusVSIORT,
OuterRadiusVSIORT,
solidVSIORT = new G4Tubs("VSIORT", innRadiusVSIORT,
outRadiusVSIORT,
hightVSIORT,
startAngleVSIORT,
spanningAngleVSIORT);
G4LogicalVolume* logicVSIORT = new G4LogicalVolume(solidVSIORT,
G4LogicalVolume* logVSIORT = new G4LogicalVolume(solidVSIORT,
VSIORTMaterialIORT, "VSIORT", 0, 0, 0);
physiVSIORT = new G4PVPlacement(G4Transform3D(rm1, G4ThreeVector((XPositionVSIORT),0.,0.)),
"VSIORT", logicVSIORT, physicalTreatmentRoom, false, 0);
logicVSIORT -> SetVisAttributes(green);
"VSIORT", logVSIORT, physicalTreatmentRoom, false, 0);
logVSIORT -> SetVisAttributes(green);
}
void Collimator80BeamLine::IortBeamLineTitaniumWindows()
@@ -420,28 +419,26 @@ void Collimator80BeamLine::IortBeamLineTitaniumWindows()
rm2.rotateY(phi2);
const G4double OuterRadiusFTIORT = 44.75 *mm;
const G4double innerRadiusFTIORT = 8.5 *mm;
const G4double outRadiusFTIORT = 44.75 *mm;
const G4double innRadiusFTIORT = 8.5 *mm;
const G4double hightFTIORT = 0.006 *mm;
const G4double startAngleFTIORT = 0.*deg;
const G4double spanningAngleFTIORT = 360.*deg;
const G4double XPositionFTIORT = -861.791 *mm;
solidFTIORT = new G4Tubs("FTIORT", innerRadiusFTIORT,
OuterRadiusFTIORT,
solidFTIORT = new G4Tubs("FTIORT", innRadiusFTIORT,
outRadiusFTIORT,
hightFTIORT,
startAngleFTIORT,
spanningAngleFTIORT);
G4LogicalVolume* logicFTIORT = new G4LogicalVolume(solidFTIORT,
G4LogicalVolume* logFTIORT = new G4LogicalVolume(solidFTIORT,
FTIORTMaterialIORT, "FTIORT", 0, 0, 0);
physiFTIORT = new G4PVPlacement(G4Transform3D(rm2, G4ThreeVector((XPositionFTIORT),0.,0.)),
"FTIORT", logicFTIORT, physicalTreatmentRoom, false, 0);
"FTIORT", logFTIORT, physicalTreatmentRoom, false, 0);
logicFTIORT -> SetVisAttributes(yellow);
logFTIORT -> SetVisAttributes(yellow);
}
void Collimator80BeamLine::IortBeamLineMonitorChambers()
@@ -463,221 +460,204 @@ void Collimator80BeamLine::IortBeamLineMonitorChambers()
// Superior Final Part Monitor Chambers 3 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS3IORT = 44.75 *mm;
const G4double innerRadiusPFS3IORT = 17.5 *mm;
const G4double outRadiusPFS3IORT = 44.75 *mm;
const G4double innRadiusPFS3IORT = 17.5 *mm;
const G4double hightPFS3IORT = 3.03 *mm;
const G4double startAnglePFS3IORT = 0.*deg;
const G4double spanningAnglePFS3IORT = 360.*deg;
const G4double XPositionPFS3IORT = -848.755 *mm;
solidPFS3IORT = new G4Tubs("PFS3IORT", innerRadiusPFS3IORT,
OuterRadiusPFS3IORT,
solidPFS3IORT = new G4Tubs("PFS3IORT", innRadiusPFS3IORT,
outRadiusPFS3IORT,
hightPFS3IORT,
startAnglePFS3IORT,
spanningAnglePFS3IORT);
G4LogicalVolume* logicPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
G4LogicalVolume* logPFS3IORT = new G4LogicalVolume(solidPFS3IORT,
PFS3IORTMaterialIORT, "PFS3IORT", 0, 0, 0);
physiPFS3IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS3IORT),0.,0.)),
"PFS3IORT", logicPFS3IORT, physicalTreatmentRoom, false, 0);
"PFS3IORT", logPFS3IORT, physicalTreatmentRoom, false, 0);
logicPFS3IORT -> SetVisAttributes(white);
logPFS3IORT -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 2 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS2IORT = 44.75 *mm;
const G4double innerRadiusPFS2IORT = 10. *mm;
const G4double outRadiusPFS2IORT = 44.75 *mm;
const G4double innRadiusPFS2IORT = 10. *mm;
const G4double hightPFS2IORT = 1.47 *mm;
const G4double startAnglePFS2IORT = 0.*deg;
const G4double spanningAnglePFS2IORT = 360.*deg;
const G4double XPositionPFS2IORT = -844.255 *mm;
solidPFS2IORT = new G4Tubs("PFS2IORT", innerRadiusPFS2IORT,
OuterRadiusPFS2IORT,
solidPFS2IORT = new G4Tubs("PFS2IORT", innRadiusPFS2IORT,
outRadiusPFS2IORT,
hightPFS2IORT,
startAnglePFS2IORT,
spanningAnglePFS2IORT);
G4LogicalVolume* logicPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
G4LogicalVolume* logPFS2IORT = new G4LogicalVolume(solidPFS2IORT,
PFS2IORTMaterialIORT, "PFS2IORT", 0, 0, 0);
physiPFS2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS2IORT),0.,0.)),
"PFS2IORT", logicPFS2IORT, physicalTreatmentRoom, false, 0);
"PFS2IORT", logPFS2IORT, physicalTreatmentRoom, false, 0);
logicPFS2IORT -> SetVisAttributes(green);
logPFS2IORT -> SetVisAttributes(green);
// ---------------------------------------------------------------//
// Superior Final Part Monitor Chambers 1 //
// ---------------------------------------------------------------//
const G4double OuterRadiusPFS1IORT = 35. *mm;
const G4double innerRadiusPFS1IORT = 10. *mm;
const G4double outRadiusPFS1IORT = 35. *mm;
const G4double innRadiusPFS1IORT = 10. *mm;
const G4double hightPFS1IORT = 0.88 *mm;
const G4double startAnglePFS1IORT = 0.*deg;
const G4double spanningAnglePFS1IORT = 360.*deg;
const G4double XPositionPFS1IORT = -841.905 *mm;
solidPFS1IORT = new G4Tubs("PFS1IORT", innerRadiusPFS1IORT,
OuterRadiusPFS1IORT,
solidPFS1IORT = new G4Tubs("PFS1IORT", innRadiusPFS1IORT,
outRadiusPFS1IORT,
hightPFS1IORT,
startAnglePFS1IORT,
spanningAnglePFS1IORT);
G4LogicalVolume* logicPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
G4LogicalVolume* logPFS1IORT = new G4LogicalVolume(solidPFS1IORT,
PFS1IORTMaterialIORT, "PFS1IORT", 0, 0, 0);
physiPFS1IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionPFS1IORT),0.,0.)),
"PFS1IORT", logicPFS1IORT, physicalTreatmentRoom, false, 0);
"PFS1IORT", logPFS1IORT, physicalTreatmentRoom, false, 0);
logicPFS1IORT -> SetVisAttributes(green);
logPFS1IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Monitor Chambers Cylinder //
// ------------------------------------------------//
const G4double OuterRadiusCCMIORT = 35. *mm;
const G4double innerRadiusCCMIORT = 10. *mm;
const G4double outRadiusCCMIORT = 35. *mm;
const G4double innRadiusCCMIORT = 10. *mm;
const G4double hightCCMIORT = 4.0125 *mm;
const G4double startAngleCCMIORT = 0.*deg;
const G4double spanningAngleCCMIORT = 360.*deg;
const G4double XPositionCCMIORT = -837.0125 *mm;
solidCCMIORT = new G4Tubs("CCMIORT", innerRadiusCCMIORT,
OuterRadiusCCMIORT,
solidCCMIORT = new G4Tubs("CCMIORT", innRadiusCCMIORT,
outRadiusCCMIORT,
hightCCMIORT,
startAngleCCMIORT,
spanningAngleCCMIORT);
G4LogicalVolume* logicCCMIORT = new G4LogicalVolume(solidCCMIORT,
G4LogicalVolume* logCCMIORT = new G4LogicalVolume(solidCCMIORT,
CCMIORTMaterialIORT, "CCMIORT", 0, 0, 0);
physiCCMIORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCCMIORT),0.,0.)),
"CCMIORT", logicCCMIORT, physicalTreatmentRoom, false, 0);
"CCMIORT", logCCMIORT, physicalTreatmentRoom, false, 0);
logicCCMIORT -> SetVisAttributes(green);
logCCMIORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_2_2IORT = 20. *mm;
const G4double innerRadiusCM2_2_2IORT = 0. *mm;
const G4double outRadiusCM2_2_2IORT = 20. *mm;
const G4double innRadiusCM2_2_2IORT = 0. *mm;
const G4double hightCM2_2_2IORT = 0.025 *mm;
const G4double startAngleCM2_2_2IORT = 0.*deg;
const G4double spanningAngleCM2_2_2IORT = 360.*deg;
const G4double XPositionCM2_2_2IORT = -841. *mm;
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innerRadiusCM2_2_2IORT,
OuterRadiusCM2_2_2IORT,
solidCM2_2_2IORT = new G4Tubs("CM2_2_2IORT", innRadiusCM2_2_2IORT,
outRadiusCM2_2_2IORT,
hightCM2_2_2IORT,
startAngleCM2_2_2IORT,
spanningAngleCM2_2_2IORT);
G4LogicalVolume* logicCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
G4LogicalVolume* logCM2_2_2IORT = new G4LogicalVolume(solidCM2_2_2IORT,
CM2_2_2IORTMaterialIORT, "CM2_2_2IORT", 0, 0, 0);
physiCM2_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_2_2IORT),0.,0.)),
"CM2_2_2ORT", logicCM2_2_2IORT, physicalTreatmentRoom, false, 0);
"CM2_2_2ORT", logCM2_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_2_2IORT -> SetVisAttributes(green);
logCM2_2_2IORT -> SetVisAttributes(green);
// ------------------------------------------------//
// Second Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM2_1_2IORT = 20. *mm;
const G4double innerRadiusCM2_1_2IORT = 0. *mm;
const G4double outRadiusCM2_1_2IORT = 20. *mm;
const G4double innRadiusCM2_1_2IORT = 0. *mm;
const G4double hightCM2_1_2IORT = 0.025 *mm;
const G4double startAngleCM2_1_2IORT = 0.*deg;
const G4double spanningAngleCM2_1_2IORT = 360.*deg;
const G4double XPositionCM2_1_2IORT = -839. *mm;
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innerRadiusCM2_1_2IORT,
OuterRadiusCM2_1_2IORT,
solidCM2_1_2IORT = new G4Tubs("CM2_1_2IORT", innRadiusCM2_1_2IORT,
outRadiusCM2_1_2IORT,
hightCM2_1_2IORT,
startAngleCM2_1_2IORT,
spanningAngleCM2_1_2IORT);
G4LogicalVolume* logicCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
G4LogicalVolume* logCM2_1_2IORT = new G4LogicalVolume(solidCM2_1_2IORT,
CM2_1_2IORTMaterialIORT, "CM2_1_2IORT", 0, 0, 0);
physiCM2_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM2_1_2IORT),0.,0.)),
"CM2_1_2ORT", logicCM2_1_2IORT, physicalTreatmentRoom, false, 0);
"CM2_1_2ORT", logCM2_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM2_1_2IORT -> SetVisAttributes(yellow);
logCM2_1_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 2 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_2_2IORT = 20. *mm;
const G4double innerRadiusCM1_2_2IORT = 0. *mm;
const G4double outRadiusCM1_2_2IORT = 20. *mm;
const G4double innRadiusCM1_2_2IORT = 0. *mm;
const G4double hightCM1_2_2IORT = 0.025 *mm;
const G4double startAngleCM1_2_2IORT = 0.*deg;
const G4double spanningAngleCM1_2_2IORT = 360.*deg;
const G4double XPositionCM1_2_2IORT = -837. *mm;
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innerRadiusCM1_2_2IORT,
OuterRadiusCM1_2_2IORT,
solidCM1_2_2IORT = new G4Tubs("CM1_2_2IORT", innRadiusCM1_2_2IORT,
outRadiusCM1_2_2IORT,
hightCM1_2_2IORT,
startAngleCM1_2_2IORT,
spanningAngleCM1_2_2IORT);
G4LogicalVolume* logicCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
G4LogicalVolume* logCM1_2_2IORT = new G4LogicalVolume(solidCM1_2_2IORT,
CM1_2_2IORTMaterialIORT, "CM1_2_2IORT", 0, 0, 0);
physiCM1_2_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_2_2IORT),0.,0.)),
"CM1_2_2ORT", logicCM1_2_2IORT, physicalTreatmentRoom, false, 0);
"CM1_2_2ORT", logCM1_2_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_2_2IORT -> SetVisAttributes(yellow);
logCM1_2_2IORT -> SetVisAttributes(yellow);
// ------------------------------------------------//
// First Monitor Chamber Lamina Al 1 of 2 //
// ------------------------------------------------//
const G4double OuterRadiusCM1_1_2IORT = 20. *mm;
const G4double innerRadiusCM1_1_2IORT = 0. *mm;
const G4double outRadiusCM1_1_2IORT = 20. *mm;
const G4double innRadiusCM1_1_2IORT = 0. *mm;
const G4double hightCM1_1_2IORT = 0.025 *mm;
const G4double startAngleCM1_1_2IORT = 0.*deg;
const G4double spanningAngleCM1_1_2IORT = 360.*deg;
const G4double XPositionCM1_1_2IORT = -835. *mm;
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innerRadiusCM1_1_2IORT,
OuterRadiusCM1_1_2IORT,
solidCM1_1_2IORT = new G4Tubs("CM1_1_2IORT", innRadiusCM1_1_2IORT,
outRadiusCM1_1_2IORT,
hightCM1_1_2IORT,
startAngleCM1_1_2IORT,
spanningAngleCM1_1_2IORT);
G4LogicalVolume* logicCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
G4LogicalVolume* logCM1_1_2IORT = new G4LogicalVolume(solidCM1_1_2IORT,
CM1_1_2IORTMaterialIORT, "CM1_1_2IORT", 0, 0, 0);
physiCM1_1_2IORT = new G4PVPlacement(G4Transform3D(rm3, G4ThreeVector((XPositionCM1_1_2IORT),0.,0.)),
"CM1_1_2ORT", logicCM1_1_2IORT, physicalTreatmentRoom, false, 0);
"CM1_1_2ORT", logCM1_1_2IORT, physicalTreatmentRoom, false, 0);
logicCM1_1_2IORT -> SetVisAttributes(yellow);
logCM1_1_2IORT -> SetVisAttributes(yellow);
}
void Collimator80BeamLine::IortBeamLineBlocks()
@@ -699,111 +679,102 @@ void Collimator80BeamLine::IortBeamLineBlocks()
// Block 4 //
// ------------------------------------------------//
const G4double OuterRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innerRadiusBlocco20mmIORT = 10. *mm;
const G4double outRadiusBlocco20mmIORT = 36.5 *mm;
const G4double innRadiusBlocco20mmIORT = 10. *mm;
const G4double hightBlocco20mmIORT = 3. *mm;
const G4double startAngleBlocco20mmIORT = 0.*deg;
const G4double spanningAngleBlocco20mmIORT = 360.*deg;
const G4double XPositionBlocco20mmIORT = -830. *mm;
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innerRadiusBlocco20mmIORT,
OuterRadiusBlocco20mmIORT,
solidBlocco20mmIORT = new G4Tubs("Blocco20mmIORT", innRadiusBlocco20mmIORT,
outRadiusBlocco20mmIORT,
hightBlocco20mmIORT,
startAngleBlocco20mmIORT,
spanningAngleBlocco20mmIORT);
G4LogicalVolume* logicBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
G4LogicalVolume* logBlocco20mmIORT = new G4LogicalVolume(solidBlocco20mmIORT,
Blocco20mmIORTMaterialIORT, "Blocco20mmIORT", 0, 0, 0);
physiBlocco20mmIORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco20mmIORT),0.,0.)),
"Blocco20mmORT", logicBlocco20mmIORT, physicalTreatmentRoom, false, 0);
"Blocco20mmORT", logBlocco20mmIORT, physicalTreatmentRoom, false, 0);
logicBlocco20mmIORT -> SetVisAttributes(green);
logBlocco20mmIORT -> SetVisAttributes(green);
// -----------------------//
// Block 3 //
// -----------------------//
const G4double OuterRadiusBlocco3IORT = 36.5 *mm;
const G4double innerRadiusBlocco3IORT = 15. *mm;
const G4double outRadiusBlocco3IORT = 36.5 *mm;
const G4double innRadiusBlocco3IORT = 15. *mm;
const G4double hightBlocco3IORT = 3.5 *mm;
const G4double startAngleBlocco3IORT = 0.*deg;
const G4double spanningAngleBlocco3IORT = 360.*deg;
const G4double XPositionBlocco3IORT = -823.5 *mm;
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innerRadiusBlocco3IORT,
OuterRadiusBlocco3IORT,
solidBlocco3IORT = new G4Tubs("Blocco3IORT", innRadiusBlocco3IORT,
outRadiusBlocco3IORT,
hightBlocco3IORT,
startAngleBlocco3IORT,
spanningAngleBlocco3IORT);
G4LogicalVolume* logicBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
G4LogicalVolume* logBlocco3IORT = new G4LogicalVolume(solidBlocco3IORT,
Blocco3IORTMaterialIORT, "Blocco3IORT", 0, 0, 0);
physiBlocco3IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco3IORT),0.,0.)),
"Blocco3ORT", logicBlocco3IORT, physicalTreatmentRoom, false, 0);
"Blocco3ORT", logBlocco3IORT, physicalTreatmentRoom, false, 0);
logicBlocco3IORT -> SetVisAttributes(yellow);
logBlocco3IORT -> SetVisAttributes(yellow);
// -----------------------//
// Block 2 //
// -----------------------//
const G4double OuterRadiusBlocco2IORT = 41.5 *mm;
const G4double innerRadiusBlocco2IORT = 15. *mm;
const G4double outRadiusBlocco2IORT = 41.5 *mm;
const G4double innRadiusBlocco2IORT = 15. *mm;
const G4double hightBlocco2IORT = 8. *mm;
const G4double startAngleBlocco2IORT = 0.*deg;
const G4double spanningAngleBlocco2IORT = 360.*deg;
const G4double XPositionBlocco2IORT = -812. *mm;
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innerRadiusBlocco2IORT,
OuterRadiusBlocco2IORT,
solidBlocco2IORT = new G4Tubs("Blocco2IORT", innRadiusBlocco2IORT,
outRadiusBlocco2IORT,
hightBlocco2IORT,
startAngleBlocco2IORT,
spanningAngleBlocco2IORT);
G4LogicalVolume* logicBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
G4LogicalVolume* logBlocco2IORT = new G4LogicalVolume(solidBlocco2IORT,
Blocco2IORTMaterialIORT, "Blocco2IORT", 0, 0, 0);
physiBlocco2IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco2IORT),0.,0.)),
"Blocco2IORT", logicBlocco2IORT, physicalTreatmentRoom, false, 0);
"Blocco2IORT", logBlocco2IORT, physicalTreatmentRoom, false, 0);
logicBlocco2IORT -> SetVisAttributes(red);
logBlocco2IORT -> SetVisAttributes(red);
// ----------------------- //
// Block 1 //
// ----------------------- //
const G4double OuterRadiusBlocco1IORT = 52.0 *mm;
const G4double innerRadiusBlocco1IORT = 15. *mm;
const G4double outRadiusBlocco1IORT = 52.0 *mm;
const G4double innRadiusBlocco1IORT = 15. *mm;
const G4double hightBlocco1IORT = 8.5 *mm;
const G4double startAngleBlocco1IORT = 0.*deg;
const G4double spanningAngleBlocco1IORT = 360.*deg;
const G4double XPositionBlocco1IORT = -795.5*mm;
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innerRadiusBlocco1IORT,
OuterRadiusBlocco1IORT,
solidBlocco1IORT = new G4Tubs("Blocco1IORT", innRadiusBlocco1IORT,
outRadiusBlocco1IORT,
hightBlocco1IORT,
startAngleBlocco1IORT,
spanningAngleBlocco1IORT);
G4LogicalVolume* logicBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
G4LogicalVolume* logBlocco1IORT = new G4LogicalVolume(solidBlocco1IORT,
Blocco1IORTMaterialIORT, "Blocco1IORT", 0, 0, 0);
physiBlocco1IORT = new G4PVPlacement(G4Transform3D(rm4, G4ThreeVector((XPositionBlocco1IORT),0.,0.)),
"Blocco1IORT", logicBlocco1IORT, physicalTreatmentRoom, false, 0);
"Blocco1IORT", logBlocco1IORT, physicalTreatmentRoom, false, 0);
logicBlocco1IORT -> SetVisAttributes(white);
logBlocco1IORT -> SetVisAttributes(white);
}
void Collimator80BeamLine::IortBeamLineJunctions()
@@ -819,55 +790,51 @@ void Collimator80BeamLine::IortBeamLineJunctions()
// Junction 5 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innerRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz5FinalCollIORT = 48.25 *mm;
const G4double innRadiusGiunz5FinalCollIORT = 13.75 *mm;
const G4double hightGiunz5FinalCollIORT = 3.5 *mm;
const G4double startAngleGiunz5FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz5FinalCollIORT = 360.*deg;
const G4double Giunz5FinalCollXPositionIORT = -783.5 *mm;
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innerRadiusGiunz5FinalCollIORT,
OuterRadiusGiunz5FinalCollIORT,
solidGiunz5FinalCollIORT = new G4Tubs("Giunz5FinalCollIORT", innRadiusGiunz5FinalCollIORT,
outRadiusGiunz5FinalCollIORT,
hightGiunz5FinalCollIORT,
startAngleGiunz5FinalCollIORT,
spanningAngleGiunz5FinalCollIORT);
G4LogicalVolume* logicGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
G4LogicalVolume* logGiunz5FinalCollIORT = new G4LogicalVolume(solidGiunz5FinalCollIORT,
Giunz5FinalCollMaterialIORT, "Giunz5FinalCollIORT", 0, 0, 0);
physiGiunz5FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz5FinalCollXPositionIORT),0.,0.)),
"Giunz5FinalCollIORT", logicGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz5FinalCollIORT", logGiunz5FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz5FinalCollIORT -> SetVisAttributes(yellow);
logGiunz5FinalCollIORT -> SetVisAttributes(yellow);
// --------------------------------- //
// Junction 4 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double outRadiusGiunz4FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz4FinalCollIORT = 13.75 *mm;
const G4double hightGiunz4FinalCollIORT = 8.5 *mm;
const G4double startAngleGiunz4FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz4FinalCollIORT = 360.*deg;
const G4double Giunz4FinalCollXPositionIORT = -771.5 *mm;
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innerRadiusGiunz4FinalCollIORT,
OuterRadiusGiunz4FinalCollIORT,
solidGiunz4FinalCollIORT = new G4Tubs("Giunz4FinalCollIORT", innRadiusGiunz4FinalCollIORT,
outRadiusGiunz4FinalCollIORT,
hightGiunz4FinalCollIORT,
startAngleGiunz4FinalCollIORT,
spanningAngleGiunz4FinalCollIORT);
G4LogicalVolume* logicGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
G4LogicalVolume* logGiunz4FinalCollIORT = new G4LogicalVolume(solidGiunz4FinalCollIORT,
Giunz4FinalCollMaterialIORT, "Giunz4FinalCollIORT", 0, 0, 0);
physiGiunz4FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz4FinalCollXPositionIORT),0.,0.)),
"Giunz4FinalCollIORT", logicGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz4FinalCollIORT", logGiunz4FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz4FinalCollIORT -> SetVisAttributes(blue);
logGiunz4FinalCollIORT -> SetVisAttributes(blue);
@@ -875,16 +842,15 @@ void Collimator80BeamLine::IortBeamLineJunctions()
// Junction 3 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double outRadiusGiunz3FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz3FinalCollIORT = 0. *mm;
const G4double hightGiunz3FinalCollIORT = 4.25 *mm;
const G4double startAngleGiunz3FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz3FinalCollIORT = 360.*deg;
const G4double Giunz3FinalCollXPositionIORT = -758.75 *mm;
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innerRadiusGiunz3FinalCollIORT,
OuterRadiusGiunz3FinalCollIORT,
solidGiunz3FinalCollIORT = new G4Tubs("Giunz3FinalCollIORT", innRadiusGiunz3FinalCollIORT,
outRadiusGiunz3FinalCollIORT,
hightGiunz3FinalCollIORT,
startAngleGiunz3FinalCollIORT,
spanningAngleGiunz3FinalCollIORT);
@@ -895,8 +861,8 @@ void Collimator80BeamLine::IortBeamLineJunctions()
physiGiunz3FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz3FinalCollXPositionIORT),0.,0.)),
"Giunz3FinalCollIORT", logicsolidGiunz3FinalCollIORT, physicalTreatmentRoom, false, 0);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
logicsolidGiunz3FinalCollIORT -> SetVisAttributes(yellow);
// logicsolidGiunz3FinalCollIORT -> SetVisAttributes (G4VisAttributes::Invisible);
@@ -920,56 +886,51 @@ void Collimator80BeamLine::IortBeamLineJunctions()
// Junction 2 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innerRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz2FinalCollIORT = 42. *mm;
const G4double innRadiusGiunz2FinalCollIORT = 22.25 *mm;
const G4double hightGiunz2FinalCollIORT = 5.75 *mm;
const G4double startAngleGiunz2FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz2FinalCollIORT = 360.*deg;
const G4double Giunz2FinalCollXPositionIORT = -748.75 *mm;
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innerRadiusGiunz2FinalCollIORT,
OuterRadiusGiunz2FinalCollIORT,
solidGiunz2FinalCollIORT = new G4Tubs("Giunz2FinalCollIORT", innRadiusGiunz2FinalCollIORT,
outRadiusGiunz2FinalCollIORT,
hightGiunz2FinalCollIORT,
startAngleGiunz2FinalCollIORT,
spanningAngleGiunz2FinalCollIORT);
G4LogicalVolume* logicGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
G4LogicalVolume* logGiunz2FinalCollIORT = new G4LogicalVolume(solidGiunz2FinalCollIORT,
Giunz2FinalCollMaterialIORT, "Giunz2FinalCollIORT", 0, 0, 0);
physiGiunz2FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz2FinalCollXPositionIORT),0.,0.)),
"Giunz2FinalCollIORT", logicGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
"Giunz2FinalCollIORT", logGiunz2FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz2FinalCollIORT -> SetVisAttributes(red);
logGiunz2FinalCollIORT -> SetVisAttributes(red);
// --------------------------------- //
// Junction 1 FINAL COLLIMATOR IORT //
// --------------------------------- //
const G4double OuterRadiusGiunz1FinalCollIORT = 55. *mm;
const G4double innerRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double outRadiusGiunz1FinalCollIORT = 55. *mm;
const G4double innRadiusGiunz1FinalCollIORT = 22.25 *mm;
const G4double hightGiunz1FinalCollIORT = 10. *mm;
const G4double startAngleGiunz1FinalCollIORT = 0.*deg;
const G4double spanningAngleGiunz1FinalCollIORT = 360.*deg;
const G4double Giunz1FinalCollXPositionIORT = -733.*mm;
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innerRadiusGiunz1FinalCollIORT,
OuterRadiusGiunz1FinalCollIORT,
solidGiunz1FinalCollIORT = new G4Tubs("Giunz1FinalCollIORT", innRadiusGiunz1FinalCollIORT,
outRadiusGiunz1FinalCollIORT,
hightGiunz1FinalCollIORT,
startAngleGiunz1FinalCollIORT,
spanningAngleGiunz1FinalCollIORT);
G4LogicalVolume* logicGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
G4LogicalVolume* logGiunz1FinalCollIORT = new G4LogicalVolume(solidGiunz1FinalCollIORT,
Giunz1FinalCollMaterialIORT, "Giunz1FinalCollIORT", 0, 0, 0);
physiGiunz1FinalCollIORT = new G4PVPlacement(G4Transform3D(rm5, G4ThreeVector((Giunz1FinalCollXPositionIORT),0.,0.)),
"Giunz1FinalCollIORT", logicGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logicGiunz1FinalCollIORT -> SetVisAttributes(gray);
"Giunz1FinalCollIORT", logGiunz1FinalCollIORT, physicalTreatmentRoom, false, 0);
logGiunz1FinalCollIORT -> SetVisAttributes(gray);
}
void Collimator80BeamLine::IortBeamLineFinalCollimator()
@@ -978,8 +939,8 @@ void Collimator80BeamLine::IortBeamLineFinalCollimator()
// FINAL COLLIMATOR IORT //
//------------------------//
// const G4double OuterRadiusFinalCollimatorIORT = 45. *mm;
// const G4double innerRadiusFinalCollimatorIORT = 40. *mm;
// const G4double outRadiusFinalCollimatorIORT = 45. *mm;
// const G4double innRadiusFinalCollimatorIORT = 40. *mm;
const G4double hightFinalCollimatorIORT = 334. *mm;
const G4double startAngleFinalCollimatorIORT = 0.*deg;
const G4double spanningAngleFinalCollimatorIORT = 360.*deg;
@@ -1001,15 +962,14 @@ void Collimator80BeamLine::IortBeamLineFinalCollimator()
startAngleFinalCollimatorIORT,
spanningAngleFinalCollimatorIORT);
G4LogicalVolume* logicFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
G4LogicalVolume* logFinalCollimatorIORT = new G4LogicalVolume(solidFinalCollimatorIORT,
finalCollimatorMaterialIORT, "FinalCollimatorIORT", 0, 0, 0);
physiFinalCollimatorIORT = new G4PVPlacement(G4Transform3D(rm6, G4ThreeVector((finalCollimatorXPositionIORT),0.,0.)),
"FinalCollimatorIORT", logicFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logicFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logicFinalCollimatorIORT -> SetVisAttributes(red);
"FinalCollimatorIORT", logFinalCollimatorIORT, physicalTreatmentRoom, false, 0);
// logFinalCollimatorIORT -> SetVisAttributes(G4VisAttributes::Invisible);
logFinalCollimatorIORT -> SetVisAttributes(red);
}
/////////////////////////////////////////////////////////////////////////////
@@ -38,6 +38,10 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4SDManager.hh"
#include "G4RunManager.hh"
#include "G4GeometryManager.hh"
@@ -48,7 +52,6 @@
#include "G4LogicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4PVPlacement.hh"
#include "globals.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
#include "G4Colour.hh"
@@ -62,7 +65,6 @@
#include "IORTDetectorSD.hh"
#include "IORTMatrix.hh"
#include "IORTAnalysisManager.hh"
#include <cmath>
#include "G4Tubs.hh"
/////////////////////////////////////////////////////////////////////////////
@@ -74,6 +76,10 @@ IORTDetectorConstruction::IORTDetectorConstruction(G4VPhysicalVolume* physicalTr
phantomPhysicalVolume(0), detectorPhysicalVolume(0),
aRegion(0),
solidDiscoIORT0(0),
logicDiscoIORT0(0),
physiDiscoIORT0(0),
solidDiscoIORT(0),
logicDiscoIORT(0),
physiDiscoIORT(0),
@@ -96,30 +102,34 @@ IORTDetectorConstruction::IORTDetectorConstruction(G4VPhysicalVolume* physicalTr
// Default detector voxels size
// 200 slabs along the beam direction (X)
sizeOfVoxelAlongX = 0.5 *mm; //
sizeOfVoxelAlongY = 0.5 *mm; //
sizeOfVoxelAlongZ = 0.5 *mm; //
sizeOfVoxelAlongX = 0.5 *CLHEP::mm; //
sizeOfVoxelAlongY = 0.5 *CLHEP::mm; //
sizeOfVoxelAlongZ = 0.5 *CLHEP::mm; //
// Define here the material of the water phantom and of the detector
SetPhantomMaterial("G4_WATER");
// Construct geometry (messenger commands)
SetDetectorSize(7.*cm, 15.*cm, 15.*cm);
SetPhantomSize(20. *cm, 20. *cm, 20. *cm);
SetPhantomPosition(G4ThreeVector(4.5 *cm, 0. *cm, 0. *cm));
SetDetectorToPhantomPosition(G4ThreeVector(0. *cm, 2.5 *cm, 2.5 *cm));
SetDetectorSize(7.*CLHEP::cm, 15.*CLHEP::cm, 15.*CLHEP::cm);
SetPhantomSize(20. *CLHEP::cm, 20. *CLHEP::cm, 20. *CLHEP::cm);
SetPhantomPosition(G4ThreeVector(4.5 *CLHEP::cm, 0. *CLHEP::cm, 0. *CLHEP::cm));
SetDetectorToPhantomPosition(G4ThreeVector(0. *CLHEP::cm, 2.5 *CLHEP::cm, 2.5 *CLHEP::cm));
// Default protection disc geometry and materials
SetOuterRadiusDiscoIORT (40. *mm);
SetinnerRadiusDiscoIORT (0.*mm);
SetheightDiscoIORT (2.0*mm);
SetDiscoXPositionIORT (-11.0*mm);
SetOuterRadiusDiscoIORT (40. *CLHEP::mm);
SetinnerRadiusDiscoIORT (0.*CLHEP::mm);
SetheightDiscoIORT (2.0*CLHEP::mm);
SetDiscoXPositionIORT (-11.0*CLHEP::mm);
SetDiscoYPositionIORT (0.0*CLHEP::mm);
SetDiscoZPositionIORT (0.0*CLHEP::mm);
SetDiscoMaterialIORT("G4_WATER");
SetOuterRadiusDiscoIORT1 (40. *mm);
SetinnerRadiusDiscoIORT1 (0.*mm);
SetheightDiscoIORT1 (1.0*mm);
SetDiscoXPositionIORT1 (-8.0*mm);
SetDiscoMaterialIORT1("G4_WATER");
SetOuterRadiusDiscoIORT1 (40. *CLHEP::mm);
SetinnerRadiusDiscoIORT1 (0.*CLHEP::mm);
SetheightDiscoIORT1 (1.0*CLHEP::mm);
SetDiscoXPositionIORT1 (-8.0*CLHEP::mm);
SetDiscoMaterialIORT1("G4_WATER");
SetAngleDiscoIORT0 (90.0 *CLHEP::deg);
// Write virtual parameters to the real ones and check for consistency
UpdateGeometry();
@@ -166,7 +176,7 @@ void IORTDetectorConstruction::ConstructPhantom()
//red -> SetForceSolid(true);
//red -> SetForceWireframe(true);
phantomLogicalVolume -> SetVisAttributes(red);
// phantomLogicalVolume -> SetVisAttributes(G4VisAttributes::Invisible);
//phantomLogicalVolume -> SetVisAttributes(G4VisAttributes::Invisible);
}
/////////////////////////////////////////////////////////////////////////////
@@ -242,14 +252,37 @@ void IORTDetectorConstruction::ConstructDetector()
}
void IORTDetectorConstruction::ConstructDisc()
{
// ---------------------------------------------------------------//
// 6.0 mm Protection Discs Volume //
// ---------------------------------------------------------------//
const G4double startAngleDiscoIORT0 = 0.*CLHEP::deg;
const G4double spanningAngleDiscoIORT0 = 360.*CLHEP::deg;
//G4double phi0 = 180. *CLHEP::deg; // messenger
// Matrix definition for a rotation (deg).
G4RotationMatrix rm0;
rm0.rotateY(AngleDiscoIORT0);
solidDiscoIORT0 = new G4Tubs("DiscoIORT0", innerRadiusDiscoIORT,
OuterRadiusDiscoIORT,
(heightDiscoIORT + heightDiscoIORT1),
startAngleDiscoIORT0,
spanningAngleDiscoIORT0);
G4LogicalVolume* logDiscoIORT0 = new G4LogicalVolume(solidDiscoIORT0,
detectorMaterial, "DiscoIORT0Log", 0, 0, 0);
physiDiscoIORT0 = new G4PVPlacement(G4Transform3D(rm0, G4ThreeVector((DiscoXPositionIORT + heightDiscoIORT1),DiscoYPositionIORT,DiscoZPositionIORT)),
"DiscoIORT0Phys", logDiscoIORT0, detectorPhysicalVolume, false, 0);
white = new G4VisAttributes( G4Colour());
white -> SetVisibility(true);
// white -> SetForceSolid(true);
logDiscoIORT0 -> SetVisAttributes(white);
// ---------------------------------------------------------------//
// 4.0 mm Aluminium Protection Disc //
@@ -259,21 +292,24 @@ void IORTDetectorConstruction::ConstructDisc()
// DiscoMaterialIORT = leadNist; // messenger
gray = new G4VisAttributes( G4Colour(0.5, 0.5, 0.5 ));
gray-> SetVisibility(true);
//gray -> SetForceWireframe(true);
//gray-> SetForceSolid(true);
gray1 = new G4VisAttributes( G4Colour(0.7, 0.7, 0.7 ));
gray1-> SetVisibility(true);
// gray1-> SetForceSolid(true);
// const G4double OuterRadiusDiscoIORT = 35. *mm; // messenger
// const G4double innerRadiusDiscoIORT = 0.*mm; // messenger
// const G4double heightDiscoIORT = 3.0*mm; // messenger
const G4double startAngleDiscoIORT = 0.*deg;
const G4double spanningAngleDiscoIORT = 360.*deg;
// const G4double DiscoXPositionIORT = -14.0*mm; // messenger
//gray1 -> SetForceWireframe(true);
//gray1-> SetForceSolid(true);
// const G4double OuterRadiusDiscoIORT = 35. *CLHEP::mm; // messenger
// const G4double innerRadiusDiscoIORT = 0.*CLHEP::mm; // messenger
// const G4double heightDiscoIORT = 3.0*CLHEP::mm; // messenger
const G4double startAngleDiscoIORT = 0.*CLHEP::deg;
const G4double spanningAngleDiscoIORT = 360.*CLHEP::deg;
// const G4double DiscoXPositionIORT = -14.0*CLHEP::mm; // messenger
//G4Material* DiscoMaterialIORT = G4NistManager::Instance()->FindOrBuildMaterial("G4_PLEXIGLASS", isotopes);// messenger
G4double phi = 90. *deg;
G4double phi = 0. *CLHEP::deg;
// Matrix definition for a 90 deg rotation. Also used for other volumes
G4RotationMatrix rm;
@@ -286,27 +322,25 @@ void IORTDetectorConstruction::ConstructDisc()
startAngleDiscoIORT,
spanningAngleDiscoIORT);
G4LogicalVolume* logicDiscoIORT = new G4LogicalVolume(solidDiscoIORT,
G4LogicalVolume* logDiscoIORT = new G4LogicalVolume(solidDiscoIORT,
DiscoMaterialIORT, "DiscoIORTLog", 0, 0, 0);
physiDiscoIORT = new G4PVPlacement(G4Transform3D(rm, G4ThreeVector(DiscoXPositionIORT,0.,0.)),
"DiscoIORTPhys", logicDiscoIORT, detectorPhysicalVolume, false, 0);
white = new G4VisAttributes( G4Colour());
white -> SetVisibility(true);
white -> SetForceSolid(true);
logicDiscoIORT -> SetVisAttributes(gray1);
physiDiscoIORT = new G4PVPlacement(G4Transform3D(rm, G4ThreeVector(0.,0.,(- heightDiscoIORT1))),
"DiscoIORTPhys", logDiscoIORT, physiDiscoIORT0, false, 0);
logDiscoIORT -> SetVisAttributes(gray1);
// ---------------------------------------------------------------//
// 2.0 mm Lead Protection Disc //
// ---------------------------------------------------------------//
// const G4double OuterRadiusDiscoIORT1 = 35. *mm;
// const G4double innerRadiusDiscoIORT1 = 0.*mm;
// const G4double heightDiscoIORT1 = 0.5*mm;
const G4double startAngleDiscoIORT1 = 0.*deg;
const G4double spanningAngleDiscoIORT1 = 360.*deg;
// const G4double DiscoXPositionIORT1 = -10.5*mm; messenger
// const G4double OuterRadiusDiscoIORT1 = 35. *CLHEP::mm;
// const G4double innerRadiusDiscoIORT1 = 0.*CLHEP::mm;
// const G4double heightDiscoIORT1 = 0.5*CLHEP::mm;
const G4double startAngleDiscoIORT1 = 0.*CLHEP::deg;
const G4double spanningAngleDiscoIORT1 = 360.*CLHEP::deg;
// const G4double DiscoXPositionIORT1 = -10.5*CLHEP::mm; messenger
// G4Material* DiscoMaterialIORT1 = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cu", isotopes);// messenger
@@ -317,15 +351,15 @@ void IORTDetectorConstruction::ConstructDisc()
startAngleDiscoIORT1,
spanningAngleDiscoIORT1);
G4LogicalVolume* logicDiscoIORT1 = new G4LogicalVolume(solidDiscoIORT1,
G4LogicalVolume* logDiscoIORT1 = new G4LogicalVolume(solidDiscoIORT1,
DiscoMaterialIORT1, "DiscoIORTLog1", 0, 0, 0);
physiDiscoIORT1 = new G4PVPlacement(G4Transform3D(rm, G4ThreeVector(DiscoXPositionIORT1,0.,0.)),
"DiscoIORTPhys1", logicDiscoIORT1, detectorPhysicalVolume, false, 0);
physiDiscoIORT1 = new G4PVPlacement(G4Transform3D(rm, G4ThreeVector(0.,0.,heightDiscoIORT)),
"DiscoIORTPhys1", logDiscoIORT1, physiDiscoIORT0, false, 0);
white = new G4VisAttributes( G4Colour());
white -> SetVisibility(true);
white -> SetForceSolid(true);
logicDiscoIORT1 -> SetVisAttributes(gray);
logDiscoIORT1 -> SetVisAttributes(gray);
}
/////////////////////////////////////////////////////////////////////////////
@@ -543,6 +577,19 @@ void IORTDetectorConstruction::SetDiscoXPositionIORT(G4double xpos)
}
void IORTDetectorConstruction::SetDiscoYPositionIORT(G4double ypos)
{
DiscoYPositionIORT = ypos;
}
void IORTDetectorConstruction::SetDiscoZPositionIORT(G4double zpos)
{
DiscoZPositionIORT = zpos;
}
void IORTDetectorConstruction::SetOuterRadiusDiscoIORT1(G4double outerr)
{
@@ -568,6 +615,12 @@ void IORTDetectorConstruction::SetDiscoXPositionIORT1(G4double xpos)
DiscoXPositionIORT1 = xpos;
}
void IORTDetectorConstruction::SetAngleDiscoIORT0(G4double phi0)
{
AngleDiscoIORT0 = phi0;
}
/////////////////////////////////protection disc///////////end///////////
@@ -601,6 +654,9 @@ void IORTDetectorConstruction::UpdateGeometry()
else ConstructDetector();
// update disc function
delete solidDiscoIORT0;
delete logicDiscoIORT0;
delete physiDiscoIORT0;
delete solidDiscoIORT;
delete logicDiscoIORT;
delete physiDiscoIORT;
@@ -648,6 +704,9 @@ void IORTDetectorConstruction::UpdateGeometry()
void IORTDetectorConstruction::DeleteDisc()
{
delete solidDiscoIORT0;
delete logicDiscoIORT0;
delete physiDiscoIORT0;
delete solidDiscoIORT;
delete logicDiscoIORT;
delete physiDiscoIORT;
@@ -688,6 +747,3 @@ void IORTDetectorConstruction::PrintParameters()
numberOfVoxelsAlongZ << ')' << G4endl;
}
@@ -155,6 +155,20 @@ IORTDetectorMessenger::IORTDetectorMessenger(IORTDetectorConstruction* detector)
changeDiscoXPositionIORTCmd -> SetUnitCandidates("mm cm m");
changeDiscoXPositionIORTCmd -> AvailableForStates(G4State_Idle);
changeDiscoYPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/YPositionDisc1",this);
changeDiscoYPositionIORTCmd -> SetGuidance("Set the Y position");
changeDiscoYPositionIORTCmd -> SetParameterName("Size",false);
changeDiscoYPositionIORTCmd -> SetDefaultUnit("mm");
changeDiscoYPositionIORTCmd -> SetUnitCandidates("mm cm m");
changeDiscoYPositionIORTCmd -> AvailableForStates(G4State_Idle);
changeDiscoZPositionIORTCmd = new G4UIcmdWithADoubleAndUnit("/ProtectionDisc1/ZPositionDisc1",this);
changeDiscoZPositionIORTCmd -> SetGuidance("Set the Z position");
changeDiscoZPositionIORTCmd -> SetParameterName("Size",false);
changeDiscoZPositionIORTCmd -> SetDefaultUnit("mm");
changeDiscoZPositionIORTCmd -> SetUnitCandidates("mm cm m");
changeDiscoZPositionIORTCmd -> AvailableForStates(G4State_Idle);
changeTheDisc1MaterialCmd = new G4UIcmdWithAString("/ProtectionDisc1/material", this);
changeTheDisc1MaterialCmd -> SetGuidance("Change the Disc1 material");
changeTheDisc1MaterialCmd -> SetParameterName("Disc1Material", false);
@@ -220,6 +234,16 @@ IORTDetectorMessenger::IORTDetectorMessenger(IORTDetectorConstruction* detector)
insertdiscCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
insertdiscCmd->SetGuidance("After this command MUST be applied update command \"beamOn\" ");
insertdiscCmd->AvailableForStates(G4State_Idle);
// Change Tilt angle disc1 + disc2
changeTheAnglediscDir = new G4UIdirectory("/ChangeTiltAngleDisc1-2/");
changeTheAnglediscDir -> SetGuidance("Set tilt angle of the 1-2 Discs");
changeTheAnglediscCmd = new G4UIcmdWithADoubleAndUnit("/ChangeTiltAngleDisc1-2/TiltAngleDisc1-2",this);
changeTheAnglediscCmd -> SetParameterName("Angle",false);
changeTheAnglediscCmd -> SetDefaultUnit("deg");
changeTheAnglediscCmd -> SetUnitCandidates("deg rad");
changeTheAnglediscCmd -> AvailableForStates(G4State_Idle);
}
/////////////////////////////////////////////////////////////////////////////
@@ -240,6 +264,8 @@ IORTDetectorMessenger::~IORTDetectorMessenger()
delete changeinnerRadiusDiscoIORTCmd;
delete changeheightDiscoIORTCmd;
delete changeDiscoXPositionIORTCmd;
delete changeDiscoYPositionIORTCmd;
delete changeDiscoZPositionIORTCmd;
delete changeTheDisc1MaterialCmd;
delete changeTheDisc2Dir;
@@ -251,6 +277,9 @@ IORTDetectorMessenger::~IORTDetectorMessenger()
delete deletediscCmd;
delete insertdiscCmd;
delete changeTheAnglediscDir;
delete changeTheAnglediscCmd;
}
/////////////////////////////////////////////////////////////////////////////
@@ -305,12 +334,19 @@ void IORTDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{ iortDetector -> SetDiscoXPositionIORT
(changeDiscoXPositionIORTCmd -> GetNewDoubleValue(newValue));
}
else if( command == changeDiscoYPositionIORTCmd )
{ iortDetector -> SetDiscoYPositionIORT
(changeDiscoYPositionIORTCmd -> GetNewDoubleValue(newValue));
}
else if( command == changeDiscoZPositionIORTCmd )
{ iortDetector -> SetDiscoZPositionIORT
(changeDiscoZPositionIORTCmd -> GetNewDoubleValue(newValue));
}
else if (command == changeTheDisc1MaterialCmd)
{
iortDetector -> SetDiscoMaterialIORT(newValue);
}
else if( command == changeOuterRadiusDisco1IORTCmd )
{ iortDetector -> SetOuterRadiusDiscoIORT1
(changeOuterRadiusDisco1IORTCmd -> GetNewDoubleValue(newValue));
@@ -331,7 +367,11 @@ void IORTDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
iortDetector -> SetDiscoMaterialIORT1(newValue);
}
else if (command == changeTheAnglediscCmd)
{
iortDetector -> SetAngleDiscoIORT0
(changeTheAnglediscCmd -> GetNewDoubleValue(newValue));
}
@@ -40,6 +40,7 @@
#include "IORTDetectorROGeometry.hh"
#include "IORTDummySD.hh"
#include "G4SystemOfUnits.hh"
#include "G4LogicalVolume.hh"
#include "G4VPhysicalVolume.hh"
#include "G4PVPlacement.hh"
@@ -49,8 +50,7 @@
#include "G4Material.hh"
/////////////////////////////////////////////////////////////////////////////
IORTDetectorROGeometry::IORTDetectorROGeometry(G4String aString,
G4ThreeVector detectorToWorldPosition,
IORTDetectorROGeometry::IORTDetectorROGeometry(G4String aString, G4ThreeVector pos,
G4double detectorDimX,
G4double detectorDimY,
G4double detectorDimZ,
@@ -59,7 +59,7 @@ IORTDetectorROGeometry::IORTDetectorROGeometry(G4String aString,
G4int numberOfVoxelsZ):
G4VReadOutGeometry(aString),
detectorToWorldPosition(detectorToWorldPosition),
detectorToWorldPosition(pos),
detectorSizeX(detectorDimX),
detectorSizeY(detectorDimY),
detectorSizeZ(detectorDimZ),
@@ -46,16 +46,17 @@
#include "G4TouchableHistory.hh"
#include "G4SDManager.hh"
#include "IORTMatrix.hh"
#include "G4SystemOfUnits.hh"
/////////////////////////////////////////////////////////////////////////////
IORTDetectorSD::IORTDetectorSD(G4String name):
G4VSensitiveDetector(name)
IORTDetectorSD::IORTDetectorSD(G4String dname):
G4VSensitiveDetector(dname)
{
G4String HCname;
collectionName.insert(HCname="IORTDetectorHitsCollection");
HitsCollection = NULL;
G4String sensitiveDetectorName = name;
sensitiveDetectorName = dname;
}
/////////////////////////////////////////////////////////////////////////////
@@ -38,6 +38,7 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "G4SystemOfUnits.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4HCofThisEvent.hh"
@@ -38,10 +38,18 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <sstream>
#include <cmath>
#include <vector>
#include "IORTInteractionParameters.hh"
#include "IORTParameterMessenger.hh"
#include "IORTDetectorConstruction.hh"
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4UnitsTable.hh"
#include "G4UImanager.hh"
#include "G4RunManager.hh"
@@ -52,19 +60,8 @@
#include "G4ParticleTable.hh"
#include "G4NistManager.hh"
#include "G4Element.hh"
#include "G4StateManager.hh"
#include "globals.hh"
#include <fstream>
#include <iostream>
#include <sstream>
#include <math.h>
#include <unistd.h>
#include <vector>
IORTInteractionParameters::IORTInteractionParameters(G4bool wantMessenger):
nistEle(new G4NistElementBuilder(0)),
nistMat(new G4NistMaterialBuilder(nistEle, 0)),
@@ -86,13 +83,13 @@ IORTInteractionParameters::~IORTInteractionParameters()
delete nistEle;
}
G4double IORTInteractionParameters::GetStopping (G4double energy,
G4double IORTInteractionParameters::GetStopping (G4double ene,
const G4ParticleDefinition* pDef,
const G4Material* pMat,
G4double density)
G4double dens)
{
if (density) return ComputeTotalDEDX(energy, pDef, pMat)/density;
return ComputeTotalDEDX(energy, pDef, pMat);
if (dens) return ComputeTotalDEDX(ene, pDef, pMat)/dens;
return ComputeTotalDEDX(ene, pDef, pMat);
}
bool IORTInteractionParameters::GetStoppingTable(const G4String& vararg)
{
@@ -195,9 +192,9 @@ void IORTInteractionParameters::PlotStopping(const G4String& filetype)
#endif
// Search for user material choice inside G4NistManager database
G4Material* IORTInteractionParameters::GetNistMaterial(G4String material)
G4Material* IORTInteractionParameters::GetNistMaterial(G4String mat)
{
Pmaterial = G4NistManager::Instance()->FindOrBuildMaterial(material);
Pmaterial = G4NistManager::Instance()->FindOrBuildMaterial(mat);
if (Pmaterial) density = Pmaterial -> GetDensity();
return Pmaterial;
}
@@ -38,18 +38,19 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include "IORTMatrix.hh"
#include "IORTAnalysisManager.hh"
#include "G4RunManager.hh"
#include "IORTPrimaryGeneratorAction.hh"
#include "G4ParticleGun.hh"
#include <fstream>
#include <unistd.h>
#include <iostream>
#include <sstream>
#include <iomanip>
#include "IORTMatrix.hh"
#include "IORTAnalysisManager.hh"
#include "IORTPrimaryGeneratorAction.hh"
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4RunManager.hh"
#include "G4ParticleGun.hh"
// Units definition: CLHEP/Units/SystemOfUnits.h
//
@@ -204,10 +205,10 @@ G4bool IORTMatrix::Fill(G4int trackID,
// Initialize data
if (newIon.dose && newIon.fluence)
{
for(G4int m=0; m<numberOfVoxelAlongX*numberOfVoxelAlongY*numberOfVoxelAlongZ; m++)
for(G4int q=0; q<numberOfVoxelAlongX*numberOfVoxelAlongY*numberOfVoxelAlongZ; q++)
{
newIon.dose[m] = 0.;
newIon.fluence[m] = 0;
newIon.dose[q] = 0.;
newIon.fluence[q] = 0;
}
if (energyDeposit > 0.) newIon.dose[Index(i, j, k)] += energyDeposit/massOfVoxel;
if (fluence) newIon.fluence[Index(i, j, k)]++;
@@ -63,6 +63,7 @@
// 2. the QGSP_BIC_EMY Reference Physics Lists (define the PHYSLIST eviroment variable):
// export PHYSLIST=QGSP_BIC_EMY
#include "G4SystemOfUnits.hh"
#include "G4RunManager.hh"
#include "G4Region.hh"
#include "G4RegionStore.hh"
@@ -205,7 +206,7 @@ void IORTPhysicsList::AddPhysicsList(const G4String& name)
delete emPhysicsList;
emPhysicsList = new G4EmPenelopePhysics();
G4RunManager::GetRunManager()-> PhysicsHasBeenModified();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmPenelopePhysics" << G4endl;
/////////////////////////////////////////////////////////////////////////////
// HADRONIC MODELS
@@ -38,13 +38,18 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include <CLHEP/Units/SystemOfUnits.h>
#include "IORTPrimaryGeneratorAction.hh"
#include "IORTPrimaryGeneratorMessenger.hh"
#include "globals.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "Randomize.hh"
#include "IORTAnalysisManager.hh"
IORTPrimaryGeneratorAction::IORTPrimaryGeneratorAction()
@@ -78,10 +83,10 @@ void IORTPrimaryGeneratorAction::SetDefaultPrimaryParticle()
// Define the energy of primary particles:
// gaussian distribution with mean energy = 10.0 *MeV
// and sigma = 400.0 *keV
G4double defaultMeanKineticEnergy = 10.0 *MeV;
G4double defaultMeanKineticEnergy = 10.0 *CLHEP::MeV;
meanKineticEnergy = defaultMeanKineticEnergy;
G4double defaultsigmaEnergy = 100.0 *keV;
G4double defaultsigmaEnergy = 100.0 *CLHEP::keV;
sigmaEnergy = defaultsigmaEnergy;
#ifdef G4ANALYSIS_USE_ROOT
@@ -93,19 +98,19 @@ void IORTPrimaryGeneratorAction::SetDefaultPrimaryParticle()
// the y, z coordinates have a gaussian distribution
G4double defaultX0 = -862.817 *mm;
G4double defaultX0 = -862.817 *CLHEP::mm;
X0 = defaultX0;
G4double defaultY0 = 0.0 *mm;
G4double defaultY0 = 0.0 *CLHEP::mm;
Y0 = defaultY0;
G4double defaultZ0 = 0.0 *mm;
G4double defaultZ0 = 0.0 *CLHEP::mm;
Z0 = defaultZ0;
G4double defaultsigmaY = 1. *mm;
G4double defaultsigmaY = 1. *CLHEP::mm;
sigmaY = defaultsigmaY;
G4double defaultsigmaZ = 1. *mm;
G4double defaultsigmaZ = 1. *CLHEP::mm;
sigmaZ = defaultsigmaZ;
// Define the parameters of the momentum of primary particles:
@@ -119,7 +124,7 @@ void IORTPrimaryGeneratorAction::SetDefaultPrimaryParticle()
sigmaMomentumZ = defaultsigmaMomentumZ;
*/
G4double defaultTheta = 6.0 *deg;
G4double defaultTheta = 6.0 *CLHEP::deg;
Theta = defaultTheta;
}
@@ -190,10 +195,15 @@ void IORTPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
while (true) {
Mx = CLHEP::RandFlat::shoot(0.9,1);
My = CLHEP::RandFlat::shoot(-0.1,0.1);
Mz = CLHEP::RandFlat::shoot(-0.1,0.1);
condizione = sqrt(Mx*Mx + My*My + Mz*Mz);
//Mx = CLHEP::RandFlat::shoot(0.9,1);
//My = CLHEP::RandFlat::shoot(-0.1,0.1);
//Mz = CLHEP::RandFlat::shoot(-0.1,0.1);
Mx = CLHEP::RandFlat::shoot(0.7,1);
My = CLHEP::RandFlat::shoot(-0.3,0.3); // ranges good for 0<Theta<20
Mz = CLHEP::RandFlat::shoot(-0.3,0.3);
condizione = std::sqrt(Mx*Mx + My*My + Mz*Mz);
if (condizione < 1) {
@@ -202,7 +212,7 @@ while (true) {
Mz = Mz/condizione;
if (Mx > cos(Theta)) {
if (Mx > std::cos(Theta)) {
break;
}
}
@@ -38,6 +38,8 @@
// *Corresponding author, email to carlo.casarino@polooncologicocefalu.it
//////////////////////////////////////////////////////////////////////////////////////////////
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4SteppingManager.hh"
#include "G4TrackVector.hh"
#include "IORTSteppingAction.hh"
@@ -94,18 +96,18 @@ void IORTSteppingAction::UserSteppingAction(const G4Step* aStep)
if(particleType == "nucleus") {
G4int A = def->GetBaryonNumber();
G4double Z = def->GetPDGCharge();
G4double posX = aStep->GetTrack()->GetPosition().x() / cm;
G4double posY = aStep->GetTrack()->GetPosition().y() / cm;
G4double posZ = aStep->GetTrack()->GetPosition().z() / cm;
G4double energy = secondaryParticleKineticEnergy / A / MeV;
G4double posX = aStep->GetTrack()->GetPosition().x() / CLHEP::cm;
G4double posY = aStep->GetTrack()->GetPosition().y() / CLHEP::cm;
G4double posZ = aStep->GetTrack()->GetPosition().z() / CLHEP::cm;
G4double energy = secondaryParticleKineticEnergy / A / CLHEP::MeV;
IORTAnalysisManager* analysisMgr = IORTAnalysisManager::GetInstance();
analysisMgr->FillFragmentTuple(A, Z, energy, posX, posY, posZ);
} else if(particleName == "proton") { // proton (hydrogen-1) is a special case
G4double posX = aStep->GetTrack()->GetPosition().x() / cm ;
G4double posY = aStep->GetTrack()->GetPosition().y() / cm ;
G4double posZ = aStep->GetTrack()->GetPosition().z() / cm ;
G4double energy = secondaryParticleKineticEnergy * MeV; // Hydrogen-1: A = 1, Z = 1
G4double posX = aStep->GetTrack()->GetPosition().x() / CLHEP::cm ;
G4double posY = aStep->GetTrack()->GetPosition().y() / CLHEP::cm ;
G4double posZ = aStep->GetTrack()->GetPosition().z() / CLHEP::cm ;
G4double energy = secondaryParticleKineticEnergy * CLHEP::MeV; // Hydrogen-1: A = 1, Z = 1
IORTAnalysisManager::GetInstance()->FillFragmentTuple(1, 1.0, energy, posX, posY, posZ);
}
@@ -115,19 +117,19 @@ void IORTSteppingAction::UserSteppingAction(const G4Step* aStep)
IORTAnalysisManager* analysis = IORTAnalysisManager::GetInstance();
//There is a bunch of stuff recorded with the energy 0, something should perhaps be done about this.
if(secondaryParticleName == "proton") {
analysis->hydrogenEnergy(secondaryParticleKineticEnergy / MeV);
analysis->hydrogenEnergy(secondaryParticleKineticEnergy / CLHEP::MeV);
}
if(secondaryParticleName == "deuteron") {
analysis->hydrogenEnergy((secondaryParticleKineticEnergy/2) / MeV);
analysis->hydrogenEnergy((secondaryParticleKineticEnergy/2) / CLHEP::MeV);
}
if(secondaryParticleName == "triton") {
analysis->hydrogenEnergy((secondaryParticleKineticEnergy/3) / MeV);
analysis->hydrogenEnergy((secondaryParticleKineticEnergy/3) / CLHEP::MeV);
}
if(secondaryParticleName == "alpha") {
analysis->heliumEnergy((secondaryParticleKineticEnergy/4) / MeV);
analysis->heliumEnergy((secondaryParticleKineticEnergy/4) / CLHEP::MeV);
}
if(secondaryParticleName == "He3"){
analysis->heliumEnergy((secondaryParticleKineticEnergy/3) / MeV);
analysis->heliumEnergy((secondaryParticleKineticEnergy/3) / CLHEP::MeV);
}
#endif
@@ -183,19 +185,19 @@ void IORTSteppingAction::UserSteppingAction(const G4Step* aStep)
IORTAnalysisManager* analysis = IORTAnalysisManager::GetInstance();
if (secondaryParticleName == "e-")
analysis -> electronEnergyDistribution(secondaryParticleKineticEnergy/MeV);
analysis -> electronEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
if (secondaryParticleName == "gamma")
analysis -> gammaEnergyDistribution(secondaryParticleKineticEnergy/MeV);
analysis -> gammaEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
if (secondaryParticleName == "deuteron")
analysis -> deuteronEnergyDistribution(secondaryParticleKineticEnergy/MeV);
analysis -> deuteronEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
if (secondaryParticleName == "triton")
analysis -> tritonEnergyDistribution(secondaryParticleKineticEnergy/MeV);
analysis -> tritonEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
if (secondaryParticleName == "alpha")
analysis -> alphaEnergyDistribution(secondaryParticleKineticEnergy/MeV);
analysis -> alphaEnergyDistribution(secondaryParticleKineticEnergy/CLHEP::MeV);
G4double z = (*fSecondary)[lp1]-> GetDynamicParticle() -> GetDefinition() -> GetPDGCharge();
if (z > 0.)
@@ -205,14 +207,9 @@ void IORTSteppingAction::UserSteppingAction(const G4Step* aStep)
// If a generic ion is originated in the detector, its baryonic number, PDG charge,
// total number of electrons in the orbitals are stored in a ntuple
analysis -> genericIonInformation(a, z, electronOccupancy, secondaryParticleKineticEnergy/MeV);
analysis -> genericIonInformation(a, z, electronOccupancy, secondaryParticleKineticEnergy/CLHEP::MeV);
}
#endif
}
}
}