spine.utils.energy_loss

Module of functions that approximate the energy loss of particles through matter. It includes function to compute the CSDA KE of particles given their range and vice-versa.

Functions

W_max(beta, gamma, M)

Maximum energy transfer in a single colision.

bethe_bloch_lar(T, M[, z])

Bethe-Bloch energy loss function for liquid argon.

bethe_bloch_mpv_lar(T, M, x[, z])

Most-probable value of energy loss through a thin layer of liquid argon.

csda_ke_lar(R, M[, z, T_max, epsrel, epsabs])

Numerically optimizes the kinetic energy necessary to observe the range of a particle that has been measured, under the CSDA.

csda_range_lar(T0, M[, z, epsrel, epsabs])

Numerically integrates the inverse Bethe-Bloch formula to find the CSDA range of a particle for a given initial kinetic energy.

csda_table_spline(particle_type[, value, ...])

Interpolates a CSDA table to form a spline which maps a range to a kinematic energy estimate.

delta_lar(bg)

Density correction

inv_bethe_bloch_lar(T, M[, z])

Inverse Bethe-Bloch energy loss function for liquid argon.

le_corr_lar(beta[, z])

Low energy corrections to the Bethe-Bloch formula.

step_energy_loss_lar(T0, M, dx[, z, num_steps])

Steps the initial energy of a particle down by pushing it through steps of dx of liquid argon.

spine.utils.energy_loss.csda_table_spline(particle_type, value='T', table_dir='csda_tables')[source]

Interpolates a CSDA table to form a spline which maps a range to a kinematic energy estimate.

Parameters:
  • particle_type (int) – Particle type ID to construct splines. Maps are avaible for muons, pions, kaons and protons.

  • value (str, default 'T') – Value to provide for each range value (one of ‘T’ or ‘dE/dx’)

  • table_dir (str, default 'csda_tables') – Relative path to the CSDA range tables

Returns:

Function mapping range (cm) to Kinetic E (MeV) or dE/dx (MeV/cm)

Return type:

callable

spine.utils.energy_loss.csda_ke_lar(R, M, z=1, T_max=1000000.0, epsrel=0.001, epsabs=0.001)[source]

Numerically optimizes the kinetic energy necessary to observe the range of a particle that has been measured, under the CSDA.

Parameters:
  • R (float) – Range that the particle travelled through liquid argon in cm

  • M (float) – Particle mass in MeV/c^2

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

  • T_max (float, default 1e6) – Maximum allowed kinetic energy

  • epsrel (float, default 1e-3) – Relative error tolerance

  • epsabs (float, default 1e-3) – Asbolute error tolerance

Returns:

CSDA kinetic energy in MeV

Return type:

float

spine.utils.energy_loss.csda_range_lar(T0, M, z=1, epsrel=0.001, epsabs=0.001)[source]

Numerically integrates the inverse Bethe-Bloch formula to find the CSDA range of a particle for a given initial kinetic energy.

Parameters:
  • T0 (float) – Initial kinetic energy in MeV

  • M (float) – Particle mass in MeV/c^2

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

  • epsrel (float, default 1e-3) – Relative error tolerance

  • epsabs (float, default 1e-3) – Asbolute error tolerance

Returns:

CSDA range in cm

Return type:

float

spine.utils.energy_loss.step_energy_loss_lar(T0, M, dx, z=1, num_steps=None)[source]

Steps the initial energy of a particle down by pushing it through steps of dx of liquid argon. If num_steps is not specified, it will iterate until the particle kinetic energy reaches 0.

Parameters:
  • T0 (float) – Initial kinetic energy in MeV

  • M (float) – Particle mass in MeV/c^2

  • dx (float) – Step size in cm

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

  • num_steps (int, optional) – If specified, only step a maximum of num_steps times

Returns:

Array of kinetic energies at each step

Return type:

np.array

spine.utils.energy_loss.inv_bethe_bloch_lar(T, M, z=1)[source]

Inverse Bethe-Bloch energy loss function for liquid argon.

Parameters:
  • T (float) – Kinetic energy in MeV

  • M (float) – Impinging particle mass in MeV/c^2

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

Returns:

Value of the inverse energy loss rate in liquid argon in MeV/cm

Return type:

float

spine.utils.energy_loss.bethe_bloch_lar(T, M, z=1)[source]

Bethe-Bloch energy loss function for liquid argon.

Reference:

https://pdg.lbl.gov/2019/reviews/rpp2018-rev-passage-particles-matter.pdf

Corrections taken from:

https://pdg.lbl.gov/2023/AtomicNuclearProperties/adndt.pdf

Parameters:
  • T (float) – Kinetic energy in MeV

  • M (float) – Impinging particle mass in MeV/c^2

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

Returns:

Value of the energy loss rate in liquid argon in MeV/cm

Return type:

float

spine.utils.energy_loss.bethe_bloch_mpv_lar(T, M, x, z=1)[source]

Most-probable value of energy loss through a thin layer of liquid argon.

https://pdg.lbl.gov/2019/reviews/rpp2018-rev-passage-particles-matter.pdf

Parameters:
  • T (float) – Kinetic energy in MeV

  • M (float) – Impinging particle mass in MeV/c^2

  • x (float) – Material thickness in cm

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

Returns:

Value of the energy loss in liquid argon in MeV

Return type:

float

spine.utils.energy_loss.W_max(beta, gamma, M)[source]

Maximum energy transfer in a single colision.

Parameters:
  • beta (float) – Lorentz beta (v/c)

  • gamma (float) – Lorentz gamma (1/sqrt(1-beta**2))

  • M (float) – Mass of the impinging particle in MeV/c^2

Returns:

Maximum energy transferred in a single colision

Return type:

float

spine.utils.energy_loss.delta_lar(bg)[source]

Density correction

Parameters:

bg (float) – Product of Lorentz beta and gamma (beta/sqrt(1-beta**2))

Returns:

Density correction to the Bethe-Bloch function

Return type:

float

spine.utils.energy_loss.le_corr_lar(beta, z=1)[source]

Low energy corrections to the Bethe-Bloch formula.

Parameters:
  • beta (float) – Lorentz beta (v/c)

  • z (int, default 1) – Impinging partile charge in multiples of electron charge

Returns:

Low energy correction to the energy loss function

Return type:

float