{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " **Chapter 4: [Spectroscopy](CH4_00-Spectroscopy.ipynb)** \n", "\n", "
\n", "\n", "\n", "\n", "## Fit of Zero-Loss Peak\n", "\n", "[Download](https://raw.githubusercontent.com/gduscher/MSE672-Introduction-to-TEM/main/Spectroscopy/CH4_02-Fit_Zero_Loss.ipynb)\n", "\n", "part of \n", "\n", " **[MSE672: Introduction to Transmission Electron Microscopy](../_MSE672_Intro_TEM.ipynb)**\n", "\n", "**Spring 2024**\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Gerd Duscher Khalid Hattar
Microscopy Facilities Tennessee Ion Beam Materials Laboratory
Materials Science & Engineering Nuclear Engineering
Institute of Advanced Materials & Manufacturing
The University of Tennessee, Knoxville
\n", "\n", "\n", "Background and methods to analysis and quantification of data acquired with transmission electron microscopes.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Content\n", "\n", "The zero-loss peak in an EELS spectrum gives us two important infomations:\n", " * the origin of the energy-scale\n", " * the zero-loss peak is the resolution function of our spectrum\n", " \n", "Often we need to subtract or know this resolution function very accurately for a precise analysis of EELS spectra.\n", "\n", "The area under the peak gives us the number of electron that are not inelatically scattered, and in relation to the total count a measure for the thickness of the sample.\n", "\n", "### Energy Resolution and Zero-Loss Peak\n", "\n", "The first peak in the Electron Energy Loss Spectrum (EELS) is the so called ``Zero-Loss`` peak.\n", "This zero-loss peak is formed by all the electrons that are\n", "- not scattered, \n", "- elastically scattered, and\n", "- quasi--elastically scattered.\n", "\n", "\n", "**We can use it as a measure of the energy resolution of the system.**\n", "\n", "This is called a response function in information theory.\n", "\n", "\n", "The full width at half maximum (FWHM) of the ``Zero-Loss peak`` is what we usually declare as energy resolution in an EELS spectrum.\n", "\n", "The energy resolution has three sources:\n", "- the energy spread of the electrons before they reach the specimen ($\\Delta E_0$),\n", "- the energy spread that is added by quasi-elastic interactions with the specimen($\\Delta E_{ph}$),\n", "- the spectrometer resolution ($\\Delta E_{S_0}$),\n", "- the energy dispersion ($s/D$).\n", "\n", "These components usually treated as independent and summed up as squares of their values.\n", "The measured resolution $\\Delta$E is given by:\n", "\n", "\\begin{equation} \\Large \n", "\\Delta{\\rm E}^2 \\approx \\Delta E_0^2 + \\Delta E_{S_0}^2 + (s/D)^2\n", "\\end{equation}\n", " \n", "Please note that the quasi-elastic interactions are not added here and, therefore, I assume to go through the vacuum only.\n", "\n", "**Contribution of Electron Source**\n", " - The energy spread before the sample $\\Delta$E$_0$ is the energy spread of the electron source broadened by the Boersch effect. \n", "- The energy spread of the source is a directly proportional to the temperature due to the Fermi--Dirac distribution. \n", "- The Boersch effect is an additional broadening caused by the Coulomb interaction of the electrons, and is therefore more pronounced in higher density electron beams.\n", "- Monochromators will select a part of the original energy spread and thus increase energy resolution.\n", "**Contribution of Spectrometer**\n", "- The spectrometer resolution $\\Delta$E$_{S0}$ is due to the aberration of the electron optics.\n", "- This aberration is worse for larger collection angles.\n", "- Aberration correctors will improve the spectrometer resolution.\n", "\n", "**Contribution of Detector**\n", "\n", "The spatial resolution of the electron detector $s$ (equivalent to the width of the slid of a serial spectrometer) and the spectrometer dispersion $D$ are the final contributions to the total energy resolution.\n", "**Choices of Dispersion**\n", "- A small energy dispersion will allow a high energy resolution\\\\\n", "- A large energy dispersion enables to samples a large energy window \n", "\n", "\n", "### Load important packages\n", "\n", "#### Check Installed Packages\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "installing pyTEMlib\n", "done\n" ] } ], "source": [ "import sys\n", "import importlib.metadata\n", "def test_package(package_name):\n", " \"\"\"Test if package exists and returns version or -1\"\"\"\n", " try:\n", " version = importlib.metadata.version(package_name)\n", " except importlib.metadata.PackageNotFoundError:\n", " version = '-1'\n", " return version\n", "\n", "if test_package('pyTEMlib') < '0.2024.2.3':\n", " print('installing pyTEMlib')\n", " !{sys.executable} -m pip install --upgrade pyTEMlib -q\n", "\n", "print('done')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import all relevant libraries\n", "\n", "Please note that the EELS_tools package from pyTEMlib is essential." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pyTEM version: 0.2024.02.2\n" ] } ], "source": [ "import sys\n", "%matplotlib ipympl\n", "if 'google.colab' in sys.modules: \n", " from google.colab import output\n", " from google.colab import drive\n", " output.enable_custom_widget_manager()\n", "\n", "import matplotlib.pylab as plt\n", "import numpy as np\n", "\n", " \n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "from scipy.optimize import leastsq ## fitting routine of scipy\n", "\n", "# Import libraries from the book\n", "import pyTEMlib\n", "from pyTEMlib import file_tools # File input/ output library\n", "from pyTEMlib import eels_tools \n", "\n", "# For archiving reasons it is a good idea to print the version numbers out at this point\n", "print('pyTEM version: ',pyTEMlib.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load and plot a spectrum\n", "please see [Introduction to EELS](CH4_01-Introduction.ipynb) for details" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "# ---- Input ------\n", "load_example = True\n", "# -----------------\n", "if not load_example:\n", " if 'google.colab' in sys.modules:\n", " drive.mount(\"/content/drive\")\n", "\n", " fileWidget = file_tools.FileWidget()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e98d94243f6d4f7a9f6f1d7f0e350a12", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHu0lEQVR4nO3dd3xUVf7/8fdNmwQSAoHQA4LSIVTRoCILCAIi6oouFqooGlHEigUWRbO41p8FBSlfBQQsiAqCKBAQZGmyNBdBQ1FApJdASDLn90eYIZMJZKjDnft6Ph55MHPunTufmZsHvDnnnnMtY4wRAAAAHCMs2AUAAADgwiIAAgAAOAwBEAAAwGEIgAAAAA5DAAQAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAAgAAOAwBEAAAwGEIgAAAAA5DAAQAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAAgAAOAwBEAAAwGEIgAAAAA5DAAQAAHAYAiAAAIDDEAABAAAchgAIAADgMARAwObGjRsny7JO+jNv3jxJ0iWXXHLSfVq1auV3vGXLlp3yfbdu3aoHHnhANWvWVExMjBISEtSgQQP17dtXW7du9dl31qxZuuqqqxQTE6P4+Hh17txZa9euLfS43333nVJSUlSsWDGVKVNGPXv21M6dO8/qOzoXZs6cqU6dOikxMVEul0tJSUnq0aOH1q1bd8rXNWnSRJZl6ZVXXrlAlZ57l1xyiXr27Hlar1m5cqU6deqkKlWqeH8/UlJSNH78+PNTJIDTEhHsAgCcG2PHjlXt2rX92uvWret9fNVVVxUaREqUKHFa7/X777+rSZMmKlmypB599FHVqlVL+/fv17p16zRlyhT99ttvSkpKkiRNmzZNN998s7p06aLPPvtM+/fv19ChQ3XNNddo6dKluvTSS73HTU9PV4cOHdSpUydNmzZNO3fu1JNPPqk2bdpo2bJlcrlcp1XnufLEE0/o3//+t66//nq9++67KleunH755Re99tpratKkiSZOnKhbbrnF73UrV67UTz/9JEkaPXq0HnvssQtd+jkxderU0/4d2bdvn5KSktStWzdVqlRJhw8f1oQJE3T33Xdr06ZNevbZZ89TtQACYgDY2tixY40ks3Tp0lPuV7VqVdOpU6dzcrzBgwcbSea3334rdHtubq73ca1atUxycrJxu93etk2bNpmoqChzxx13+Lzu8ssvN3Xr1jXZ2dnetoULFxpJ5t133y2y9vNh4sSJRpK5//77/bYdOnTING3a1BQrVsz8+uuvfttTU1ONJNOpUycjySxcuPBClHxRu+KKK0xSUlKwywAcjyFgAKdt9+7dCgsLU9myZQvdHhYW5t1v/fr16tChgyzL8m6vWrWq6tevry+++EK5ubmSpD/++ENLly7V3XffrYiIE4MTLVq0UM2aNTV16lRvm2eYes6cOerbt69Kly6tEiVKqHv37jp8+LB27Nih2267TSVLllSFChX02GOPKTs72/v6efPm+QyPe2zatEmWZWncuHHethdffFGlSpUqtOe0ePHieuutt5SZmanXX3/dZ9vRo0c1ceJENW3a1LttzJgxhX5fY8aMUcOGDRUdHa2EhATdfPPN+vnnn3326dmzp2JjY7Vx40Z17NhRsbGxSkpK0qOPPqqsrCyffYcOHaorrrhCCQkJKlGihJo0aaLRo0fLGOPd54cfflBkZKRfr6Tnux09erS3reAQsNvt1rBhw1SrVi3FxMSoZMmSSk5O1ptvvlno58uvTJkyPucXQHAQAIEQkZubq5ycHJ8fT7jyMMb47ZOTk+MTDAKRkpIit9utW265RbNmzdKBAwcK3e/YsWOSVOjQrcvlUmZmpn799VdJ0po1ayRJycnJfvsmJyd7t+d3zz33KD4+XpMmTdKzzz6riRMnqm/fvurUqZMaNmyoTz/9VD169NCrr76qt95667Q+oyRt375da9euVbt27VSsWLFC90lJSVHZsmU1e/Zsn/bPP/9ce/fuVe/evVWjRg1dffXVmjx5sg4dOuSzX1pamvr06aN69erp888/15tvvqlVq1YpJSVFGzZs8Nk3OztbN954o9q0aaNp06apd+/eev311zV8+HCf/TZt2qT77rtPU6ZM0eeff65bbrlF/fv31wsvvODd5+qrr9awYcP06quv6ssvv5QkrV27VqmpqbrrrrvUp0+fk34vL7/8sv75z3+qW7dumj59uiZPnqw+ffpo3759fvu63W7l5OTor7/+0rvvvqtZs2bpySefPOmxAVwgQe6BBHCWPEO2hf2Eh4d796tatepJ93vhhRf8jneqIWC3223uu+8+ExYWZiQZy7JMnTp1zCOPPGIyMjK8++Xm5pqEhATTpk0bn9fv3bvXxMXFGUlm0aJFxhhjJkyYYCSZH3/80e/97r33XhMVFeVXY//+/X32u+mmm4wk89prr/m0N2rUyDRp0sT7fO7cuUaSmTt3rs9+GRkZRpIZO3asMcaYxYsXG0nmqaeeOul3YUzesGZMTIxPW+vWrU10dLTZu3evT82jR4/2+R5iYmJMx44dfV67ZcsW43K5fIbIe/ToYSSZKVOm+OzbsWNHU6tWrZPWlpuba7Kzs83zzz9vSpcu7TMU73a7TceOHU3JkiXNmjVrTN26dU3t2rXNoUOHfI5RtWpV06NHD+/zG264wTRq1OiU34nHfffd5/09i4qKCtpQPgBf9AACIeLDDz/U0qVLfX7+85//+Oxz9dVX++2zdOnSU/b2FMayLL333nv67bff9O6776pXr17Kzs7W66+/rnr16ik9PV1S3lBwamqqvv/+e73wwgvauXOnNm7cqLvuukuZmZnefQoe+2TvWdANN9zg87xOnTqSpE6dOvm1b968+bQ+4+kwxvjUl5GRoblz5+qWW25RyZIlJUldu3ZVXFyczzDwjz/+qCNHjvjNsE1KSlLr1q31/fff+7RblqXOnTv7tCUnJ/t9tjlz5qht27aKj49XeHi4IiMjNXjwYO3evdtnRrVlWfrwww8VFxenZs2aKSMjQ1OmTFHx4sVP+XmbN2+u//73v3rggQdO2QMsSU8//bSWLl2q6dOnq3fv3nrwwQdtPSMaCBVciAGEiDp16qhZs2an3Cc+Pr7IfU5H1apVdf/993ufT5kyRd26ddPjjz+uJUuWSJIGDx6sQ4cOadiwYRo8eLCkvIDWq1cvffDBB6pUqZIkqXTp0pLyrhssaM+ePUpISPBrL9gWFRV10vajR4+e9uerUqWKpLxAdyqbN2/2znqW8q7pM8bo1ltv9RkWvfHGGzVhwgT973//U+3atb2ftUKFCn7HrFixot+wcrFixRQdHe3T5nK5fD7bkiVL1K5dO7Vq1UqjRo1S5cqVFRUVpS+++EIvvviijhw54vP60qVL68Ybb9Q777yjm2++WQ0aNDjlZ5WkQYMGqXjx4ho/frzee+89hYeHq2XLlho+fLjf71eVKlW832PHjh29r+/Ro4cSExOLfC8A5wc9gADOmdtuu83ver2IiAi99tpr2r17t1atWqVt27bp66+/1pYtW1StWjVVrlxZklS/fn1J0urVq/2Ou3r1au/2c8ETogpOnti1a5fP8woVKqhevXr69ttvvT2WBf3444/6888/dd1110nKu+bNM4nklltuUalSpbw/EyZMkHRiMogn9G7fvt3vuNu2bVOZMmVO+7NNmjRJkZGR+vrrr3XbbbepRYsWpwz9s2fP1ogRI9S8eXNNnTpVn332WZHvERERoYEDB2rFihXas2ePPv74Y23dulXt27c/6ffk0bx5c+Xk5Oi333477c8G4NwhAAI4bYUFFkk6dOiQtm7dqooVK/pti42NVYMGDVShQgWtWLFC33//vR5++GHv9kqVKql58+YaP368z+SVxYsXa/369YWus3emLrnkEknSqlWrfNo9kyHye+aZZ7R3795C1/A7fPiwHnroIRUrVkyPPPKIpLxFr3///XelpqZq7ty5fj/16tXThx9+qJycHKWkpCgmJsZvceTff/9dc+bMUZs2bU77s1mWpYiICIWHh3vbjhw5oo8++shv3+3bt+uuu+7Stddeq0WLFunGG29Unz59iuzxzK9kyZK69dZblZqaqj179mjTpk2n3H/u3LkKCwtT9erVA34PAOceQ8BAiFizZo1ycnL82i+99FLvUNu+ffu0ePFiv31cLpcaN27s0zZnzpxC/zHv2LGjXnzxRS1cuFC33367GjVqpJiYGGVkZOjtt9/W7t279e9//9u7/7x587R06VIlJyfLGKMlS5Zo+PDhuv766/Xggw/6HHv48OG67rrr1LVrVz3wwAPauXOnnnrqKdWvX1+9evU6k6+lUOXLl1fbtm2VlpamUqVKqWrVqvr+++/1+eef++3brVs3rVixQq+88oo2bdqk3r17q1y5clq/fr1ef/11/frrr5o4caI30IwePVoRERF6+umnCw3C9913nx566CFNnz5dXbp00XPPPaenn35a3bt3V7du3bR7924NHTpU0dHRGjJkyGl/tk6dOum1117THXfcoXvvvVe7d+/WK6+84jcTOzc3V926dZNlWZo4caLCw8M1btw4NWrUSLfffrt++OEH75B6QZ07d1b9+vXVrFkzJSYmavPmzXrjjTdUtWpV1ahRQ5J07733qkSJEmrevLnKlSunXbt26ZNPPtHkyZP1+OOPM/wLBFuQJ6EAOEunmgUsyYwaNcoYc+pZwJUqVQr4eBkZGWbx4sUmNTXVNGzY0CQkJJjw8HCTmJho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79+vEiVKXKgyg+JQVo7qD5nlff5pvxQ1uyQhiBUBAHBmDhw4oPj4eEf8+30yjh4CLsgY4xPwCnK5XHK5XBewoouH30LQQaoDAACcPccGwKefflodOnRQUlKSDh48qEmTJmnevHmaOXNmsEu7KBUMfPQbAwBgX44NgH/++afuvvtubd++XfHx8UpOTtbMmTN13XXXBbu0i5LfJBASIAAAtuXYADh69Ohgl2AvzAIGACBkOHoWMALHLGAAAEIHARAB8V8HkAQIAIBd2W4IOCsrS0uWLNGmTZuUmZmpxMRENW7cWNWqVQt2aSGNSSAAAIQO2wTARYsW6a233tIXX3yhY8eOqWTJkoqJidGePXuUlZWl6tWr695771W/fv0UFxcX7HJDjt8yMARAAABsyxZDwF26dNGtt96qSpUqadasWTp48KB2796t33//XZmZmdqwYYOeffZZff/996pZs6Zmz54d7JJDjl8PIEPAAADYli16ANu1a6dPPvlEUVFRhW6vXr26qlevrh49emjt2rXatm3bBa4w9LnpAQQAIGTYIgCmpqYGvG+9evVUr16981iNQ7EMDAAAIcMWQ8D5bd26Vb///rv3+ZIlSzRgwACNHDkyiFWFPv9JIERAAADsynYB8I477tDcuXMlSTt27NB1112nJUuW6Omnn9bzzz8f5OpCl/8yMAAAwK5sFwDXrFmj5s2bS5KmTJmi+vXra9GiRZo4caLGjRsX3OJCmP9C0ERAAADsynYBMDs7Wy6XS5L03Xff6cYbb5Qk1a5dW9u3bw9maSHN/17AwakDAACcPdsFwHr16um9997TggULNHv2bF1//fWSpG3btql06dJBri50sRA0AAChw3YBcPjw4Xr//ffVqlUrdevWTQ0bNpQkffnll96hYZx7fgtBB6kOAABw9myxDEx+rVq10q5du3TgwAGVKlXK237vvfeqePHiQawstPkPARMBAQCwK9v1ALZu3VoHDx70CX+SlJCQoNtvvz1IVYU+ZgEDABA6bBcA582bp2PHjvm1Hz16VAsWLAhCRc7ALGAAAEKHbYaAV61a5X28bt067dixw/s8NzdXM2fOVKVKlYJRmiMwCxgAgNBhmwDYqFEjWZYly7LUunVrv+0xMTF66623glCZM/jNAg5KFQAA4FywTQDMyMiQMUbVq1fXkiVLlJiY6N0WFRWlsmXL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6aeferfPmzdPlmXp+++/V7NmzVSsWDG1aNFC69ev9znOV199paZNmyo6OlrVq1fX0KFDlZOT491uWZbee+89denSRcWLF9ewYcMkScOGDVPZsmUVFxene+65R0899ZQaNWokSZo/f74iIyO1Y8cOn/d69NFH1bJly4A/4969e9W9e3eVKlVKxYoVU4cOHbRhwwbv9s2bN6tz584qVaqUihcvrnr16mnGjBne1955551KTExUTEyMatSoobFjx570vb755htFREQoJSXFp33dunXq2LGjYmNjVa5cOd19993atWuXJOmGG25Q2bJlNW7cOJ/XZGZmavLkyerTp4+3rX379tq9e7fS09MD/vwAQg8BEMBZefbZZzV27FiNGDFCa9eu1SOPPKK77rrLL2A888wzevXVV7Vs2TJFRESod+/e3m2zZs3SXXfdpYceekjr1q3T+++/r3HjxunFF1/0OcaQIUPUpUsXrV69Wr1799aECRP04osvavjw4Vq+fLmqVKmiESNGePdv2bKlqlevro8++sjblpOTo/Hjx6tXr14Bf8aePXtq2bJl+vLLL/Xjjz/KGKOOHTt6eyFTU1OVlZWl+fPna/Xq1Ro+fLhiY2MlSc8995zWrVunb775Rj///LNGjBihMmXKnPS95s+fr2bNmvm0bd++Xddee60aNWqkZcuWaebMmfrzzz912223SZIiIiLUvXt3jRs3Tvlv7/7JJ5/o2LFjuvPOO71tUVFRatiwoRYsWBDw5wcQggwAnKFDhw6Z6Ohos2jRIp/2Pn36mG7duhljjJk7d66RZL777jvv9unTpxtJ5siRI8YYY6655hrz0ksv+Rzjo48+MhUqVPA+l2QGDBjgs88VV1xhUlNTfdquuuoq07BhQ+/z4cOHmzp16niff/HFFyY2NtYcOnTopJ/r2muvNQ8//LAxxphffvnFSDILFy70bt+1a5eJiYkxU6ZMMcYY06BBA/PPf/6z0GN17tzZ9OrV66TvVVCXLl1M7969fdqee+45065dO5+2rVu3Gklm/fr1xhhjfv75ZyPJzJkzx7tPy5Ytvechv5tvvtn07Nkz4JoAhB56AAGcsXXr1uno0aO67rrrFBsb6/358MMP9euvv/rsm5yc7H1coUIFSdLOnTslScuXL9fzzz/vc4y+fftq+/btyszM9L6uYM/Y+vXr1bx5c5+2gs979uypjRs3avHixZLyrom77bbbVLx4cS1YsMDnPSdMmOD3GX/++WdFREToiiuu8LaVLl1atWrV0s8//yxJeuihhzRs2DBdddVVGjJkiFatWuXd9/7779ekSZPUqFEjPfHEE1q0aNEpv9MjR44oOjrap2358uWaO3euT621a9eWJO/3XLt2bbVo0UJjxozxti9YsMCnp9UjJibG53sF4DwRwS4AgH253W5J0vTp01WpUiWfbS6Xy+d5ZGSk97FlWT6vd7vdGjp0qG655Ra/98gfhooXL+633XMsD5NvCFSSypYtq86dO2vs2LGqXr26ZsyYoXnz5knKC5QrV6707luuXDm/4xc8Xv52z3vfc889at++vaZPn65vv/1WaWlpevXVV9W/f3916NBBmzdv1vTp0/Xdd9+pTZs2Sk1N1SuvvFLoccuUKaO9e/f6tLndbnXu3FnDhw/3298TpqW8ySAPPvig3nnnHY0dO1ZVq1ZVmzZt/F6zZ88eXXrppYW+PwBnoAcQwBmrW7euXC6XtmzZossuu8znJykpKeDjNGnSROvXr/c7xmWXXaawsJP/NVWrVi0tWbLEp23ZsmV++91zzz2aNGmS3n//fV166aW66qqrJOX1hOV/r7i4uEI/Y05Ojv7zn/9423bv3q1ffvlFderU8bYlJSWpX79++vzzz/Xoo49q1KhR3m2JiYnq2bOnxo8frzfeeEMjR4486Wdq3Lix1q1b5/f9rF27Vpdcconf95M/FN92220KDw/XxIkT9X//93/q1auXX0CWpDVr1qhx48YnrQFA6KMHEMAZi4uL02OPPaZHHnlEbrdbV199tQ4cOKBFixYpNjZWPXr0COg4gwcP1g033KCkpCR17dpVYWFhWrVqlVavXu2d7VuY/v37q2/fvmrWrJlatGihyZMna9WqVapevbrPfu3bt1d8fLyGDRum559//rQ+Y40aNdSlSxf17dtX77//vuLi4vTUU0+pUqVK6tKliyRpwIAB6tChg2rWrKm9e/dqzpw53nA4ePBgNW3aVPXq1VNWVpa+/vprn+BYUPv27TVo0CDt3btXpUqVkpQ3yWTUqFHq1q2bHn/8cZUpU0YbN27UpEmTNGrUKIWHh0uSYmNjdfvtt+vpp5/W/v371bNnT7/jb9q0SX/88cdJ1w0E4Az0AAI4Ky+88IIGDx6stLQ01alTR+3bt9dXX32latWqBXyM9u3b6+uvv9bs2bN1+eWX68orr9Rrr72mqlWrnvJ1d955pwYNGqTHHntMTZo0UUZGhnr27Ol3DV1YWJh69uyp3Nxcde/e/bQ/49ixY9W0aVPdcMMNSklJkTFGM2bM8A5r5+bmKjU1VXXq1NH111+vWrVq6d1335WUN+t20KBBSk5OVsuWLRUeHq5Jkyad9L0aNGigZs2aacqUKd62ihUrauHChcrNzVX79u1Vv359Pfzww4qPj/frIe3Tp4/27t2rtm3bqkqVKn7H//jjj9WuXbsiv1sAoc0yJ7vABQBs6LrrrlP58uV9ln6RpL59++rPP//Ul19+GaTKAjdjxgw99thjWrNmzSmHwE9XVlaWatSooY8//tg7DA7AmRgCBmBbmZmZeu+999S+fXuFh4fr448/1nfffafZs2d799m/f7+WLl2qCRMmaNq0aUGsNnAdO3bUhg0b9Mcff5zWtZRF2bx5s5555hnCHwB6AAHY15EjR9S5c2etWLFCWVlZqlWrlp599lmf2cStWrXSkiVLdN9993EPXAA4jgAIAADgMEwCAQAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcJj/D6DhvpGQ1qi9AAAAAElFTkSuQmCC", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ---- Input ------\n", "load_example = True\n", "file_name = 'AL-DFoffset0.00.dm3'\n", "# -----------------\n", "if load_example:\n", " if 'google.colab' in sys.modules:\n", " if not os.path.exists('./'+file_name):\n", " !wget https://github.com/gduscher/MSE672-Introduction-to-TEM/raw/main/example_data/AL-DFoffset0.00.dm3\n", " else:\n", " datasets = file_tools.open_file('../example_data/'+file_name)\n", " eels_dataset = datasets['Channel_000']\n", " \n", "else:\n", " datasets = fileWidget.datasets\n", " eels_dataset = fileWidget.selected_dataset\n", " \n", "if eels_dataset.data_type.name != 'SPECTRUM':\n", " print('We need an EELS spectrum for this notebook')\n", "view = eels_dataset.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Important Parameters in an EELS spectrum" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "experiment :\n", "\tsingle_exposure_time : 0.1\n", "\texposure_time : 10.0\n", "\tnumber_of_frames : 100\n", "\tcollection_angle : 100.0\n", "\tconvergence_angle : 0.0\n", "\tmicroscope : Libra 200 MC\n", "\tacceleration_voltage : 199990.28125\n" ] } ], "source": [ "eels_dataset.view_metadata()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple Zero-Loss Integration\n", "\n", "The inelastic mean free path is hard to determine and depends on the effective collection angle (convolution of collection and convergence angle) and the acceleration voltage. None of these parameters are likely to be tabulated for your experimental set-up.\n", "\n", "However, the relative thickness is a valuable parameter to judge your sample location and the validity of your spectrum.\n", "\n", "\n", "In a good sample 70 to 90% of the electrons do not interact. \n", "The relative thickness $t$ in terms of the inelatic mean free path (IMFP) is given by:\n", "$$ t = \\ln\\left(\\frac{I_{total}}{I_{ZL}} \\right) * IMFP$$\n", "\n", "with:\n", "\n", "$I_{total}$: total intensity of spectrum\n", "\n", "$I_{ZL}$: intensity of zero-loss peak\n", "\n", "We first estimate the intensity of the zero-loss peak by a summation of the spectrum in a specific energy-loss range.\n" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counts in zero-loss 4123429588 , total counts 4875544752\n", "15.4 % of spectrum interact with specimen\n", "Sample thickness in Multiple of the \n", "thickness [IMFP]: 0.168\n" ] } ], "source": [ "spectrum = np.array(eels_dataset)\n", "energy_scale = eels_dataset.energy_loss.values\n", "offset = eels_dataset.energy_loss[0]\n", "dispersion = ft.get_slope(eels_dataset.energy_loss)\n", "start = int((-2-offset)/dispersion)\n", "end = int((4-offset)/dispersion)\n", "\n", "sumZL = sum(spectrum[start:end])\n", "sumSpec = sum(spectrum)\n", "\n", "print(f\"Counts in zero-loss {sumZL:.0f} , total counts {sumSpec:.0f}\")\n", "print(f\"{(sumSpec-sumZL)/sumSpec*100:.1f} % of spectrum interact with specimen\") \n", "\n", "tmfp = np.log(sumSpec/sumZL)\n", "print ('Sample thickness in Multiple of the ')\n", "print (f'thickness [IMFP]: {tmfp:.3f}')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fitting the Zero-Loss with a Gausian\n", "While a Gaussian does not describe the shape of the zero-loss peak well, we will use it to determine the zero-loss peak position.\n", "\n", "\n", "The energy resolution is best measured from the zero-loss without sample (through vacuum), because the quasi elastic scattering will result in a small but noticeable broadening of the zero-loss.\n", "\n", "\n", "The maximum of the fitted Gaussian is then the origin of the energy scale." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "###\n", "# This function is also in the eels_tools of pyTEMlib\n", "\n", "def fix_energy_scale( spec, energy):\n", " \n", " startx = np.argmax(spec)\n", " end = startx+3\n", " start = startx-3\n", " for i in range(10):\n", " if spec[startx-i]<0.3*spec[startx]:\n", " start = startx-i\n", " if spec[startx+i]<0.3*spec[startx]:\n", " end = startx+i\n", " if end-start<3:\n", " end = startx+2\n", " start = startx-2\n", " \n", " x = np.array(energy[start:end])\n", " y = np.array(spec[start:end]).copy()\n", " \n", " y[np.nonzero(y<=0)] = 1e-12\n", "\n", "\n", " def gauss(x, p): # p[0]==mean, p[1]= area p[2]==fwhm, \n", " return p[1] * np.exp(-(x- p[0])**2/(2.0*( p[2]/2.3548)**2))\n", "\n", " def errfunc(p, x, y):\n", " err = (gauss(x, p)-y )/np.sqrt(y) # Distance to the target function\n", " return err\n", " \n", " p0 = [energy[startx],1000.0,1] # Inital guess is a normal distribution\n", " p1, success = leastsq(errfunc, p0[:], args=(x, y))\n", "\n", " fit_mu, area, FWHM = p1\n", " \n", " return FWHM, fit_mu" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "FWHM: -0.18 eV , with shift of -0.13 eV\n" ] } ], "source": [ "FWHM, fit_mu = fix_energy_scale(spectrum, energy_scale)\n", "print(f'FWHM: {FWHM:.2f} eV , with shift of {fit_mu:.2f} eV')" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fit of Zero Loss from channel 131 to 229\n", "Fit of Zero Loss from -0.9727127428128597 eV to 0.9996566188559655 eV\n", "Zero-loss position was -0.00 eV\n", "Corrected energy axis\n", "Width (FWHM) is 0.20 eV\n", "Probability is 79.14 %\n", "Thickness is 0.234 * IMFP\n", "Goodness of Fit: 0.044885756560665124 %\n", "Sum of Gaussian: 3858665453.3182015\n", "Sum of Spectrum: 4875544600.0\n", "thickness [IMFP]: 0.23391041989495825\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "23a6bec3d4b342e9b514de18574b7aa2", "version_major": 2, "version_minor": 0 }, "image/png": "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A+B9CAsLAwDEx8f71F+g5ORkREVFISEhAUFBQZ4u54Hh++b79gV833zfviApKQlly5Z1/hz3RQyA90GhsE2hDA4O9ql/OA5BQUF83z6E79u38H37Fl99346f477Id985ERERkY9iACQiIiLyMQyA90Gr1WLChAnQarWeLuWB4vvm+/YFfN98376A79u33ndWkvDlNdBEREREPogdQCIiIiIfwwBIRERE5GMYAImIiIh8DAMgERERkY9hACxkBoMBdevWhSRJOHDggKfLKXJPPvkkypYtC51Oh8jISPTq1QuXLl3ydFlF6ty5cxgwYABiYmKg1+tRoUIFTJgwAUaj0dOlFblp06ahSZMm8PPzQ0hIiKfLKTJz585FTEwMdDod6tevj7/++svTJRW5rVu3onPnzihVqhQkScLKlSs9XdIDERcXh4YNGyIwMBDh4eHo2rUrTp486emyity8efNQu3Zt5wWgGzdujLVr13q6rAcqLi4OkiRh+PDhni7FIxgAC9mbb76JUqVKebqMB6ZVq1ZYvnw5Tp48iZ9++glnzpzBU0895emyitSJEydgtVrx+eef4+jRo5g1axY+++wzjBs3ztOlFTmj0Yinn34ar776qqdLKTLLli3D8OHD8dZbb2H//v1o3rw5OnTogPj4eE+XVqTS0tJQp04dfPrpp54u5YHasmULBg0ahJ07d2L9+vUwm81o164d0tLSPF1akSpTpgzeffdd7NmzB3v27MH//vc/dOnSBUePHvV0aQ/E7t278cUXX6B27dqeLsVzBBWa3377TVStWlUcPXpUABD79+/3dEkP3C+//CIkSRJGo9HTpTxQM2fOFDExMZ4u44FZsGCBCA4O9nQZReLRRx8VAwcOdNlWtWpVMWbMGA9V9OABECtWrPB0GR6RmJgoAIgtW7Z4upQHLjQ0VHz11VeeLqPIpaSkiEqVKon169eL2NhYMWzYME+X5BHsABaSq1ev4qWXXsKSJUvg5+fn6XI84ubNm/j222/RpEkTqNVqT5fzQCUlJfn0TcW9hdFoxN69e9GuXTuX7e3atcP27ds9VBU9SElJSQDgU/+eLRYLli5dirS0NDRu3NjT5RS5QYMG4YknnkCbNm08XYpHMQAWAiEE+vbti4EDB6JBgwaeLueBGz16NPz9/VGsWDHEx8fjl19+8XRJD9SZM2fwySefYODA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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# --- Input -----\n", "Gap = 1\n", "# ---------------\n", "## energy range of fit\n", "startx = int(abs(offset/dispersion ))+1 ## zero eV\n", "widthx = int(abs(Gap /dispersion )) ## fit width\n", "## We need 6 parameter to fit the resolution function\n", "## and so at least 6 channels for the fit\n", "if widthx*2 < 6:\n", " Gap = 3*dispersion\n", " widthx = 3\n", "\n", "endx = int(startx+widthx)\n", "startx = int(startx-widthx)\n", "\n", "print('Fit of Zero Loss from channel ', startx, ' to ',endx)\n", "print('Fit of Zero Loss from ', startx*dispersion+offset, 'eV to ',endx*dispersion+offset, 'eV')\n", "\n", "# energy scale and spectrum in the fitting window\n", "x = energy_scale[startx:endx]\n", "y = np.array(spectrum[startx:endx]).flatten()\n", "\n", "\n", "def gauss(x, p): \n", " \"\"\"\n", " Gaussian distribution\n", " Input: \n", " p: list or array p[0]=position, p[1]= area p[2]==fwhm, \n", " x: energy axis \n", " \"\"\"\n", " p[2] = abs(p[2])\n", " return p[1] * np.exp(-(x- p[0])**2/(2.0*( p[2]/2.3548)**2))\n", "\n", "\n", "# Fit a Gaussian\n", "y[np.nonzero(y<=0)] = 1e-12\n", "p0 = [0,1000.0,1] # Inital guess is a normal distribution\n", "errfunc = lambda p, x, y: (gauss(x, p) - y)/np.sqrt(y) # Distance to the target function\n", "p1, success = leastsq(errfunc, p0[:], args=(x, y)) # The Fit\n", "\n", "print(f'Zero-loss position was {p1[0]:.2f} eV')\n", "energy_scale=energy_scale-p1[0]\n", "print('Corrected energy axis')\n", "p1[0]=0.0\n", "Gauss = gauss(energy_scale,p1)\n", "\n", "\n", "print(f'Width (FWHM) is {p1[2]:.2f} eV')\n", "print(f'Probability is {sum(Gauss)/sumSpec*1e2:.2f} %')\n", "tmfp = np.log(sumSpec/sum(Gauss))\n", "print(f'Thickness is {tmfp:.3f} * IMFP')\n", "\n", "err = (y - gauss(x, p1))/np.sqrt(y)\n", "print ('Goodness of Fit: ' ,sum(err**2)/len(y)/sumSpec*1e2, '%')\n", "\n", "\n", "abs(offset/dispersion )\n", "start =int((-2-offset)/dispersion)\n", "end = int((8-offset)/dispersion)\n", "\n", "plt.figure()\n", "\n", "plt.plot(energy_scale, spectrum/sumSpec*1e2,label='spectrum')\n", "plt.plot(energy_scale, Gauss/sumSpec*1e2, label='Gaussian')\n", "plt.plot(energy_scale, (spectrum-Gauss)/sumSpec*1e2, label='difference')\n", "plt.legend()\n", "plt.title (' Gauss Fit of Zero-Loss Peak')\n", "plt.xlim(-4,4)\n", "Izl = Gauss.sum()\n", "Itotal = spectrum.sum()\n", "tmfp = np.log(Itotal/Izl)\n", "print('Sum of Gaussian: ', Izl)\n", "print('Sum of Spectrum: ', Itotal)\n", "print ('thickness [IMFP]: ', tmfp)\n", "plt.ylabel('scattering probability [%]')\n", "plt.xlabel('energy-loss [eV]');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above figure, we show a zero-loss peak fitted with a Gaussian. \n", "- zoom in so that you can see the zero-Loss only.\n", "- The zero--loss peak is about 8% high and you can read off the FWHM by going left and right where the zero-loss peak reaches 4%. \n", "\n", "- Therefore, the FWHM of this zero-loss peak is about 0.18 eV. This is obviously a high resolution spectrum.\n", "- Also, the shape of the zero-loss is not perfectly symmetric and the tails of the zero-loss peak extend far in both directions. \n", "- The position of the maximum of the zero-loss peak is used for calibrating the energy scale. The maximum indicates zero energy--loss. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fitting the Zero-Loss with a Product of Two Lorentzians\n", "To better describe the full shape we use the product of two Lorentzians.\n", "\n", "Compare the residuals of the Gaussian and Lorentzian fit. \n", "\n", "You will zoom in closely to see the difference between experimental and model zero-loss peak here." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "143 203 60\n", "Energy range for fit of zero-loss: -0.60 to 0.61\n", "Fit of a Product of two Lorentzians\n", "Positions: 0.19179393556480548 0.29499035895436004 Distance: -0.10319642338955456\n", "Width: -0.019130919154262387 0.031005022664635645\n", "Areas: 21687.894523029685 21559.323284602084\n", "Goodness of Fit: 0.0027237%\n" ] } ], "source": [ "#################################################################\n", "## fit Zero Loss peak with ZLfunct =\n", "## = convolution of Gauss with a product of two Lorentzians\n", "################################################################## \n", "width = 30\n", "\n", "\n", "startx = np.argmax(spectrum)\n", "endx = startx+width\n", "startx = startx-width\n", "print (startx, endx, endx-startx)\n", "\n", "\n", "x = np.array(energy_scale[startx:endx])\n", "y = np.array(spectrum[startx:endx])\n", "\n", "print(f\"Energy range for fit of zero-loss: {energy_scale[startx]:.2f} to {energy_scale[endx]:.2f}\")\n", "\n", "#guess = [0.02, 8000000, 0.1, 0.2, 1000,0.2,0.5, 1000,-0.5,-1.3, 1.01,1.0]\n", "guess = [ 0.2, 1000,0.2,0.2, 1000,0.2 ]\n", "\n", "p0 = np.array(guess)\n", "\n", "def ZL(p, y, x):\n", " center1, amplitude1, width1, center2, amplitude2, width2 = p\n", " err = (y - eels_tools.zl_func(x, center1, amplitude1, width1, center2, amplitude2, width2))#/np.sqrt(y)\n", " return err\n", "\n", "pZL, lsq = leastsq(ZL, p0, args=(y, x), maxfev=2000)\n", "print('Fit of a Product of two Lorentzians')\n", "print('Positions: ',pZL[2],pZL[5], 'Distance: ',pZL[2]-pZL[5])\n", "print('Width: ', pZL[0],pZL[3])\n", "print('Areas: ', pZL[1],pZL[4])\n", "center1, amplitude1, width1, center2, amplitude2, width2 = pZL\n", "err = (y - eels_tools.zl_func(x, center1, amplitude1, width1, center2, amplitude2, width2))/np.sqrt(np.abs(y))\n", "print (f'Goodness of Fit: {sum(err**2)/len(y)/sumSpec*1e2:.5}%')\n", "\n", "zLoss = eels_tools.zl_func(energy_scale, center1, amplitude1, width1, center2, amplitude2, width2)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b3a31129f09e4f9b985dec1354f8edb5", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3NklEQVR4nO3deXxTdb7/8fdJ2qYrFYFSCpXFBVAWFVBREBBBQVBxUH/KBYTRK78BR0RnBEUpiFT0Xkd/V5ZBZ0BHWUYFxauiiCw6yggCysiAAy7gIIIItBQoNPn+/mgTmqbLaVnSk/N6ziNDc3KSfJqTmHe/27GMMUYAAABwDU+0CwAAAMDpRQAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYAiFphzpw5sixLa9eujXYp1XLo0CHl5ORoxYoVNbp/Tk6OLMs6uUXZ1L17d1mWFbokJSWpffv2euaZZxQIBE758weP+XfffXdKHn/nzp3KycnRhg0bbO2/YsWKsNej9GXgwIGSJMuylJOTE7rPpk2blJOTc0p+h2XLlqljx45KSUmRZVl64403yt2v7HEs79K9e/eTXt+JCL7vf/7552iXUqk77rgj7HX0+Xxq2bKlJkyYoCNHjpyy5+3evbvatGlzyh4fkKS4aBcAONmhQ4c0ceJESarRl+ydd96pa6+99iRXZV+LFi30yiuvSJJ2796tmTNn6r777tOPP/6oqVOnRq2uk2Hnzp2aOHGimjVrpgsvvND2/aZMmaIePXqEbatXr54k6dNPP1WTJk1C2zdt2qSJEyeqe/fuatas2ckoW5JkjNEtt9yi8847T4sXL1ZKSopatmxZ7r7Tp09XXl5eubfl5uZq8eLFGjBgwEmrzW2SkpL04YcfSpL27dunefPmadKkSdq8ebMWLFgQ5eqAmiMAwhUOHz6sxMTEqLW2VaRJkyZhgeJ0S0pK0mWXXRa63qdPH7Vq1UrPPfecJk+erPj4+Ij7GGN05MgRJSUlnc5ST5tzzz037DUpraLtJ9vOnTv1yy+/aMCAAerZs2el+55//vnlbl+4cKHeeust3Xbbbbr33ntPSl2HDh1ScnLySXksp/B4PBGfke+++05//etf9fTTT6tx48ZRrA6oObqA4Sgff/yxevbsqbS0NCUnJ+vyyy/X22+/HbZPsGvx/fff1/Dhw9WgQQMlJyersLBQkrRgwQJ17txZKSkpSk1N1TXXXKP169eHPcYdd9yh1NRUbd26VX379lVqaqqys7N1//33hx7nu+++U4MGDSRJEydODHUT3XHHHZJUaZdcsMuwvC7gBQsWqHfv3mrUqJGSkpLUunVrjR07VgUFBdWusbri4+PVoUMHHTp0SHv27An9HqNGjdLMmTPVunVr+Xw+vfjii7aPhyStXr1aV1xxhRITE5WVlaVx48bp2LFjEfuV7WINatasWeh1Dfr3v/+t//zP/1R2drYSEhKUlZWlgQMH6qefftKKFSvUqVMnSdKwYcNCr3t5j10dpR9jzpw5uvnmmyVJPXr0CD3HnDlzKn2Mql6znJyc0B8FDz74oCzLqnbr4qZNmzR06FC1bdtWL7zwQsTt1fkMbNy4Ub1791ZaWloojP7yyy/6zW9+o8aNGyshIUEtWrTQww8/XOP3XUUWL16szp07Kzk5WWlpaerVq5c+/fTTsH327NkTeh/4fD41aNBAV1xxhT744IPQPuvXr1e/fv2UkZEhn8+nrKwsXXfddfrhhx9qVFcwEH7//feSpLy8PD3wwANq3ry5EhIS1LhxY40ePTriMztt2jRdeeWVysjIUEpKitq2basnn3yy3M9CWYsWLVJycrLuvPNOFRUV1ahuoDRaAOEYK1euVK9evdSuXTv96U9/ks/n0/Tp09W/f3/NmzdPt956a9j+w4cP13XXXae//OUvKigoUHx8vKZMmaLx48dr2LBhGj9+vI4ePaqnnnpKXbt21WeffRbWmnLs2DFdf/31+vWvf637779fq1at0mOPPab09HQ9+uijatSokZYsWaJrr71Wv/71r3XnnXdKUigUlv2iOnz4sAYPHiy/368zzzyzwt/zX//6l/r27avRo0crJSVFmzdv1tSpU/XZZ5+FuqLs1lgT27ZtU1xcnOrWrRva9sYbb+ijjz7So48+qszMTGVkZNg+Hps2bVLPnj3VrFkzzZkzR8nJyZo+fbrmzp1bo/qk4vDXqVMnHTt2TA899JDatWunvXv36r333tO+fft08cUXa/bs2aHjfN1110mSrdbWQCAQ8QUbFxf5n8rrrrtOU6ZM0UMPPaRp06bp4osvliSdffbZFT62ndfszjvvVPv27XXTTTfpnnvu0e233y6fz2f7tTlw4IAGDBiguLg4LVy4MKLFrjqfgaNHj+r666/X3XffrbFjx6qoqEhHjhxRjx49tG3bNk2cOFHt2rXTRx99pNzcXG3YsKHcPwBqYu7cuRo0aJB69+6tefPmqbCwUE8++aS6d++uZcuWqUuXLpKkwYMHa926dXr88cd13nnnaf/+/Vq3bp327t0rSSooKFCvXr3UvHlzTZs2TQ0bNtSuXbu0fPly5efn16i2rVu3Sir+rB86dEjdunXTDz/8EHovfvXVV3r00Ue1ceNGffDBB6E/8rZt26bbb789FBS/+OILPf7449q8ebP+/Oc/V/h8f/jDH/S73/1OOTk5Gj9+fI1qBiIYoBaYPXu2kWTWrFlT4T6XXXaZycjIMPn5+aFtRUVFpk2bNqZJkyYmEAiEPdaQIUPC7r99+3YTFxdn7rnnnrDt+fn5JjMz09xyyy2hbUOHDjWSzF//+tewffv27WtatmwZur5nzx4jyUyYMKHS36+oqMjccMMNJjU11Xz++eeh7RMmTDCVfQwDgYA5duyYWblypZFkvvjii2rXWJFu3bqZCy64wBw7dswcO3bM7Ny504wdO9ZIMjfffHNoP0kmPT3d/PLLL2H3t3s8br31VpOUlGR27doVtl+rVq2MJPPtt9+GPVd5r2XTpk3N0KFDQ9eHDx9u4uPjzaZNmyr8/dasWWMkmdmzZ1f5WhhjzPLly42kci//+te/yq3v1VdfNZLM8uXLbT2H3dfs22+/NZLMU089ZetxgwKBgOnfv7/xeDzm7bffjri9Jp+BP//5z2H7zpw5s9z33dSpU40k8/7771dZZ/B9v2fPnnJv9/v9Jisry7Rt29b4/f6wOjMyMszll18e2paammpGjx5d4XOtXbvWSDJvvPFGlXWVNXToUJOSkhL6jOzZs8c8++yzxrIs06lTJ2OMMbm5ucbj8UT8t+u1114zksw777xT4e947Ngx89JLLxmv1xv2+Qp+Nv1+vxk1apRJSEgwL7/8crXrBypDFzAcoaCgQH//+981cOBApaamhrZ7vV4NHjxYP/zwg7Zs2RJ2n1/96ldh19977z0VFRVpyJAhKioqCl0SExPVrVu3iJm8lmWpf//+YdvatWsX6vapjlGjRuntt9/Wq6++Gmopqsg333yj22+/XZmZmfJ6vYqPj1e3bt0kSf/85z9Pao1fffWV4uPjFR8fr6ysLP33f/+3Bg0apOeffz5sv6uuuiqsRbA6x2P58uXq2bOnGjZsGLZf2Rbb6nj33XfVo0cPtW7dusaPUZGpU6dqzZo1YZfs7OwTftyavIerKycnR2+99ZZycnLUt2/fiNur+xmQIj9HH374oVJSUkIzo4OCXfTLli2TVDxWtPRzVKfbcsuWLdq5c6cGDx4sj+f411Rqaqp+9atfafXq1Tp06JAk6ZJLLtGcOXM0efJkrV69OqI79ZxzzlHdunX14IMPaubMmdq0aZPtOiSFeg/i4+PVoEEDjR49Wn369NGiRYskSf/7v/+rNm3a6MILLwz7Xa+55hpZlhX2mq5fv17XX3+96tWrF/psDxkyRH6/X19//XXY8x45ckQ33nijXnnlFb3//vsaNGhQteoGqkIXMBxh3759MsaoUaNGEbdlZWVJUqjLJ6jsvj/99JMkhcaGlVX6i0aSkpOTlZiYGLbN5/NVe/mHyZMna+bMmfrTn/5U5YzfgwcPqmvXrkpMTNTkyZN13nnnKTk5WTt27NBNN92kw4cPn9Qazz77bM2fP1+WZSkxMVHNmzcvd5B/2deyOsdj7969yszMjNivvG127dmz55RNnmnRooU6dux40h+3Ju/h6li8eLEee+wx9e/fv8Juwpp8BurUqRO2LXg8y45dzcjIUFxcXOh3ePHFFzVs2LCwfYwxtn6X4GNU9FoFAgHt27dPycnJWrBggSZPnqwXXnhBjzzyiFJTUzVgwAA9+eSTyszMVHp6ulauXKnHH39cDz30kPbt26dGjRrprrvu0vjx48ud6FRaUlKSVq1aJan4s9W0adOw1+Snn37S1q1bK3yc4FI327dvV9euXdWyZUs9++yzatasmRITE/XZZ59p5MiREZ/t3bt3a8eOHbr66qt1+eWX23rdgOogAMIR6tatK4/Hox9//DHitp07d0qS6tevH7a97BdU8PbXXntNTZs2PUWVhpszZ44eeeQR5eTkaPjw4VXu/+GHH2rnzp1asWJFqNVPkvbv339K6ktMTLQVdsq+ltU5HvXq1dOuXbsi9itvm8/nK3ciQdlg1KBBgxoP4I+WmryH7dqyZYsGDx6sc845R3/5y18qnO1e3c9AeY9Tr149/f3vf5cxJuz23bt3q6ioKPQc/fv315o1a2ry64SW3anotfJ4PKEW6fr16+uZZ57RM888o+3bt2vx4sUaO3asdu/erSVLlkiS2rZtq/nz58sYoy+//FJz5szRpEmTlJSUpLFjx1Zai8fjqfQzUr9+fSUlJVU4hi/4erzxxhsqKCjQwoULw177itapPOuss/T0009rwIABuummm/Tqq69G/LEHnAi6gOEIKSkpuvTSS7Vw4cKwv5QDgYBefvllNWnSROedd16lj3HNNdcoLi5O27ZtU8eOHcu9VFdwcH7Zv94lacmSJbrrrrs0fPhwTZgwwdbjBb9Qyw76/+Mf/1jt2k6l6hyPHj16aNmyZaHWJ0ny+/3lrqHWrFkzffnll2HbPvzwQx08eDBsW58+fbR8+fJKu0wrOzYnS3We42S8h8uTn5+vAQMGKBAIaNGiRUpPT69w35PxGejZs6cOHjwYsTD1Sy+9FLpdKg5xNf18tWzZUo0bN9bcuXPDWg0LCgr0+uuvh2YGl3XWWWdp1KhR6tWrl9atWxdxu2VZat++vf7whz/ojDPOKHef6urXr5+2bdtW7u/bsWPH0Azu8j7bxpiI4Ral9e7dW++9955WrVqlfv36RcwqBk4ELYCoVT788MNyz6rQt29f5ebmqlevXurRo4ceeOABJSQkaPr06frHP/6hefPmVbnGX7NmzTRp0iQ9/PDD+uabb3Tttdeqbt26+umnn/TZZ58pJSUltKizXWlpaWratKnefPNN9ezZU2eeeabq168vY4xuvvlmtWjRQsOGDdPq1avD7nfRRReVO7Pz8ssvV926dTVixAhNmDBB8fHxeuWVV/TFF19Uq67Twe7xGD9+vBYvXqyrrrpKjz76qJKTkzVt2rRyv8wGDx6sRx55RI8++qi6deumTZs26bnnnosINZMmTdK7776rK6+8Ug899JDatm2r/fv3a8mSJRozZoxatWqls88+W0lJSXrllVfUunVrpaamKisrK9TdejIEz9Ywa9YspaWlhbrRgy1YNX3NqmPIkCH65z//qQceeED5+fkR7zWpOHRcdNFFJ+UzMGTIEE2bNk1Dhw7Vd999p7Zt2+rjjz/WlClT1LdvX1199dW2a3/rrbeUlpYWsX3gwIF68sknNWjQIPXr10933323CgsL9dRTT2n//v164oknJBXPeO7Ro4duv/12tWrVSmlpaVqzZo2WLFmim266SVLxGL3p06frxhtvVIsWLWSM0cKFC7V//3716tXLdq0VGT16tF5//XVdeeWVuu+++9SuXTsFAgFt375d77//vu6//35deuml6tWrlxISEnTbbbfp97//vY4cOaIZM2Zo3759lT5+ly5dtGzZMl177bXq3bu33nnnnUpDPmBblCafAGGCM3crugRnin700UfmqquuMikpKSYpKclcdtll5q233ir3sSqaUfzGG2+YHj16mDp16hifz2eaNm1qBg4caD744IPQPsHZf2WVN2v3gw8+MBdddJHx+XxGkhk6dGilM0pL/z7lPd4nn3xiOnfubJKTk02DBg3MnXfeadatWxcxo7U6NZYnONOwKpLMyJEjy73NzvEwxpi//e1v5rLLLjM+n89kZmaa3/3ud2bWrFkRs4ALCwvN73//e5OdnW2SkpJMt27dzIYNGyJmARtjzI4dO8zw4cNNZmamiY+PN1lZWeaWW24xP/30U2ifefPmmVatWpn4+PgqZ2sHj9mrr75a6WtR9jGeeeYZ07x5c+P1em3NOrbzmlVnFnBl77PgpWnTpmH3OZHPgDHG7N2714wYMcI0atTIxMXFmaZNm5px48aZI0eOVFmvMcffoxVdStd56aWXmsTERJOSkmJ69uxp/va3v4VuP3LkiBkxYoRp166dqVOnjklKSjItW7Y0EyZMMAUFBcYYYzZv3mxuu+02c/bZZ5ukpCSTnp5uLrnkEjNnzpwq66zsNSjt4MGDZvz48aZly5YmISHBpKenm7Zt25r77rsvbPb7W2+9Zdq3b28SExNN48aNze9+9zvz7rvvRswkL++z+Y9//MNkZmaaiy++uMLZ00B1WMbYHJULAACAmMAYQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYzgZyAQCCgnTt3Ki0trUYr+AMAgNPPGKP8/HxlZWXJ43FnWxgB8ATs3LlT2dnZ0S4DAADUwI4dO9SkSZNolxEVBMATEDyH5Y4dO1SnTp0oVwMAAOzIy8tTdnZ2ueeidgsC4AkIdvvWqVOHAAgAgMO4efiWOzu+AQAAXIwACAAA4DIEQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACAAA4DIEQAAAAJchAAIAALgMARC2HczbpyWzJ2vLlk3RLgUAAJwAAiBs2/b8Hbr2+6f0/Su/jXYpAADgBBAAYVv7/BWSpN6eNVGtAwAAnBgCIAAAgMsQAGFbwFjRLgEAAJwEBEAAAACXIQDCNhPtAgAAwElBAIRtRnQBAwAQCwiAAAAALkMABAAAcBkCIGyjCxgAgNhAAAQAAHAZAiBsYxYwAACxgQCIaqALGACAWEAABAAAcBkCIGxjEggAALGBAAjbGAMIAEBsIAACAAC4DAEQAADAZQiAsI0xgAAAxAYCIGwjAAIAEBsIgAAAAC5DAAQAAHAZAiBsowsYAIDYQACEfeQ/AABiAgEQttECCABAbHBtACwqKtL48ePVvHlzJSUlqUWLFpo0aZICgUC0S6u1OBMIAACxIS7aBUTL1KlTNXPmTL344ou64IILtHbtWg0bNkzp6em69957o10eAADAKePaAPjpp5/qhhtu0HXXXSdJatasmebNm6e1a9dGuTIAAIBTy7VdwF26dNGyZcv09ddfS5K++OILffzxx+rbt2+UK6vNGAMIAEAscG0L4IMPPqgDBw6oVatW8nq98vv9evzxx3XbbbdVeJ/CwkIVFhaGrufl5Z2OUgEAAE4q17YALliwQC+//LLmzp2rdevW6cUXX9R//dd/6cUXX6zwPrm5uUpPTw9dsrOzT2PF0ccsYAAAYoNljHHl5M7s7GyNHTtWI0eODG2bPHmyXn75ZW3evLnc+5TXApidna0DBw6oTp06p7zmaDuQ01jpOlh8JedAdIsBAKCG8vLylJ6e7prv7/K4tgv40KFD8njCG0C9Xm+ly8D4fD75fL5TXRoAAMAp5doA2L9/fz3++OM666yzdMEFF2j9+vV6+umnNXz48GiXVmu5sqkYAIAY5NoA+D//8z965JFH9Jvf/Ea7d+9WVlaW7r77bj366KPRLq0WYwwgAACxwLVjAE8Gt40h2J/TRGcov/gKYwABAA7ltu/v8rh2FjBqgr8VAACIBQRAAAAAlyEAAgAAuAwBENXAJBAAAGIBARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYACNsMs4ABAIgJBEDYZnEmEAAAYgIBEAAAwGUIgAAAAC5DAAQAAHAZAiAAAIDLEABhG7OAAQCIDQRA1IgxzAgGAMCpCICokUCAAAgAgFMRAFEjxgSiXQIAAKghAiBqhC5gAACciwCIGiEAAgDgXARA1Igx/miXAAAAaogAiBoxTAIBAMCxCICoIQIgAABORQBEjQQCzAIGAMCpCICoESaBAADgXARA1AgBEAAA5yIAwrbSkc8EmAUMAIBTEQBRI7T/AQDgXARA1AhdwAAAOBcBELZZpa8wCxgAAMciAKJGaAEEAMC5CICoEQIgAADORQCEbcwCBgAgNhAAUSOGecAAADgWARC2lZ4EQhcwAADORQBENRwPfcYwCxgAAKciAMI2q3S3Lw2AAAA4FgEQtpUOgCZAAgQAwKkIgLAtbAygmAUMAIBTEQBRDbQAAgAQCwiAsM0TNvOXAAgAgFMRAGFb+BhAZgEDAOBUBEDYFhYAWQcQAADHIgCiRhgDCACAcxEAYVvYOoCiCxgAAKciAMI2uoABAIgNBEDYxrmAAQCIDQRA2GZxLmAAAGICARDVwDqAAADEAgIgbAvrAmYdQAAAHIsACNs8pWb+MgYQAADnIgDCttItgCIAAgDgWARA2OaxWAYGAIBYQABEjRgWggYAwLEIgLAlYtIHp4IDAMCxCICwpWyXb4B1AAEAcCwCIGyJGPPHGEAAAByLAAhbIs78QQAEAMCxCICwpWwLILOAAQBwLgIgbIk88wcBEAAApyIAwpaykz4Ms4ABAHAsAiDsiegC9kepEAAAcKIIgLCFMYAAAMQOAiBsYRYwAACxw9UB8N///rf+4z/+Q/Xq1VNycrIuvPBCff7559Euq1aKbPEjAAIA4FRx0S4gWvbt26crrrhCPXr00LvvvquMjAxt27ZNZ5xxRrRLq5XoAgYAIHa4NgBOnTpV2dnZmj17dmhbs2bNoldQLceZQAAAiB2u7QJevHixOnbsqJtvvlkZGRm66KKL9Pzzz0e7rForsgWQcwEDAOBUrg2A33zzjWbMmKFzzz1X7733nkaMGKHf/va3eumllyq8T2FhofLy8sIubkEXMAAAscO1XcCBQEAdO3bUlClTJEkXXXSRvvrqK82YMUNDhgwp9z65ubmaOHHi6Syz9giUWfePAAgAgGO5tgWwUaNGOv/888O2tW7dWtu3b6/wPuPGjdOBAwdClx07dpzqMmsNuoABAIgdrm0BvOKKK7Rly5awbV9//bWaNm1a4X18Pp98Pt+pLq1WYhIIAACxw7UtgPfdd59Wr16tKVOmaOvWrZo7d65mzZqlkSNHRru0WimyxY8ACACAU7k2AHbq1EmLFi3SvHnz1KZNGz322GN65plnNGjQoGiXVitFdAEHCIAAADiVa7uAJalfv37q169ftMtwBMYAAgAQO1zbAojq4lRwAADECgIg7AmwDiAAALGCAAhbTNkWPwIgAACORQCELYGyY/4IgAAAOBYBELaYQNlJH/5y9wMAALUfARD2RMwCjlIdAADghBEAYUvZZV+YBAIAgHMRAGFLRN5jHUAAAByLAAh7IrqAaQEEAMCpCICwJSLwkf8AAHAsAiBsCu/ytZgFDACAYxEAYUuAM4EAABAzCICwhVnAAADEDgIgbOJUcAAAxAoCIGwxdAEDABAzCICwJ2LdPwIgAABORQCEPRHLwLAQNAAATkUAhC2GMYAAAMQMAiBsiVwImgAIAIBTEQBhD8vAAAAQMwiAsCUQMQeEAAgAgFMRAGGLUdkEyCQQAACcigAIewzrAAIAECsIgLAnIvARAAEAcCoCIGwpey5gixZAAAAciwAIe+gCBgAgZhAAYUvZwBexMDQAAHAMAiBsKhP4ItaFAQAATkEAhC0mciHAqNQBAABOHAEQtnAqOAAAYgcBEDaxDAwAALGCAAhbaAEEACB2EABhD8vAAAAQMwiAsCWyBZBZwAAAOBUBEPZEBD5aAAEAcCoCIGxhDCAAALGDAAh7IgIfARAAAKciAMIWU7YLmBZAAAAciwAIm+gCBgAgVhAAYUvksi/MAgYAwKkIgLCHSSAAAMQMAiBsYRYwAACxgwAIm0wl1wAAgJMQAGFPoOwsYMYAAgDgVARA2BI5CYQ2QAAAnIoACJtoAQQAIFYQAGELk0AAAIgdBEDYEtkFDAAAnIoACHs4FRwAADGDAAhbmAQCAEDsIADCHsYAAgAQMwiAsKdMF7DFLGAAAByLAAibyp4JhBZAAACcigAIW1gGBgCA2EEAhD0RXb4EQAAAnIoACFtoAQQAIHYQAGEPy8AAABAzCICwJ2IhaGYBAwDgVARA2FK2C9iiCxgAAMciAMIeAh8AADGDAAh7IiaB0AUMAIBTEQBhE4EPAIBYQQCELRHLwDALGAAAxyIAwh66gAEAiBkEQNgTsQwMLYAAADgVARA2lVkGhi5gAAAciwBYIjc3V5ZlafTo0dEupVbiVHAAAMQOAqCkNWvWaNasWWrXrl20S6m9mAQCAEDMcH0APHjwoAYNGqTnn39edevWjXY5tRdjAAEAiBmuD4AjR47Uddddp6uvvrrKfQsLC5WXlxd2cQ1aAAEAiBlx0S4gmubPn69169ZpzZo1tvbPzc3VxIkTT3FVtRUBEACAWOHaFsAdO3bo3nvv1csvv6zExERb9xk3bpwOHDgQuuzYseMUV1l7MAkEAIDY4doWwM8//1y7d+9Whw4dQtv8fr9WrVql5557ToWFhfJ6vWH38fl88vl8p7vU2qHMGECWgQEAwLlcGwB79uypjRs3hm0bNmyYWrVqpQcffDAi/LkeLYAAAMQM1wbAtLQ0tWnTJmxbSkqK6tWrF7EdUsRC0ARAAAAcy7VjAFFNEef+JQACAOBUrm0BLM+KFSuiXUItxixgAABiBS2AsIVZwAAAxA4CIOxhIWgAAGIGARC2WIwBBAAgZhAAYYthFjAAADGDAAh76AIGACBmEABhS9kWP84EAgCAcxEAYYtRmTGAdAEDAOBYBEDYQxcwAAAxgwAIeyLyHwEQAACnIgDCpvAuYMYAAgDgXARA2EMXMAAAMYMACHtKAqDfWJJYBxAAACcjAMKmQMn/B98yBEAAAJyKAAh7Slr8jKyw6wAAwHkIgLCppAuYFkAAAByPAAh7Slr8gl3AzAIGAMC5CICwJxQAmQQCAIDTEQBhU/EkEGPRBQwAgNMRAGGPYQwgAACxggAIm5gFDABArCAAwhYrYhIIAABwKgIgbCobAAOV7QwAAGoxAiDsKdMCSBcwAADORQCEPaZkFnBwGRgmgQAA4FgEQNgSDHzHl4EBAABOxbc57Cl7LmBaAAEAcCwCIGwxZSeBMAYQAADHIgDCFqtkDGDAYhYwAABORwBEtRjeMgAAOB7f5rCn7DIwjAEEAMCxCICwJdjlG5wFzBhAAACciwAIe5gFDABAzCAAwqaSLmDLK4lzAQMA4GQEQNhjyi4DwyxgAACcigAIW0KnfrPoAgYAwOkIgLAnNAYwuA4gARAAAKciAMImzgUMAECs4NsctoTOBFLylvFwJhAAAByLAAibyrQAsg4gAACORQBEtZjQMjAEQAAAnIoACHtM2XUA6QIGAMCpCICwhVPBAQAQOwiAsCe0DEycJCaBAADgZARA2BIc82c8dAEDAOB0BEDYYoItgMExgHQBAwDgWARA2GKVWQaGLmAAAJyLAAhbjgdAuoABAHA6AiDsCXb5lowB9NAFDACAYxEAYVOwBbB4FjAtgAAAOBcBELYcnwXsCbsOAACchwAIe0q6fK2SMYBeWgABAHAsAiBsCrYA0gUMAIDTEQBhi2WCp4ILzgKmCxgAAKciAMIWK/hDcBYwLYAAADgWARA2FQc+yxMviQAIAICTEQBhi8f4S36IK7lOFzAAAE5FAIQtwXP/Gm9wEggBEAAApyIAwpbgrF/LSxcwAABORwCELcFZwGIMIAAAjkcAhC3BAGiVdAF76AIGAMCxCICwJbILmAAIAIBTEQBhS6jLNxgALSMToBsYAAAnIgDClmAXsKckAEpSgAAIAIAjEQBhy/Eu4LjQtkDAH61yAADACSAAwpbgws+lWwD9fgIgAABO5NoAmJubq06dOiktLU0ZGRm68cYbtWXLlmiXVWtZKg57ljchtI0xgAAAOJNrA+DKlSs1cuRIrV69WkuXLlVRUZF69+6tgoKCaJdWKwXP/GHFlR4DWBStcgAAwAmIq3qX2LRkyZKw67Nnz1ZGRoY+//xzXXnllVGqqvbylEwC8ZbuAqYFEAAAR3JtACzrwIEDkqQzzzyzwn0KCwtVWFgYup6Xl3fK66otgpNAPKVaAI2fAAgAgBO5tgu4NGOMxowZoy5duqhNmzYV7pebm6v09PTQJTs7+zRWGV3BhZ/DAiCzgAEAcCQCoKRRo0bpyy+/1Lx58yrdb9y4cTpw4EDosmPHjtNUYfQFu4A9cccngfgJgAAAOJLru4DvueceLV68WKtWrVKTJk0q3dfn88nn852mymqX0DqAHm9oG5NAAABwJtcGQGOM7rnnHi1atEgrVqxQ8+bNo11SrRY8FZzH45XfWPJaRgpwPmAAAJzItQFw5MiRmjt3rt58802lpaVp165dkqT09HQlJSVFubraJ7QMjMergDzyyk8XMAAADuXaMYAzZszQgQMH1L17dzVq1Ch0WbBgQbRLq5W8wRZAr1dGliQmgQAA4FSubQE0hu7L6giNAbQ88pf83cCZQAAAcCbXtgCieoJjAK1SLYABzgUMAIAjEQBhi6ekxdRjeRWwit82AbqAAQBwJAIgbAm1AHriFAiOATR0AQMA4EQEQNgSWgbGaykQGgNICyAAAE5EAIQtnlLLwBjRBQwAgJMRAGFLsAXQ6y3VBcwsYAAAHIkACFuOtwB6Sq0DSAAEAMCJCICokgkE5LFKZgGX6gI2nAsYAABHIgCiSoFSLX0ejze0EHSAcwEDAOBIBEBUye8/3tJneeNkrJKFoJkEAgCAIxEAUaXSQc/j8YS6gMUYQAAAHIkAiCqZUqd885Y6FZyfMYAAADgSARBV8oe1AHoVsLwlN9AFDACAExEAUaWwLmBvnAIqDoC0AAIA4EwEQFSpdBewx+MJtQCaomPRKgkAAJwAAiCqVHoZGK83Tv6SABjw0wIIAIATEQBRpbBlYEq1ABIAAQBwJgIgqlbSAlhkShaAtuIkScZPFzAAAE5EAESVgpM9AsFzAAfHAAYIgAAAOBEBEFUyJS2AgZK3i7+kBTBQRBcwAABORABElQIls4CDATDYAiiWgQEAwJEIgKiSMeUHQEMABADAkQiAqFKoBdAqHgMY8MRLYh1AAACcigCIKgVKZvv6S84AQhcwAADORgBElfxFZQNgyTIwBEAAAByJAIgqBY4dlSQVqST4eYr/FesAAgDgSARAVMnvLw6AwVPAGQ9dwAAAOBkBEFU63gJYPPlDwRbAgD9KFQEAgBNBAESVAsExgBZjAAEAiAUEQFQpNAu4JPgFWwAtTgUHAIAjEQBRpUBRcRdwIBQAS8YA+ukCBgDAiQiAqNLxLuAys4ANXcAAADgRARBVMv6yLYDFk0EsJoEAAOBIBEBUKXjKt4BVMgvYyxhAAACcjACIKgWCLYDByR8lYwAtuoABAHAkAiCq5i8OemW7gFkHEAAAZyIAokqmTAtgsAvYQwsgAACORABElUxJC2BwAWiPN9gCSAAEAMCJCICoWslkj+DyL8EAaBEAAQBwJAIgqhbqAi4Ofp74xOJ/A0ejVhIAAKg5AiCqFuwCLgmA3oQkSVIcARAAAEciAKJqwfX+SrqAvQnFLYBxgcJoVQQAAE4AARBV8wfHAIa3AMYbWgABAHAiAiCqFJzsYbzBFsBgAKQFEAAAJyIAokrBU75ZJS2AcT5aAAEAcDICIKrk8Re39AXiisf+xZe0APoIgAAAOBIBEFXy+g8V/xCfLEmKSyz+N0HHolUSAAA4AQRAVMlbdESS5EkoCX6+4n99OqpAwEStLgAAUDMEQFQpzn9YkmT5UiRJ8SUtgInWMR0t8ketLgAAUDMEQFQpLlDcAugtCYC+xKTQbUeOHIpKTQAAoOYIgKhSQkkAjC/p+o0r6QqWpMLDBEAAAJyGAIgqBQOgNzG1eIM3Xn5jSZKO0gIIAIDjEABRJZ8pDoAJSSUB0LJ02CpeEuZwQV60ygIAADVEAESVfCpeBzAh2AIoqcAqHg949OC+qNQEAABqjgCIyhmjpJJTvvmSjwfAQ57in48dIgACAOA0BEBUKnD0sDxW8Vp/vqS00PYj3uIAWHToQFTqAgAANUcARKUO5+2RJBUZj5LT0kPbj5YEwMDh/dEoCwAAnAACICqV/8tPkqR9SlNSQlxo+9H4ktbAw7QAAgDgNARAVCp/3+7ifz11ZFlWaHtRfJ3iHwoJgAAAOA0BEJU6cqA4ABZ408O2F/nOkCTFH957uksCAAAniACISh3L/1mSdDi+bth2f2qWJCnxyE+nvSYAAHBiCIColMn7UZJ0NLFe2HbPGY0lSamFBEAAAJyGAIhKxR/4VpJUlN4sbLuv3lmSpLpFe053SUBIkd+vw8cKo10GADhOXNW7wM1SC7ZLkhIbnhu+PaO5AsZSmg5KB/dIqQ2iUR5cbPzSl/TmjukynsNq6L1Ef+73uJrWzYh2WQDgCLQAokKBY4VqVLRDklT3rAvCbqt35pn61mRKkvw7N5zu0uBigUBAdyx8Qm/ufEryFsiyAtodWK0bFt2iT7ZvjHZ5AOAIrg+A06dPV/PmzZWYmKgOHTroo48+inZJtcb3G/+mJB3VLyZNzc9rF3ZbRppPm60WkqT9m1dFozy40KGjhbp+/hh9nv+KJOmClH4a2/7/ySqqJ793r+5edof+tO7NKFcJALWfqwPgggULNHr0aD388MNav369unbtqj59+mj79u3RLq1W2Pv34i/ZrSkdlBDvDbvNb4q09YzLJUm+zQsl/7HTXh/cIxAIaP6Xq3TlywP1/bFlMsbSVQ3u0vyBuRp0YQ8t6DdP8UdbSp6jembjeN3+2nh998vuaJcNALWWZYwx0S4iWi699FJdfPHFmjFjRmhb69atdeONNyo3N7fK++fl5Sk9PV0HDhxQnTp1TmWpp903f3tdTd6/SwmWX2uv/LM6XvUr/Xz4Zw1bMkw/5P8gy7LULOESzdr0tupbedp29hD5+jymRmemy+uxqn4CoBx+f0C/HCnQt7/8qM0//1tf7/1O//h5k74v2KCiuF0lOyXqrlbj9dvLbwi7796Cw/o/r43XLr0vSTIBr9J0rs6uc4GapzfTefWaqlndDDVMPUMZKWeoji9JHo+r/wYGXCuWv7/tcm0APHr0qJKTk/Xqq69qwIABoe333nuvNmzYoJUrV1b5GKfqDfTOxy/qy+9XSAHJkiXLSJaMLEmWJJnifz2SrJKjF7zNU2Yfldwv+DVnGRPaxyq5vzFGCgQU5z8sX1G+Uo/sUt2in2VJ+lfCBer165f0ya5PNenTSRG19vixu+7xz9MHKcnaEp+oHz2pKvB4VSSvjHX8mS3LkiVLnpKziVih/4X/LFmyLJW6RbJM6UB5/Gej8t+6Fb2hy+4fumbzI2BK/VTxc5T5wSpdccmm0AYrdJtV8nsf/80V/pqU3q/kZ49llRxnK/S4Ze9hmeJSTOh/wdLM8e2l9lFo33L2k0KvlSl54xXf18hYJe8jqcx9j79WpX8OKKBjVkBFll9FCshv+VVk+eW3ApEvWPD3DXjUNtBYDzW9Qs1Tzih3HyOjv+z4SvPzvtTP8XnlP1Dw8Ywlr/HIU3LxyiOPrOLrsuQJvZbhrDJbrLB/y96noseo6LHK3rPq28o+Rnn3qaqespVV9vgV115xPaWfv7xPc+mzDJXd0+7rX9HzRfxklb9nRY91XJnPffAzIEvH3/Hl7lnm8Ut/nnV8i3X854pe//Jfk+Pbwu5nqdT28o+OVe59w+uLeL2t8u8T/vsc/z9Lkb93Zc9dunhLksdj1L5pN/XvOlwnEwHQxbOAf/75Z/n9fjVs2DBse8OGDbVr165y71NYWKjCwuNLTuTlVf4FU1Mf/2uR3vJs08DvBp6Sx6+Wo9Ifn50lSRqgAeXu8hf9RsqX6qj4ApxK83cWSqps/ckG6qqep6scAKeIkbSg2Ws6tDXvpAdAuHwMoBT5l6cxpty/RiUpNzdX6enpoUt2dvYpqSn7jNbqWJhySh4bAACnuLQwVc3OaBXtMmKSa1sA69evL6/XG9Hat3v37ohWwaBx48ZpzJgxoet5eXmnJAT+3wG5+r8q7qauDT7b9Zm27tuqeon19Mgnj0iSejfrrdU/rlZeYZ5uOe8Wjek4Rh7L9X9PAABOooSECdEuIWa5NgAmJCSoQ4cOWrp0adgYwKVLl+qGG24o9z4+n08+n+90laiEhITT9lyV6XJWF3U5q4sk6dpzrtWyHcvUtXFXFRwr0N7De9W6XusoVwgAAKrDtQFQksaMGaPBgwerY8eO6ty5s2bNmqXt27drxIgR0S6t1or3xuvaZtdKklLiU5SRzJkXAABwGlcHwFtvvVV79+7VpEmT9OOPP6pNmzZ655131LRp02iXBgAAcMq4dhmYk4Fp5AAAOA/f38wCBgAAcB0CIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFwmLtoFOFnwNMp5eXlRrgQAANgV/N4Ofo+7EQHwBOTn50uSsrOzo1wJAACorvz8fKWnp0e7jKiwjJvj7wkKBALauXOn0tLSZFlWtMs5LfLy8pSdna0dO3aoTp060S4HNnDMnIdj5kwcN+cwxig/P19ZWVnyeNw5Go4WwBPg8XjUpEmTaJcRFXXq1OE/cA7DMXMejpkzcdycwa0tf0HujL0AAAAuRgAEAABwGQIgqsXn82nChAny+XzRLgU2ccych2PmTBw3OAmTQAAAAFyGFkAAAACXIQACAAC4DAEQAADAZQiAAAAALkMAhG3Tp09X8+bNlZiYqA4dOuijjz6KdkkoZdWqVerfv7+ysrJkWZbeeOONsNuNMcrJyVFWVpaSkpLUvXt3ffXVV9EpFpKk3NxcderUSWlpacrIyNCNN96oLVu2hO3DcatdZsyYoXbt2oUWe+7cubPefffd0O0cLzgFARC2LFiwQKNHj9bDDz+s9evXq2vXrurTp4+2b98e7dJQoqCgQO3bt9dzzz1X7u1PPvmknn76aT333HNas2aNMjMz1atXr9A5rXH6rVy5UiNHjtTq1au1dOlSFRUVqXfv3iooKAjtw3GrXZo0aaInnnhCa9eu1dq1a3XVVVfphhtuCIU8jhccwwA2XHLJJWbEiBFh21q1amXGjh0bpYpQGUlm0aJFoeuBQMBkZmaaJ554IrTtyJEjJj093cycOTMKFaI8u3fvNpLMypUrjTEcN6eoW7eueeGFFzhecBRaAFGlo0eP6vPPP1fv3r3Dtvfu3VuffPJJlKpCdXz77bfatWtX2DH0+Xzq1q0bx7AWOXDggCTpzDPPlMRxq+38fr/mz5+vgoICde7cmeMFRyEAoko///yz/H6/GjZsGLa9YcOG2rVrV5SqQnUEjxPHsPYyxmjMmDHq0qWL2rRpI4njVltt3LhRqamp8vl8GjFihBYtWqTzzz+f4wVHiYt2AXAOy7LCrhtjIrahduMY1l6jRo3Sl19+qY8//jjiNo5b7dKyZUtt2LBB+/fv1+uvv66hQ4dq5cqVods5XnACWgBRpfr168vr9Ub8Bbt79+6Iv3RRO2VmZkoSx7CWuueee7R48WItX75cTZo0CW3nuNVOCQkJOuecc9SxY0fl5uaqffv2evbZZzlecBQCIKqUkJCgDh06aOnSpWHbly5dqssvvzxKVaE6mjdvrszMzLBjePToUa1cuZJjGEXGGI0aNUoLFy7Uhx9+qObNm4fdznFzBmOMCgsLOV5wFLqAYcuYMWM0ePBgdezYUZ07d9asWbO0fft2jRgxItqlocTBgwe1devW0PVvv/1WGzZs0JlnnqmzzjpLo0eP1pQpU3Tuuefq3HPP1ZQpU5ScnKzbb789ilW728iRIzV37ly9+eabSktLC7UcpaenKykpSZZlcdxqmYceekh9+vRRdna28vPzNX/+fK1YsUJLlizheMFZojgDGQ4zbdo007RpU5OQkGAuvvji0FIVqB2WL19uJEVchg4daowpXlJkwoQJJjMz0/h8PnPllVeajRs3RrdolyvveEkys2fPDu3Dcatdhg8fHvrvYIMGDUzPnj3N+++/H7qd4wWnsIwxJkrZEwAAAFHAGEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFzm/wOF+y4OF6Y67gAAAABJRU5ErkJggg==", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Sum of Zero-Loss: 4083171010 counts\n", "Sum of Spectrum: 4875544576 counts\n", "thickness [IMFP]: 0.17736\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b3a31129f09e4f9b985dec1354f8edb5", "version_major": 2, "version_minor": 0 }, "image/png": "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eED5+fkR7zWpOHRcdNFFJ+UzMGTIEE2bNk1Dhw7Vd999p7Zt2+rjjz/WlClT1LdvX1199dW2a3/rrbeUlpYWsX3gwIF68sknNWjQIPXr10933323CgsL9dRTT2n//v164oknJBXPeO7Ro4duv/12tWrVSmlpaVqzZo2WLFmim266SVLxGL3p06frxhtvVIsWLWSM0cKFC7V//3716tXLdq0VGT16tF5//XVdeeWVuu+++9SuXTsFAgFt375d77//vu6//35deuml6tWrlxISEnTbbbfp97//vY4cOaIZM2Zo3759lT5+ly5dtGzZMl177bXq3bu33nnnnUpDPmBblCafAGGCM3crugRnin700UfmqquuMikpKSYpKclcdtll5q233ir3sSqaUfzGG2+YHj16mDp16hifz2eaNm1qBg4caD744IPQPsHZf2WVN2v3gw8+MBdddJHx+XxGkhk6dGilM0pL/z7lPd4nn3xiOnfubJKTk02DBg3MnXfeadatWxcxo7U6NZYnONOwKpLMyJEjy73NzvEwxpi//e1v5rLLLjM+n89kZmaa3/3ud2bWrFkRs4ALCwvN73//e5OdnW2SkpJMt27dzIYNGyJmARtjzI4dO8zw4cNNZmamiY+PN1lZWeaWW24xP/30U2ifefPmmVatWpn4+PgqZ2sHj9mrr75a6WtR9jGeeeYZ07x5c+P1em3NOrbzmlVnFnBl77PgpWnTpmH3OZHPgDHG7N2714wYMcI0atTIxMXFmaZNm5px48aZI0eOVFmvMcffoxVdStd56aWXmsTERJOSkmJ69uxp/va3v4VuP3LkiBkxYoRp166dqVOnjklKSjItW7Y0EyZMMAUFBcYYYzZv3mxuu+02c/bZZ5ukpCSTnp5uLrnkEjNnzpwq66zsNSjt4MGDZvz48aZly5YmISHBpKenm7Zt25r77rsvbPb7W2+9Zdq3b28SExNN48aNze9+9zvz7rvvRswkL++z+Y9//MNkZmaaiy++uMLZ00B1WMbYHJULAACAmMAYQAAAAJchAAIAALgMARAAAMBlCIAAAAAuQwAEAABwGQIgAACAyxAAAQAAXIYzgZyAQCCgnTt3Ki0trUYr+AMAgNPPGKP8/HxlZWXJ43FnWxgB8ATs3LlT2dnZ0S4DAADUwI4dO9SkSZNolxEVBMATEDyH5Y4dO1SnTp0o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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "plt.plot(energy_scale,spectrum/sumSpec*1e2 , label = 'spectrum')\n", "\n", "plt.plot(energy_scale, zLoss/sumSpec*1e2, label ='resolution function')\n", "plt.plot(energy_scale, (spectrum-zLoss)/sumSpec*1e2 , label = 'difference')\n", "\n", "plt.title ('Lorentzian Product Fit of Zero-Loss Peak')\n", "#plt.xlim(-5,5)\n", "plt.hlines(0, energy_scale[0], energy_scale[-1],color = 'gray')\n", "Izl = zLoss.sum()\n", "fig.show()\n", "Itotal = spectrum.sum()\n", "tmfp = np.log(Itotal/Izl)\n", "print(f'Sum of Zero-Loss: {Izl:.0f} counts')\n", "print(f'Sum of Spectrum: {Itotal:.0f} counts')\n", "print (f'thickness [IMFP]: {tmfp:.5f}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calibrating Energy Dispersion\n", "- The software controlling the spectrometer (or image filter) will allow you to select your energy dispersion.\n", "- The dispersion is set through the magnification within the spectrometer and each dispersion setting is internally a set of values for the lenses (quadrupoles).\n", "- This setting will only be accurate to about 10\\% which is not accurate enough to automatically rely on it.\n", "- Therefore, we usually calibrate the energy dispersion ourselves. \n", "- The drift tube high voltage power supply is reasonable accurate to do this dispersion calibration.\n", "\n", "**Practical Steps**\n", "- We collect a zero--loss (preferably but not necessarily in vacuum) without applied drift tube voltage. The zero--loss should be at the right hand of the display.\n", "- Then we collect a zero--loss peak with applied drift tube voltage, so that the zero-loss peak is at the left side of the display. \n", "\n", "\"EELS\n", "\n", "\n", "- We now measure the number of channels between the two zero-loss peaks (make sure that there is no other energy dispersion selected. \n", "- We divide the voltage by this number and get the accurate energy dispersion. \n", "- In the case of the spectrum in figure above it is 300 eV / 265 channels = 1.17 eV/channel.\n", "\n", "\n", "**The selected energy dispersion was 1.0 eV / channel.**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conclusion\n", "\n", "We use a Gaussian fit to determine the zero energy channel and thus the origin of the energy-scale\n", "\n", "We use a product of two Lorentzians to fit the zero-loss peak, we will use that fit as the resolution function for further analysis (everythin we measure is convoluted by that function).\n", "\n", "Here we used the area under the zero-loss peak to determine the relative thickness ( a relative thickness of 0.3 * IMFP is considered ideal for most experiments)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Navigation\n", "- **Up Chapter 4: [Imaging](CH4_00-Spectroscopy.ipynb)** \n", "- **Back: [Overview](CH4_01-Introduction.ipynb)** \n", "- **Next: [Analysing Low-Loss Spectra with Drude Theory](CH4_03-Drude.ipynb)** \n", "- **List of Content: [Front](../_MSE672_Intro_TEM.ipynb)** " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.11.7" }, "toc": { "base_numbering": "2", "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true }, "vscode": { "interpreter": { "hash": "64d03bc610303eb40da62bb0f1dfa0fc1c1d49c6a19b6738392189380ac6b85c" } } }, "nbformat": 4, "nbformat_minor": 4 }