dynamics#

Lineshape functions that describe the dynamics of an interaction.

class SimpleBreitWigner(s, mass, width, numerator, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Simple Breit–Wigner with a configurable numerator.

With the default numerator="mass-width", the propagator is multiplied by \(m_0 \Gamma_0\), so that \(\left|\hat{\mathcal{R}}^\mathrm{BW}(m_0^2)\right| = 1\). Set numerator="unity" for the dressed propagator of PDG2026, Eq. (50.31), which is also the convention of MultichannelBreitWigner.

(1)#\[\begin{split} \begin{aligned} \hat{\mathcal{R}}^\mathrm{BW}\left(s; m_{0}, \Gamma_{0}\right) \;&=\; \frac{\Gamma_{0} m_{0}}{- i \Gamma_{0} m_{0} + m_{0}^{2} - s} \\ \end{aligned}\end{split}\]
numerator: Literal['mass-width', 'unity'][source]#
property func: type[source]#

Return a class-valued constructor preserving non-sympy arguments.

SymPy’s type queries require a class, while downstream dispatch compares it with the original class. Constructed instances retain their original type and pickle representation.

class BreitWigner(s, mass, width, m1, m2, angular_momentum, meson_radius, phsp_factor, numerator, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Relativistic Breit–Wigner with a configurable numerator.

Uses an EnergyDependentWidth in the denominator (see Equations (2) and (3)). With the default numerator="mass-width", the propagator is multiplied by \(m_0 \Gamma_0\), so that \(\left|\hat{\mathcal{R}}^\mathrm{BW}(m_0^2)\right| = 1\), because \(\Gamma(m_0^2) = \Gamma_0\). Set numerator="unity" for the dressed propagator of PDG2026, Eq. (50.31), which is also the convention of MultichannelBreitWigner. The numerator does not affect the FormFactor inside the EnergyDependentWidth, where its normalization cancels.

(2)#\[\begin{split} \begin{aligned} \hat{\mathcal{R}}^\mathrm{BW}_{L}\left(s; m_{0}, \Gamma_{0}\right) \;&=\; \frac{\Gamma_{0} m_{0}}{m_{0}^{2} - i m_{0} \Gamma_{0}\left(s\right) - s} \\ \end{aligned}\end{split}\]
phsp_factor: PhaseSpaceFactorProtocol[source]#
numerator: Literal['mass-width', 'unity'][source]#
energy_dependent_width() → EnergyDependentWidth | Basic[source]#
property func: type[source]#

Return a class-valued constructor preserving non-sympy arguments.

SymPy’s type queries require a class, while downstream dispatch compares it with the original class. Constructed instances retain their original type and pickle representation.

class EnergyDependentWidth(s, mass0, gamma0, m_a, m_b, angular_momentum, meson_radius, phsp_factor, name, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Mass-dependent width, coupled to the pole position of the resonance.

See PDG2021, Eq. (50.28) and [Asner and Hanhart, 2012], equation (6). Default value for phsp_factor is PhaseSpaceFactor.

Warning

Equation (50.28) no longer appears in PDG2026, §Resonances, p.12. The width is now defined in terms of bare couplings, \(\Gamma_b(s) = g_b^2 \rho_b(s) n_b^2(s) / m_\mathrm{BW}\) (Equation (50.32)), and Equation (50.35) trades \(g_b\) for the partial width \(\Gamma_{\mathrm{BW},b}\). Combining the two gives the old Equation (50.28), but the PDG stresses that this substitution is only valid for narrow resonances with all channel thresholds below \(m_\mathrm{BW}\).

Note that the FormFactor of AmpForm is normalized in the sense that equal powers of \(z\) appear in the nominator and the denominator, while the definition in the PDG (as well as some other sources), always have \(1\) in the nominator of the Blatt–Weisskopf. In that case, one needs an additional factor \(\left(q/q_0\right)^{2L}\) in the definition for \(\Gamma(m)\).

With that in mind, the “mass-dependent” width in a relativistic_breit_wigner_with_ff becomes:

(3)#\[\begin{split} \begin{aligned} \Gamma_{0}\left(s\right) \;&=\; \frac{\Gamma_{0} \hat{\mathcal{F}}_{L}\left(s, m_{a}, m_{b}\right)^{2} \rho\left(s\right)}{\hat{\mathcal{F}}_{L}\left(m_{0}^{2}, m_{a}, m_{b}\right)^{2} \rho_{0}\left(m_{0}^{2}\right)} \\ \end{aligned}\end{split}\]

where \(F_L\) is defined by (1), \(q\) is defined by (5), and \(\rho\) is (by default) defined by (1).

phsp_factor: PhaseSpaceFactorProtocol[source]#
property func: type[source]#

Return a class-valued constructor preserving non-sympy arguments.

SymPy’s type queries require a class, while downstream dispatch compares it with the original class. Constructed instances retain their original type and pickle representation.

class MultichannelBreitWigner(s, mass, channels, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Breit–Wigner with a running width summed over several decay channels.

Each channel is a ChannelArguments term \(\Gamma_i^\text{ch}(s)\), giving

\[\frac{1}{m_0^2 - s - i \sum_i g_i^2 \rho_i(s) F_{L_i}^2(s)},\]

where \(g_i^2\) is the coupling squared, \(\rho_i\) is a PhaseSpaceFactor, and \(F_{L_i}\) is a FormFactor. Unlike an EnergyDependentWidth, a channel term is not normalized at the pole position. See PDG2026, Eqs. (50.31) and (50.32).

(4)#\[\begin{split} \begin{aligned} \mathcal{R}^\mathrm{BW}_\mathrm{multi}\left(s; g1sq, g2sq\right) \;&=\; \frac{1}{m_{0}^{2} - i m_{0} \left(\Gamma^\text{ch}\left(s; m_{0}, g1sq\right) + \Gamma^\text{ch}\left(s; m_{0}, g2sq\right)\right) - s} \\ \end{aligned}\end{split}\]
class ChannelArguments(s, mass, coupling_squared, m1, m2, angular_momentum, meson_radius, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

One channel term \(\Gamma_i^\text{ch}(s)\).

\[\Gamma_i^\text{ch}(s) = \frac{g_i^2}{m_0} \rho_i(s) F_{L_i}^2(s)\]

See PDG2026, Eq. (50.32).

relativistic_breit_wigner(s, mass0, gamma0) → Expr[source]#

Relativistic Breit–Wigner lineshape.

See Without form factor and [Asner and Hanhart, 2012].

Deprecated since version 0.17.0: Use SimpleBreitWigner instead.

relativistic_breit_wigner_with_ff(s, mass0, gamma0, m_a, m_b, angular_momentum, meson_radius, phsp_factor: PhaseSpaceFactorProtocol = <class 'ampform.dynamics.phasespace.PhaseSpaceFactor'>) → Expr[source]#

Relativistic Breit–Wigner with FormFactor.

See With form factor and PDG2026, §Resonances, p.12.

The general form of a relativistic Breit–Wigner with Blatt–Weisskopf form factor is:

(5)#\[\hat{\mathcal{R}}^\mathrm{BW}_{L}\left(s; m_{0}, \Gamma_{0}\right) \hat{\mathcal{F}}_{L}\left(s, m_{a}, m_{b}\right)\]

where \(\Gamma(s)\) is defined by (3), \(\hat{B}_L^2\) is defined by (2), and \(q^2\) is defined by (5).

formulate_form_factor(s, m_a, m_b, angular_momentum, meson_radius) → Expr[source]#

Formulate a Blatt–Weisskopf form factor.

Deprecated since version 0.16.0: Use FormFactor instead.

Submodules and Subpackages