Skip to content

Commit

Permalink
docs: fix calculation and add qrules code
Browse files Browse the repository at this point in the history
  • Loading branch information
redeboer committed Nov 18, 2021
1 parent dcdc6de commit 1fd6e5c
Showing 1 changed file with 96 additions and 17 deletions.
113 changes: 96 additions & 17 deletions docs/usage/ls-coupling.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,52 @@
"The {func}`.spin_conservation` rule is one of the more complicated checks in the {mod}`.conservation_rules` module. It provides an implementation of $LS$-couplings, which is a procedure to determine which values for **total angular momentum $L$** and **coupled spin $S$** are allowed in an interaction node. In this notebook, we illustrate this procedure with the following decay chain as an example:\n",
"\n",
"$$\n",
"J/\\psi \\to \\bar\\Sigma(1670)^ -\\Sigma^+ , \\quad \\bar\\Sigma(1670)^- \\rightarrow \\bar p K^0.\n",
"J/\\psi \\to \\Sigma^+ \\bar\\Sigma(1670)^-, \\quad \\bar\\Sigma(1670)^- \\rightarrow \\bar p K^0.\n",
"$$\n",
"\n",
"In this decay chain, there are two decay nodes that we investigate separately. In addition, both decays are mediated interactions by the strong force, which means there is also **parity conservation**."
"In this decay chain, there are two decay nodes that we investigate separately. In addition, both decays are mediated interactions by the strong force, which means there is also **parity conservation**.\n",
"\n",
"In the following derivations, the {attr}`.Particle.spin` and {attr}`.Particle.parity` values are of importance:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"source_hidden": true
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"from fractions import Fraction\n",
"\n",
"from IPython.display import Math\n",
"\n",
"import qrules\n",
"\n",
"PDG = qrules.load_pdg()\n",
"particle_names = [\n",
" \"J/psi(1S)\",\n",
" \"Sigma+\",\n",
" \"Sigma(1670)~-\",\n",
" \"p~\",\n",
" \"K0\",\n",
"]\n",
"latex_expressions = []\n",
"for name in particle_names:\n",
" particle = PDG[name]\n",
" parity = \"+\" if particle.parity > 0 else \"-\"\n",
" if particle.spin.is_integer():\n",
" spin = int(particle.spin)\n",
" else:\n",
" nominator, denominator = Fraction(particle.spin).as_integer_ratio()\n",
" spin = fR\"\\tfrac{{{nominator}}}{{{denominator}}}\"\n",
" latex_expressions.append(f\"{particle.latex}={spin}^{parity}\")\n",
"Math(R\"\\qquad \".join(latex_expressions))"
]
},
{
Expand All @@ -82,25 +124,25 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## $J/\\psi\\to\\bar\\Sigma(1670)^-\\Sigma^+$"
"## $J/\\psi \\to \\Sigma^+\\bar\\Sigma(1670)^-$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The spin and parity of each particle in the first transition can be summarized as $1^-\\to\\frac{3}{2}^+\\frac{1}{2}^+$. Following step 1 in the {ref}`procedure <usage/ls-coupling:procedure>`, we get:\n",
"The spin and parity of each particle in the first transition can be summarized as $1^-\\to\\frac{1}{2}^+\\frac{3}{2}^+$. Following step 1 in the {ref}`procedure <usage/ls-coupling:procedure>`, we get:\n",
"\n",
"$$\n",
"\\begin{eqnarray}\n",
"\\left|s_{\\bar\\Sigma(1670)^-} - s_{\\Sigma^+}\\right| & \\le S & \\le s_{\\bar\\Sigma(1670)^-} + s_{\\Sigma^+} \\\\\n",
"\\left|\\tfrac{3}{2}-\\tfrac{1}{2}\\right| & \\le S & \\le \\tfrac{3}{2} + \\tfrac{1}{2} \\\\\n",
"\\left|s_{\\Sigma^+} - s_{\\bar\\Sigma(1670)^-}\\right| & \\le S & \\le s_{\\Sigma^+} + s_{\\bar\\Sigma(1670)^-} \\\\\n",
"\\left|\\tfrac{1}{2}-\\tfrac{3}{2}\\right| & \\le S & \\le \\tfrac{1}{2} + \\tfrac{3}{2} \\\\\n",
"1 & \\le S & \\le 2\n",
"\\end{eqnarray}\n",
"$$\n",
"\n",
"$$\n",
"\\Rightarrow S=1 \\; \\text{or} \\; S=2.\n",
"\\Rightarrow S=1 \\quad \\text{or} \\quad S=2\n",
"$$"
]
},
Expand All @@ -112,11 +154,8 @@
"\n",
"$$\n",
"\\begin{eqnarray}\n",
"& |L-S| \\le s_{J/\\psi} \\le L+S \\\\\n",
"& \\begin{cases}\n",
"|L-1| \\le 1 \\le L+1 \\\\\n",
"|L-2| \\le 1 \\le L+2\n",
"\\end{cases}\n",
"|L-S| & \\le s_{J/\\psi} & \\le L+S \\\\\n",
"|L-S| & \\le 1 & \\le L+S\n",
"\\end{eqnarray}\n",
"$$\n",
"\n",
Expand Down Expand Up @@ -147,9 +186,9 @@
"\n",
"$$\n",
"\\begin{eqnarray}\n",
"\\eta_{J/\\psi} & =&\\eta_{\\bar\\Sigma(1670)^-}\\cdot\\eta_{\\Sigma^+}\\cdot(-1)^L \\\\\n",
"(-1) & = & (+1)\\cdot(-1)\\cdot(-1)^L \\\\\n",
"(+1) & = & (-1)^{L}.\n",
"\\eta_{J/\\psi} & = & \\eta_{\\Sigma^+} \\cdot \\eta_{\\bar\\Sigma(1670)^-} \\cdot(-1)^L \\\\\n",
"(-1) & = & (+1)\\cdot(+1)\\cdot(-1)^L \\\\\n",
"(-1) & = & (-1)^{L}.\n",
"\\end{eqnarray}\n",
"$$"
]
Expand All @@ -158,10 +197,10 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"From this, we can easily see that only even $L$ values are possible, which leaves us with **3 $LS$-combinations**:\n",
"From this, we can easily see that only odd $L$ values are possible, which leaves us with **3 $LS$-combinations**:\n",
"\n",
"$$\n",
"(L,S)=(0,1), (2,1), (2,2).\n",
"(L,S) = (1,1), (1,2), (3,2).\n",
"$$"
]
},
Expand Down Expand Up @@ -234,6 +273,46 @@
"(L,S)=\\left(2,\\tfrac{1}{2}\\right)\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check with QRules"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, let's use {func}`.generate_transitions` to check whether the allowed $LS$-couplings are found by {mod}`qrules` as well. Note that we have to increase the maximum angular momentum to find the $(L,S)=(3,2)$ combination as well."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"jupyter": {
"source_hidden": true
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"import graphviz\n",
"\n",
"reaction = qrules.generate_transitions(\n",
" initial_state=\"J/psi(1S)\",\n",
" final_state=[\"K0\", \"Sigma+\", \"p~\"],\n",
" allowed_intermediate_particles=[\"Sigma(1670)\"],\n",
" allowed_interaction_types=\"strong\",\n",
" max_angular_momentum=3,\n",
")\n",
"dot = qrules.io.asdot(reaction, render_node=True, strip_spin=True)\n",
"graphviz.Source(dot)"
]
}
],
"metadata": {
Expand Down

0 comments on commit 1fd6e5c

Please sign in to comment.