Source code for dispersionrelations.kinematics

import numpy as np


[docs] def Kallen(x, y, z): r""" The Källén triangle function. Parameters ---------- x, y, z : array_like A complex number or sequence of complex numbers. Returns ------- λ : array_like The broadcasted shape from `x`, `y`, `z`. Notes ----- The function is defined as :cite:`Kallen:1964lxa` .. math:: \lambda(x, y, z) = x^2 + y^2 + z^2 - 2 (xy + yz + zx) . An alternate form can be derived for squared inputs .. math:: \lambda(q^2, M_1^2, M_2^2) = (q^2 - (M_1 + M_2)^2)(q^2 - (M_1 - M_2)^2) . """ return x**2 + y**2 + z**2 - 2 * (x * y + y * z + z * x)
[docs] def momentum_cms(s, M1, M2): r""" The center-of-mass momentum of a two-body system. Parameters ---------- s : array_like Four-momentum squared of the two-body system. M1 : float, complex Mass of the first particle. M2 : float, complex Mass of the second particle. Returns ------- q : array_like The same shape as input `s`. Notes ----- The CMS momentum is defined as .. math:: q(s, M_1, M_2) = \frac{1}{2}\sqrt{\frac{\lambda(s, M_1^2, M_2^2)}{s}}, where :math:`\lambda(s, M_1^2, M_2^2)` is the Källén triangle function. Examples ------- >>> import numpy as np >>> import matplotlib.pyplot as plt >>> from dispersionrelations.kinematics import momentum_cms >>> M1 = 0.3 >>> M2 = 0.5 >>> E_plot = np.linspace(M1+M2, 2, 500) >>> s_plot = E_plot**2 >>> plt.plot(E_plot, momentum_cms(s_plot, M1, M2)) .. plot:: import numpy as np import matplotlib.pyplot as plt from dispersionrelations.kinematics import momentum_cms M1 = 0.3 M2 = 0.5 E_plot = np.linspace(M1+M2, 2, 500) s_plot = E_plot**2 plt.plot(E_plot, momentum_cms(s_plot, M1, M2)) See Also -------- dispersionrelations.kinematics.Kallen """ return np.sqrt(Kallen(s, M1**2, M2**2) / s + 0j) / 2
[docs] def phase_space_twobody(s, M1, M2): r""" Phase space function for a two-particle system. Parameters ---------- s : array_like Four-momentum squared of the two-body system. M1 : float, complex Mass of the first particle. M2 : float, complex Mass of the second particle. Returns ------- ρ : array_like The same shape as input `s`. Notes ----- The phase space function is defined as .. math:: \rho(s, M_1, M_2) = \frac{1}{16\pi}\frac{2q}{\sqrt{s}} = \frac{1}{16\pi}\frac{\sqrt{\lambda(s, M_1, M_2)}}{s}, where :math:`q` is the CMS momentum of the particles. Examples ------- >>> import numpy as np >>> import matplotlib.pyplot as plt >>> from dispersionrelations.kinematics import phase_space_twobody >>> M1 = 0.3 >>> M2 = 0.5 >>> E_plot = np.linspace(M1+M2, 2, 500) >>> s_plot = E_plot**2 >>> plt.plot(E_plot, phase_space_twobody(s_plot, M1, M2)) .. plot:: import numpy as np import matplotlib.pyplot as plt from dispersionrelations.kinematics import phase_space_twobody M1 = 0.3 M2 = 0.5 E_plot = np.linspace(M1+M2, 2, 500) s_plot = E_plot**2 plt.plot(E_plot, phase_space_twobody(s_plot, M1, M2)) See Also -------- dispersionrelations.kinematics.momentum_cms, dispersionrelations.kinematics.Kallen """ return 1 / (16 * np.pi) * np.sqrt(Kallen(s, M1**2, M2**2) / s**2 + 0j)