Skip to main content

Materials

The library provides a comprehensive material system for particle transport calculations, including predefined materials commonly used in particle therapy and radiation physics.

Overview​

Each material is characterized by physical properties, including density, mean ionization potential, and atomic properties.

Material Properties​

Each Material object has the following properties:

  • id (int): Unique identifier for the material
  • name (str): Full name of the material
  • density_g_cm3 (float): Density in g/cm³
  • I_eV (float): Mean ionization potential in eV
  • average_A (float): Average mass number
  • average_Z (float): Average atomic number
  • phase (int): Physical state (condensed or gaseous)

Additional properties for advanced calculations:

  • alpha_g_cm2_MeV (float): Fit parameter for power-law representation of stopping power
  • p_MeV (float): Fit parameter for power-law representation of stopping power
  • m_g_cm2 (float): Fit parameter for linear representation of fluence changes

Using Materials​

Creating Material Objects​

Materials can be created either by ID or name:

import pyamtrack.materials as materials

# Create by ID
water = materials.Material(1) # Water, Liquid

# Create by name
aluminum = materials.Material("Aluminum")

Predefined Materials​

Common materials are available as module attributes:

import pyamtrack.materials as materials

# Access predefined materials
water = materials.water_liquid # ID: 1
air = materials.air # ID: 2
pmma = materials.pmma # ID: 3

Accessing Properties​

# Get material properties
print(f"Water density: {water.density_g_cm3} g/cm³")
print(f"Water I-value: {water.I_eV} eV")
print(f"Water phase: {water.phase}")

Available Materials​

You can get information about available materials using several utility functions:

List All Materials​

import pyamtrack.materials as materials

# Get all material IDs
ids = materials.get_ids()

# Get human-readable names
names = materials.get_long_names()

# Get programmatic names (lowercase, underscores)
short_names = materials.get_names()

Common Materials Reference​

MaterialIDDensity (g/cm³)Common Use
Water, Liquid11.0Reference material, body tissue equivalent
Air20.001225Atmospheric medium
PMMA31.19Phantom material
Aluminum42.7Beam modifiers

Error Handling​

PyAMTrack includes robust error handling for material operations:

try:
# Try to create material with invalid ID
invalid_material = materials.Material(9999)
except ValueError as e:
print(f"Error: {e}")

try:
# Try to create material with invalid name
invalid_material = materials.Material("Invalid Material")
except ValueError as e:
print(f"Error: {e}")

Using Materials in Calculations​

Materials are used throughout pyamtrack for various calculations:

import pyamtrack
import pyamtrack.materials as materials

# Calculate electron range in different materials
energy = 100.0 # MeV
range_water = pyamtrack.stopping.electron_range(energy, material=materials.water_liquid)
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")

Notes​

  • Material properties are based on standard reference data
  • Density values are at standard temperature and pressure where applicable
  • The material system supports both simple usage with predefined materials and advanced usage with detailed physical properties

See Also​

  • ICRU Report 49: Stopping Powers and Ranges for Protons and Alpha Particles
  • NIST Standard Reference Database
  • PyAMTrack API Reference for complete material specifications