We have been gifted a \(K\)-matrix parameterization for two resonances within one channel, because it is International \(K\)-Matrix Day. The parameter values are:
Masses of final state particles: \(m_a=0.1\,\mathrm{GeV}\) and \(m_b=0.2\,\mathrm{GeV}\)
Bare masses of the resonances: \(m_1=1.8\,\mathrm{GeV}\) and \(m_2=1.1\,\mathrm{GeV}\)
Couplings: \(g=0.5\,\mathrm{GeV}\) and \(g=0.7\,\mathrm{GeV}\)
Goal
Find pole positions and the residues of the two resonances with the given parameter values.
Import Python libraries
from typing import Anyimport matplotlib.pyplot as pltimport numpy as npimport sympy as spfrom ampform.io import aslatexfrom ampform.kinematics.phasespace import Kallenfrom ampform.sympy import unevaluatedfrom iminuit import Minuitfrom IPython.display import Mathfrom matplotlib import colors
Phase space factors
We define the phase space factor \(\rho^\mathrm{CM}(s)\) using the Chew–Mandelstam function \(\Sigma(s)\) for \(S\) waves (\(L=0\)). For the discontinuity between the sheets, we use the ‘standard’ phase space factor \(\rho(s)\).
Definition of phase space factors
@unevaluated(real=False)class PhaseSpaceFactor(sp.Expr): s: Any m1: Any m2: Any _latex_repr_ =R"\rho\left({s}\right)"def evaluate(self) -> sp.Expr: s, m1, m2 =self.argsreturn sp.sqrt(s - (m1 + m2) **2) * sp.sqrt(s - (m1 - m2) **2) / s@unevaluated(real=False)class PhaseSpaceFactorCM(sp.Expr): s: Any m1: Any m2: Any _latex_repr_ =R"\rho^\mathrm{{CM}}\left({s}\right)"def evaluate(self) -> sp.Expr: s, m1, m2 =self.argsreturn-16* sp.pi * sp.I * ChewMandelstam(s, m1, m2)@unevaluated(real=False)class ChewMandelstam(sp.Expr): s: Any m1: Any m2: Any _latex_repr_ =R"\Sigma\left({s}\right)"def evaluate(self) -> sp.Expr: s, m1, m2 =self.args q = BreakupMomentum(s, m1, m2)return (1/ (16* sp.pi**2)* ( (2* q / sp.sqrt(s))* sp.log((m1**2+ m2**2- s +2* sp.sqrt(s) * q) / (2* m1 * m2))- (m1**2- m2**2) * (1/ s -1/ (m1 + m2) **2) * sp.log(m1 / m2) ) )@unevaluated(real=False)class BreakupMomentum(sp.Expr): s: Any m1: Any m2: Any _latex_repr_ =R"q\left({s}\right)"def evaluate(self) -> sp.Expr: s, m1, m2 =self.argsreturn sp.sqrt(Kallen(s, m1**2, m2**2)) / (2* sp.sqrt(s))args = sp.symbols("s m_a m_b")exprs = [ PhaseSpaceFactor(*args), PhaseSpaceFactorCM(*args), ChewMandelstam(*args), BreakupMomentum(*args),]Math(aslatex({expr: expr.doit(deep=False) for expr in exprs}))
Construction of the two sheets of the \(T\) matrix using a single-channel\(K\) matrix:
n =1K = sp.MatrixSymbol("K", n, n)rho_cm = sp.MatrixSymbol(R"\rho^\mathrm{CM}", n, n)rho = sp.MatrixSymbol("rho", n, n)I = sp.Identity(n)
T1 = (I - sp.I * K * rho_cm).inv() * KT1
\(\displaystyle \left(\mathbb{I} + - i K \rho^\mathrm{CM}\right)^{-1} K\)
T1.as_explicit()
\(\displaystyle \left[\begin{matrix}\frac{{K}_{0,0}}{- i {K}_{0,0} {\rho^\mathrm{CM}}_{0,0} + 1}\end{matrix}\right]\)
Definition of the second Riemann sheet via the discontinuity of the phasespace factor across the branch cut: \[
\begin{align}
\mathrm{Disc}_\mathrm{I-II}(s) &= -2i\rho(s) \\
\rho(s) &= \frac{\sqrt{s-(m_a-m_b)^2}\sqrt{s-(m_a+m_b)^2}}{s}
\end{align}
\]
T2 = (T1.inv() -2* sp.I * rho).inv()T2
\(\displaystyle \left(K^{-1} \left(\mathbb{I} + - i K \rho^\mathrm{CM}\right) + - 2 i \rho\right)^{-1}\)
We now parametrize the \(K\) matrix with two poles and define the standard phase space factor (used for the discrepancy between the sheets), as well as a phase space factor that is defined with the Chew–Mandelstam function:
Residues can be computed with a closed integral around the pole. A natural choice is to integrate over a circle \(\gamma=s_\mathrm{p}+re^{i\phi}\) around the pole \(s_\mathrm{p}\). Numerically, we can compute this by evaluating \(T_\mathrm{II}\) at \(N\) points around on that circle. The resulting sum can be simplified to: \[
\begin{align}
\mathrm{Res}(T, s_\mathrm{p})
&= \frac{1}{2\pi i} \oint_\gamma T(z) \, dz \\
&= \frac{1}{2\pi i} \int_{-\pi}^{+\pi} T(z) \; \underbrace{i r e^{i\phi}}_{dz/d\phi} \; d\phi
\quad \text{with} \quad z = s_\mathrm{p} + r e^{i\phi} \\
&= \frac{r}{2\pi} \int_{-\pi}^{+\pi} T(z) \, e^{i\phi} \, d\phi \\
&= \frac{r}{2\pi} \left(\frac{2\pi}{N}\sum_{i=1}^N T(z_i) \, e^{i\phi_i}\right) \\
&= \frac{r}{N} \sum_{i=1}^N T(z_i) \, e^{i\phi_i} \,.
\end{align}
\]
As a sanity check, we can verify whether \(\lim\limits_{z \to z_0} T(z) = \frac{\mathrm{Res}(T, z_0)}{z - z_0}\), for instance by ploting \(T(z)\) over \(z=z_0+re^{i\phi}\) with \(\phi \in [-\pi, +\pi]\).