Standard lineshapes

Note

The formulas and figures on this page have been generated with the lineshapes in the lineshape module, so as to glue them back in to the API of that module.

import myst_nb
import sympy as sp
from expertsystem.amplitude.dynamics.lineshape import (
    BlattWeisskopf,
    relativistic_breit_wigner,
    relativistic_breit_wigner_with_ff,
)
import matplotlib.pyplot as plt
from expertsystem.reaction.combinatorics import arange
from matplotlib.figure import Figure


def plot_real_imag(
    expression: sp.Expr,
    variable: sp.Symbol,
    x_min: float,
    x_max: float,
    resolution: int = 100,
) -> Figure:
    delta = (x_max - x_min) / resolution
    x = list(arange(x_min, x_max, delta))
    y_real = list(map(lambda x: sp.Abs(expression).subs(variable, x), x))
    y_imag = list(map(lambda x: sp.arg(expression).subs(variable, x), x))
    fig, ax = plt.subplots(nrows=2, sharex=True, figsize=(8, 8))
    for a in ax:
        a.xaxis.set_ticks([])
        a.yaxis.set_ticks([])
    ax_real, ax_imag = ax
    ax_imag.set(xlabel=f"${variable.name}$")
    ax_imag.set(ylabel=f"imag $f({variable.name})$")
    ax_real.set(ylabel=f"real $f({variable.name})$")
    ax_real.yaxis.set_ticks([])
    ax_imag.yaxis.set_ticks([0, float(sp.pi)])
    ax_imag.yaxis.set_ticklabels([0, R"$\pi$"])
    ax_imag.set_ylim([0, float(sp.pi)])
    ax_real.plot(x, y_real)
    ax_imag.plot(x, y_imag)
    return fig

Form factor

The expertsystem uses BlattWeisskopf functions \(B_L\) as barrier factors (also called form factors):

q, d, L = sp.symbols("q, d, L", real=True)
ff = BlattWeisskopf(q, d, L)
display(ff)
myst_nb.glue("BlattWeisskopf", ff.doit())
\[\displaystyle B_L\left(q\right)\]
\[\begin{split}\displaystyle \begin{cases} 1 & \text{for}\: L = 0 \\\frac{\sqrt{2} \left|{d}\right| \left|{q}\right|}{\sqrt{d^{2} q^{2} + 1}} & \text{for}\: L = 1 \\\frac{\sqrt{13} d^{2} q^{2}}{\sqrt{9 d^{2} q^{2} + \left(d^{2} q^{2} - 3\right)^{2}}} & \text{for}\: L = 2 \\\sqrt{277} d^{2} q^{2} \sqrt{\frac{1}{d^{2} q^{2} \left(d^{2} q^{2} - 15\right)^{2} + \left(2 d^{2} q^{2} - 5\right) \left(18 d^{2} q^{2} - 45\right)}} \left|{d}\right| \left|{q}\right| & \text{for}\: L = 3 \\\frac{\sqrt{12746} d^{4} q^{4}}{\sqrt{25 d^{2} q^{2} \left(2 d^{2} q^{2} - 21\right)^{2} + \left(d^{4} q^{4} - 45 d^{2} q^{2} + 105\right)^{2}}} & \text{for}\: L = 4 \end{cases}\end{split}\]

Relativistic Breit-Wigner

Without form factor

See relativistic_breit_wigner():

m, m0, w0 = sp.symbols("m m0 Gamma", real=True)
myst_nb.glue(
    "relativistic_breit_wigner",
    relativistic_breit_wigner(m, m0, w0),
)
\[\displaystyle \frac{\Gamma m_{0}}{- i \Gamma m_{0} - m^{2} + m_{0}^{2}}\]
plot_real_imag(relativistic_breit_wigner(m, 1.0, 0.3), m, x_min=0, x_max=2);
../../_images/lineshapes_11_0.png

With form factor

See relativistic_breit_wigner_with_ff():

L = 0
m, m0, w0, ma, mb, meson_radius = sp.symbols(
    "m m0 Gamma m_a m_b q_r", real=True
)
myst_nb.glue(
    "relativistic_breit_wigner_with_ff",
    relativistic_breit_wigner_with_ff(
        mass=m,
        mass0=m0,
        gamma0=w0,
        m_a=ma,
        m_b=mb,
        angular_momentum=L,
        meson_radius=meson_radius,
    ).doit(),
)
\[\displaystyle \frac{\Gamma m_{0}}{- \frac{i \Gamma m_{0}^{2} \sqrt{\frac{\left(m^{2} - \left(m_{a} - m_{b}\right)^{2}\right) \left(m^{2} - \left(m_{a} + m_{b}\right)^{2}\right)}{m^{2}}}}{m \sqrt{\frac{\left(m_{0}^{2} - \left(m_{a} - m_{b}\right)^{2}\right) \left(m_{0}^{2} - \left(m_{a} + m_{b}\right)^{2}\right)}{m_{0}^{2}}}} - m^{2} + m_{0}^{2}}\]
ma = 0.2
mb = 0.3
complex_bw_ff = relativistic_breit_wigner_with_ff(
    mass=m,
    mass0=1.0,
    gamma0=0.3,
    m_a=ma,
    m_b=mb,
    angular_momentum=0,
    meson_radius=1,
)
plot_real_imag(complex_bw_ff.doit(), m, x_min=ma + mb, x_max=2);
../../_images/lineshapes_15_0.png