Skip to main content

Electron Range

The electron_range function calculates the maximum distance that electrons can travel in a material before losing all their energy. This calculation can be performed using various theoretical and empirical models.

Function Purpose​

Calculate the maximum electron range in a material using different stopping power models. This is essential for:

  • Radiation therapy treatment planning
  • Shielding calculations
  • Detector design
  • Radiation protection

Input Parameters​

  • input: The electron energy in MeV. The function accepts:

    • A single value as float or int
    • A numpy.ndarray of energy values
    • A Python list of energy values
  • material (optional): The material through which the electrons travel. Can be specified as:

    • An integer ID (e.g., 1 for water)
    • A Material object
    • Defaults to 1 (liquid water) See the Materials documentation for detailed information about available materials.
  • model (optional): The stopping power model to use. Can be specified as:

    • A string name (e.g., "tabata")
    • An integer ID (e.g., 7 for Tabata model)
    • Defaults to "tabata"

Available Models​

Model NameIDDescription
"butts_katz"2Butts & Katz model, suitable for track structure calculations
"waligorski"3Waligorski model, optimized for radiobiology applications
"geiss"4Geiss model, focused on heavy ion interactions
"scholz"5Original Scholz model
"edmund"6Edmund model
"tabata"7Tabata model (default), widely used empirical model
"scholz_new"8Updated Scholz model with improved accuracy

Output​

The function returns the calculated range(s) in meters as:

  • A float for a single input value
  • A numpy.ndarray for NumPy array input
  • A Python list for list input

Notes​

  • The range values represent the maximum distance electrons can travel in the material
  • Different models may give varying results due to different theoretical approaches
  • Model variations typically stay within physically reasonable bounds
  • The function supports vectorized operations for efficient batch calculations
  • Results scale correctly with energy (higher energy = longer range)
  • All models work with all available materials

Example Usage​

Basic Usage with Default Model​

import pyamtrack

energy = 100.0 # MeV
range_m = pyamtrack.stopping.electron_range(energy)
print(f"Range in water: {range_m:.2e} m")

Using Different Materials​

import pyamtrack
from pyamtrack import materials

energy = 100.0 # MeV

# Using material ID
range_water = pyamtrack.stopping.electron_range(
energy,
material=1 # water
)

# Using Material object
range_air = pyamtrack.stopping.electron_range(
energy,
material=materials.air
)

print(f"Range in water: {range_water:.2e} m")
print(f"Range in air: {range_air:.2e} m")

Using Different Models​

import pyamtrack

energy = 100.0 # MeV

# Using model name
range_tabata = pyamtrack.stopping.electron_range(
energy,
model="tabata"
)

# Using model ID
range_scholz = pyamtrack.stopping.electron_range(
energy,
model=5 # scholz model
)

print(f"Range (Tabata): {range_tabata:.2e} m")
print(f"Range (Scholz): {range_scholz:.2e} m")

Batch Calculations​

import pyamtrack
import numpy as np

energies = np.array([10.0, 50.0, 100.0, 500.0]) # MeV
ranges = pyamtrack.stopping.electron_range(energies)
print(f"Ranges: {ranges}")

Error Handling​

The function includes comprehensive error checking:

import pyamtrack

try:
# Invalid material
range_invalid = pyamtrack.stopping.electron_range(
100.0,
material="invalid"
)
except TypeError as e:
print(f"Material error: {e}")

try:
# Invalid model
range_invalid = pyamtrack.stopping.electron_range(
100.0,
model="invalid_model"
)
except RuntimeError as e:
print(f"Model error: {e}")

See Also​

  • Materials Documentation - Details about available materials
  • ICRU Report 37 - Stopping Powers for Electrons and Positrons
  • The Physics of Radiation Therapy (F.M. Khan) - Chapter on electron interactions
  • Original model papers:
    • Tabata et al. (1972)
    • Butts and Katz (1967)
    • Scholz and Kraft (1994)