Rad Lab is a Monte-Carlo simulation toolkit for modeling the performance of Geiger–Müller tubes. Built on top of Calzone/Geant4, it provides an easy-to-use, reproducible, and extensible environment for detector simulation and design.
With Rad Lab, you can:
- Compute detector efficiency (detected particles per incident particle).
- Determine dose sensitivity (cpm per µSv/h) using ICRP 74.
- Explore the directional response of detectors.
- Obtain correct sensitivities for various radiation sources.
- Prototype and evaluate measurement geometries.
Explore the included notebooks:
- Simulated gamma spectra
- J305 Geiger tube
- M4011 Geiger tube
- HH614 Geiger tube
- СБМ20 (SBM20) Geiger tube
- СИЗБГ (SI3BG) Geiger tube
- LND 7317 Geiger tube
-
Install the latest Geant4 binary release: https://geant4.web.cern.ch/download/
-
Install Python: https://www.python.org/
-
Install PIP: https://pip.pypa.io/en/stable/
-
Install Python dependencies:
pip install -r requirements.txt -
Install VSCode: https://code.visualstudio.com/
-
In VSCode, install the Jupyter extension (left toolbar → Extensions → search for "Jupyter").
- Start from an existing example notebook to create or modify a detector.
- Edit the geometry file
data/geometry.toml. (See Calzone Geometry docs: https://calzone.readthedocs.io/en/latest/geometry.html) - Open the corresponding notebook in VS Code and run the simulation.
Rad Lab uses a right-handed coordinate system:
- x-axis: along the detector’s length
- y-axis: direction of incoming radiation
- z-axis: upward
To display a geometry:
calzone display [geometry.toml]
For navigation instructions, see the Calzone Interactive Display docs: https://calzone.readthedocs.io/en/latest/display.html
Rad Lab performs the following steps:
-
Loads geometry
A
geometry.tomlfile specifies:- a
Sourcebox emitting parallel particles toward the detector at the coordinate origin. The source area equals the width × height of this box. - an
EffectiveVolume, inside which freed electrons are counted.
- a
-
Runs Monte-Carlo transport
Particle transport is simulated using Calzone/Geant4.
-
Counts ionization electrons
Electrons entering or produced in the
EffectiveVolumeare counted. -
Computes detector efficiency
Efficiency = detected electrons / incident particles.
-
Computes dose sensitivity
- Ambient dose equivalent: using ICRP 74.
-
Generates emission spectra
- Isotopes: spectra from
paceENSDF(IAEA ENSDF data). - X-ray tubes: spectra from
SpekPy. - Natural background: modeled as a simple decaying exponential.
- Isotopes: spectra from
-
Computes equivalent effective dose for each source.
| Source | Type | Main emissions |
|---|---|---|
| Cs-137 | γ | 662 keV |
| Co-60 | γ | 1173 + 1332 keV |
| Tc-99m | γ | 140 + 142 keV |
| I-131 | γ | Complex spectrum |
| Lu-177 | γ | 113 + 208 keV |
| Am-241 | γ | 59 keV |
| Radium | γ | Ra-226 chain |
| Uranium ore | γ | U-235 and U-238 series |
| Uranium glaze | γ | Processed uranium |
| Depleted uranium | γ | U-238 |
| Thorium ore | γ | Th-232 series |
| X-ray tube (60 kV) | X | Bremsstrahlung |
| K-40 | γ | 1461 keV |
| Natural background | Mixed | Typical environmental |
To generate or update gamma spectra, run the notebook: build-spectra.ipynb
You will need:
- Special thanks to BikingBoffin from /r/radiation for inspiring this project.