phasespace#
import ampform.dynamics.phasespace
Different parametrizations of phase space factors.
Phase space factors are computed by integrating over the phase space element given by Equation (49.12) in PDG2021, §Kinematics, p.2. See also Equation (50.9) on PDG2021, §Resonances, p.6. This integral is not always easy to solve, which leads to different parametrizations.
This module provides several parametrizations. They all comply with the
PhaseSpaceFactorProtocol, so that they can be used in parametrizations like
EnergyDependentWidth.
- class PhaseSpaceFactorProtocol(*args, **kwargs)[source]#
Bases:
ProtocolProtocol that is used by
EnergyDependentWidth.Follow this
Protocolwhen defining other implementations of a phase space. Even functions likeBreakupMomentumcomply with this protocol, but are technically speaking not phase space factors.- __call__(s, m1, m2) Expr[source]#
Expected
signature.- Parameters:
s – Mandelstam variable \(s\). Commonly, this is just \(s = m_R^2\), with \(m_R\) the invariant mass of decaying particle \(R\).
m1 – Mass of decay product \(a\).
m2 – Mass of decay product \(b\).
- class PhaseSpaceFactor(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprStandard phase-space factor, using a definition consistent with
BreakupMomentum.See PDG2025, §Resonances, p.6, Equation (50.11). We ignore the factor \(\frac{1}{16\pi}\) as done in [Chung and Klempt, 1995], p.5.
Similarly to
BreakupMomentum, this class represents the numerator as a single square root for better numerical performance. This comes at the cost of a more complicated cut structure when the function is continued to the complex plane.Alternative implementations:
(1)#\[\begin{split} \begin{aligned} \rho\left(s\right) \;&=\; \frac{\sqrt{\left(s - \left(m_{1} - m_{2}\right)^{2}\right) \left(s - \left(m_{1} + m_{2}\right)^{2}\right)}}{s} \\ \end{aligned}\end{split}\]
- class PhaseSpaceFactorAbs(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase space factor with square root over the absolute value.
As opposed to
PhaseSpaceFactor, this takes the square root of theAbsvalue ofBreakupMomentumSquared.This version of the phase space factor is often denoted as \(\hat{\rho}\) and is used in
EqualMassPhaseSpaceFactor.(2)#\[\begin{split} \begin{aligned} \hat{\rho}\left(s\right) \;&=\; \frac{2 \sqrt{\left|{q^2\left(s\right)}\right|}}{\sqrt{s}} \\ \end{aligned}\end{split}\]with \(q^2\left(s\right)\) defined by
BreakupMomentumSquared.
- class PhaseSpaceFactorComplex(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase-space factor with
ComplexSqrt.Same as
PhaseSpaceFactorSplitSqrt, but using aComplexSqrtthat does have defined behavior for defined for negative input values along the real axis.(3)#\[\begin{split} \begin{aligned} \rho^\mathrm{c}\left(s\right) \;&=\; \frac{\sqrt[\mathrm{c}]{s - \left(m_{1} - m_{2}\right)^{2}} \sqrt[\mathrm{c}]{s - \left(m_{1} + m_{2}\right)^{2}}}{s} \\ \end{aligned}\end{split}\]with \(\sqrt[\mathrm{c}]{x}\) defined by
ComplexSqrt.
- class PhaseSpaceFactorKallen(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase-space factor that is the equivalent of
BreakupMomentumKallen.(4)#\[\begin{split} \begin{aligned} \rho\left(s\right) \;&=\; \frac{\sqrt{\lambda\left(s, m_{1}^{2}, m_{2}^{2}\right)}}{s} \\ \end{aligned}\end{split}\]with \(\lambda\left(x, y, z\right)\) defined by
Kallen.
- class PhaseSpaceFactorSplitSqrt(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase-space factor that is the equivalent of
BreakupMomentumSplitSqrt.This version of the
PhaseSpaceFactorrepresents the numerator as two separate square roots. This results in a cleaner cut structure at the cost of slightly worse numerical performance thanPhaseSpaceFactor.(5)#\[\begin{split} \begin{aligned} \rho\left(s\right) \;&=\; \frac{\sqrt{s - \left(m_{1} - m_{2}\right)^{2}} \sqrt{s - \left(m_{1} + m_{2}\right)^{2}}}{s} \\ \end{aligned}\end{split}\]
- class PhaseSpaceFactorSWave(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase space factor using
ChewMandelstamSWave().This
PhaseSpaceFactorprovides an analytic continuation for decay products with both equal and unequal masses (compareEqualMassPhaseSpaceFactor).(6)#\[\begin{split} \begin{aligned} \rho^\mathrm{CM}\left(s\right) \;&=\; - i \hat{\Sigma}_0\left(s\right) \\ \end{aligned}\end{split}\]with \(\hat{\Sigma}_0\left(s\right)\) defined by
ChewMandelstamSWave.
- class ChewMandelstamSWave(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprChew–Mandelstam class for \(S\)-waves (no angular momentum).
As a trick, the square root in \(q\) is defined with
ComplexSqrtso that this function has a well-defined behavior along the negative real axis.(7)#\[\begin{split} \begin{aligned} \hat{\Sigma}_0\left(s\right) \;&=\; \frac{\frac{2 q^\mathrm{c}\left(s\right)}{\sqrt{s}} \log{\left(\frac{m_{1}^{2} + m_{2}^{2} + 2 \sqrt{s} q^\mathrm{c}\left(s\right) - s}{2 m_{1} m_{2}} \right)} - \left(m_{1}^{2} - m_{2}^{2}\right) \left(- \frac{1}{\left(m_{1} + m_{2}\right)^{2}} + \frac{1}{s}\right) \log{\left(\frac{m_{1}}{m_{2}} \right)}}{\pi} \\ \end{aligned}\end{split}\]with \(q^\mathrm{c}\left(s\right)\) defined by
BreakupMomentumComplex.
- class PhaseSpaceFactorPWave(s, m1, m2, meson_radius, s_prime, epsilon, name, algorithm, configuration, dummify, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprPhase space factor using
ChewMandelstamIntegralfor \(\ell=1\).- Parameters:
s – Mandelstam variable s.
m1 – Mass of particle 1.
m2 – Mass of particle 2.
meson_radius – Meson radius, default is 1 (optional).
s_prime – Integration variable defaults to ‘x’ (optional).
epsilon – Small imaginary part to offset from the real axis (optional).
**kwargs – See
NumericalIntegralfor more details on the remaining parameters.
Warning
This
PhaseSpaceFactoruses the numerical dispersion integral implemented inChewMandelstamIntegral(viaNumericalIntegral). As such, you have to be careful when lambdifying this function and evaluating this over an array.>>> import numpy as np >>> from ampform.dynamics.phasespace import PhaseSpaceFactorPWave >>> s, m1, m2 = sp.symbols("s m_1 m_2") >>> rho_expr = PhaseSpaceFactorPWave(s, m1, m2, epsilon=1e-5) >>> rho_func = sp.lambdify((s, m1, m2), rho_expr.doit()) >>> s_values = np.linspace(0.1, 4.0, num=4) >>> rho_func(s_values, 0.14, 0.98).real array([-4.08315012e-07, 8.05561163e-03, 2.65015019e-01, 5.43083429e-01])
(8)#\[\begin{split} \begin{aligned} \rho^\mathrm{CM,1}\left(s\right) \;&=\; - i \Sigma_{1}\left(s\right) \\ \end{aligned}\end{split}\]with \(\Sigma_{\ell}\left(s\right)\) defined by
ChewMandelstamIntegral.- dummify: bool[source]#
Whether to dummify the integration variable. See
NumericalIntegral.dummify.
- class ChewMandelstamIntegral(s, m1, m2, angular_momentum, meson_radius, s_prime, epsilon, name, algorithm, configuration, dummify, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprDispersion integral for obtaining the analytic phase space factor for angular momenta L>0.
- Parameters:
s – Mandelstam variable s.
m1 – Mass of particle 1.
m2 – Mass of particle 2.
angular_momentum – Angular momentum.
meson_radius – Meson radius, default is 1 (optional).
s_prime – Integration variable defaults to ‘x’ (optional).
epsilon – Small imaginary part to offset from the real axis (optional).
**kwargs – See
NumericalIntegralfor more details on the remaining parameters.
(9)#\[\begin{split} \begin{aligned} \Sigma_{\ell}\left(s\right) \;&=\; \frac{s - \left(m_{1} + m_{2}\right)^{2}}{\pi} \int\limits_{\left(m_{1} + m_{2}\right)^{2}}^{\infty} \frac{\mathcal{F}_{\ell}\left(x, m_{1}, m_{2}\right)^{2} \rho\left(x\right)}{\left(x - \left(m_{1} + m_{2}\right)^{2}\right) \left(- i \epsilon - s + x\right)}\, dx \\ \end{aligned}\end{split}\]with \(\mathcal{F}_{\ell}\left(x, m_{1}, m_{2}\right)\) defined by
FormFactorand \(\rho\left(x\right)\) defined byPhaseSpaceFactor.- dummify: bool[source]#
Whether to dummify the integration variable. See
NumericalIntegral.dummify.
- class EqualMassPhaseSpaceFactor(s, m1, m2, name, *args, evaluate: bool = False, **kwargs)[source]#
Bases:
ExprAnalytic continuation for the
PhaseSpaceFactor.See PDG2018, §Resonances, p.9 and Analytic continuation.
Warning: The PDG specifically derives this formula for a two-body decay with equal masses.
(10)#\[\begin{split} \begin{aligned} \rho^\mathrm{eq}\left(s\right) \;&=\; \begin{cases} \frac{i \log{\left(\left|{\frac{\hat{\rho}\left(s\right) + 1}{\hat{\rho}\left(s\right) - 1}}\right| \right)} \hat{\rho}\left(s\right)}{\pi} & \text{for}\: s < 0 \\\frac{i \log{\left(\left|{\frac{\hat{\rho}\left(s\right) + 1}{\hat{\rho}\left(s\right) - 1}}\right| \right)} \hat{\rho}\left(s\right)}{\pi} + \hat{\rho}\left(s\right) & \text{for}\: s > \left(m_{1} + m_{2}\right)^{2} \\\frac{2 i \operatorname{atan}{\left(\frac{1}{\hat{\rho}\left(s\right)} \right)} \hat{\rho}\left(s\right)}{\pi} & \text{otherwise} \end{cases} \\ \end{aligned}\end{split}\]with \(\hat{\rho}\left(s\right)\) defined by
PhaseSpaceFactorAbs.