{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true,
      "authorship_tag": "ABX9TyOCpbqKM2vYs/PDQuBKl4hE",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/GamelinAl/mbtrack2_examples/blob/main/mbtrack2_BxB_FB.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Bunch-by-bunch damper feedback\n",
        "\n",
        "This notebook introduces the ``ExponentialDamper`` and ``FIRDamper`` classes for **mbtrack2**:\n",
        "\n",
        "*   The ``ExponentialDamper`` is a very simple bunch-by-bunch damper feedback class based on exponential damping.\n",
        "*   The ``FIRDamper`` is a more realistic bunch-by-bunch damper feedback class based on FIR filters.\n"
      ],
      "metadata": {
        "id": "IKih_9pcq9Ui"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Installation"
      ],
      "metadata": {
        "id": "O5fColz-q2EI"
      }
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BKGTZA_EvtF6",
        "outputId": "0e2478a5-5591-4436-f707-ee1f4516b042"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Cloning into 'mbtrack2'...\n",
            "remote: Enumerating objects: 1526, done.\u001b[K\n",
            "remote: Counting objects: 100% (186/186), done.\u001b[K\n",
            "remote: Compressing objects: 100% (186/186), done.\u001b[K\n",
            "remote: Total 1526 (delta 118), reused 0 (delta 0), pack-reused 1340\u001b[K\n",
            "Receiving objects: 100% (1526/1526), 709.26 KiB | 1024.00 KiB/s, done.\n",
            "Resolving deltas: 100% (1047/1047), done.\n"
          ]
        }
      ],
      "source": [
        "! git clone -b develop https://gitlab.synchrotron-soleil.fr/PA/collective-effects/mbtrack2.git"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "%cd mbtrack2"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aIwNdoXlVDus",
        "outputId": "1531dc7a-943f-4281-9d8f-2f8324a39bc3"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "/content/mbtrack2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Tracking set-up"
      ],
      "metadata": {
        "id": "-CHO7pYlsa76"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import h5py as hp\n",
        "from mbtrack2.tracking import Synchrotron, Electron\n",
        "from mbtrack2.utilities import Optics\n",
        "from mbtrack2.tracking import Bunch\n",
        "from mbtrack2.tracking import LongitudinalMap, RFCavity, SynchrotronRadiation, TransverseMap"
      ],
      "metadata": {
        "id": "ewMLyHDOslSD"
      },
      "execution_count": 23,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "h = 20 # Harmonic number of the accelerator.\n",
        "L = 100 # Ring circumference in [m].\n",
        "E0 = 1.5e9 # Nominal (total) energy of the ring in [eV].\n",
        "particle = Electron() # Particle considered.\n",
        "ac = 1e-3 # Momentum compaction factor.\n",
        "U0 = 200e3 # Energy loss per turn in [eV].\n",
        "tau = np.array([1e-3, 1e-3, 2e-3]) # Horizontal, vertical and longitudinal damping times in [s].\n",
        "tune = np.array([12.2, 15.3]) # Horizontal and vertical tunes.\n",
        "emit = np.array([10e-9, 10e-12]) # Horizontal and vertical equilibrium emittance in [m.rad].\n",
        "sigma_0 = 15e-12 # Natural bunch length in [s].\n",
        "sigma_delta = 1e-3 # Equilibrium energy spread.\n",
        "chro = [2.0, 3.0] # Horizontal and vertical (non-normalized) chromaticities.\n",
        "\n",
        "local_beta = np.array([3, 2]) # Beta function at the tracking location.\n",
        "local_alpha = np.array([0, 0]) # Alpha function at the tracking location.\n",
        "local_dispersion = np.array([0, 0, 0, 0]) # Dispersion function and its derivative at the tracking location.\n",
        "optics = Optics(local_beta=local_beta, local_alpha=local_alpha, \n",
        "                  local_dispersion=local_dispersion)\n",
        "\n",
        "ring = Synchrotron(h=h, optics=optics, particle=particle, L=L, E0=E0, ac=ac, \n",
        "                   U0=U0, tau=tau, emit=emit, tune=tune, \n",
        "                   sigma_delta=sigma_delta, sigma_0=sigma_0, chro=chro)"
      ],
      "metadata": {
        "id": "GH7V8wmmxH4i"
      },
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "LongMap = LongitudinalMap(ring)\n",
        "RF = RFCavity(ring, m=1, Vc=1e6, theta=np.arccos(ring.U0/1e6))\n",
        "SR = SynchrotronRadiation(ring)\n",
        "TransMap = TransverseMap(ring)"
      ],
      "metadata": {
        "id": "hZJ-vdJmKWK6"
      },
      "execution_count": 8,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# ExponentialDamper"
      ],
      "metadata": {
        "id": "bT_CpT4F_0tv"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from mbtrack2 import ExponentialDamper, BunchMonitor"
      ],
      "metadata": {
        "id": "hk69IPj3MGFS"
      },
      "execution_count": 9,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Initialize a single particle with a 1 mm horizontal offset"
      ],
      "metadata": {
        "id": "lnPJ-PoQnvYB"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "mybunch = Bunch(ring, mp_number=1, current=1e-3)\n",
        "mybunch[\"x\"] += 1e-3"
      ],
      "metadata": {
        "id": "x-9buBSzQI9v"
      },
      "execution_count": 10,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Initialize an ``ExponentialDamper`` in the horizontal plane with a damping time of 50 turns and a phase of 90° (fully resistive damper)."
      ],
      "metadata": {
        "id": "vs21xVzgoIgR"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "damper = ExponentialDamper(ring=ring, plane=\"x\", damping_time=ring.T0*50, phase_diff=np.pi/2)"
      ],
      "metadata": {
        "id": "TFU0gUmJMIdV"
      },
      "execution_count": 11,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "bunchmon = BunchMonitor(bunch_number=0, save_every=1, buffer_size=10, total_size=1000, file_name=\"damper\")\n",
        "\n",
        "turns = 1000\n",
        "for i in range(turns):\n",
        "  LongMap.track(mybunch)\n",
        "  TransMap.track(mybunch)\n",
        "  RF.track(mybunch)\n",
        "  damper.track(mybunch)\n",
        "  bunchmon.track(mybunch)\n",
        "bunchmon.close()"
      ],
      "metadata": {
        "id": "EV3FzxRsOkO5"
      },
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Plot the particle position and Courant-Snyder invariant:"
      ],
      "metadata": {
        "id": "rTuoOIFHp6Rz"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from mbtrack2 import plot_bunchdata"
      ],
      "metadata": {
        "id": "5ytZMGlWQec_"
      },
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"damper.hdf5\",0,\"mean\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "id": "i0iXch5OR2tt",
        "outputId": "eafe335f-afeb-455f-9c53-e285be65f31b"
      },
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"damper.hdf5\",0,\"cs_invariant\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "id": "tXv2CAdMRpLA",
        "outputId": "2146eef1-59a5-467c-df77-e93c6cb73b30"
      },
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Compute the damping time from tracking data in turn number:"
      ],
      "metadata": {
        "id": "KL4gETJeqMOs"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from scipy.optimize import curve_fit"
      ],
      "metadata": {
        "id": "fRjIrGE2SXHZ"
      },
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "g = hp.File(\"damper.hdf5\",\"r\")\n",
        "xdata = np.array(g[\"BunchData_0\"][\"time\"])*ring.T0\n",
        "ydata = np.array(g[\"BunchData_0\"][\"cs_invariant\"][0,:])\n",
        "g.close()"
      ],
      "metadata": {
        "id": "stisho_nqvYi"
      },
      "execution_count": 17,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def func(x, a, b):\n",
        "    return a * np.exp(-b * x)"
      ],
      "metadata": {
        "id": "D1ZwIE7EqWo1"
      },
      "execution_count": 18,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "popt, pcov = curve_fit(func, xdata, ydata)\n",
        "print(f\"Fitted damping time is {1/popt[1]/ring.T0*2} turns.\")\n",
        "print(f\"Input damping time is {damper.damping_time/ring.T0} turns.\")\n",
        "plt.plot(xdata, ydata)\n",
        "plt.plot(xdata, func(xdata, *popt),\"--\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 328
        },
        "id": "0_1T8CHZStFo",
        "outputId": "18bc7832-2ffd-4430-8301-5d6a1b6829f4"
      },
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Fitted damping time is 49.06419715200237 turns.\n",
            "Input damping time is 50.0 turns.\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fb72326f8b0>]"
            ]
          },
          "metadata": {},
          "execution_count": 28
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEDCAYAAAAlRP8qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAfTklEQVR4nO3deZgcdb3v8fe3l9knmUxmkkzWISSGJCAEYgh6QdzjRlxAUS8q11zuUXA5LvfqwYPKkeMOV0HFKKh4uCgielHjwlURRLaACZCwhbBNQpLJLElmSc/09Pf+0Z3DrJmZpKerq+bzep5+np76VVd9LIfPVKqqq8zdERGR8IsFHUBERPJDhS4iEhEqdBGRiFChi4hEhApdRCQiVOgiIhERaKGb2bVmtsfMHs7Dsl5hZpv6vQ6a2VvykVNEJAwsyOvQzewMoAO4zt2Pz+Nya4FtwFx378rXckVEilmge+jufjvQ2n+amR1rZr83s/vN7A4zO+4IFn028DuVuYhMJsV4DH098GF3PwX4JPCdI1jGucANeU0lIlLkEkEH6M/MqoCXAj83s0OTS3NjbwMuHeZjO9z9df2W0QCcAPxhYtOKiBSXoip0sv9iaHf3kwYPuPvNwM1jWMY7gF+6e2++w4mIFLOiOuTi7vuBp8zsHADLOnGci3kXOtwiIpNQ0Jct3gDcBSwxsyYz+wDwHuADZrYZ2AKsHcfyGoF5wF/zn1ZEpLgFetmiiIjkT1EdchERkSMX2EnRuro6b2xsDGr1IiKhdP/99+919/rhxgIr9MbGRjZu3BjU6kVEQsnMnhlpTIdcREQiQoUuIhIRKnQRkYhQoYuIRIQKXUQkIlToIiIRoUIXEYkIFbqISESEr9CfuQuuXQMtTwadRESkqISu0FtaW+DZu+jatyfoKCIiRSV0hf54WwaAva1tAScRESkuoSv0kvIqAFLdHQEnEREpLqEr9PKKbKH3dKnQRUT6G7XQzazMzO41s81mtsXMvjDMPKVm9jMz22Zm9+SeHDQhyqdMY3NmIQcom6hViIiE0lj20FPAK939ROAkYI2ZrR40zweANndfBFwBfCW/MV9QXjuPtT1f5Mmal03UKkREQmnUQvesQ8c3krnX4OfWrQV+nHt/E/AqM7O8peynuix7C/eOg+mJWLyISGiN6Ri6mcXNbBOwB7jV3e8ZNMsc4DkAd08D+4Dp+Qx6SEUyxq9LLmbRU9dPxOJFREJrTIXu7n3ufhIwF1hlZscfycrM7AIz22hmG5ubm49kEVgsxrGxnZR37Tyiz4uIRNW4rnJx93bgL8CaQUM7gHkAZpYApgItw3x+vbuvdPeV9fXDPhJvTFKU4r1dR/x5EZEoGstVLvVmVpN7Xw68Bnh00Gy3AO/LvT8b+LO7Dz7OnjepWBmmQhcRGWAsD4luAH5sZnGyfwBudPffmNmlwEZ3vwW4BviJmW0DWoFzJywx0BsrI5Y+OJGrEBEJnVEL3d0fBFYMM/2Sfu8PAufkN9rInig7gea+agZfOykiMpmNZQ+96Pyf+n9mZ/tB3hl0EBGRIhK6r/4DJOMxevsyQccQESkqodxDP3fvVUzpeBy4M+goIiJFI5R76BXeyazM7qBjiIgUlVAWel+inDJSQccQESkq4Sz0uApdRGSw0BZ6OSnI6MSoiMghoSz0lspF/C5zKmR0x0URkUNCeZXL9hmv5qotjWyPJ5mQe/SKiIRQKPfQk/EY7tCXmbDbxYiIhE4oC31x2+1sLl1Hevfge4SJiExeoSz0eCzGVOuiq2N/0FFERIpGKAs9UVYJwD+26yEXIiKHhLLQVxw7J/umR/dEFxE5JJSFfmgPXU8tEhF5QSgvW0xUz+Dn6TOIJWcEHUVEpGiEcg+9pKaBT6X/iR2Vy4OOIiJSNEJZ6PGYETPo6dU3RUVEDglloePOIyXvY/Wz64NOIiJSNMJZ6GakLU483Rl0EhGRohHOQge6KCeR1lUuIiKHhLbQu61MhS4i0k94C51ykn0qdBGRQ0YtdDObZ2Z/MbOtZrbFzD46zDxnmtk+M9uUe10yMXFf8OeSV/Bg5eqJXo2ISGiM5YtFaeAT7v6AmVUD95vZre6+ddB8d7j7m/IfcXi/qXwrMyvKeHehVigiUuRG3UN39+fd/YHc+wPAI8CciQ42mprSGL2d7UHHEBEpGuP66r+ZNQIrgHuGGT7NzDYDO4FPuvuWYT5/AXABwPz588ebdYAPdV7FkgN3A08d1XJERKJizCdFzawK+AXwMXcffCPyB4AF7n4icCXwq+GW4e7r3X2lu6+sr68/0sxZJZWU+cGjW4aISISMqdDNLEm2zK9395sHj7v7fnfvyL3fACTNrC6vSQcrqaLcu/FMZkJXIyISFmO5ysWAa4BH3P3yEeaZlZsPM1uVW25LPoMOFi+rJm5Od3fHRK5GRCQ0xnIM/WXAecBDZrYpN+1fgPkA7n41cDbwQTNLA93Aue4+oU9wTpRVAbB/XzsVlVMmclUiIqEwaqG7+98AG2Weq4Cr8hVqLHoaTubyzWfzhp4Yswq5YhGRIhXKB1wAMHsF3+rrYXVfWdBJRESKQmi/+j+lBGbQRmenjqGLiECYC731Ie4tu5DqXfcGHUVEpCiEttDjpdXZN6kDwQYRESkSoS30ZEX2Khd69ZALEREIcaEnyrKXKlqPCl1EBEJc6MmK7CEX69FJURERCHGhl5SWc1nvu3l26sqgo4iIFIXwFnoizvf73sSz5cuCjiIiUhRCW+hmxjGJvZR27Qg6iohIUQjvN0WB9fGv0fv0scArg44iIhK4UBd6p1XQs29Cb+ooIhIaoT3kAtBBOeXeFXQMEZGiEOpCn1ZbR5UKXUQECHmhpxNVVKFCFxGBkBf6E7PexKW955Hu02PoRERCXeitdSfz68xLSaVV6CIioS706r52VtqjpA52Bx1FRCRwoS70Y9ru5KbSS0m368tFIiKhLnRKs3dcTHftCziIiEjwolHo3Sp0EZFQF7rl7one170/4CQiIsELdaGXVU8DINXRFnASEZHgjVroZjbPzP5iZlvNbIuZfXSYeczMvmVm28zsQTM7eWLiDlRdP59/6vkYz1SvKMTqRESK2lj20NPAJ9x9GbAauNDMBt+E/PXA4tzrAuC7eU05guk1Nfw+s4rn+moLsToRkaI2aqG7+/Pu/kDu/QHgEWDOoNnWAtd51t1AjZk15D3tIFPKE5we34I1b53oVYmIFL1xHUM3s0ZgBXDPoKE5wHP9fm5iaOljZheY2UYz29jc3Dy+pMPn4VvJK1na9POjXpaISNiNudDNrAr4BfAxdz+iy0rcfb27r3T3lfX19UeyiCEOxiqIpXSVi4jImArdzJJky/x6d795mFl2APP6/Tw3N23CpeJVxHo6CrEqEZGiNparXAy4BnjE3S8fYbZbgPfmrnZZDexz9+fzmHNEPYlKyjIqdBGRsTyC7mXAecBDZrYpN+1fgPkA7n41sAF4A7AN6ALOz3/U4fXEqyjP6F4uIiKjFrq7/w2wUeZx4MJ8hRqPP89ex71P7uE/gli5iEgRCfVDogHaq49jU7oy6BgiIoEL9Vf/ARrSz/H6vj9DXzroKCIigQp9oS8+cC9fS1xNukv3cxGRyS30hZ4pnQpAz4GWgJOIiAQr/IVeVgNAb2drwElERIIV+kL3XKE/8UxTwElERIIV+kJ/0YK5ALS3Hv29YUREwiz0hT534TLemLqMx6ecFnQUEZFAhb7Q4yVlPBE/lv1eEXQUEZFAhb7QAd6Z+CsNrYPv6CsiMrlEotA/zM9Y1vyHoGOIiAQqEoXeaVWUpHVPdBGZ3KJR6LEqSlXoIjLJRaLQu+LVlPcdCDqGiEigIlHoPcmplKnQRWSSi0Sh37bgw7yHLwUdQ0QkUJEo9OraBrZ1VZBK9wUdRUQkMJEo9CX2NP+cuInmZn39X0Qmr0gU+ry+Jj6auJn2XU8HHUVEJDCRKPSqaTMBONC6O+AkIiLBiUShl02tByDTqYdciMjkFYlCL6nOFrp1q9BFZPIatdDN7Foz22NmD48wfqaZ7TOzTbnXJfmPeXiH9tDjB/XUIhGZvMayh/4jYM0o89zh7iflXpcefazxKSuv4MUH13PnrPcWetUiIkVj1EJ399uBot71NTN6k1Pp6vWgo4iIBCZfx9BPM7PNZvY7M1s+0kxmdoGZbTSzjfm+Zvx9iVs5aecNeV2miEiY5KPQHwAWuPuJwJXAr0aa0d3Xu/tKd19ZX1+fh1W/4Az7BwuafpPXZYqIhMlRF7q773f3jtz7DUDSzOqOOtk4dcanMs32467DLiIyOR11oZvZLDOz3PtVuWUW/PrB+pkNTOMAPX2ZQq9aRKQoJEabwcxuAM4E6sysCfgckARw96uBs4EPmlka6AbO9QB2k/vKaqm0FG0dHZTWTC306kVEAjdqobv7u0YZvwq4Km+JjpCXT6fbS+g+0MI0FbqITEKR+KYowO5F72Bp6kd0lOT3ZKuISFhEptAry5IAdKTSAScREQlGZAq9hg6+kfwOsaf+GnQUEZFARKbQG2qn8Pb43+jbuTnoKCIigYhModfX1tLtJaT37Qo6iohIICJT6LF4jLbYNKxzT9BRREQCEZlCB+hMTqfk4N6gY4iIBCJShb6/fC4d6XjQMUREAjHqF4vC5DeLPs9NG5t4KOggIiIBiNQeelVpgs6etG7QJSKTUqQK/UWd9/OTxGV0tz0fdBQRkYKLVKFXx1K8LL6Fg61NQUcRESm4SBW6V84A4Llnnwo4iYhI4UWq0BcsaARg147ngg0iIhKASBX6wsaFACS69eUiEZl8IlXoJMt52BZzIFMadBIRkYKL1HXoAB+f8g2OqazkLUEHEREpsGjtoQPVZUndE11EJqXI7aG/s/eXnLD3r8C9QUcRESmoyO2hzyzLsLTvMfp6U0FHEREpqMgVetn0+QDsano62CAiIgUWuUKfNmsBALubngw4iYhIYUWu0Kc3NALQ2fxMsEFERAps1EI3s2vNbI+ZPTzCuJnZt8xsm5k9aGYn5z/m2FXOWMAdfcfTnqkIMoaISMGNZQ/9R8Caw4y/Hlice10AfPfoYx25sqppfMA/y8MVq4KMISJScKMWurvfDrQeZpa1wHWedTdQY2YN+Qp4JKaUJdnf3RtkBBGRgsvHMfQ5QP+7YTXlpg1hZheY2UYz29jc3JyHVQ/vC3yXcx5aN2HLFxEpRgU9Keru6919pbuvrK+vn7gVxZI0+g4O9vZN3DpERIpMPgp9BzCv389zc9MC09C4hFrrYP++tiBjiIgUVD4K/RbgvbmrXVYD+9w92GfA1WSvRe/crWvRRWTyGPVeLmZ2A3AmUGdmTcDngCSAu18NbADeAGwDuoDzJyrsWMVrGwFINT8FnBpoFhGRQhm10N39XaOMO3Bh3hLlQUXDYn6ePoMZfVM4LugwIiIFErlvigI0zp3Dxf4h7kwdE3QUEZGCiWShJ+MxlsysYnvTzqCjiIgUTOTuh37IZemvUb7zKeChoKOIiBREJPfQAXoqG5jju8n0ZYKOIiJSEJEt9NTUhVRYio69z40+s4hIBES20DPTjgXgwI6tAScRESmMyBZ6ecMSAB7ctDHgJCIihRHZQj95+XK+mX4bTyQWBx1FRKQgInuVSywe448z/hszM2VBRxERKYjI7qEDzK1IU92mY+giMjlEutDflb6Fy9s/Sm+qO+goIiITLtKFPnXeUuLmPPno5qCjiIhMuEgX+vzjVgKw+4n7A04iIjLxIl3otQuW0+NxSloeDTqKiMiEi3ShW6KUZ2NzqTnweNBRREQmXGQvWzzkuur/zubmDL/oy5CIR/rvl4hMcpFvuIPzz2CzL+L5fQeDjiIiMqEiX+hvXjqV18fuoXXHE0FHERGZUJEv9LkVvXy35Jv4oxuCjiIiMqEiX+jzFyxiD7Wkn9OliyISbZEv9HjM2FW1jLr9W4KOIiIyoSJf6ADdM06ikZ3sb98bdBQRkQkzpkI3szVm9piZbTOzTw8z/n4zazazTbnXuvxHPXJ9DSsA2Ln1roCTiIhMnFEL3cziwLeB1wPLgHeZ2bJhZv2Zu5+Ue/0gzzmPyrQlp3NG6gquaZoXdBQRkQkzlj30VcA2d9/u7j3AT4G1Exsrv5bOnwnTjmHXgVTQUUREJsxYCn0O0P9Jy025aYO93cweNLObzGzYXWEzu8DMNprZxubm5iOIe+TeMv053rHzK9CXLuh6RUQKJV8nRX8NNLr7i4FbgR8PN5O7r3f3le6+sr6+Pk+rHptTajp5c9+feHbr3QVdr4hIoYyl0HcA/fe45+am/Sd3b3H3Q8czfgCckp94+XP8y94IwFP3/zHgJCIiE2MshX4fsNjMjjGzEuBc4Jb+M5hZQ78fzwIeyV/E/Jg+az7PWQM1u+8JOoqIyIQYtdDdPQ1cBPyBbFHf6O5bzOxSMzsrN9tHzGyLmW0GPgK8f6ICH41Hy0/m2K5NtO8/EHQUEZG8G9Ptc919A7Bh0LRL+r3/DPCZ/EbLv5Kla9h13z/Y/+RjnLxiZdBxRETyalJ8U/SQpS8/h1f3fJ272muCjiIikneTqtBnTCln5YJp/PSu7WQyHnQcEZG8mlSFDnDhvKf5bep97HpyU9BRRETyatIVet2iU6ikmwd//8Ogo4iI5NWkK/Tjl7yIB2LLWd72J3AddhGR6Jh0hW5mdC46i3mZJp566M6g44iI5M2kK3SAE9ecT7eX0Hzb94KOIiKSN5Oy0KdNn8GPaj/C554/jZYO3YFRRKJhUhY6wMzTz+cRX8BfHy/sXR9FRCbKpC30tSfN4fSaFtjwKXp6eoOOIyJy1CZtocdjxodP6ONt6Q3c9X91LF1Ewm/SFjrAca98N49k5nPsI9/G+7SXLiLhNqkLfUp5KS0v+ThzMzu556Yrgo4jInJUJnWhA7z0De9jc+LFLNt6BXt2Pht0HBGRIzbpCz0Wj9H92q/y075XcPntTbi+PSoiITXpCx1g9arT2LP6s/x0UxtX37Yt6DgiIkdEhZ7zidcu4dTKXbzmtrfwxKY7go4jIjJuKvSc8pI4l5//aiosRe0v303TEw8GHUlEZFxU6P3MmbuAXWtvwIGS69ey9R+6eZeIhIcKfZCTV7yE3W/9Oe4w/1dv57bbbg06kojImKjQh7H8pNX0nP9H7kqu4n/8voOP37iJPfu7go4lInJYKvQRzGtczEs/dTPvWL2YDQ9sZ9/lq7jzhxdzoF038xKR4mRBXXe9cuVK37hxYyDrHq8HH32M9C8v5OTUfXR5KQ/XvobKk9/BklPXkCgpDTqeiEwiZna/u68cdmwshW5ma4BvAnHgB+7+5UHjpcB1wClAC/BOd3/6cMsMU6EDuDtbH/gb7X/9Div2/YkKS/Fu+zJTj13Fq6e3cHxtmnlLTqFi6gwwCzquiETU4Qo9MYYPx4FvA68BmoD7zOwWd9/ab7YPAG3uvsjMzgW+Arzz6KMXDzNj+Smnwymns2//Pu7++2+paz2O+55p46WPfo8lif8Hv4N9VLE7MZsD5XPZ8KIvMr26lCWph5luByitqKakoppkWRWJihoS0xdQmohTSi+lyQQWT+qPgYgcsVELHVgFbHP37QBm9lNgLdC/0NcCn8+9vwm4yszMI/o9+qlTprJ6zbtZnft57+6l3P/QHXTtfJRE+3aqO5+mpHMHN9z3HF09fVydvIqT4vcNWMYOn86q1JUAXJf8EmfEHwIg7THSxHmcBbzH/p14zLgy8yWWsh3HAMMxHo0dy2dKPgPAFT2fZ15mJ26Wmwc22zIuK/kIAFf2/Ct13opjHPo/5N7YSXwzuQ6A9an/RSWdA/LdET+V7yXPA+BHBz9GgvSA8VvjL+fHyXNIeC8/Sv3zkG10S+K13Jg4i2rv4LupTw8ZvzF5Fr9OvJa6TAtXpD43ZPy65Dncmng58zI7+PfUl4eMr0++h78lTmNxZjv/mrp8yPiVJR/gvvgKTujbyqd6vjNk/KslF/JwfCkv6fsHH+65Zsj4v5V+nG3xhZyevpt1Pf8xZPziss/QFJvDa9K38V97bhoy/omyL7A3Np039/6Bs3t/PWT8ovIv02FVnN17C2/q/eOQ8XXlV5C2JOf13Mir0rcPGEtbgnXl/zs7X89P+C/pewaMd1glH674anY9qe9zSnrTgPGWWC2fLP83AD558EqW9z06YHxHbDafLb8YAz578Oss7HtqwPiT8YVcVvaJ7Hbqvow5mZ0DxrfEl/KNsosA+Gr3JdR564Dx++Mn8e2y7O/elZ3/k0oGXnBwZ+JUrinN/u59v/OjxOkbMP6nxBlcX/oOEt7L+q6hv3u/Tb6Wm0vOoso7+GbX0N+9XyTPYkNJ9nfvK91Df/euLzmHPydfztzMDr7Q/aUh49eWnsffk6tZ1Pckn+4e+rv33bJ13J9YwfHprXzs4LeHjF9RdiEnnPY61p2+cMjY0RpLoc8Bnuv3cxNw6kjzuHvazPYB04G9/WcyswuACwDmz59/hJGLT93M2dTNHPoPkq1Ad08fbXuW83jLDlKdB+jpPoCnOunJwBfrjieVztC9413c2fkyyKSxTBrL9NKRmMbbZ8wl407XrlVsT80B99y9ZpyO5BxW108HYP+eF9PUOytX5dnazpQuZHVddrzr+RfR0tfer86htLyR1dOz4x07F9GT6R6QvbxiPqtqa7PLb1qEkRkwXl05l1XTaol5mrYdLxryv31a9VxWTa2lNF1K2/NDx+umzuEl1bVUpY22XUPHZ9XM5iVVtdT09tK+e9GQ8dnTGjilchr1qXram4eOz5s+k0z5NGYfnEH73qHjx9TNoLRsGvO6Z9Le8sL4oS20sL6e6pIaZnXOpK196OcXz6ijPllDfUcDbfuGji+dWUtHoobaAw207R86vmxWLal4BVP2zaatY+j4CbOnkbEEFe1zaOscOJ6xOCfOrgGgtHUubd0tA8YPxio4YdZUAGKt82g72DFgvCtewwkzs+PeMp+21MA/1qnEDI6fkR3vbV5Aa298wHhvci7L67PjqT2NtKYrBox76TyWT8+Od+9upC1d88IYYGVzWVY7BYADu44hNeh3L1kxm2U12fG25xcS84GFXlbZwLKpU4h5mtbnh5ZiRdUsjpsyhbK+OK27h45XV8/kuOopVKX7aN0zdLxm6gyOq5xCbW8Xrc1Dx2un1rGkopoZPbW0tgwdr6upY0l5NTNT02ltHTo+s3Y6dVUTc+5t1GPoZnY2sMbd1+V+Pg841d0v6jfPw7l5mnI/P5mbZ+9wy4TwHUMXESkGhzuGPpbLFncA8/r9PDc3bdh5zCwBTCV7clRERApkLIV+H7DYzI4xsxLgXOCWQfPcArwv9/5s4M9RPX4uIlKsRj2GnjsmfhHwB7KXLV7r7lvM7FJgo7vfAlwD/MTMtgGtZEtfREQKaCwnRXH3DcCGQdMu6ff+IHBOfqOJiMh46Kv/IiIRoUIXEYkIFbqISESo0EVEIiKwuy2aWTPwzBF+vI5B30INCeUunDBmBuUupDBmBljg7vXDDQRW6EfDzDaO9E2pYqbchRPGzKDchRTGzKPRIRcRkYhQoYuIRERYC3190AGOkHIXThgzg3IXUhgzH1Yoj6GLiMhQYd1DFxGRQVToIiJR4bmn4BTiBawBHgO2AZ8eZrwU+Flu/B6gsd/YZ3LTHwNeN9oygWNyy9iWW2bJaOso4szvB5qBTbnXuiLb1hflpjlQ12+6Ad/KjT0InByS3GcC+/pt70uKKPP1uekPA9cCyZBs65Fyj2tbB5D7GmBzbpveBFQdSY8U6lW4FWVvvfsksBAoyW2kZYPm+RBwde79ucDPcu+X5eYvJVt6T+aWN+IygRuBc3PvrwY+eLh1FHnm9wNXFfG2XgE0Ak8zsBjfAPyObNmsBu4JSe4zgd8U6bZ+Q257GnBDv9+RYt/WI+Ue87YOKPeUfsu9nFzZj7SOoF+FPOTynw+bdvce4NDDpvtbC/w49/4m4FVmZrnpP3X3lLs/Rfav4qqRlpn7zCtzyyC3zLeMso5izjxeBcsN4O7/cPenh8mxFrjOs+4GasysIQS5x6PQmTfktqcD95J9gtihdRTzth4p93gVOvd+gNzny3nhsbPj6ZGCKWShD/ew6TkjzePuabL/FJt+mM+ONH060J5bxuB1jbSOYs4M8HYze9DMbjKz/o8EDDr30eYoxtwAp5nZZjP7nZktL7bMZpYEzgN+P44cxZgbxr6tA8ltZj8EdgHHAVeOso5A6aRoOPya7DG6FwO38sKegUyMB8jeL+NEsv8B/yrgPMP5DnC7u98RdJBxGpy76Le1u58PzAYeAd4ZcJzDKmShH83Dpkf67EjTW8j+kzMxaPrh1lG0md29xd1Tuek/AE4ZIW8QuY82R9Hldvf97t6Re78BSJpZXbFkNrPPAfXAx8eZo+hyj3NbB5I7l62P7KGYt4+yjmAV6mA92cfdbSd7MuLQiYflg+a5kIEnGm7MvV/OwJMZ28meyBhxmcDPGXiC8UOHW0eRZ27ot763AncX07but8ynGXhy8Y0MPFF3b0hyz+KFL92tAp499HPQmYF1wN+B8kHrKOptfZjcY97Whc6d25aLcp814OvA18fbI4V8FXZl2TPdj5M9o3xxbtqlwFm592VkS20b2RMnC/t99uLc5x4DXn+4ZeamL8wtY1tumaWjraOIM38J2JL7RfsLcFyRbeuPkD3umAZ2Aj/o9x/Bt3PzPwSsDEnui/pt77uBlxZR5nRu2oDL/EKwrUfKPa5tXcjcZI9g3Jnbng+TvfRyypH0SKFe+uq/iEhE6KSoiEhEqNBFRCJChS4iEhEqdBGRiFChi4hEhApdRCQiVOgiIhHx/wFj06ZhwNpBPAAAAABJRU5ErkJggg==\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# FIRDamper "
      ],
      "metadata": {
        "id": "KpOhcSsdgLAq"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from mbtrack2 import FIRDamper "
      ],
      "metadata": {
        "id": "SHZG0VukgKja"
      },
      "execution_count": 29,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Stable case (low gain)"
      ],
      "metadata": {
        "id": "jbqNhZ3yr9pp"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "mybunch = Bunch(ring, mp_number=1, current=1e-3, track_alive=False)\n",
        "mybunch[\"x\"] += 1e-3"
      ],
      "metadata": {
        "id": "fj-0Pjf9gSN7"
      },
      "execution_count": 30,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Initialize a ``FIRDamper`` element on the horizontal plane.\n",
        "\n",
        "The FIR filter is computed for a reference tune of 0.2 (usually the same as ``ring.tune``) with a gain of 0.1 and a phase of -90°. A delay of 1 turn between the measurement and the kick is also taken into account.\n",
        "\n",
        "If the gain is low enough, the ``FIRDamper`` element should provide damping."
      ],
      "metadata": {
        "id": "WPXDhshFtl2E"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fir_damp = FIRDamper(ring=ring, plane=\"x\", tune=0.2, turn_delay=1, tap_number=5, \n",
        "                     gain=0.1, phase=-90, bpm_error=None, max_kick=None)"
      ],
      "metadata": {
        "id": "8ixPo9QFgbkn"
      },
      "execution_count": 31,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "The FIR filter computed from the input can then be plotted:"
      ],
      "metadata": {
        "id": "RPMKy5qLtys7"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fig = fir_damp.plot_fir()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "id": "C-WuKp-Rg7ZC",
        "outputId": "4d024653-106c-4195-8b5b-fa39b90e635f"
      },
      "execution_count": 32,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "bunchmon = BunchMonitor(bunch_number=0, save_every=1, buffer_size=10, total_size=100, file_name=\"fir\")\n",
        "\n",
        "turns = 100\n",
        "for i in range(turns):\n",
        "  LongMap.track(mybunch)\n",
        "  TransMap.track(mybunch)\n",
        "  RF.track(mybunch)\n",
        "  fir_damp.track(mybunch)\n",
        "  bunchmon.track(mybunch)\n",
        "bunchmon.close()"
      ],
      "metadata": {
        "id": "Y5fitMh5gYwL"
      },
      "execution_count": 33,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"mean\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "ccfe8e70-58eb-44e9-8062-37ed44c2cdb6",
        "id": "7p4k8Ivfioow"
      },
      "execution_count": 36,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"cs_invariant\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "outputId": "f9cfd6d8-56f6-44ca-824e-4f20edeb0c41",
        "id": "Gu_QqzR9ioow"
      },
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "g = hp.File(\"fir.hdf5\",\"r\")\n",
        "xdata = np.array(g[\"BunchData_0\"][\"time\"])*ring.T0\n",
        "ydata = np.array(g[\"BunchData_0\"][\"cs_invariant\"][0,:])\n",
        "g.close()"
      ],
      "metadata": {
        "id": "lraKR0WowDzz"
      },
      "execution_count": 38,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def func(x, a, b):\n",
        "    return a * np.exp(-b * x)"
      ],
      "metadata": {
        "id": "wkTeoyvFwDzz"
      },
      "execution_count": 39,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "popt, pcov = curve_fit(func, xdata, ydata)\n",
        "print(f\"Fitted damping time is {1/popt[1]/ring.T0*2} turns.\")\n",
        "plt.plot(xdata, ydata)\n",
        "plt.plot(xdata, func(xdata, *popt),\"--\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 324
        },
        "outputId": "5dadf456-b47b-475e-c730-4620f6982945",
        "id": "nA0S4-NcwDzz"
      },
      "execution_count": 41,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Fitted damping time is 6.990584491546427 turns.\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fb71e0b32b0>]"
            ]
          },
          "metadata": {},
          "execution_count": 41
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Unstable case (high gain)"
      ],
      "metadata": {
        "id": "ONOSRYuywlhh"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "mybunch = Bunch(ring, mp_number=1, current=1e-3, track_alive=False)\n",
        "mybunch[\"x\"] += 1e-3"
      ],
      "metadata": {
        "id": "kKT7HBz-wlhh"
      },
      "execution_count": 42,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "If the gain is too high (here gain = 0.5 is enough), the ``FIRDamper`` leads to unstable dynamics."
      ],
      "metadata": {
        "id": "LCj3xmT7wlhh"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fir_damp = FIRDamper(ring=ring, plane=\"x\", tune=0.2, turn_delay=1, tap_number=5, \n",
        "                     gain=0.5, phase=-90, bpm_error=None, max_kick=None)"
      ],
      "metadata": {
        "id": "VeRYrl0Zwlhh"
      },
      "execution_count": 43,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = fir_damp.plot_fir()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "3efd0ebc-b29d-4b2d-c44b-8c757dd96c1e",
        "id": "_UryiiN9wlhh"
      },
      "execution_count": 44,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "bunchmon = BunchMonitor(bunch_number=0, save_every=1, buffer_size=10, total_size=100, file_name=\"fir\")\n",
        "\n",
        "turns = 100\n",
        "for i in range(turns):\n",
        "  LongMap.track(mybunch)\n",
        "  TransMap.track(mybunch)\n",
        "  RF.track(mybunch)\n",
        "  fir_damp.track(mybunch)\n",
        "  bunchmon.track(mybunch)\n",
        "bunchmon.close()"
      ],
      "metadata": {
        "id": "f_CJObDxwlhi"
      },
      "execution_count": 45,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"mean\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "outputId": "db3bbde9-df58-47a1-99a4-4f0aed1ded9e",
        "id": "XrWYoJjOwlhi"
      },
      "execution_count": 46,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"cs_invariant\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "outputId": "f80857ae-a070-4064-ceb4-3c51bcaa501c",
        "id": "AMo0EWrEwlhi"
      },
      "execution_count": 47,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Physical limitations"
      ],
      "metadata": {
        "id": "YYpjsQWrtbjn"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Physical limitations such as the maximum kick strength or the BPM measurement errors can possibly change the damping time."
      ],
      "metadata": {
        "id": "6yU5XIp0yFjx"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "### Maximum kick limit"
      ],
      "metadata": {
        "id": "vjCCGfijlGD5"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "mybunch = Bunch(ring, mp_number=1, current=1e-3, track_alive=False)\n",
        "mybunch[\"x\"] += 1e-3"
      ],
      "metadata": {
        "id": "uWwl4EpExem-"
      },
      "execution_count": 64,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Here the ``max_kick`` of the ``FIRDamper`` is set to 0.1 mrad:"
      ],
      "metadata": {
        "id": "GGviqXgdxem-"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fir_damp = FIRDamper(ring=ring, plane=\"x\", tune=0.2, turn_delay=1, tap_number=5, \n",
        "                     gain=0.1, phase=-90, bpm_error=None, max_kick=0.1e-3)"
      ],
      "metadata": {
        "id": "yQeS05a1xem-"
      },
      "execution_count": 65,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "bunchmon = BunchMonitor(bunch_number=0, save_every=1, buffer_size=10, total_size=100, file_name=\"fir\")\n",
        "\n",
        "turns = 100\n",
        "for i in range(turns):\n",
        "  LongMap.track(mybunch)\n",
        "  TransMap.track(mybunch)\n",
        "  RF.track(mybunch)\n",
        "  fir_damp.track(mybunch)\n",
        "  bunchmon.track(mybunch)\n",
        "bunchmon.close()"
      ],
      "metadata": {
        "id": "zuzRZmS6xem_"
      },
      "execution_count": 66,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"mean\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "01b82637-6ba7-4dbc-fd6b-9a489f67358e",
        "id": "1NCNfjYXxem_"
      },
      "execution_count": 67,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"cs_invariant\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "outputId": "6ee8e42e-8d7d-4252-d920-e47fa65eae44",
        "id": "ryn8vjCRxem_"
      },
      "execution_count": 68,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "g = hp.File(\"fir.hdf5\",\"r\")\n",
        "xdata = np.array(g[\"BunchData_0\"][\"time\"])*ring.T0\n",
        "ydata = np.array(g[\"BunchData_0\"][\"cs_invariant\"][0,:])\n",
        "g.close()"
      ],
      "metadata": {
        "id": "zgj2tGT6xem_"
      },
      "execution_count": 69,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def func(x, a, b):\n",
        "    return a * np.exp(-b * x)"
      ],
      "metadata": {
        "id": "xnxtezDExem_"
      },
      "execution_count": 70,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "The damping time is increased from 7 turns to 11 turns due to the kick strength limitation."
      ],
      "metadata": {
        "id": "Upd3Cb5iyS5z"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "popt, pcov = curve_fit(func, xdata, ydata)\n",
        "print(f\"Fitted damping time is {1/popt[1]/ring.T0*2} turns.\")\n",
        "plt.plot(xdata, ydata)\n",
        "plt.plot(xdata, func(xdata, *popt),\"--\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 324
        },
        "outputId": "39c8cffd-f882-4544-9463-a0026bee0723",
        "id": "Tt6DvKNwxem_"
      },
      "execution_count": 71,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Fitted damping time is 10.853769514931573 turns.\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fb71dd8fe50>]"
            ]
          },
          "metadata": {},
          "execution_count": 71
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "### BPM measurement error"
      ],
      "metadata": {
        "id": "yzt9wS4mucSP"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "mybunch = Bunch(ring, mp_number=1, current=1e-3, track_alive=False)\n",
        "mybunch[\"x\"] += 1e-3"
      ],
      "metadata": {
        "id": "YkXbGEjOxaf-"
      },
      "execution_count": 102,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Here a random measurement error of 50 um RMS is added to the bunch mean position used for the feedback correction."
      ],
      "metadata": {
        "id": "sU3pYzjfzK0x"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fir_damp = FIRDamper(ring=ring, plane=\"x\", tune=0.2, turn_delay=1, tap_number=5, \n",
        "                     gain=0.1, phase=-90, bpm_error=50e-6, max_kick=None)"
      ],
      "metadata": {
        "id": "xxxYQOQcxaf_"
      },
      "execution_count": 103,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "bunchmon = BunchMonitor(bunch_number=0, save_every=1, buffer_size=10, total_size=100, file_name=\"fir\")\n",
        "\n",
        "turns = 100\n",
        "for i in range(turns):\n",
        "  LongMap.track(mybunch)\n",
        "  TransMap.track(mybunch)\n",
        "  RF.track(mybunch)\n",
        "  fir_damp.track(mybunch)\n",
        "  bunchmon.track(mybunch)\n",
        "bunchmon.close()"
      ],
      "metadata": {
        "id": "xjpuJjg7xaf_"
      },
      "execution_count": 104,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"mean\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "cb64b85b-734d-46c1-81ed-8b62ff24874b",
        "id": "oB4Sjr8oxaf_"
      },
      "execution_count": 105,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "fig = plot_bunchdata(\"fir.hdf5\",0,\"cs_invariant\",\"x\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 290
        },
        "outputId": "3734754a-18bf-41e3-891c-bf73569416d0",
        "id": "i63oC-q1xaf_"
      },
      "execution_count": 106,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAERCAYAAAB4jRxOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxddZ3/8dfnbtmTZmu6r9CWUvZSQBCBn0qVGXVUHMERdVCUUX46M+pPf864zuL8+LnOjDrIogiiyKIMyKaWHbpTui+0aZs2bdY2W5Pce/OdP85JSLplIbkJ+b6fj0cezT333nO+pyeP9/3e73bMOYeIiIx/kdEugIiIZIYCX0TEEwp8ERFPKPBFRDyhwBcR8YQCX0TEE2M+8M3sdjOrMbMNw7Cvy83s5V4/7Wb2nuEop4jIWGdjfRy+mV0KtAB3OucWDeN+S4AdwDTnXNtw7VdEZKwa8zV859wzQEPvbWY218weM7PVZvasmS0Ywq7fDzyqsBcRX4z5wD+BW4CbnHPnAZ8HfjSEfXwQuGdYSyUiMobFRrsAg2Vm+cCbgN+YWffmrPC59wLfPM7b9jnnruy1j8nAGcDjI1taEZGx4w0X+ATfSg45584++gnn3APAAwPYxweAB51zyeEunIjIWPWGa9JxzjUBu8zsagALnDXI3VyDmnNExDNjPvDN7B7gRWC+mVWZ2fXAh4DrzWwdsBF49yD2NwuYDjw9/KUVERm7xvywTBERGR5jvoYvIiLDY0x32paVlblZs2aNdjFERN4wVq9eXeecKz/ec2M68GfNmsWqVatGuxgiIm8YZrb7RM+pSUdExBMKfBERTyjwRUQ8ocAXEfGEAl9ExBMKfBERTyjwRUQ84VXgr6psYHN102gXQ0RkVHgV+F95cAPfe3LbaBdDRGRUeBX49a0dtKe6RrsYIiKjwpvA7+pyNLYlSaUV+CLiJ28Cv7k9RbrLkVTgi4invAn8hrZOAJJprf8vIn7yJ/BbOwBIdamGLyJ+ynjgm1nUzNaa2cOZPG5Da3C/8mRKNXwR8dNo1PA/C2zO9EEbW8MmHdXwRcRTGQ18M5sGXAXcmsnjQu82fAW+iPgp0zX87wNfBE6YumZ2g5mtMrNVtbW1w3bg7hp+Sp22IuKpjAW+mf0ZUOOcW32y1znnbnHOLXbOLS4vP+5tGYekoVU1fBHxWyZr+BcD7zKzSuBXwBVmdlemDt6oYZki4rmMBb5z7svOuWnOuVnAB4E/Oef+KlPHb+hp0lENX0T85NE4fNXwRcRvsdE4qHPuKeCpTB6zodewTOccZpbJw4uIjDovavjJdBdN7SliEcM5SHepli8i/vEi8A+1BbNsJxZkAZBS4IuIh7wI/O4ROhMLswHoVMetiHjIi8Dvbr+vKAxr+Oq4FREPeRH43bNsJxYENXwNzRQRH3kR+N3r6HS34atJR0R85Efgt3S34atJR0T85Ufgt3WSnxUjNxFMO9B6OiLiIy8Cv7G1k+K8OPFocLqabSsiPvIi8BvakpTkJohHg9m1quGLiI+8CPyghp/oqeHrvrYi4iMvAr+htZOS3ASxsIbfqfvaioiHvAj8xrZOSlTDFxHPjfvAb0+maetM923SUaetiHho3Ad+9zo6JXkJYpGwSUedtiLioXEf+PXhpKvi3ASJmGr4IuKvcR/4x6vha1imiPho3Ad+90qZJX0mXinwRcQ/o3KLw0zqXimzODfRM8NWM21FxEfjv4bflsQMinLiPePwNSxTRHw07gO/sbUzDPuI1tIREa+N+8BvaAtm2QJaS0dEvDbuA7+xNZhlC/SaeKXAFxH/jOvAb+1IceBwO8Vh4L828UpNOiLin3E3Sqc9mea253bxzLZa1uxpJJl2XLFgIgBmRjxqquGLiJfGXeAnohF+9kIlEwuyuP6SOVw6r4wls0p6no9FImrDFxEvjbvAj0SMp79wWc/tDI8Wi5pG6YiIl8ZlG/6Jwh6CbwAahy8iPhqXgX8ysaiR1A1QRMRD3gV+PBohqRq+iHjIz8BXG76IeMjDwNewTBHxk3eBr2GZIuIr7wI/rmGZIuIpDwNfwzJFxE/eBb6GZYqIr7wLfA3LFBFf+Rn46rQVEQ9lLPDNLNvMVpjZOjPbaGbfyNSxewuGZapJR0T8k8nF0zqAK5xzLWYWB54zs0edcy9lsAzEohE6VcMXEQ9lLPCdcw5oCR/Gw5+MV7XjEdXwRcRPGW3DN7Oomb0M1ABPOueWH+c1N5jZKjNbVVtbO+xliEcjmmkrIl7KaOA759LOubOBacASM1t0nNfc4pxb7JxbXF5ePuxlCJp0VMMXEf+Myigd59whYBmwNNPHTkRNE69ExEuZHKVTbmYTwt9zgLcBWzJ1/G6xaIRkSoEvIv7J5CidycDPzSxK8EFzr3Pu4QweH+ieeKUmHRHxTyZH6bwCnJOp451IsHiaavgi4h/vZtrGIhGcg7Rq+SLiGe8CPx4zANXyRcQ7/gV+JDhlBb6I+Ma/wI8GNXzNthUR33gX+LGoavgi4ifvAj/RHfjqtBURz3gX+LGwSUeTr0TENx4GfnDKWl5BRHzjXeAnwhp+p+5rKyKe8S7wYxHV8EXET94FfjzWPUpHNXwR8Yt/gR/RTFsR8ZN/gR/W8DXxSkR8413gx1TDFxFPeRf4cc20FRFPeRz4atIREb94F/jdM201LFNEfONd4CdUwxcRT3kX+D1r6agNX0Q8413gd7fhpxT4IuIZ/wI/XFqhU006IuIZ7wK/p9NWNXwR8Yx3ga9x+CLiKw8Dv7vTVk06IuKXQQe+meWZWXQkCpMJZkYsYhqHLyLe6TfwzSxiZtea2SNmVgNsAarNbJOZ3Wxmp4x8MYdXLGqq4YuIdwZSw18GzAW+DExyzk13zk0ELgFeAv7NzP5qBMs47OLRiNrwRcQ7sQG85q3OueTRG51zDcD9wP1mFh/2ko0gBb6I+KjfwO8OezNbDHwFmBm+z4Kn3ZnH+0AYy2IR03r4IuKdgdTwu90NfAFYD7yhq8fxaIRO1fBFxDODCfxa59xDI1aSDIpHVcMXEf8MJvC/Zma3An8EOro3OuceGPZSjbB4NKJhmSLincEE/seABUCc15p0HPCGC/xYNEJnSjV8EfHLYAL/fOfc/BErSQYlopp4JSL+GcxM2xfMbOGIlSSDYhqWKSIeGkwN/0LgZTPbRdCG3zMsc0RKNoJiEc20FRH/DCbwl45YKTIsEYvQ0pEa7WKIiGRUv4FvZuYCu/t7zfAWbeRo4pWI+GhAa+mY2U1mNqP3RjNLmNkVZvZz4CP97cTMppvZsnDRtY1m9tmhFvr10tIKIuKjgTTpLAX+GrjHzGYDh4BsIAo8AXzfObd2APtJAX/vnFtjZgXAajN70jm3aYhlHzIFvoj4aCBr6bQDPwJ+FC6SVgYccc4dGsyBnHPVQHX4e7OZbQamAqMQ+EaqS006IuKXwXTadi+kVv16D2pms4BzgOXHee4G4AaAGTNmHP30sIhFIyRTquGLiF8yfotDM8snWFb5c865pqOfd87d4pxb7JxbXF5ePiJliEeNpGr4IuKZjAZ+2CR0P3D3aK7BozZ8EfHRkAJ/KPe0NTMDbgM2O+e+O5TjDpdYJKJhmSLinaHW8G8xs1wAM7t0gO+5GPgwcIWZvRz+vHOIx39d4jHTevgi4p1Bddr28lXgNjNLAS8Dz/T3BufccwTLMYy6eCRCSoEvIp4Zag3/W8BWguWR7x2+4mRGPBqhy0FaHbci4pGh1vC/6JyrM7M84AfAx4exTCMuFg2+aCTTXUQjg+6OEBF5QxrIWjrfBV4JfzY65zqcc3UAzrlWM/vkCJdx2MXDwNfkKxHxyUBq+DsIlkb+BHCamR3gtQ+AlQTt9+kRK+EIiEeDlqxkqguyRrkwIiIZMpClFX7U+3G4ns4ZwJnAjcB/mdmNzrnHR6aIwy/WHfi665WIeGTQbfjOuV3ALuAhADObDDwMvGECP9HThq8mHRHxx+ueaRsuivbLYShLxsQiwWlraKaI+GRYllZwzn1nOPaTKTHV8EXEQxlfPG0sSHS34auGLyIe8TLwuztttZ6OiPjEy8DvHoev9XRExCeeBr46bUXEP14HvjptRcQnXgZ+zygdTbwSEY94GfjxiDptRcQ/fgZ+7LXVMkVEfOFl4HfPtFXgi4hPvAz8hDptRcRDXgZ+d6ethmWKiE+8DPy4llYQEQ95GvhaPE1E/ONl4PespaNx+CLiES8DXzV8EfGRn4GvYZki4iEvAz8SMaIRU+CLiFe8DHyAWMS0tIKIeMXbwE9EI1oPX0S84m3gx6Kq4YuIXzwO/IiGZYqIV7wN/EQ0QmdKNXwR8Ye3gR+Lmmr4IuIVbwM/Ho1oWKaIeMXbwI9FTDNtRcQr3gZ+IqYavoj4xdvA18QrEfGNv4GviVci4hlvA78oJ05Da+doF0NEJGO8Dfx5FflU1rXSkUqPdlFERDIiY4FvZrebWY2ZbcjUMU9m/qRCUl2OnbWto10UEZGMyGQN/2fA0gwe76TmVxQAsO1g8yiXREQkMzIW+M65Z4CGTB2vP7PL8ohFjK0HFPgi4gdv2/ATsQhzyvNUwxcRb4y5wDezG8xslZmtqq2tHdFjzZ9UyBbV8EXEE2Mu8J1ztzjnFjvnFpeXl4/oseZX5FPVeISWjtSIHkdEZCwYc4GfSfPCjtvtatYREQ9kcljmPcCLwHwzqzKz6zN17BOZP0kjdUTEH7FMHcg5d02mjjVQ04tzyYlH1Y4vIl7wukknEjHmVeSrhi8iXvA68CFox996oGW0iyEiMuK8D/z5kwqoa+mgvqVjtIsiIjKiFPhhx+1WNeuIyDinwO9eU0cdtyIyznkf+OUFWUzIjbP1oNrxRWR88z7wzSzsuG0a7aKIiIwo7wMfYGZJLvsPtY92MURERpQCHygryKK+tQPnBn9Tc+ccTe3JESiViMjwUuADZflZJNOOw0cGF9zbDjZz3e0rOPsbT7CjRn0AIjK2ZWxphbGsLD8BQF1LBxNyE/2+vj2Z5l9+v5m7l+8hEY3Q5WDDvsOcMjF/pIsqIjJkquET1PABaps7B/T6u17azZ0v7ubaJTN46guXETHYWasavoiMbarh81rg1w1wtu1jGw5w2uRCvvWeRQBMK85lZ51uhi4iY5tq+LzWpDOQ5RVqmztYvaeRK0+v6Nk2pzyPnbUKfBEZ2xT4QHFugmjEqGvpv0nnyU0HcQ6uPH1Sz7Y5Zfnsqmsd0igfEZFMUeATLJNckpcYUJPO4xsPMKMklwXhGjwAs8vzOJJMc6BJY/lFZOxS4IfK8rP6Dfym9iQvvFrH0kWTMLOe7XPL8gDUrCMiY5oCP1SWn6C2nyadZVtqSKZdn/Z7CGr4gDpuRWRMU+CHyvKzqGs+eQ3/iY0HKS/I4pzpxX22TyrMJjcR1dBMERnTFPihsvzEMcsrrNjVwKfvXsP9q6uob+ngqa01vG1hBZGI9XmvmTG7LI9dquGLyBimcfihsvws2pNdtHamyc8K/lt++/I+HllfzSPrq4lGjHSX6zM6p7fZZXm8UnU4k0UWERkU1fBDPZOvejXrVNa1cvb0Cdx/45v48IUzWXr6JC6aU3rc988pz6eqsY2OVBqAzlQX33tyGzXNGrkjImODavihsoLXZtvOCkfdVNa1csGcUs6bWcx5M4tP9nbmlOXR5WBPfRunVhTw+MYD/OCP2ynIjvHxN88Z8fKLiPRHNfxQad5rC6hBsEDa/sPtzCrNG9D75xw1UufXK/cCwaJqIiJjgQI/VB7W8LuHZu5paANgVlnugN4/u9dY/L0NbTy3ow4z2LB/4HfSenR9NasqGwZTbBGRAVPgh0q6a/hhG373iJvuIO9PQXac8oIsdtW1cO+qvUQMPnDedF6tbaGtM9Xv+5PpLr5w3yt865HNQzwDEZGTU+CH4tEIxblx6luDwK8MA3/mAJt0IGjH317Twm9WVfGWeeW8bWEFzsHm6v5r+S/vPURLR4pXqg4NeNVOEZHBUOD3Eky+Cpp0KuvbKMlLUJQTH/D755TnsXbPIQ40tfOX509n0dQiADbs6z/wn91WC4Bz8Ez4u4jIcFLg99J7PZ3KulZmlQ6s/b7bnLL8cD8JrlhQQUVhFmX5iQF13D67o46zpk+gLD/BU1sV+CIy/BT4vZTmv7ZiZmV964BH6HTrbu9/37nTSMQimBmnTynqt+P2cFuSdXsP8ZZTy3jLvIk8va2WdJeWWhaR4aXA7yWo4XfSnkxTfbi9Zzz+QC2ZU8K7zprCRy+e1bNt0dRCth9spj2ZPuH7XtxZR5eDN88r5/IF5Rw+kuTlvY3HvK6qsY2P3bGCD9+2fFDlEhEBTbzqo7wgi5aOFFsPNAMMOvALs+P88Jpz+mxbNKWIVJdj28Fmzpw24bjve2Z7HflZMc6ePoG2jjTRiLFsSy3nzSwBoKvLcffy3Xz70S20dgYfHDtqmjllYsFx9ycicjyq4ffSfavDVbuD2vXsQTbpHM9AOm6f217HhXNKiEcjFOXGOW9GMcu21gDBBLAbfrGaf/zdRs6dWcwDf/MmAB5df+CE+2tPplm2tYYuNQuJSC8K/F6619NZvTuY/DRzgJOuTmZacQ6F2TE27D9+x+3u+lb2NLTx5lPLe7ZdtqCcjfub2NvQxqfuWs0fNh/ka3++kDv/egnnzgiWeXh0w4kD/ztPbOVjd6zkhl+soqk9ecLXHek8cTOTiIw/CvxeugN/VWUjpXkJCrMHPiTzRMyMRVOL2HiCkTrPbq8D4JJTy3q2XT5/IgDv+/ELPLW1lm+/9ww+dvHsnrtsvWPRJDZVN7G7/tjlmA+1dfLL5XuYV5HPsq21vOc/nmdHTfMxr1u2tYazvvkE962uet3nKCJvDAr8XkrDJp2a5o5Bt9+fzKKpRWw+0Ewy3XXMc89tr2PqhBzm9DregkkFTCrMpralg//3vjP54JIZfd7TvUTz8Wr5d764m9bOND+85hzu/vgFHD6S5D3/+QLP76jreU1VYxt/++uX6Ux18U+PbKJeE72GTUtHikfXV9PS0f/sapFMU+D30l3DBwY9JPNkTp9SSGeqix01fe+Ite1gM09tq+HSeeV97pFrZnznA2dxx0fP5wPnTz9mf9NLcjljatExgd/WmeKO53dxxYKJLJhUyIVzSvnvmy5h6oQcPnbHSh7bUE1HKs2nf7mWdNrx0+sW09Ke4l8f3TJs5zoUx/sgfKPZsO8wX37gFZb88x+48e41/N8H1o92kWSMa0+mTzp6byQo8HvJjkcpCG9+MthJVyfT3XH7+/XVPdtaOlJ86q7V5GfF+dxbTz3mPRefUsZlYdPO8SxdNIl1ew+x/9CRnm33rtxLY1uSv7lsbs+2KRNyuPeTF3HGtCL+5u41fPjWFazbe4ibrz6Tty2s4IZL53Df6ipe2lk/HKfaRzLdRfNJ+hDqWjq46Z61LPra4yzbUjPsx8+UJzcd5M//4zkeXLuPq86YzLUXzOChdfv505aDr2u/VY1t3L+6ikfXV/P0tlqqGtuGqcQy2jbsO8xbv/s0b7l5GU9tzdzfvoZlHqWsIIvmjtSwNunMKcvjytMr+Pc/7aC1I81XrjqNLz+wnsq6Vu76+AVUFGYPep/vWDSJmx/fymMbDvDXl8wmme7ip8/u4vxZxSyeVdLntUW5cX5x/RJuvGsNT2+r5eOXzGbposkA3HTFqTy0bj9feXA9j372UhKx118HSKa7uH91Ff/+px0caGpn6emTuO6imSyZHZSrrTPNYxsO8K1HNtHWkaaiKIsb717NXddfcEzZx7p9h47w+d+sY+HkQn75iQspyonTmepiVWUD//DgBp74u9KeO6h1236wmXtX7SWZdpw+pZCFUwqZV1FAPPra//2WA01c+9PlNLR29mzLikW47SPn9+nvOVpdSweptMMMsmNRinJffz+UDK8H11bxpfvXUxL2E370jpVcs2QGX7nqtGP+Voab9b6H60gzs6XAD4AocKtz7tsne/3ixYvdqlWrMlK2blf/5AVWVjby8E2X9NTMh0O6y/FPj2zijucrmVeRz7aDLXzhyvl8+vJThrzPpd9/htbOFIumFFFZ38bm6iZu/+hirlhQcdzXd6a6eHFnPRfPLSXWK1yWbanhYz9byVvmlfPdD5xFaa+mLYCOVJo/bq7hwbX7ADhzahFnTp/AOTMm9OnYPtKZ5ncv7+PHT7/K7vo2zpo+gXOmT+DBtfs4fCRJcW6c1s40namgCee8mcV8+71nUJyX4OqfvEh9Swe//uRFnDa5sGefyXQXv1qxhzteqGRyUTYXzC7lwjmlnDtjQp9zGA3JdBd/+V8vsu1gCw/fdEmfSsLq3Y28/ycv8JGLZvH1d51OTVM7z26v49er9rJiVwOJaIRoxDgSfqWfXpLDV965kCtPr2DrwWau/elyEtEIP/qrc8mJR2npSPGPv91AZX0rt3/kfN50St/Q39vQxjf+exN/2Nz3W8V1F83k/yxdQN5xgqSyrpXfvryP6kPtNHckae1Ic9HcUj584czjvn4g6lo6uG91FdsONDNvUgGLphRxxtSiE37wOOdYWdnIk5sOMK+igItPKWPKhJwhHXsojnSm2VnXQmleFqX5iT4fusPJOceaPYe4e/luHlizjyWzS/jRh84lPyvG957cxi3P7iQ/EeOSU8t4y7xyLp1XPuT/BzNb7ZxbfNznMhX4ZhYFtgFvA6qAlcA1zrlNJ3rPaAT+jXet5tENB1j/9bdTMAyjdI5254uVfP2hjVw2fyK3Xrf4mBuiD8YvXtrNzY9tYWJhNpMKszlvZjGfe+upffoDBuqul3bzzYc3MSEnzvc/eDZzy/NZsauBl3bW8/v11TS2JZlUmE1uVpSdtcHooGjEWDyzmMsXTKShtZNfr9zL4SNJTp9SyN+9bR5XLJiImXGkM81D6/axZvchJuTGKclLMLM0l7cvnNRz/lWNbbz/xy+STHdx5aJJzK8oICcR5SdPvcrOulbOmTGBI51ptoST4qZOyOHaC2bwl+dP79P3cqQzzdo9jaysbOTwkSSJWCT4iRrxaIR4NEJ7Kk1NUwc1ze1EIxGWzC7hojmlzC3P6/N/55yjrTNNXUsHdS0d1DZ30tKRoiw/weSiHH6zai+3PreLf7/mHP78rCnH/J9+/aGN/PzFSuaW5/f038woyeXaC2Zw9XnTmJCbYHd9K+uqDvHjp15l28EW3jS3lC0HmolHjV/dcFGf5bnrWzq49qfL2d3Qyg8/eA5Ti3NoT6Z5bns9P3pqB9GI8fFLZjOpKAiKTdWHuXv5HqYU5fBPf7GI6cU5NLQm2dvQxgNrq3h+Rz0RC/quCrJjxKMRthxopiQvwQ2XzqE8P4tVuxtYVdlIZ7qLyUXZTCnKYU55HufMKObMaUVkx6O8WtvC5uom/rCphic2HSCZdn3WpYpGjMvnl/P+86Zx+YKJtHak2X/oCBv2HebOF3ezqbqJiEH3tJFZpblML8mlODdYvLCupYM9DW1UNR4hOx5hUmE2FYXZzCjJZXZ5HrPL8ijKidMdZdnxaM/Ch9FI3+sZ3Lc6xcb9Tfxu7T4e33igZzIjBJMvz5haxFnTJjB3Yh4HDrezu76N2uYOZpbmctrkQk6tyMcIPqw7kmmwYLXdWMTIz4pRlBunMDvOvkNH2LS/iQ37DvPYxgPsrm8jOx7huotm8YUr5/f5cFmzp5F7V+7l6W21VB9upyA7xtp/fNuQKjVjJfAvAr7unLsyfPxlAOfcv57oPaMR+N95YiuPvFLNnz5/2YgdY099G5OKsoel+WQ4bdrfxGfuWdMT6AC5iSiXL5jIBxZP55JTyohGjKb2JBuqDvP8q3X8aUstm6ubiEaMpYsmcd2FQdPNUD50th9s5msPbWTj/iYOHwna/k+ZmM+X37Gg58OjsbWT51+t454Ve3h+Rz3xqFFRmE0sYkTM2NvYRjJs0shLxOhMddF5nE7hgqwY5YVZtHWkOdAU3Hc4Jx4lNxElOx4FoL61g/bkyTuUr71gBv/yF2cc97mWjhQfvX0FOYkoF59SxsVzyzh9SuFxP+RT6S7uemk3331yGzmJ6DFh362upYNrbnmJ7UcNALjqzMn8w1WnMbmob61wVWUDX7zvlZ47sXWbOiGHa5ZM5+rF0/s0Ka7Z08j3/7C9Z8XWwuwY580sJj87TvWhI1Qfbmdf2G9kBvFIpOf/d0JunPedO41rlkznlIkFNLZ2snF/E8/uqOW3a/dxsKkDM+gdOQsmFfCRN83i3WdPYU9DG89tr2PFrgZqmjtobOvkUFuS0vwEM0tyww+4Lg42tXPgcDt7G9tOen3MgmawLgc4SHZ19Tl2YXaMq86czJvmltHUnqSuuZM9DW28UnWIHbUtPa8tyI5RXpBFVcOR4/4t9ScWMS6YU8JfnDONpYsmnbTZxjnH9poWKutaeXs4Gm+wxkrgvx9Y6pz7ePj4w8AFzrnPHPW6G4AbAGbMmHHe7t27M1K+bsl0F52priF/pX2ja+1Icftzu8hJRDl/VgkLpxT2+zX3YFM7EbOeu4a9Xs45apo72H/oCGdMLTphLWdHTQu/Wb2X2uYO0l2OVJdjenEuF8wu4dyZxT1LWzvnSKYdyXQXqbQjHjNyE7Ge53bXt/HSznq217TQnkzTkeqiyzlK8xKU5mdRmpegrCCL8vws8rNi1Ld2UH24nWS6i3eeMZmsWHRYzhuguT1Jl+Oky3IfbkvyzPZa4tEIuYkoFYXZzJ904mU22pNpfr++mmjEepou5lUU9Kn9Hm1zdRNmMG9iwTEfUIfbkqyrOsSaPY0cSaY5bVIhp00uZE553gn/VtJdjud21LFiVz2leVlMmZDN9JJcFk4uHFLlAIIlR6qb2tlV20prr5sMtSfTNLZ20tCWpD2ZxgwMIx418rJi5CWiTC7K4c3zyk547Zrbk+xpaGNKUQ4TcuOYGcl0FztrW3m1toWIGTmJKFmxCM4F55dMd9HckeLwkSRNR5JMLMhi4ZRCTpmYP6x/I/15QwV+b6NRwxcReSM7WeBnsk1hH9B7UPm0cJuIiGRAJgN/JXCqmc02swTwQeChDB5fRMRrGWuods6lzOwzwOMEw0vTQm0AAAdNSURBVDJvd85tzNTxRUR8l9GeSefc74HfZ/KYIiISGFvjAkVEZMQo8EVEPKHAFxHxhAJfRMQTGV08bbDMrBYY6lTbMqCu31eNLz6eM/h53j6eM/h53oM955nOufLjPTGmA//1MLNVJ5ptNl75eM7g53n7eM7g53kP5zmrSUdExBMKfBERT4znwL9ltAswCnw8Z/DzvH08Z/DzvIftnMdtG76IiPQ1nmv4IiLSiwJfRMQT4y7wzWypmW01sx1m9qXRLs9IMbPpZrbMzDaZ2UYz+2y4vcTMnjSz7eG/xaNd1uFmZlEzW2tmD4ePZ5vZ8vCa/zpcfntcMbMJZnafmW0xs81mdtF4v9Zm9rfh3/YGM7vHzLLH47U2s9vNrMbMNvTadtxra4Efhuf/ipmdO5hjjavAD2+U/p/AO4CFwDVmtnB0SzViUsDfO+cWAhcCnw7P9UvAH51zpwJ/DB+PN58FNvd6/G/A95xzpwCNwPWjUqqR9QPgMefcAuAsgvMft9fazKYC/xtY7JxbRLCk+gcZn9f6Z8DSo7ad6Nq+Azg1/LkB+PFgDjSuAh9YAuxwzu10znUCvwLePcplGhHOuWrn3Jrw92aCAJhKcL4/D1/2c+A9o1PCkWFm04CrgFvDxwZcAdwXvmQ8nnMRcClwG4BzrtM5d4hxfq0Jlm/PMbMYkAtUMw6vtXPuGaDhqM0nurbvBu50gZeACWY2eaDHGm+BPxXY2+txVbhtXDOzWcA5wHKgwjlXHT51AKgYpWKNlO8DXwS6wselwCHnXPddrMfjNZ8N1AJ3hE1Zt5pZHuP4Wjvn9gH/H9hDEPSHgdWM/2vd7UTX9nVl3HgLfO+YWT5wP/A551xT7+dcMOZ23Iy7NbM/A2qcc6tHuywZFgPOBX7snDsHaOWo5ptxeK2LCWqzs4EpQB7HNnt4YTiv7XgLfK9ulG5mcYKwv9s590C4+WD3V7zw35rRKt8IuBh4l5lVEjTXXUHQtj0h/NoP4/OaVwFVzrnl4eP7CD4AxvO1fiuwyzlX65xLAg8QXP/xfq27nejavq6MG2+B782N0sO269uAzc657/Z66iHgI+HvHwF+l+myjRTn3Jedc9Occ7MIru2fnHMfApYB7w9fNq7OGcA5dwDYa2bzw03/C9jEOL7WBE05F5pZbvi33n3O4/pa93Kia/sQcF04WudC4HCvpp/+OefG1Q/wTmAb8CrwldEuzwie5yUEX/NeAV4Of95J0Kb9R2A78AegZLTLOkLnfxnwcPj7HGAFsAP4DZA12uUbgfM9G1gVXu/fAsXj/VoD3wC2ABuAXwBZ4/FaA/cQ9FMkCb7NXX+iawsYwUjEV4H1BKOYBnwsLa0gIuKJ8dakIyIiJ6DAFxHxhAJfRMQTCnwREU8o8EVEPKHAlzHJzJyZfafX48+b2deHad8/M7P39//K132cq8OVLZcdtX2WmV070scXOZoCX8aqDuC9ZlY22gXprdcsz4G4HviEc+7yo7bPAgYd+OFqsCJDpsCXsSpFcC/Pvz36iaNr6GbWEv57mZk9bWa/M7OdZvZtM/uQma0ws/VmNrfXbt5qZqvMbFu4Rk/3Ovs3m9nKcK3xT/ba77Nm9hDBbM+jy3NNuP8NZvZv4bavEkyOu83Mbj7qLd8G3mxmL4drvn/UzP6j1/4eNrPLus/NzL5jZuuAi8LH/2xm68zsJTOrCF93dXj8dWb2zGD/s8UPCnwZy/4T+FC4PPBAnQV8CjgN+DAwzzm3hGA55Zt6vW4WwXLaVwE/MbNsghr5Yefc+cD5wCfMbHb4+nOBzzrn5vU+mJlNIVij/QqC2bDnm9l7nHPfJJgZ+yHn3BeOKuOXgGedc2c7577Xz/nkAcudc2c5554LH7/knDsLeAb4RPi6rwJXhtvf1c8+xVMKfBmzXLD6550EN8IYqJUuuFdAB8H08yfC7esJQr7bvc65LufcdmAnsAB4O8E6JS8TLDVdSnCjCYAVzrldxzne+cBTLljkKwXcTbB2/XBJEyyQ160TeDj8fTWvndPzwM/M7BMENwsROYYCX8a67xPUvPN6bUsR/u2aWQTofZu7jl6/d/V63EWwzHC3o9cUcQTrlNwU1rzPds7Nds51f2C0vq6zOLme8wll9/q93TmX7vU46V5bDyVNeE7OuU8B/0CwkuJqMysdwfLKG5QCX8Y051wDcC99b2VXCZwX/v4uID6EXV9tZpGwXX8OsBV4HLgxXHYaM5sX3mjkZFYAbzGzsrBT9Rrg6X7e0wwU9HpcCZwdlmc6QVPToJjZXOfccufcVwluljK9v/eIfwYz4kBktHwH+Eyvxz8Ffhd2ZD7G0GrfewjCuhD4lHOu3cxuJWgiWRMuyVtLP7fQc85Vm9mXCJbtNeAR51x/S/a+AqTD8v+M4FvMLoIO4c3AmiGcz81mdmpYhj8C64awDxnntFqmiIgn1KQjIuIJBb6IiCcU+CIinlDgi4h4QoEvIuIJBb6IiCcU+CIinvgfOfzw0v43YW8AAAAASUVORK5CYII=\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "g = hp.File(\"fir.hdf5\",\"r\")\n",
        "xdata = np.array(g[\"BunchData_0\"][\"time\"])*ring.T0\n",
        "ydata = np.array(g[\"BunchData_0\"][\"cs_invariant\"][0,:])\n",
        "g.close()"
      ],
      "metadata": {
        "id": "5XmgoO6Exaf_"
      },
      "execution_count": 107,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def func(x, a, b):\n",
        "    return a * np.exp(-b * x)"
      ],
      "metadata": {
        "id": "9P7f5xuixagA"
      },
      "execution_count": 108,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "popt, pcov = curve_fit(func, xdata, ydata)\n",
        "print(f\"Fitted damping time is {1/popt[1]/ring.T0*2} turns.\")\n",
        "plt.plot(xdata, ydata)\n",
        "plt.plot(xdata, func(xdata, *popt),\"--\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 324
        },
        "outputId": "96c9dd48-38e9-4ba5-bc6b-32cde34b8fce",
        "id": "2CxlX0mSxagA"
      },
      "execution_count": 109,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Fitted damping time is 7.119675249743109 turns.\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fb71e028370>]"
            ]
          },
          "metadata": {},
          "execution_count": 109
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    }
  ]
}