MAIN AUTHOR: G.A.P. Cirrone(a)*

ACTUAL CONTRIBUTORS: G.A.P. Cirrone(a), L. Pandola(a), G. Petringa(a), F.Romano (a,g)

========>   PAST CONTRIBUTORS  <========

R. Calcagno(a), G.Danielsen (b), F.Di Rosa(a), S.Guatelli(c), A.Heikkinen(b), P.Kaitaniemi(b), A.Lechner(d), S.E.Mazzaglia(a), M.G.Pia(e), G.Russo(a), M.Russo(a), A. Tramontana (a), A.Varisano(a)

(a) Laboratori Nazionali del Sud of INFN, Catania, Italy (b) Helsinki Institute of Physics, Helsinki, Finland (c) University of Wallongong, Australia (d) CERN, Geneve, Switzwerland (e) INFN Section of Genova, Genova, Italy (f) Physics and Astronomy Department, Univ. of Catania, Catania, Italy (g) National Physics Laboratory, Teddington, UK

*Corresponding author, email to Pablo Cirrone



Hadrontherapy is a Geant4-based application specifically developed to address typical needs related to the proton and ion therapy.

It first release was in 2004. At that time Hadrontherapy was only capable to simulate a well specified proton therapy facility: the passive transport beam line installed at Laboratori Nazionali del Sud (INFN) in Catania, Italy. Today Hadrontontherapy, except that it is in continuous development, is more flexible and show many additional capabilities as respect the past.

Its geometrical set-up, for example, is now completely interchangeable permitting a simple switch between different geometrical configurations,which all share the same phantom (sensible detector) with the related features.

It is possible to do a simulation of a generic proton/ion transport beam line; the configuration are:

  • Passive proton beam line, which is installed at the LNS-INFN facility in Catania for eye tumor treatment with protons at 62 MeV. It is simulated in PassiveProtonBeamLine.cc;
  • Passive carbon beam line, which is the simulation of the transport beam line at LNS-INFN of Catania for experiments with carbon ion beams.It is simulated in PassiveCarbonBeamLine.cc; both in PassiveProtonBeamLine.cc in PassiveCarbonBeamLine.cc the user can change the geometry characteristics of beam line elements.
Alternatively the user can use the macro file.
  • Energy selector,it is simulated in EnergySelector.cc; This geometry class describes the simulation of a possible energy selector for particle beams produced in a laser-matter interaction, by means of magnetic fields

Folder structure of Hadrontherapy

Hadrontherapy distribution contain different sub-folders: \src: where source .cc files are stored
\include: where header .hh files are stored
\macro: where a set of ready-to-use macro files are provided
\experimentalData: in this director a set of reference (both experimental and analithycal) data are stored. These data are then used to perform a direct comparison with simulation results that are stored in the simulationResults folder. Data stored are better described in the README file contained inside.
\SimulationOutputs: when one of the .mac file contained in the macro folder is used, simulation results are directly stored in this directory.
\RootScripts: if the ROOT program is installed the User can use the scripts contained in this directory to compare directly results from the his/her simulation with reference data provided inside the experimentalData folder.
Currently this folders structure is in development and reference data as well as ROOT scripts will be added in the meanwhile new features and capabilities will be added. Moreover some ROOT script can be missed. Apologize for this and contact author if you need more information, clarification or useful discussion.

Description of the \macro folder

In the example directory, inside the "macro" folder two macro files are actually provided for the use of hadrontherapy with proton and carbon beams: proton_therapy.mac and ion_therapy.mac. The proton_therapy.mac permits to run a simulation with the whole passive beam line installed in Catania. The carbon_therapy.mac excludes all the elements (moving the origin of the ion beam close to the water phantom) and reproduce a simple passive beam line for the use with carbon beams.


Hadrontherapy source code is actually released inside the official distribution of the Geant4 toolkit in the $G4INSTALL/examples/advanced folder. To run Hadrontherapy you must first install the Geant4 package. Once Geant4 is installed the example must be first compiled (with the command gmake inside the ../Hadrontherapy 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.


The idea of Hadrontherapy is to provide a tool useful for Users interested in the field of proton and ion therapy. These can include the simple calculation of dose distribution curves in water or other materials, the derivation of important transport parameters (stopping powers, ranges, etc.) in different geometrical set-ups and for different materials, up to the complete simulation of a real transport beam line for therapy. The main component of the simulation is the phantom, a box that can be filled with different material and where the score of different information (at moment only the energy deposited in voxels) can be performed. A more complete description of the phantom is given in the next subsection. At moment the Hadrontherapy include the simulation of the proton beam line for eye-treatments installed at the INFN-LNS facility in Catania. This is a passive beam line and it is simulated in the file PassiveProtonBeamLine.cc. In the next future an ActiveProtonBeamLine.cc will be provided for the simulation of the active scanning treatment modality.

Moreover the possibility to add a very simple set-up (a beam, a phantom where collect the informations and some simple component) will be also provided. All these configuration will be set by macro commands. There is also a facility that allows the user to make a choice between alternative geometry set-ups. This can be done by using command: /geometrySetup/selectGeometry where is either "default" for the standard hadrontherapy geometry or "Carbon" for INFN-LNS transport beam line, normally used for interdisciplinary researches with carbon and other ion beams. The water phantom to collect informations At the end of the beam line a phantom (a box of uniform material) is reproduced. Inside it, a user-defined region is divided (via the ROGeomtry classes of Geant4) in cubic and identical voxels. The voxels size can be varied as well as the voxelized region. At the end of a simulation run the energy deposited by primaries and secondaries in each voxel is collected. This information is available as an .out file or as a .root (if the G4ANALYSIS_USE_ROOT variable is defined and the ROOT interface is activated). The default sizes of the active voxelized region are 40x40x40 mm and actually the default voxel configuration is 200 x 1 x 1, which means 200 slices with 0.2 mm of thickness. Of course this default can be modified in order to obtain, for example, a matrix of 80x80x80 cubic voxels each with a lateral dimension of 0.5 mm. As concern the cut and stepMax values, the default configuration implies a cut value of 0.01 mm in the whole world (use the command /physic/setCuts 0.01 mm) and a stepMax of 0.01 mm just in the phantom (use the command /Step/waterPhantomStepMax 0.01 mm). In any case it is strongly recommended to use a stepMax value not biggernthan 5% of the dose slice thickness.

The Proton passive beam line class file

The following is the description of the elements of the passive proton beam line of the Laboratori Nazionali del Sud in Catania (I). This line is completely simulated inside this class. The main elements are:

  • The SCATTERING SYSTEM: to transversally enlarge the original beam
  • The COLLIMATORS: placed along the beam line to collimate the beam;
  • The RANGE SHIFTERS: to decrease the energy of the primary proton beam to a specific value;
  • The MODULATOR WHEEL: to modulate the energy of the primary and mono-energetic beam in to a wide spectrum. The energy modulation is necessary to homogeneously irradiate a tumour volume that can extends in depth up to 20 mm;
  • The MONITOR CHAMBERS: very thin ionisation chamber that permit the dose monitoring during the patient irradiation;
  • The MOPI detector: microstrips, air free detector utilised for the check of the beam symmetry during the treatment;
  • The PATIENT COLLIMATOR: a brass, tumour-shaped collimator able to confine the proton irradiation field in order to irradiate just the tumour mass in the transverse direction;

The user has the possibility to vary, via messenger, almost all the geometrical characteristics of the beam line elements (i.e. their position along the beam line, their thickness, etc.). The elements simulated in the PassiveBeamLine.cc file are:

  • A scattering system, to spread geometrically the beam;
  • A system of collimators, to avoid the scattering radiation;
  • A modulation system that spreads the beam in energy and produces the so-called spread out Bragg peak; It is constituted by a rotating wheel of different thicknesses. The wheel rotates around is axis (parallel to the proton beam axis) and its movement can be obtained by means of a messenger between runs.
  • A set of monitor chambers (special transmission ionisation chambers used to control the particle flux during the irradiation);
  • A final long collimator and a patient collimator defining the final shape of the beam before reaching the patient.
  • A water phantom: it is a box of water where the energy deposit is calculated. The use of the water phantom is required by the international protocol on the measure of dose in the case of proton and ion beams (IAEA 398, 2000).


A particular care is addressed to the simulation of the physic processes. Three different approaches can be used for the choose of the physic models.

Approach 1:

Using the macro command:
/physic/addPhysics/<physics List name>.
In this case the models (for electromagnetic, hadronic elastic and hadronic inelastic) can be activated directly calling the name of the Physics Lists that are available inside the Geant4 kernel in the directory:
An example of the use of the Physics List can be found in the macro files: proton_therapy.mac and ion_therapy.mac

Approach 2:

A set of built-in physic models are also contained inside the Hadrontherapy directory. These are called Local*.cc and Local*.hh and can be activated using the macro command:
NOTE: we do not recommend the use of local physics lists while we recommend the use of the Physics Lists or of the Reference Physics Lists (Approach 1 or 3)

Approach 3:

We developed this approach in order to simplify the choice of the physic models to be used in the application. With this approach the user must only insert a command line in his/her .mac file using the:
/physics/addPackage <PACKAGE_NAME>
This permits to switch-on an already build physic package. Various packages are already present in the Geant4 tree: they are in the directory: geant4/source/physics_lists/lists/include In this case hadronic inelastic models are directly activated for every particle.


Two macro files (proton_therapy.mac and ion_therapy.mac) can be used for proton and ion simulations. Also the QGSP_BIC_EMY package can be used if the Approach 3 is preferred. INTERACTIVE COMMANDS

How to change Phantom and Detector 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. A first set of commands let to change in the detector:
  • The detector (box) sizes, where the X dimension is that along the beam direction.
  • The voxels dimension. Changing this parameters, and/or the detector sizes, user should choose values in order to be divisors of the detector correspondent sizes.
For both commands, zero or negative values mean << don't change it >>
  • The displacement between the phantom and the detector. In this case zero or positive values are allowed, while the negatives ones mean: << don't change it>>.
Obviously all the sizes must be set in order to maintain the detector inside the phantom, otherwise system complains.

Stopping powers calculation

It is possible for the end-user to calculate, via macro command, stopping powers only for those materials inserted into G4NistMaterialBuilder class (about 300). To get stopping powers user must provide this command line on the idle interactive terminal (or into a macro file) :
/parameter/getstopping <G4_material> <Emin> <Emax> <nPoints> <[particle]> <[output_filename]>
All parameters are mandatory except those inside square brackets []. Default values for parameters inside square brackets are respectively proton and standard output (usually the user console terminal). Parameters are respectively:
  • The material (NIST) name (something like G4_..., the complete list of elements and materials is available into the G4NistMaterialBuilder class and can be printed to the terminal screen via the macro command: /parameter/nist )
  • Kinetic energy range in MeV and the number of data points to be retrieved (in a logarithmically uniform space)
  • The particle name (proton, e+, e-, He3, neutron,... a full list can be gotten via the macro command: /particle/list).

Only for ions, user must firstly give them to the particle gun, for example issuing the macro commands:

 /gun/particle ion
 /gun/ion <Z> <A> <[charge]>

The output filename: if users leave this blank then the standard output is used.

LET calculation

Hadrontherapy application simulates and calculates the averaged dose LET. At run time, data needed to calculate LET are collected. At the end of simulation, LET mean values are calculated and stored into a file. The Let.out file will be produced at the end of a run, where you can find the dose average LET for each tracked particles (both primary and secondary ones) and the total mean LET. The file is structured as follows:
  • The first three columns contains the voxel indexes (first index "i" refers to the beam direction);
  • Total LET (both track and dose weighted);
  • Secondary LET
  • LET Dose for each single ion (whose name is in the top row of the file).
To activate the LET computation (HadrontherapyLet.cc), you have to execute the following command:


Run the example in interactive mode


In this case the main file (Hadrontherapy.cc) performs different operations depending on which environment variable is activated;

For example, if the environment variable G4UI_USE_TCSH is activated Hadrontherapy 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 stadard G4UITerminal. Run the example using macro files

Hadrontherapy can be launched using a macro file:

    $G4WORDIR/bin/Linux-g++/Hadrontherapy macroFile.mac
The defaultMacro.mac file is contained in the main directory of Hadrontherapy while a big number of other macro are inside the /macro folder.


ASCII file

A .out file os generated at the end of each run (DoseDeposited.out) is its default name that an be changed in the HadrontherapyMatrix.cc file. The file contains four columns; the first four columns represent the voxel indexs (that univocally identify the voxel volume) while the last column represent the energy deposited in the given voxel. By default the name of the output file is DoseDistribution.root. The name of the file can be set by using command:
/analysis/setAnalysisFile <filename>
It is also possible to create multiple new output files in the same simulation session.

Use of the AIDA interface

.root files can be produced usind the AIDA interface. The files are produced if the variable G4ANALYSIS_USE is set to 1 and the analysis tool (AIDA interface) is correctly installed. The file contains histograms and n-tuples. The histograms contain the Bragg curves: energy deposited versus the depth in water (in mm) for the primary beam as well as all the secondaries produced. The n-tuple contains the total 3D energy deposit in the phantom; the information is energy deposit in each voxel with respect to the position of the voxel. Note that the same information can be stored in different format, like .xml using the same AIDA interface.

Use of the ROOT analysis

Alternatively it is possible to use ROOT data analysis package directly for the production of output files, without using AIDA. In the last version, anyway, this functionality must be implemented by User. This can be accomplished by setting an ad-hoc environment variable (i.e. G4ANALYSIS_USE_ROOT) to 1 (and unsetting G4ANALYSIS_USE if you have it set), adding in the code lines to create outputs with the ROOT libraries and recompiling the application. In this case you must have ROOT installed in your machine.


This is a list of future components that will be added in Hadrontherapy and of main Users requests that we hope to fulfill in the next future What is in progress
  • A module for the simulation of an active beam line will be provided. The Korean Group of the Proton therapy center, National Cancer Center is developing this
  • Modules for LET and RBE (Relative Biological Effectiveness) calculation. The Catania Group in Collaboration with the Turin one is working on this.
  • Hadrontherapy will permit the simulation of a 'basic' experiment usefull in hadrontherapy applications. User will be able to simulate thin/thick target configuration to calculate quantities like double differential cross sections of secondaries produces, or fluence and yelds of primary and secondaries in a thick block. This work is maily discussed with P. Kaitaniemi and the Group from the Helsinki Institute of Physics.

What is requested from Users

  • Dicom interface

-- LucianoPandola - 21 Oct 2014

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r2 - 2018-02-07 - GiuseppeCirrone
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Geant4 All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback