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: Protocol

Protocol that is used by EnergyDependentWidth.

Use this Protocol when defining other implementations of a phase space factor. Some implementations:

Even BreakupMomentumSquared and chew_mandelstam_s_wave() comply 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 BreakupMomentumSquared(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Squared value of the two-body break-up momentum.

For a two-body decay \(R \to ab\), the break-up momentum is the absolute value of the momentum of both \(a\) and \(b\) in the rest frame of \(R\). See Equation (49.17) on PDG2021, §Kinematics, p.3, as well as Equation (50.5) on PDG2021, §Resonances, p.5.

It’s up to the caller in which way to take the square root of this break-up momentum, because \(q^2\) can have negative values for non-zero \(m1,m2\). In this case, one may want to use ComplexSqrt instead of the standard sqrt().

(1)#\[\begin{split} \begin{array}{rcl} q^2\left(s\right) &=& \frac{\left(s - \left(m_{a} - m_{b}\right)^{2}\right) \left(s - \left(m_{a} + m_{b}\right)^{2}\right)}{4 s} \\ \end{array}\end{split}\]
s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#
class PhaseSpaceFactor(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Standard phase-space factor, using BreakupMomentumSquared().

See PDG2021, §Resonances, p.6, Equation (50.9). We ignore the factor \(\frac{1}{16\pi}\) as done in [6], p.5.

(2)#\[\begin{split} \begin{array}{rcl} \rho\left(s\right) &=& \frac{2 \sqrt{q^2\left(s\right)}}{\sqrt{s}} \\ \end{array}\end{split}\]

with \(q^2\) defined as (1).

s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#
class PhaseSpaceFactorAbs(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Phase space factor square root over the absolute value.

As opposed to PhaseSpaceFactor, this takes the Abs value of BreakupMomentumSquared, then the sqrt().

This version of the phase space factor is often denoted as \(\hat{\rho}\) and is used in EqualMassPhaseSpaceFactor.

(3)#\[\begin{split} \begin{array}{rcl} \hat{\rho}\left(s\right) &=& \frac{2 \sqrt{\left|{q^2\left(s\right)}\right|}}{\sqrt{s}} \\ \end{array}\end{split}\]

with \(q^2(s)\) defined as (1).

s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#
class PhaseSpaceFactorComplex(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Phase-space factor with ComplexSqrt.

Same as PhaseSpaceFactor(), but using a ComplexSqrt that does have defined behavior for defined for negative input values.

(4)#\[\begin{split} \begin{array}{rcl} \rho^\mathrm{c}\left(s\right) &=& \frac{2 \sqrt[\mathrm{c}]{q^2\left(s\right)}}{\sqrt{s}} \\ \end{array}\end{split}\]

with \(q^2(s)\) defined as (1).

s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#
class PhaseSpaceFactorSWave(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Phase space factor using chew_mandelstam_s_wave().

This PhaseSpaceFactor provides an analytic continuation for decay products with both equal and unequal masses (compare EqualMassPhaseSpaceFactor).

(5)#\[\begin{split} \begin{array}{rcl} \rho^\mathrm{CM}\left(s\right) &=& - \frac{i \left(\frac{2 \sqrt[\mathrm{c}]{q^2\left(s\right)}}{\sqrt{s}} \log{\left(\frac{m_{a}^{2} + m_{b}^{2} + 2 \sqrt{s} \sqrt[\mathrm{c}]{q^2\left(s\right)} - s}{2 m_{a} m_{b}} \right)} - \left(m_{a}^{2} - m_{b}^{2}\right) \left(- \frac{1}{\left(m_{a} + m_{b}\right)^{2}} + \frac{1}{s}\right) \log{\left(\frac{m_{a}}{m_{b}} \right)}\right)}{\pi} \\ \end{array}\end{split}\]
s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#
chew_mandelstam_s_wave(s, m1, m2)[source]#

Chew-Mandelstam function for \(S\)-waves (no angular momentum).

(6)#\[\frac{\frac{2 \sqrt[\mathrm{c}]{q^2\left(s\right)}}{\sqrt{s}} \log{\left(\frac{m_{a}^{2} + m_{b}^{2} + 2 \sqrt{s} \sqrt[\mathrm{c}]{q^2\left(s\right)} - s}{2 m_{a} m_{b}} \right)} - \left(m_{a}^{2} - m_{b}^{2}\right) \left(- \frac{1}{\left(m_{a} + m_{b}\right)^{2}} + \frac{1}{s}\right) \log{\left(\frac{m_{a}}{m_{b}} \right)}}{\pi}\]

with \(q^2(s)\) defined as (1).

See also

Chew-Mandelstam

class EqualMassPhaseSpaceFactor(s, m1, m2, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Analytic 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.

(7)#\[\begin{split} \begin{array}{rcl} \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_{a} + m_{b}\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{array}\end{split}\]

with \(\hat{\rho}\left(s\right)\) defined by PhaseSpaceFactorAbs (3).

s: Any[source]#
m1: Any[source]#
m2: Any[source]#
name: str | None[source]#