"""Utility functions."""
import math
import scipy.constants
electron_mass_name = 'electron mass energy equivalent in MeV'
electron_mass_mev, _, _ = (scipy.constants
.physical_constants[electron_mass_name])
[docs]def get_rigidity(energy_mev):
"""
Args:
energy_mev (int): the energy of the lattice.
Returns:
float: p devided by the elementary charge.
"""
gamma = energy_mev / electron_mass_mev
beta = math.sqrt(1 - gamma ** (-2))
energy_j = energy_mev * 1e6 * scipy.constants.e
p = beta * energy_j / scipy.constants.c
return p / scipy.constants.e
[docs]def get_div_rigidity(energy):
"""
Args:
energy (int): the energy of the lattice.
Returns:
function: div rigidity.
"""
rigidity = get_rigidity(energy)
def div_rigidity(value):
return value / rigidity
return div_rigidity
[docs]def get_mult_rigidity(energy):
"""
Args:
energy (int): the energy of the lattice.
Returns:
function: mult rigidity.
"""
rigidity = get_rigidity(energy)
def mult_rigidity(value):
return value * rigidity
return mult_rigidity