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
|
Maximum energy transfer in a single colision. |
|
Bethe-Bloch energy loss function for liquid argon. |
|
Most-probable value of energy loss through a thin layer of liquid argon. |
|
Numerically optimizes the kinetic energy necessary to observe the range of a particle that has been measured, under the CSDA. |
|
Numerically integrates the inverse Bethe-Bloch formula to find the CSDA range of a particle for a given initial kinetic energy. |
|
Interpolates a CSDA table to form a spline which maps a range to a kinematic energy estimate. |
|
Density correction |
|
Inverse Bethe-Bloch energy loss function for liquid argon. |
|
Low energy corrections to the Bethe-Bloch formula. |
|
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