Monte Carlo Planning Algorithm

The most 'modern' planning algorithm is the Monte Carlo algorithm. All the other algorithms are attempts to approach reality by using a dose kernel repetition kind of thing.

Monte Carlo is not like that. Monte Carlo is an attempt to simulate reality. The fact is that radiation dose results from the probabilistic interactions of photons with matter in its path. So the Monte Carlo algorithm breaks this down into its simplest form. A single photon is simulated. Everything in its path is simulated. So in the first millimetre of air there is a minute possibility of interaction, say 1 in 1 x 10-15, so in that millimetre the dice is rolled and a result reached - interaction or not interaction. If there is an interaction, then there is a finite chance of rippling the atom, undergoing a Compton type interaction or a Pair Production, or a Photoelectric effect, etc depending on the energy of the incident beam. If there is no interaction the photon moves on to the next millimetre and the same thing is repeated. Eventually each photon will either be extinguished by absorption somewhere in the simulated area, or will exit from the sphere of simulation.

This results in pretty pictures where each line is a calculated track. (thanks to Paracelsus for a sample picture.


So basically the algorithm uses a dice rolling event to determine the fate of the photon and its subsequent absorption. That's where the name Monte Carlo comes from - the casino in Monaco! Modified betting!

There are two difficulties with the algorithm:

  • the first is the accurate simulation of the reality around the linac. All the componentry has to be accurately specified to get the right probabilities.
  • the second problem is the computing power needed to run this algorithm. When used for planning, the algorithm has to be run over and over for millions and millions of times to get the dose profile. How many photons delivered to give 2Gy at dmax? There have been a couple of things to assist this. Firstly Graphical processing units have made these repetitive calculations much easier (thanks to gaming software), and the price of multiple and fast cores has dropped significantly which allows many more calculation to be multithreaded to reduce calculation time.

There is one beauty with the algorithm at present, and that is that the code is open sourced (e.g., GEANT) and so you can run it in your own clinic.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License