Amplitude symmetrization

Amplitude symmetrization#

Hide code cell source

import logging

import qrules
import sympy as sp
from IPython.display import Markdown, Math
from qrules.io import asmermaid

import ampform
from ampform.dynamics.builder import RelativisticBreitWignerBuilder
from ampform.helicity.decay import perform_combinatorics
from ampform.io import aslatex

logging.getLogger("qrules.transition").setLevel(logging.ERROR)  # hide progress bar

Amplitudes for reactions with indistinguishable particles in the final state, such as \(D^+ \to \pi^+ \pi^+ \pi^-\), should be symmetrized, meaning that the amplitudes of the different subsystems are indistinguishable but for kinematic variables.

Note that QRules removes transitions that are indistinguishable, since it only considers quantum states, not relativistic kinematics.

reaction = qrules.generate_transitions(
    initial_state="D+",
    final_state=["pi+", "pi+", "pi-"],
    allowed_intermediate_particles=["rho(770)0"],
)

Hide code cell source

src = asmermaid(reaction, markdown=True, strip_spin=True)
Markdown(src)
        flowchart LR
    T0_0["$$0: \pi^{+}$$"]
    T0_1["$$1: \pi^{+}$$"]
    T0_2["$$2: \pi^{-}$$"]
    T0_N0["$$D^{+}$$"]
    T0_N1@{ shape: text, label: " " }
    T0_3("$$\rho(770)^{0}$$")
    T0_N0 --- T0_3
    T0_3 --- T0_N1
    T0_N0 --- T0_0
    T0_N1 --- T0_1
    T0_N1 --- T0_2
    

Internally, AmpForm’s HelicityAmplitudeBuilder permutates these transitions again, so that all kinematically distinguishable subsystems are available.

assert len(reaction.transitions) == 1
permutated_topologies = perform_combinatorics(reaction.transitions[0])

Hide code cell source

src = asmermaid(permutated_topologies, markdown=True, strip_spin=True)
Markdown(src)
        flowchart LR
    T0_0["$$0: \pi^{+}$$"]
    T0_1["$$1: \pi^{+}$$"]
    T0_2["$$2: \pi^{-}$$"]
    T0_N0["$$D^{+}$$"]
    T0_N1@{ shape: text, label: " " }
    T0_3("$$\rho(770)^{0}$$")
    T0_N0 --- T0_3
    T0_3 --- T0_N1
    T0_N0 --- T0_0
    T0_N1 --- T0_1
    T0_N1 --- T0_2
    T1_0["$$0: \pi^{+}$$"]
    T1_1["$$1: \pi^{+}$$"]
    T1_2["$$2: \pi^{-}$$"]
    T1_N0["$$D^{+}$$"]
    T1_N1@{ shape: text, label: " " }
    T1_3("$$\rho(770)^{0}$$")
    T1_N0 --- T1_3
    T1_3 --- T1_N1
    T1_N0 --- T1_1
    T1_N1 --- T1_0
    T1_N1 --- T1_2
    

The resulting HelicityModel contains only one amplitude that contains two terms with different kinematic variables:

\[\begin{split}\displaystyle \begin{aligned} {A^{12}}_{0,0,0,0} \;&=\; C_{D^{+} \to \pi^{+}_{0} \rho(770)^{0}_{0}; \rho(770)^{0} \to \pi^{+}_{0} \pi^{-}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{02}^{2}; m_{\rho(770)^{0}}, \Gamma_{\rho(770)^{0}}\right) D^{0}_{0,0}\left(- \phi_{02},\theta_{02},0\right) D^{1}_{0,0}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) \\ \;&+\; C_{D^{+} \to \pi^{+}_{0} \rho(770)^{0}_{0}; \rho(770)^{0} \to \pi^{+}_{0} \pi^{-}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{12}^{2}; m_{\rho(770)^{0}}, \Gamma_{\rho(770)^{0}}\right) D^{0}_{0,0}\left(- \phi_{0},\theta_{0},0\right) D^{1}_{0,0}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right) \\ \end{aligned}\end{split}\]

but the parameters of both amplitudes are the same:

Hide code cell source

assert len(model.amplitudes) == 1
((symbol, expr),) = model.amplitudes.items()
expr = sp.simplify(expr, doit=False)
Math(aslatex({symbol: expr}))
\[\begin{split}\displaystyle \begin{aligned} {A^{12}}_{0,0,0,0} \;&=\; C_{D^{+} \to \pi^{+}_{0} \rho(770)^{0}_{0}; \rho(770)^{0} \to \pi^{+}_{0} \pi^{-}_{0}} \left(\mathcal{R}^\mathrm{BW}\left(m_{02}^{2}; m_{\rho(770)^{0}}, \Gamma_{\rho(770)^{0}}\right) D^{0}_{0,0}\left(- \phi_{02},\theta_{02},0\right) D^{1}_{0,0}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) + \mathcal{R}^\mathrm{BW}\left(m_{12}^{2}; m_{\rho(770)^{0}}, \Gamma_{\rho(770)^{0}}\right) D^{0}_{0,0}\left(- \phi_{0},\theta_{0},0\right) D^{1}_{0,0}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right)\right) \\ \end{aligned}\end{split}\]

Hide code cell source

\[\begin{split}\displaystyle \begin{aligned} m_{\rho(770)^{0}} \;&=\; 0.77526 \\ \Gamma_{\rho(770)^{0}} \;&=\; 0.1474 \\ C_{D^{+} \to \pi^{+}_{0} \rho(770)^{0}_{0}; \rho(770)^{0} \to \pi^{+}_{0} \pi^{-}_{0}} \;&=\; 1+0i \\ \end{aligned}\end{split}\]

Some reactions result in amplitudes with sign flips. An example is \(J/\psi \to \gamma \pi^0 \pi^0\), where the parity prefactor of the \(\gamma\) results in a negative sign in some terms of the amplitude.

reaction = qrules.generate_transitions(
    initial_state="J/psi(1S)",
    final_state=["gamma", "pi0", "pi0"],
    allowed_intermediate_particles=["omega(782)"],
    formalism="helicity",
)

Hide code cell source

        flowchart LR
    T0_0["$$0: \gamma\left[\text{+}1\right]$$"]
    T0_1["$$1: \pi^{0}\left[0\right]$$"]
    T0_2["$$2: \pi^{0}\left[0\right]$$"]
    T0_N0["$$J/\psi(1S)\left[\text{+}1\right]$$"]
    T0_N1@{ shape: text, label: " " }
    T0_3("$$\omega(782)\left[\text{+}1\right]$$")
    T0_N0 --- T0_3
    T0_3 --- T0_N1
    T0_N0 --- T0_2
    T0_N1 --- T0_0
    T0_N1 --- T0_1
    T1_0["$$0: \gamma\left[\text{+}1\right]$$"]
    T1_1["$$1: \pi^{0}\left[0\right]$$"]
    T1_2["$$2: \pi^{0}\left[0\right]$$"]
    T1_N0["$$J/\psi(1S)\left[\text{+}1\right]$$"]
    T1_N1@{ shape: text, label: " " }
    T1_3("$$\omega(782)\left[\text{+}1\right]$$")
    T1_N0 --- T1_3
    T1_3 --- T1_N1
    T1_N0 --- T1_1
    T1_N1 --- T1_0
    T1_N1 --- T1_2
    

Hide code cell source

symbol, expr = next(iter(model.amplitudes.items()))
Math(aslatex({symbol: expr}, terms_per_line=1))
\[\begin{split}\displaystyle \begin{aligned} {A^{02}}_{0,-1,0,0} \;&=\; C_{J/\psi(1S) \to \omega(782)_{+1} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{01}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{-1,-1}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{0,-1}\left(- \phi_{01},\theta_{01},0\right) \\ \;&+\; C_{J/\psi(1S) \to \omega(782)_{+1} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{01}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{0,1}\left(- \phi_{01},\theta_{01},0\right) D^{1}_{1,-1}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) \\ \;&+\; C_{J/\psi(1S) \to \omega(782)_{+1} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{02}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{-1,-1}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{0,-1}\left(- \phi_{02},\theta_{02},0\right) \\ \;&+\; C_{J/\psi(1S) \to \omega(782)_{+1} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{02}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{0,1}\left(- \phi_{02},\theta_{02},0\right) D^{1}_{1,-1}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) \\ \;&+\; - C_{J/\psi(1S) \to \omega(782)_{0} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{01}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{0,-1}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{0,0}\left(- \phi_{01},\theta_{01},0\right) \\ \;&+\; - C_{J/\psi(1S) \to \omega(782)_{0} \pi^{0}_{0}; \omega(782) \to \gamma_{+1} \pi^{0}_{0}} \mathcal{R}^\mathrm{BW}\left(m_{02}^{2}; m_{\omega(782)}, \Gamma_{\omega(782)}\right) D^{1}_{0,-1}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{0,0}\left(- \phi_{02},\theta_{02},0\right) \\ \end{aligned}\end{split}\]