Skip to content

Source spectra

The Source object accepts either a single energy value in eV or a list of (energy_eV, weight) tuples for multi-line sources. Weights are normalized internally, so their scale does not matter.

Single energy line

A monoenergetic source is just a float in eV:

import rad_point_kernel as rpk

iron = rpk.Material(composition={"Fe": 1.0}, density=7.874)
layers = [rpk.Layer(thickness=10, material=iron)]

# Cs-137: single 662 keV gamma
source = rpk.Source(particle="photon", energy=662e3)
frac = rpk.calculate_transmission(layers=layers, source=source)
print(f"Cs-137 transmission through 10 cm Fe: {frac}")
Cs-137 transmission through 10 cm Fe: 0.0032304454589905237

Two-line photon source (Co-60)

Co-60 emits two gamma lines of roughly equal intensity at 1.173 MeV and 1.333 MeV. Pass them as a list of (energy_eV, weight) tuples:

import rad_point_kernel as rpk

iron = rpk.Material(composition={"Fe": 1.0}, density=7.874)
layers = [rpk.Layer(thickness=10, material=iron)]

source = rpk.Source(particle="photon", energy=[(1.173e6, 1.0), (1.333e6, 1.0)])
frac = rpk.calculate_transmission(layers=layers, source=source)
print(f"Co-60 transmission through 10 cm Fe: {frac}")
Co-60 transmission through 10 cm Fe: 0.01517235442167925

Mixed neutron source (D-T + D-D)

A fusion source with 95% D-T neutrons (14.06 MeV) and 5% D-D neutrons (2.45 MeV):

import rad_point_kernel as rpk

iron = rpk.Material(composition={"Fe": 1.0}, density=7.874)
layers = [rpk.Layer(thickness=10, material=iron)]

source = rpk.Source(particle="neutron", energy=[(14.06e6, 95), (2.45e6, 5)])
frac = rpk.calculate_transmission(layers=layers, source=source)
print(f"D-T + D-D transmission through 10 cm Fe: {frac}")
D-T + D-D transmission through 10 cm Fe: 0.2808254073208493

Weighting

Mixed-energy sources are weighted proportionally internally: weights are normalized, so (95, 5) and (0.95, 0.05) give identical results. This applies to all calculation functions: transmission, flux, and dose.