diff --git a/.constraints/py3.10.txt b/.constraints/py3.10.txt index 590364161..e3f275934 100644 --- a/.constraints/py3.10.txt +++ b/.constraints/py3.10.txt @@ -34,7 +34,7 @@ distlib==0.3.4 docutils==0.16 entrypoints==0.4 execnet==1.9.0 -executing==0.8.2 +executing==0.8.3 filelock==3.6.0 flake8==4.0.1 flake8-blind-except==0.2.0 @@ -58,11 +58,11 @@ hepunits==2.2.0 identify==2.4.11 idna==3.3 imagesize==1.3.0 -importlib-metadata==4.11.1 +importlib-metadata==4.11.2 iniconfig==1.1.1 ipykernel==6.9.1 ipympl==0.8.8 -ipython==8.0.1 +ipython==8.1.0 ipython-genutils==0.2.0 ipywidgets==7.6.5 isort==5.10.1 @@ -76,7 +76,7 @@ jupyter-core==4.9.2 jupyter-server==1.13.5 jupyter-server-mathjax==0.2.5 jupyter-sphinx==0.3.2 -jupyterlab==3.2.9 +jupyterlab==3.3.0 jupyterlab-code-formatter==1.4.10 jupyterlab-markup==1.0.1 jupyterlab-myst==0.1.6 ; python_version >= "3.7.0" @@ -155,7 +155,7 @@ pyzmq==22.3.0 qrules==0.9.7 radon==5.1.0 requests==2.27.1 -restructuredtext-lint==1.3.2 +restructuredtext-lint==1.4.0 rich==11.2.0 send2trash==1.8.0 six==1.16.0 @@ -184,24 +184,24 @@ sqlalchemy==1.4.31 stack-data==0.2.0 sympy==1.9 terminado==0.13.1 -testpath==0.5.0 +testpath==0.6.0 toml==0.10.2 tomli==2.0.1 tornado==6.1 tox==3.24.5 -tqdm==4.62.3 +tqdm==4.63.0 traitlets==5.1.1 -types-docutils==0.17.6 +types-docutils==0.18.0 types-pkg-resources==0.1.3 types-requests==2.27.11 types-setuptools==57.4.9 -types-urllib3==1.26.9 +types-urllib3==1.26.10 typing-extensions==4.1.1 urllib3==1.26.8 -virtualenv==20.13.1 +virtualenv==20.13.2 wcwidth==0.2.5 webencodings==0.5.1 -websocket-client==1.2.3 +websocket-client==1.3.1 wheel==0.37.1 widgetsnbextension==3.5.2 wrapt==1.13.3 diff --git a/.constraints/py3.6.txt b/.constraints/py3.6.txt index ec8d640b1..2d65e9147 100644 --- a/.constraints/py3.6.txt +++ b/.constraints/py3.6.txt @@ -151,7 +151,7 @@ pyzmq==22.3.0 qrules==0.9.7 radon==5.1.0 requests==2.27.1 -restructuredtext-lint==1.3.2 +restructuredtext-lint==1.4.0 rich==11.2.0 send2trash==1.8.0 singledispatchmethod==1.0 ; python_version < "3.8.0" @@ -180,25 +180,25 @@ sphinxcontrib-serializinghtml==1.1.5 sqlalchemy==1.4.31 sympy==1.9 terminado==0.12.1 -testpath==0.5.0 +testpath==0.6.0 toml==0.10.2 tomli==1.2.3 tornado==6.1 tox==3.24.5 -tqdm==4.62.3 +tqdm==4.63.0 traitlets==4.3.3 typed-ast==1.5.2 -types-docutils==0.17.6 +types-docutils==0.18.0 types-pkg-resources==0.1.3 types-requests==2.27.11 types-setuptools==57.4.9 -types-urllib3==1.26.9 +types-urllib3==1.26.10 typing-extensions==4.1.1 ; python_version < "3.8.0" urllib3==1.26.8 -virtualenv==20.13.1 +virtualenv==20.13.2 wcwidth==0.2.5 webencodings==0.5.1 -websocket-client==1.2.3 +websocket-client==1.3.1 wheel==0.37.1 widgetsnbextension==3.5.2 wrapt==1.13.3 diff --git a/.constraints/py3.7.txt b/.constraints/py3.7.txt index 2d0a4c460..02c23eeca 100644 --- a/.constraints/py3.7.txt +++ b/.constraints/py3.7.txt @@ -60,7 +60,7 @@ importlib-resources==5.4.0 iniconfig==1.1.1 ipykernel==6.9.1 ipympl==0.8.8 -ipython==7.31.1 +ipython==7.32.0 ipython-genutils==0.2.0 ipywidgets==7.6.5 isort==5.10.1 @@ -74,7 +74,7 @@ jupyter-core==4.9.2 jupyter-server==1.13.5 jupyter-server-mathjax==0.2.5 jupyter-sphinx==0.3.2 -jupyterlab==3.2.9 +jupyterlab==3.3.0 jupyterlab-code-formatter==1.4.10 jupyterlab-markup==1.0.1 jupyterlab-myst==0.1.6 ; python_version >= "3.7.0" @@ -152,7 +152,7 @@ pyzmq==22.3.0 qrules==0.9.7 radon==5.1.0 requests==2.27.1 -restructuredtext-lint==1.3.2 +restructuredtext-lint==1.4.0 rich==11.2.0 send2trash==1.8.0 singledispatchmethod==1.0 ; python_version < "3.8.0" @@ -181,25 +181,25 @@ sphinxcontrib-serializinghtml==1.1.5 sqlalchemy==1.4.31 sympy==1.9 terminado==0.13.1 -testpath==0.5.0 +testpath==0.6.0 toml==0.10.2 tomli==2.0.1 tornado==6.1 tox==3.24.5 -tqdm==4.62.3 +tqdm==4.63.0 traitlets==5.1.1 typed-ast==1.5.2 -types-docutils==0.17.6 +types-docutils==0.18.0 types-pkg-resources==0.1.3 types-requests==2.27.11 types-setuptools==57.4.9 -types-urllib3==1.26.9 +types-urllib3==1.26.10 typing-extensions==4.1.1 ; python_version < "3.8.0" urllib3==1.26.8 -virtualenv==20.13.1 +virtualenv==20.13.2 wcwidth==0.2.5 webencodings==0.5.1 -websocket-client==1.2.3 +websocket-client==1.3.1 wheel==0.37.1 widgetsnbextension==3.5.2 wrapt==1.13.3 diff --git a/.constraints/py3.8.txt b/.constraints/py3.8.txt index c0023f00a..33a57fd2f 100644 --- a/.constraints/py3.8.txt +++ b/.constraints/py3.8.txt @@ -34,7 +34,7 @@ distlib==0.3.4 docutils==0.16 entrypoints==0.4 execnet==1.9.0 -executing==0.8.2 +executing==0.8.3 filelock==3.6.0 flake8==4.0.1 flake8-blind-except==0.2.0 @@ -58,12 +58,12 @@ hepunits==2.2.0 identify==2.4.11 idna==3.3 imagesize==1.3.0 -importlib-metadata==4.11.1 +importlib-metadata==4.11.2 importlib-resources==5.4.0 iniconfig==1.1.1 ipykernel==6.9.1 ipympl==0.8.8 -ipython==8.0.1 +ipython==8.1.0 ipython-genutils==0.2.0 ipywidgets==7.6.5 isort==5.10.1 @@ -77,7 +77,7 @@ jupyter-core==4.9.2 jupyter-server==1.13.5 jupyter-server-mathjax==0.2.5 jupyter-sphinx==0.3.2 -jupyterlab==3.2.9 +jupyterlab==3.3.0 jupyterlab-code-formatter==1.4.10 jupyterlab-markup==1.0.1 jupyterlab-myst==0.1.6 ; python_version >= "3.7.0" @@ -156,7 +156,7 @@ pyzmq==22.3.0 qrules==0.9.7 radon==5.1.0 requests==2.27.1 -restructuredtext-lint==1.3.2 +restructuredtext-lint==1.4.0 rich==11.2.0 send2trash==1.8.0 six==1.16.0 @@ -185,24 +185,24 @@ sqlalchemy==1.4.31 stack-data==0.2.0 sympy==1.9 terminado==0.13.1 -testpath==0.5.0 +testpath==0.6.0 toml==0.10.2 tomli==2.0.1 tornado==6.1 tox==3.24.5 -tqdm==4.62.3 +tqdm==4.63.0 traitlets==5.1.1 -types-docutils==0.17.6 +types-docutils==0.18.0 types-pkg-resources==0.1.3 types-requests==2.27.11 types-setuptools==57.4.9 -types-urllib3==1.26.9 +types-urllib3==1.26.10 typing-extensions==4.1.1 urllib3==1.26.8 -virtualenv==20.13.1 +virtualenv==20.13.2 wcwidth==0.2.5 webencodings==0.5.1 -websocket-client==1.2.3 +websocket-client==1.3.1 wheel==0.37.1 widgetsnbextension==3.5.2 wrapt==1.13.3 diff --git a/.constraints/py3.9.txt b/.constraints/py3.9.txt index 01e6961c0..f77c16a93 100644 --- a/.constraints/py3.9.txt +++ b/.constraints/py3.9.txt @@ -34,7 +34,7 @@ distlib==0.3.4 docutils==0.16 entrypoints==0.4 execnet==1.9.0 -executing==0.8.2 +executing==0.8.3 filelock==3.6.0 flake8==4.0.1 flake8-blind-except==0.2.0 @@ -58,11 +58,11 @@ hepunits==2.2.0 identify==2.4.11 idna==3.3 imagesize==1.3.0 -importlib-metadata==4.11.1 +importlib-metadata==4.11.2 iniconfig==1.1.1 ipykernel==6.9.1 ipympl==0.8.8 -ipython==8.0.1 +ipython==8.1.0 ipython-genutils==0.2.0 ipywidgets==7.6.5 isort==5.10.1 @@ -76,7 +76,7 @@ jupyter-core==4.9.2 jupyter-server==1.13.5 jupyter-server-mathjax==0.2.5 jupyter-sphinx==0.3.2 -jupyterlab==3.2.9 +jupyterlab==3.3.0 jupyterlab-code-formatter==1.4.10 jupyterlab-markup==1.0.1 jupyterlab-myst==0.1.6 ; python_version >= "3.7.0" @@ -155,7 +155,7 @@ pyzmq==22.3.0 qrules==0.9.7 radon==5.1.0 requests==2.27.1 -restructuredtext-lint==1.3.2 +restructuredtext-lint==1.4.0 rich==11.2.0 send2trash==1.8.0 six==1.16.0 @@ -184,24 +184,24 @@ sqlalchemy==1.4.31 stack-data==0.2.0 sympy==1.9 terminado==0.13.1 -testpath==0.5.0 +testpath==0.6.0 toml==0.10.2 tomli==2.0.1 tornado==6.1 tox==3.24.5 -tqdm==4.62.3 +tqdm==4.63.0 traitlets==5.1.1 -types-docutils==0.17.6 +types-docutils==0.18.0 types-pkg-resources==0.1.3 types-requests==2.27.11 types-setuptools==57.4.9 -types-urllib3==1.26.9 +types-urllib3==1.26.10 typing-extensions==4.1.1 urllib3==1.26.8 -virtualenv==20.13.1 +virtualenv==20.13.2 wcwidth==0.2.5 webencodings==0.5.1 -websocket-client==1.2.3 +websocket-client==1.3.1 wheel==0.37.1 widgetsnbextension==3.5.2 wrapt==1.13.3 diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml index 21dc2fa94..772717241 100644 --- a/.github/workflows/linkcheck.yml +++ b/.github/workflows/linkcheck.yml @@ -17,14 +17,14 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - - name: Set up Python 3.7 + - name: Set up Python 3.8 uses: actions/setup-python@v2 with: - python-version: "3.7" + python-version: "3.8" - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -c .constraints/py3.7.txt -e .[doc] + pip install -c .constraints/py3.8.txt -e .[doc] sudo apt-get -y install graphviz pandoc - name: Check external links working-directory: docs diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a7c531f0b..a9501bd95 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,11 +41,11 @@ repos: - id: trailing-whitespace - repo: https://github.com/ComPWA/repo-maintenance - rev: 0.0.110 + rev: 0.0.112 hooks: - id: check-dev-files args: - - --pin-requirements + - --pin-requirements=biweekly - id: fix-nbformat-version - id: format-setup-cfg - id: set-nb-cells @@ -146,7 +146,7 @@ repos: - id: pydocstyle - repo: https://github.com/ComPWA/mirrors-pyright - rev: v1.1.223 + rev: v1.1.225 hooks: - id: pyright diff --git a/docs/bibliography.bib b/docs/bibliography.bib index 1237d9809..21fd17a9a 100755 --- a/docs/bibliography.bib +++ b/docs/bibliography.bib @@ -152,6 +152,23 @@ @misc{meyerMatrixTutorial2008 url = {http://www.curtismeyer.com/talks/PWA_Munich_KMatrix.pdf} } +@article{mikhasenkoDalitzplotDecompositionThreebody2020, + title = {Dalitz-Plot Decomposition for Three-Body Decays}, + author = {Mikhasenko, M. and Albaladejo, M. and Bibrzycki, Ł. and {Fernandez-Ramirez}, C. and Mathieu, V. and Mitchell, S. and Pappagallo, M. and Pilloni, A. and Winney, D. and Skwarnicki, T. and Szczepaniak, A. P.}, + year = {2020}, + month = feb, + journal = {Physical Review D}, + volume = {101}, + number = {3}, + eprint = {1910.04566}, + eprinttype = {arxiv}, + pages = {034033}, + issn = {2470-0010, 2470-0029}, + doi = {10.1103/PhysRevD.101.034033}, + url = {http://arxiv.org/abs/1910.04566}, + archiveprefix = {arXiv} +} + @phdthesis{pychyGekoppeltePartialwellenanalyseAnnihilationen2016, title = {{Gekoppelte Partialwellenanalyse von 𝑝̅𝑝-Annihilationen im Fluge in die EndzustΓ€nde πΎβΊπΎβ»πœ‹β°, πœ‹β°πœ‹β°πœ‚ und πœ‹β°πœ‚πœ‚}}, author = {Pychy, Julian}, @@ -169,4 +186,16 @@ @misc{richmanExperimenterGuideHelicity1984 url = {https://inspirehep.net/literature/202987} } +@article{wangNovelMethodTest2020, + title = {A Novel Method to Test Particle Ordering and Final State Alignment in Helicity Formalism}, + author = {Wang, Mengzhen and Jiang, Yi and Liu, Yinrui and Qian, Wenbin and Lyu, Xiaorui and Zhang, Liming}, + year = {2020}, + month = dec, + journal = {arXiv}, + eprint = {2012.03699}, + eprinttype = {arxiv}, + url = {http://arxiv.org/abs/2012.03699}, + archiveprefix = {arXiv} +} + diff --git a/docs/usage/helicity/spin-alignment.ipynb b/docs/usage/helicity/spin-alignment.ipynb deleted file mode 100644 index e51c55c0f..000000000 --- a/docs/usage/helicity/spin-alignment.ipynb +++ /dev/null @@ -1,228 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hideOutput": true, - "hidePrompt": true, - "jupyter": { - "source_hidden": true - }, - "slideshow": { - "slide_type": "skip" - }, - "tags": [ - "remove-cell", - "skip-execution" - ] - }, - "outputs": [], - "source": [ - "# WARNING: advised to install a specific version, e.g. ampform==0.1.2\n", - "%pip install -q ampform[doc,viz] IPython" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hideOutput": true, - "hidePrompt": true, - "jupyter": { - "source_hidden": true - }, - "slideshow": { - "slide_type": "skip" - }, - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "%config InlineBackend.figure_formats = ['svg']\n", - "import os\n", - "\n", - "from IPython.display import display # noqa: F401\n", - "\n", - "STATIC_WEB_PAGE = {\"EXECUTE_NB\", \"READTHEDOCS\"}.intersection(os.environ)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```{autolink-concat}\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "# Spin alignment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - }, - "tags": [ - "hide-cell" - ] - }, - "outputs": [], - "source": [ - "import logging\n", - "\n", - "import graphviz\n", - "import qrules\n", - "import sympy as sp\n", - "from IPython.display import Math\n", - "\n", - "import ampform\n", - "\n", - "LOGGER = logging.getLogger()\n", - "LOGGER.setLevel(logging.ERROR)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As described in [[TR-015] Spin alignment](https://compwa-org--119.org.readthedocs.build/report/015.html), the {doc}`'standard' helicity formalism ` is not suited for state transitions that have different decay topologies. For this reason, the {class}`.HelicityAmplitudeBuilder` insert a number of Wigner-$D$ function into the amplitude model in case there is more than one underlying {class}`~qrules.topology.Topology`. It is easiest to see this by inspecting the resulting {attr}`.HelicityModel.intensity` and its {attr}`~.HelicityModel.amplitudes`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "reaction = qrules.generate_transitions(\n", - " initial_state=(\"J/psi(1S)\", [-1, +1]),\n", - " final_state=[\"K0\", \"Sigma+\", \"p~\"],\n", - " allowed_intermediate_particles=[\"Sigma(1660)\", \"N(1650)\"],\n", - " allowed_interaction_types=[\"strong\"],\n", - " formalism=\"helicity\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - }, - "tags": [ - "hide-input" - ] - }, - "outputs": [], - "source": [ - "dot = qrules.io.asdot(reaction, collapse_graphs=True, size=4)\n", - "graphviz.Source(dot)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "full-width" - ] - }, - "outputs": [], - "source": [ - "builder = ampform.get_builder(reaction)\n", - "model = builder.formulate()\n", - "model.intensity" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - }, - "tags": [ - "hide-input", - "full-width" - ] - }, - "outputs": [], - "source": [ - "latex = sp.multiline_latex(\n", - " sp.Symbol(\"I\"),\n", - " model.intensity.evaluate(),\n", - " environment=\"eqnarray\",\n", - ")\n", - "Math(latex)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This also introduces several **Wigner rotation angles** to the {attr}`.HelicityModel.kinematic_variables`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alpha = sp.Symbol(\"alpha_0^01\", real=True)\n", - "model.kinematic_variables[alpha]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more information about these angles, see [Compute Wigner rotation angles](https://compwa-org--119.org.readthedocs.build/report/015.html#compute-wigner-rotation-angles) in TR-015.\n", - "\n", - "Spin alignment can be switched off or on by setting {attr}`.HelicityAmplitudeBuilder.align_spin`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "builder.align_spin = False\n", - "non_aligned_model = builder.formulate()\n", - "non_aligned_model.intensity" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "name": "python", - "version": "3.8.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/usage/helicity/spin-alignment.md b/docs/usage/helicity/spin-alignment.md new file mode 100644 index 000000000..a23a3b2a5 --- /dev/null +++ b/docs/usage/helicity/spin-alignment.md @@ -0,0 +1,9 @@ +# Spin alignment + +:::{note} + +This page has been moved to {doc}`compwa-org:report/015`. See also the +[corresponding usage notebook](https://ampform--245.org.readthedocs.build/en/245/usage/helicity/spin-alignment.html) +from [ampform#254](https://github.com/ComPWA/ampform/pull/245). + +:::