Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
"automodule",
"axhline",
"axvline",
"bbox_to_anchor",
"bdist",
"bgcolor",
"boldsymbol",
Expand Down Expand Up @@ -104,6 +105,7 @@
"hankel",
"heli",
"heurisch",
"hspace",
"imag",
"iplt",
"ipykernel",
Expand Down Expand Up @@ -275,12 +277,14 @@
"pytest",
"qrules",
"rsplit",
"Schwarz",
"setuptools",
"spflueger",
"struct",
"sympy",
"tensorflow",
"tensorwaves",
"timeit",
"toctree",
"topness",
"unevaluatable",
Expand Down
101 changes: 45 additions & 56 deletions docs/_extend_docstrings.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@
import sympy as sp
from sympy.printing.numpy import NumPyPrinter

from ampform.dynamics.phasespace import (
BreakupMomentum,
BreakupMomentumComplex,
BreakupMomentumKallen,
BreakupMomentumSplitSqrt,
BreakupMomentumSquared,
PhaseSpaceFactor,
PhaseSpaceFactorKallen,
PhaseSpaceFactorSplitSqrt,
PhaseSpaceFactorSWave,
)
from ampform.io import aslatex
from ampform.kinematics.lorentz import ArraySize, FourMomentumSymbol
from ampform.sympy._array_expressions import ArrayMultiplication
Expand All @@ -30,11 +41,24 @@

from qrules.transition import ReactionInfo, SpinFormalism

from ampform.dynamics.phasespace import PhaseSpaceFactorProtocol
from ampform.sympy import NumPyPrintable

logging.getLogger().setLevel(logging.ERROR)


def append_phsp_doit(
phsp_factor: PhaseSpaceFactorProtocol,
wide: bool = True,
) -> Callable[[], None]:
def _extend() -> None:
s, m1, m2 = sp.symbols("s m1 m2", nonnegative=True)
expr = phsp_factor(s, m1, m2)
_append_latex_doit_definition(expr, full_width=wide)

return _extend


def extend_docstrings() -> None:
script_name = __file__.rsplit("/", maxsplit=1)[-1]
script_name = ".".join(script_name.split(".")[:-1])
Expand All @@ -58,6 +82,17 @@ def extend_docstrings() -> None:
definition()


extend_BreakupMomentum = append_phsp_doit(BreakupMomentum) # type:ignore[arg-type]
extend_BreakupMomentumComplex = append_phsp_doit(BreakupMomentumComplex) # type:ignore[arg-type]
extend_BreakupMomentumKallen = append_phsp_doit(BreakupMomentumKallen) # type:ignore[arg-type]
extend_BreakupMomentumSplitSqrt = append_phsp_doit(BreakupMomentumSplitSqrt) # type:ignore[arg-type]
extend_BreakupMomentumSquared = append_phsp_doit(BreakupMomentumSquared) # type:ignore[arg-type]
extend_PhaseSpaceFactor = append_phsp_doit(PhaseSpaceFactor) # type:ignore[arg-type]
extend_PhaseSpaceFactorKallen = append_phsp_doit(PhaseSpaceFactorKallen) # type:ignore[arg-type]
extend_PhaseSpaceFactorSplitSqrt = append_phsp_doit(PhaseSpaceFactorSplitSqrt) # type:ignore[arg-type]
extend_PhaseSpaceFactorSWave = append_phsp_doit(PhaseSpaceFactorSWave, wide=True) # type:ignore[arg-type]


def extend_BlattWeisskopfSquared() -> None:
from ampform.dynamics.form_factor import BlattWeisskopfSquared, SphericalHankel1

Expand Down Expand Up @@ -169,28 +204,18 @@ def extend_BoostZMatrix() -> None:
)


def extend_BreakupMomentum() -> None:
from ampform.dynamics.phasespace import BreakupMomentum

s, m_a, m_b = sp.symbols("s, m_a, m_b")
expr = BreakupMomentum(s, m_a, m_b)
_append_latex_doit_definition(expr, deep=True)


def extend_BreakupMomentumComplex() -> None:
from ampform.dynamics.phasespace import BreakupMomentumComplex

s, m_a, m_b = sp.symbols("s, m_a, m_b")
expr = BreakupMomentumComplex(s, m_a, m_b)
_append_latex_doit_definition(expr, deep=True)


def extend_BreakupMomentumSquared() -> None:
from ampform.dynamics.phasespace import BreakupMomentumSquared
def extend_PhaseSpaceFactorComplex() -> None:
from ampform.dynamics.phasespace import PhaseSpaceFactorComplex

s, m_a, m_b = sp.symbols("s, m_a, m_b")
expr = BreakupMomentumSquared(s, m_a, m_b)
_append_latex_doit_definition(expr, deep=True)
expr = PhaseSpaceFactorComplex(s, m_a, m_b)
_append_latex_doit_definition(expr)
_append_to_docstring(
PhaseSpaceFactorComplex,
"""
with :math:`q^2(s)` defined as :eq:`BreakupMomentumSquared`.
""",
)


def extend_ComplexSqrt() -> None:
Expand Down Expand Up @@ -370,20 +395,6 @@ def extend_is_within_phasespace() -> None:
)


def extend_PhaseSpaceFactor() -> None:
from ampform.dynamics.phasespace import PhaseSpaceFactor

s, m_a, m_b = sp.symbols("s, m_a, m_b")
expr = PhaseSpaceFactor(s, m_a, m_b)
_append_latex_doit_definition(expr)
_append_to_docstring(
PhaseSpaceFactor,
"""
with :math:`q^2` defined as :eq:`BreakupMomentumSquared`.
""",
)


def extend_PhaseSpaceFactorAbs() -> None:
from ampform.dynamics.phasespace import PhaseSpaceFactorAbs

Expand All @@ -398,28 +409,6 @@ def extend_PhaseSpaceFactorAbs() -> None:
)


def extend_PhaseSpaceFactorComplex() -> None:
from ampform.dynamics.phasespace import PhaseSpaceFactorComplex

s, m_a, m_b = sp.symbols("s, m_a, m_b")
expr = PhaseSpaceFactorComplex(s, m_a, m_b)
_append_latex_doit_definition(expr)
_append_to_docstring(
PhaseSpaceFactorComplex,
"""
with :math:`q^2(s)` defined as :eq:`BreakupMomentumSquared`.
""",
)


def extend_PhaseSpaceFactorSWave() -> None:
from ampform.dynamics.phasespace import PhaseSpaceFactorSWave

s, m_a, m_b = sp.symbols("s m_a m_b")
expr = PhaseSpaceFactorSWave(s, m_a, m_b)
_append_latex_doit_definition(expr, full_width=True)


def extend_Phi() -> None:
from ampform.kinematics.angles import Phi

Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,6 @@ def _get_dataclasses(module):
None,
),
"numpy": (f"https://numpy.org/doc/{pin_minor('numpy')}", None),
"pwa": ("https://pwa.readthedocs.io", None),
"python": ("https://docs.python.org/3", None),
"qrules": (f"https://qrules.readthedocs.io/{pin('qrules')}", None),
"sympy": ("https://docs.sympy.org/latest", None),
Expand Down Expand Up @@ -325,6 +324,7 @@ def _get_dataclasses(module):
nb_execution_show_tb = True
nb_execution_timeout = -1
nb_output_stderr = "remove"
nb_render_markdown_format = "myst"
nitpick_ignore = [
("py:class", "ampform.sympy._decorator.SymPyAssumptions"),
("py:class", "ArraySum"),
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.

:::

AmpForm aims to automatically formulate {doc}`PWA <pwa:index>` amplitude models for
AmpForm aims to automatically formulate [PWA](https://pwa.rtfd.io) amplitude models for
arbitrary particle transitions. All allowed transitions between some initial and final
state are generated with the {mod}`qrules` package. You can then use {mod}`ampform` to
formulate these state transitions into an amplitude model with some formalism, like the
Expand Down
Loading
Loading