PHYS291 Project - Bethe Bloch Formula

Table of contents

Project Description

The goal for this project is to make a program using root that will solve the Bethe Bloch formula. This formula expresses the energy loss of a charged particle through a medium. I wanted to make a project relevant to particle therapy as I find it fascinating and hope to take a master's in medical physics. Since I took inspiration in particle therapy, I chose the particles proton/hydrogen, alpha/helium and carbon. The medium is water as our bodies are a large part water and this will serve as an approximation.

Program Description

The program is written in a single file bethe.C. It is based on the programmes buttonTest.C [6] and example.C [2] and modified to fit the desired functions. The program generates a graphical user interface where the user can choose between three different particles and energy levels. After the desired values are chosen the graph is plotted by pressing the "Draw" button. To exit the program the user simply must press the "Quit" button.


The Bethe Bloch formula [1] gives the mean energy loss per centimetres travelled for a charged particle through a chosen material, and is given by:

Bethe Bloch Formula

The formula can be modified using the classical electron radius [3]

Classical electron radius

and β expressed with kinetic energy and mass of the particle

Kinetic energy

Resulting in:

Bethe Bloch Formula

Where the different constants and variables are:
me= Electron mass
n= Electron density of water
z= Charge of ion
re= Classical electron radius
I= Ionization potential
Ek= Kinetic energy
m= Mass of particle

This is the formula used in my program.

The particles chosen were proton/hydrogen, alpha/helium and carbon ions with respective charges z=1, z=2 and z=6. The different masses for the particles were obtained form source [4] and converted to MeV. This gives the masses:
Proton/hydrogen: 938 MeV
Alpha/helium: 3728 MeV
Carbon: 11178 MeV

The ionization potential is given by the formula
Ionization potential
where Z is the atomic number [5]. Since Z= 10 for water the ionization potential equals
Ionization potential for water


I was originally planning on using the Bethe Bloch formula expressed in Introduction to Health Physics [5], but later discovered it was only valid for electrons. I therefore decided to use the formula from Wikipedia [1] instead.

The figures below show the plotted graphs for the highest energy for the three different particles.

200 MeV Proton 200 MeV Alpha 200 MeV Carbon

By using a for loop the graph is adjusted for the reduced energy as the particle travels. For the proton particle the graph looks nice, however for the alpha and carbon graphs something clearly goes wrong. It plots correctly in the beginning, but below E=0 the remainder of points are plotted outside the frame. I believe this is do to the number n under void ButtonWindow::DoDraw(). n decides how many points of x and y values are created and needs to be large enough for the farthest travelling particle. However, for particles traveling shorter, there are points created after E=0 that have negative y values and therefore outside of the y-axis (these points are not relevant as the particle will stop at E=0 and cannot have negative energy). I have tried different if conditions to try and stop the for loop when E=0 but I have not been able to solve the problem. I have also asked for help about this issue but have not received an answer.


This was my very first time programming in C++ and root, even using a Linux operating system. Despite the graph not turning out the way I wanted, I am pleased with the overall result. I managed to create a functional GUI designed the way I envisioned and learned a lot from the hiccups along the way.


[1] Bethe formula (2020) Available at: (Accessed: 24.04.20)

[2] Cern (2020) WritingGUI Available at: (Accessed: 12.06.20)

[3] Classical electron radius (2020) Available at: (Accessed: 15.06.20)

[4] Huang, W.J. (2017) Atomic mass adjustment Available at: (Accessed: 10.04.20)

[5] Johnson, T. E. (2017) Introduction to Health Physics. Fifth edition Colorado: McGraw-Hill Education

[6] Onuchin, V. (2007) buttonTest.C File Reference Available at: (Accessed: 13.06.20)