{ "cells": [ { "cell_type": "markdown", "id": "32efc754-532f-4896-ae93-4c02790e6efc", "metadata": {}, "source": [ "# Strong Coupling" ] }, { "cell_type": "markdown", "id": "b01c5ee6-2afa-49a5-9fb4-3812db491b1a", "metadata": {}, "source": [ "`eko` can be used to compute the value of the strong coupling at a given scale, \n", "in this tutorial we show how to do it.\n", "\n", "In `eko` the running of $\\alpha_s$ is managed by an independent class `eko.couplings.Couplings`.\n", "\n", "To instantiate this object you need to specify at least the boundary conditions on $\\alpha_s(\\mu_{R,0})$ (`alphas`,`scale`), the masses of the heavy quarks with the relative thresholds ratios (`heavy_quark_masses`, `thresholds_ratios`), and the (QCD,QED) perturbative order (`order`).\n", "\n", "See [here](https://eko.readthedocs.io/en/latest/modules/eko/eko.html#eko.couplings.Couplings)\n", "for detailed API." ] }, { "cell_type": "code", "execution_count": 1, "id": "2cdb5e10-4c68-4cf6-b15d-f464cafae04f", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "\n", "from eko.couplings import Couplings\n", "from eko.quantities.couplings import CouplingEvolutionMethod, CouplingsInfo\n", "from eko.quantities.heavy_quarks import QuarkMassScheme\n", "\n", "# set the (alpha_s, alpha_em) reference values\n", "couplings_ref = CouplingsInfo(alphas=0.118, alphaem=0.007496252, ref=(91.0, 5))\n", "\n", "# set heavy quark masses and their threshold ratios\n", "heavy_quark_masses = np.power([1.51, 4.92, 172.0], 2)\n", "thresholds_ratios = np.array([1.0, 1.0, 1.0])\n", "\n", "# set (QCD,QED) perturbative order\n", "order = (3, 1)\n", "\n", "sc = Couplings(\n", " couplings_ref,\n", " order,\n", " CouplingEvolutionMethod.EXACT,\n", " heavy_quark_masses,\n", " QuarkMassScheme.POLE,\n", " thresholds_ratios,\n", ")" ] }, { "cell_type": "markdown", "id": "ccb4a599-41bb-4f1c-8d0f-ca7148c54f04", "metadata": {}, "source": [ "Now evaluating $\\alpha_s$ at different scale it's rather simple, \n", "as you just need to call the method `eko.couplings.Couplings.a_s`.\n", "\n", "**Warning**: this will return the value of $a_s$, but the class takes $\\alpha_s$ as input! " ] }, { "cell_type": "code", "execution_count": 2, "id": "8b908bb3-cbcc-4d7f-b631-27f1f37464f8", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The value of alpha_s at Q^2=100 GeV^2 is: 0.17804304498411003\n" ] } ], "source": [ "target_scale = 10.0**2\n", "a_s = sc.a_s(target_scale)\n", "print(\"The value of alpha_s at Q^2=100 GeV^2 is: \", 4.0 * np.pi * a_s)" ] }, { "cell_type": "markdown", "id": "39977ebc", "metadata": {}, "source": [ "You can read more about the strong coupling running in the relative [documentation](https://eko.readthedocs.io/en/latest/theory/pQCD.html#strong-coupling)\n", "\n", "To see how the flavor path are sorted, you can read [this page](https://eko.readthedocs.io/en/latest/code/Utilities.html)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }