{ "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", "\n", "[![OpenInColab](https://colab.research.google.com/assets/colab-badge.svg)](\n", " https://colab.research.google.com/github/gduscher/MSE672-Introduction-to-TEM/blob/main//Spectroscopy/CH4_02-Fit_Zero_Loss.ipynb)\n", "\n", "\n", "\n", "part of \n", "\n", " **[MSE672: Introduction to Transmission Electron Microscopy](../_MSE672_Intro_TEM.ipynb)**\n", "\n", "**Spring 2026**
\n", "by Gerd Duscher\n", "\n", "Microscopy Facilities
\n", "Institute of Advanced Materials & Manufacturing
\n", "Materials Science & Engineering
\n", "The University of Tennessee, Knoxville\n", "Background and methods to analysis and quantification of data acquired with transmission electron microscopes.\n", "\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": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "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.2026.1.0':\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": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pyTEM version: 0.2026.1.0\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", "import scipy \n", " \n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "# Import libraries from the book\n", "import pyTEMlib\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": 2, "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 = pyTEMlib.file_tools.FileWidget()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "frames: Number of frames\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fc5d5ec394834f7a84295ac453a84975", "version_major": 2, "version_minor": 0 }, "image/png": "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1av9jrt69Wrv9nPBE6IKTp7YtWuXz/MKFSqoXr16+vbbb709lgX9+OOP+vPPP3XddddJyrvmzTOJ5JZbblGpUqW8PxMmTJB0YjKIJ/Ru377d77jbtm1TmTJlTvuzTZo0SZGRkfr666912223qUWLFqcM/bNnz9aIESPUvHlzTZ06VZ999lmR7xEREaGBAwdqxYoV2rNnjz7++GNt3bpV7du3P+n35NG8eXPl5OTot99+O+3PBuDcIQACOG2FBRZJOnTokLZu3aqKFSv6bYuNjVWDBg1UoUIFrVixQt9//70efvhh7/ZKlSqpefPmGj9+vM/klcWLF2v9+vWFrrN3pi655BJJ0qpVq3zaPZMh8nvmmWe0d+/eQtfwO3z4sB566CEVK1ZMjzzyiKS8Ra9///13paamau7cuX4/9erV04cffqicnBylpKQoJibGb3Hk33//XXPmzFGbNm1O+7NZlqWIiAiFh4d7244cOaKPPvrIb9/t27frrrvu0rXXXqtFixbpxhtvVJ8+fYrs8cyvZMmSuvXWW5Wamqo9e/Zo06ZNp9x/7ty5CgsLU/Xq1QN+DwDnHkPAQIhYs2aNcnJy/NovvfRS71Dbvn37tHjxYr99XC6XGjdu7NM2Z86cQv8x79ixo1588UUtXLhQt99+uxo1aqSYmBhlZGTo7bff1u7du/Xvf//bu/+8efO0dOlSJScnyxijJUuWaPjw4br++uv14IMP+hx7+PDhuu6669S1a1c98MAD2rlzp5566inVr19fvXr1OpOvpVDly5dX27ZtlZaWplKlSqlq1ar6/vvv9fnnn/vt261bN61YsUKvvPKKNm3apN69e6tcuXJav369Xn/9df3666+aOHGiN9CMHj1aERERevrppwsNwvfdd58eeughTZ8+XV26dNFzzz2np59+Wt27d1e3bt20e/duDR06VNHR0RoyZMhpf7ZOnTrptdde0x133KF7771Xu3fv1iuvvOI3Ezs3N1fdunWTZVmaOHGiwsPDNW7cODVq1Ei33367fvjhB++QekGdO3dW/fr11axZMyUmJmrz5s164403VLVqVdWoUUOSdO+996pEiRJq3ry5ypUrp127dumTTz7R5MmT9fjjjzP8CwRbkCehADhLp5oFLMmMGjXKGHPqWcCVKlUK+HgZGRlm8eLFJjU11TRs2NAkJCSY8PBwk5iYaK6//nozY8YMn/oWLlxorrjiClOiRAnjcrlM/fr1zSuvvGKOHTtW6Of59ttvzZVXXmmio6NNQkKC6d69u/nzzz8L/cwFZyoPGTLESDJ//fWXT3uPHj1M8eLFfdq2b99ubr31VpOQkGDi4+PNXXfdZZYtW+YzCzi/GTNmmI4dO5rSpUubyMhIU6lSJXP33XebtWvXevf566+/TFRUlLnppptOcrZOzPzt3Lmzt+2DDz4wycnJJioqysTHx5suXbr4HPdknyH/Z85vzJgxplatWsblcpnq1aubtLQ0M3r0aO/5M8aYZ555xoSFhZnvv//e57WLFi0yERER5uGHH/a2FZwF/Oqrr5oWLVqYMmXKmKioKFOlShXTp08fs2nTJp8arrnmGlOmTBkTERFhSpYsaa699lrz0UcfnfS7AXDhWMac5gJgAAAAsDWuAQQAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAniPz589X586dVbFiRVmWpS+++OK0jzFr1ixdeeWViouLU2Jiov7+97+f1oKsAAAAgSAAniOHDx9Ww4YN9fbbb5/R63/77Td16dJFrVu31sqVKzVr1izt2rXrnN79AAAAQJJYB/A8sCxLU6dO1U033eRtO3bsmJ599llNmDBB+/btU/369TV8+HC1atVKkvTpp5+qW7duysrKUlhYXi7/6quv1KVLF2VlZSkyMjIInwQAAIQiegAvkF69emnhwoWaNGmSVq1apa5du+r666/Xhg0bJEnNmjVTeHi4xo4dq9zcXO3fv18fffSR2rVrR/gDAADnFD2A50HBHsBff/1VNWrU0O+//+5zb9C2bduqefPmeumllyTlXUfYtWtX7d69W7m5uUpJSdGMGTNUsmTJIHwKAAAQqugBvABWrFghY4xq1qyp2NhY7096erp+/fVXSdKOHTt0zz33qEePHlq6dKnS09MVFRWlW2+9VWR0AABwLkUEuwAncLvdCg8P1/LlyxUeHu6zLTY2VpL0zjvvqESJEnr55Ze928aPH6+kpCT95z//0ZVXXnlBawYAAKGLAHgBNG7cWLm5udq5c6euueaaQvfJzMz0C4ee5263+7zXCAAAnIMh4HPk0KFDWrlypVauXClJysjI0MqVK7VlyxbVrFlTd955p7p3767PP/9cGRkZWrp0qYYPH64ZM2ZIkjp16qSlS5fq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9u/frxIlSlyoMoPiUFaO6g+Z5X3+ab8UNbskIYgVAQBwZg4cOKD4+HhH/Pt9Mo4eAi7IGOMT8ApyuVxyuVwXsKKLh99C0EGqAwAAnD3HBsCnn35aHTp0UFJSkg4ePKhJkyZp3rx5mjlzZrBLuygVDHz0GwMAYF+ODYB//vmn7r77bm3fvl3x8fFKTk7WzJkzdd111wW7tIuS3yQQEiAAALbl2AA4evToYJdgL8wCBgAgZDh6FjACxyxgAABCBwEQAfFfB5AECACAXdluCDgrK0tLlizRpk2blJmZqcTERDVu3FjVqlULdmkhjUkgAACEDtsEwEWLFumtt97SF198oWPHjqlkyZKKiYnRnj17lJWVperVq+vee+9Vv379FBcXF+xyQ47fMjAEQAAAbMsWQ8BdunTRrbfeqkqVKmnWrFk6ePCgdu/erd9//12ZmZnasGGDnn32WX3//feqWbOmZs+eHeySQ45fDyBDwAAA2JYtegDbtWunTz75RFFRUYVur169uqpXr64ePXpo7dq12rZt2wWuMPS56QEEACBk2CIApqamBrxvvXr1VK9evfNYjUOxDAwAACHDFkPA+W3dulW///679/mSJUs0YMAAjRw5MohVhT7/SSBEQAAA7Mp2AfCOO+7Q3LlzJUk7duzQddddpyVLlujpp5/W888/H+TqQpf/MjAAAMCubBcA16xZo+bNm0uSpkyZovr162vRokWaOHGixo0bF9ziQpj/QtBEQAAA7Mp2ATA7O1sul0uS9N133+nGG2+UJNWuXVvbt28PZmkhzf9ewMGpAwAAnD3bBcB69erpvffe04IFCzR79mxdf/31kqRt27apdOnSQa4udLEQNAAAocN2AXD48OF6//331apVK3Xr1k0NGzaUJH355ZfeoWGce34LQQepDgAAcPZssQxMfq1atdKuXbt04MABlSpVytt+7733qnjx4kGsLLT5DwETAQEAsCvb9QC2bt1aBw8e9Al/kpSQkKDbb789SFWFPmYBAwAQOmwXAOfNm6djx475tR89elQLFiwIQkXOwCxgAABCh22GgFetWuV9vG7dOu3YscP7PDc3VzNnzlSlSpWCUZojMAsYAIDQYZsA2KhRI1mWJcuy1Lp1a7/tMTExeuutt4JQmTP4zQIOShUAAOBcsE0AzMjIkDFG1atX15IlS5SYmOjdFhUVpbJl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RE9P/+kE0JP3dvuPAuTf1ftehR6rqNee4j3y7Zj/M56q7sL2K/id+Lb5HOkUr83/fif/vPk/h0738/rs5/8eCvi78j3GyT5HwJ83wO+0YE0nfe25+LyFvN+p6szfmFy5pF/NOHuODYBlypRReHi4X2/fzp07/XoFPVwul1wuV6HbzqXGVUqpcZVS5/19LoSwMEuusHC5IiSd/68OOGvhYZbCw4r+zw8A2JljZwFHRUWpadOmmj17tk/77Nmz1aJFiyBVBQAAcP45tgdQkgYOHKi7775bzZo1U0pKikaOHKktW7aoX79+wS4NAADgvHF0ALz99tu1e/duPf/889q+fbvq16+vGTNmqGrVqsEuDQAA4Lxx7DIw5wLTyAEAsB/+/XbwNYAAAABORQAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAO4+hbwZ0tz01UDhw4EORKAABAoDz/bjv5ZmgEwLNw8OBBSVJSUlKQKwEAAKfr4MGDio+PD3YZQcG9gM+C2+3Wtm3bFBcXJ8uygl3OBXPgwAElJSVp69atjr2Hot1wzuyJ82Y/nDN7MMbo4MGDqlixosLCnHk1HD2AZyEsLEyVK1cOdhlBU6JECf6CsxnOmT1x3uyHc3bxc2rPn4czYy8AAICDEQABAAAchgCI0+ZyuTRkyBC5XK5gl4IAcc7sifNmP5wz2AWTQAAAAByGHkAAAACHIQACAAA4DAEQAADAYQiAAAAADkMAxGl59913Va1aNUVHR6tp06ZasGBBsEtCPvPnz1fnzp1VsWJFWZalL774wme7MUb//Oc/VbFiRcXExKhVq1Zau3ZtcIqFJCktLU2XX3654uLiVLZsWd10001av369zz6ct4vPiBEjlJyc7F3wOSUlRd988413O+cMFzsCIAI2efJkDRgwQM8884x++uknXXPNNerQoYO2bNkS7NJw3OHDh9WwYUO9/fbbhW5/+eWX9dprr+ntt9/W0qVLVb58eV133XXe+1rjwktPT1dqaqoWL16s2bNnKycnR+3atdPhw4e9+3DeLj6VK1fWv/71Ly1btkzLli1T69at1aVLF2/I45zhomeAADVv3tz069fPp6127drmqaeeClJFOBVJZurUqd7nbrfblC9f3vzrX//yth09etTEx8eb9957LwgVojA7d+40kkx6eroxhvNmJ6VKlTIffPAB5wy2QA8gAnLs2DEtX75c7dq182lv166dFi1aFKSqcDoyMjK0Y8cOn3Pocrl07bXXcg4vIvv375ckJSQkSOK82UFubq4mTZqkw4cPKyUlhXMGWyAAIiC7du1Sbm6uypUr59Nerlw57dixI0hV4XR4zhPn8OJljNHAgQN19dVXq379+pI4bxez1atXKzY2Vi6XS/369dPUqVNVt25dzhlsISLYBcBeLMvyeW6M8WvDxY1zePF68MEHtWrVKv3www9+2zhvF59atWpp5cqV2rdvnz777DP16NFD6enp3u2cM1zM6AFEQMqUKaPw8HC//73u3LnT73+5uDiVL19ekjiHF6n+/fvryy+/1Ny5c1W5cmVvO+ft4hUVFaXLLrtMzZo1U1pamho2bKg333yTcwZbIAAiIFFRUWratKlmz57t0z579my1aNEiSFXhdFSrVk3ly5f3OYfHjh1Teno65zCIjDF68MEH9fnnn2vOnDmqVq2az3bOm30YY5SVlcU5gy0wBIyADRw4UHfffbeaNWumlJQUjRw5Ulu2bFG/fv2CXRqOO3TokDZu3Oh9npGRoZUrVyohIUFVqlTRgAED9NJLL6lGjRqqUaOGXnrpJRUrVkx33HFHEKt2ttTUVE2cOFHTpk1TXFyct9coPj5eMTExsiyL83YRevrpp9WhQwclJSXp4MGDmjRpkubNm6eZM2dyzmAPQZyBDBt65513TNWqVU1UVJRp0qSJd6kKXBzmzp1rJPn99OjRwxiTt6TIkCFDTPny5Y3L5TItW7Y0q1evDm7RDlfY+ZJkxo4d692H83bx6d27t/fvwsTERNOmTRvz7bfferdzznCxs4wxJkjZEwAAAEHANYAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAACmjVqpUGDBgQtPffvXu3ypYtq02bNp3T465evVqVK1fW4cOHz+lxAdgPARAALjJpaWnq3LmzLrnkkoD279y5s9q2bVvoth9//FGWZWnFihVq0KCBmjdvrtdff/0cVgvAjgiAAGwpOzs72CWcF0eOHNHo0aN1zz33BPyaPn36aM6cOdq8ebPftjFjxqhRo0Zq0qSJJKlXr14aMWKEcnNzz1nNAOyHAAjgrBhj9PLLL6t69eqKiYlRw4YN9emnn3q3z5s3T5Zl6fvvv1ezZs1UrFgxtWjRQuvXr/c5zldffaWmTZsqOjpa1atX19ChQ5WTk+PdblmW3nvvPXXp0kXFixfXsGHDJEnDhg1T2bJlFRcXp3vuuUdPPfWUGjVqJEmaP3++IiMjtWPHDp/3evTRR9WyZcuAP+PevXvVvXt3lSpVSsWKFVOHDh20YcMG7/bNmzerc+fOKlWqlIoXL6569eppxowZ3tfeeeedSkxMVExMjGrUqKGxY8ee9L2++eYbRUREKCUlxad93bp16tixo2JjY1WuXDndfffd2rVrlyTphhtuUNmyZTVu3Dif12RmZmry5Mnq06ePt619+/bavXu30tPTA/78AEIPARDAWXn22Wc1duxYjRgxQmvXrtUjjzyiu+66yy9gPPPMM3r11Ve1bNkyRUREqHfv3t5ts2bN0l133aWHHnpI69at0/vvv69x48bpxRdf9DnGkCFD1KVLF61evVq9e/fWhAkT9OKLL2r48OFavny5qlSpohEjRnj3b9mypapXr66PPvrI25aTk6Px48erV69eAX/Gnj17atmyZfryyy/1448/yhijjh07enshU1NTlZWVpfnz52v16tUaPny4YmNjJUnPPfec1q1bp2+++UY///yzRowYoTJlypz0vebPn69mzZr5tG3fvl3XXnutGjVqpGXLlmnmzJn6888/ddttt0mSIiIi1L17d40bN075b+/+ySef6NixY7rzzju9bVFRUWrYsKEWLFgQ8OcHEIIMAJyhQ4cOmejoaLNo0SKf9j59+phu3boZY4yZO3eukWS+++477/bp06cbSebIkSPGGGOuueYa89JLL/kc46OPPjIVKlTwPpdkBgwY4LPPFVdcYVJTU33arrrqKtOwYUPv8+HDh5s6dep4n3/xxRcmNjbWHDp06KSf69prrzUPP/ywMcaYX375xUgyCxcu9G7ftWuXiYmJMVOmTDHGGNOgQQPzz3/+s9Bjde7c2fTq1euk71VQly5dTO/evX3annvuOdOuXTuftq1btxpJZv369cYYY37++WcjycyZM8e7T8uWLb3nIb+bb77Z9OzZM+CaAIQeegABnLF169bp6NGjuu666xQbG+v9+fDDD/Xrr7/67JucnOx9XKFCBUnSzp07JUnLly/X888/73OMvn37avv27crMzPS+rmDP2Pr169W8eXOftoLPe/bsqY0bN2rx4sWS8q6Ju+2221S8eHEtWLDA5z0nTJjg9xl//vlnRURE6IorrvC2lS5dWrVq1dLPP/8sSXrooYc0bNgwXXXVVRoyZIhWrVrl3ff+++/XpEmT1KhRIz3xxBNatGjRKb/TI0eOKDo62qdt+fLlmjt3rk+ttWvXliTv91y7dm21aNFCY8aM8bYvWLDAp6fVIyYmxud7BeA8EcEuAIB9ud1uSdL06dNVqVIln20ul8vneWRkpPexZVk+r3e73Ro6dKhuueUWv/fIH4aKFy/ut91zLA+TbwhUksqWLavOnTtr7Nixql69umbMmKF58+ZJyguUK1eu9O5brlw5v+MXPF7+ds9733PPPWrfvr2mT5+ub7/9VmlpaXr11VfVv39/dejQQZs3b9b06dP13XffqU2bNkpNTdUrr7xS6HHLlCmjvXv3+rS53W517txZw4cP99vfE6alvMkgDz74oN555x2NHTtWVatWVZs2bfxes2fPHl166aWFvj8AZ6AHEMAZq1u3rlwul7Zs2aLLLrvM5ycpKSng4zRp0kTr16/3O8Zll12msLCT/zVVq1YtLVmyxKdt2bJlfvvdc889mjRpkt5//31deumluuqqqyTl9YTlf6+4uLhCP2NOTo7+85//eNt2796tX375RXXq1PG2JSUlqV+/fvr888/16KOPatSoUd5tiYmJ6tmzp8aPH6833nhDI0eOPOlnaty4sdatW+f3/axdu1aXXHKJ3/eTPxTfdtttCg8P18SJE/V///d/6tWrl19AlqQ1a9aocePGJ60BQOijBxDAGYuLi9Njjz2mRx55RG63W1dffbUOHDigRYsWKTY2Vj169AjoOIMHD9YNN9ygpKQkde3aVWFhYVq1apVWr17tne1bmP79+6tv375q1qyZWrRoocmTJ2vVqlWqXr26z37t27dXfHy8hg0bpueff/60PmONGjXUpUsX9e3bV++//77i4uL01FNPqVKlSurSpYskacCAAerQoYNq1qypvXv3as6cOd5wOHjwYDVt2lT16tVTVlaWvv76a5/gWFD79u01aNAg7d27V6VKlZKUN8lk1KhR6tatmx5//HGVKVNGGzdu1KRJkzRq1CiFh4dLkmJjY3X77bfr6aef1v79+9WzZ0+/42/atEl//PHHSdcNBOAM9AACOCsvvPCCBg8erLS0NNWpU0ft27fXV199pWrVqgV8jPbt2+vrr7/W7Nmzdfnll+vKK6/Ua6+9pqpVq57ydXfeeacGDRqkxx57TE2aNFFGRoZ69uzpdw1dWFiYevbsqdzcXHXv3v20P+PYsWPVtGlT3XDDDUpJSZExRjNmzPAOa+fm5io1NVV16tTR9ddfr1q1aundd9+VlDfrdtCgQUpOTlbLli0VHh6uSZMmnfS9GjRooGbNmmnKlCnetooVK2rhwoXKzc1V+/btVb9+fT388MOKj4/36yHt06eP9u7dq7Zt26pKlSp+x//444/Vrl27Ir9bAKHNMie7wAUAbOi6665T+fLlfZZ+kaS+ffvqzz//1JdffhmkygI3Y8YMPfbYY1qzZs0ph8BPV1ZWlmrUqKGPP/7YOwwOwJkYAgZgW5mZmXrvvffUvn17hYeH6+OPP9Z3332n2bNne/fZv3+/li5dqgkTJmjatGlBrDZwHTt21IYNG/THH3+c1rWURdm8ebOeeeYZwh8AegAB2NeRI0fUuXNnrVixQllZWapVq5aeffZZn9nErVq10pIlS3TfffdxD1wAOI4ACAAA4DBMAgEAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAAgAAOAwBEAAAwGEIgAAAAA5DAAQAAHCY/w+g4b6RkNaovQAAAABJRU5ErkJggg==", "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 = pyTEMlib.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": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "experiment :\n", "\tsingle_exposure_time : 0.1\n", "\texposure_time : 0.1\n", "\tnumber_of_frames : 100\n", "\tconvergence_angle : 0.0\n", "\tcollection_angle : 0.0\n", "\tmicroscope : Libra 200 MC\n", "\tacceleration_voltage : 199990.28125\n", "filename : ../example_data/AL-DFoffset0.00.dm3\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": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counts in zero-loss 4123429376 , total counts 4875536384\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 = eels_dataset.energy_loss.slope\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": 8, "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": 9, "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": 10, "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.13 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: 2.6037514773555848 %\n", "Sum of Gaussian: 3858665454.444083\n", "Sum of Spectrum: 4.8755446e+09\n", "thickness [IMFP]: 0.23391041960317832\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ff58914ee6714d3a8ee5896888ae5e77", "version_major": 2, "version_minor": 0 }, "image/png": "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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": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "143 203 60\n", "Energy range for fit of zero-loss: -0.73 to 0.48\n", "Fit of a Product of two Lorentzians\n", "Positions: 0.294990359599731 0.19179393633817995 Distance: 0.10319642326155107\n", "Width: -0.10189727305903658 -0.1520332125823954\n", "Areas: 22317.017284000332 20951.561573961306\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 - pyTEMlib.eels_tools.zero_loss_function(x, [center1, amplitude1, width1, center2, amplitude2, width2]))#/np.sqrt(y)\n", " return err\n", "\n", "pZL, lsq = scipy.optimize.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 - pyTEMlib.eels_tools.zero_loss_function(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 = pyTEMlib.eels_tools.zero_loss_function(energy_scale, [center1, amplitude1, width1, center2, amplitude2, width2])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sum of Zero-Loss: 4083171316 counts\n", "Sum of Spectrum: 4875544576 counts\n", "thickness [IMFP]: 0.17736\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4a6379a7f58a4e7b84746c527a2ad851", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAANzZJREFUeJzt3Xl8U3W+//H3SdqmKxWBUgqVxQVQFhVQURAQQUFQcVB/ygWE0Su/AUdEZwRFKYhU9F5Hf1eWQWdAR1lGBcWroogsOsoIAsrIgAMu4CCCCLQUKDT5/v5oE5qmy2lZ0pPzes4jQ3Nyknyak5h3v9uxjDFGAAAAcA1PtAsAAADA6UUABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAAgAAOAyBEAAAACXIQACAAC4DAEQAADAZQiAAAAALkMABAAAcBkCIAAAgMsQAAEAAFyGAIhaYc6cObIsS2vXro12KdVy6NAh5eTkaMWKFTW6f05OjizLOrlF2dS9e3dZlhW6JCUlqX379nrmmWcUCARO+fMHj/l33313Sh5/586dysnJ0YYNG2ztv2LFirDXo/Rl4MCBkiTLspSTkxO6z6ZNm5STk3NKfodly5apY8eOSklJkWVZeuONN8rdr+xxLO/SvXv3k17fiQi+73/++edol1KpO+64I+x19Pl8atmypSZMmKAjR46csuft3r272rRpc8oeH5CkuGgXADjZoUOHNHHiREmq0ZfsnXfeqWuvvfYkV2VfixYt9Morr0iSdu/erZkzZ+q+++7Tjz/+qKlTp0atrpNh586dmjhxopo1a6YLL7zQ9v2mTJmiHj16hG2rV6+eJOnTTz9VkyZNQts3bdqkiRMnqnv37mrWrNnJKFuSZIzRLbfcovPOO0+LFy9WSkqKWrZsWe6+06dPV15eXrm35ebmavHixRowYMBJq81tkpKS9OGHH0qS9u3bp3nz5mnSpEnavHmzFixYEOXqgJojAMIVDh8+rMTExKi1tlWkSZMmYYHidEtKStJll10Wut6nTx+1atVKzz33nCZPnqz4+PiI+xhjdOTIESUlJZ3OUk+bc889N+w1Ka2i7Sfbzp079csvv2jAgAHq2bNnpfuef/755W5fuHCh3nrrLd1222269957T0pdhw4dUnJy8kl5LKfweDwRn5HvvvtOf/3rX/X000+rcePGUawOqDm6gOEoH3/8sXr27Km0tDQlJyfr8ssv19tvvx22T7Br8f3339fw4cPVoEEDJScnq7CwUJK0YMECde7cWSkpKUpNTdU111yj9evXhz3GHXfcodTUVG3dulV9+/ZVamqqsrOzdf/994ce57vvvlODBg0kSRMnTgx1E91xxx2SVGmXXLDLsLwu4AULFqh3795q1KiRkpKS1Lp1a40dO1YFBQXVrrG64uPj1aFDBx06dEh79uwJ/R6jRo3SzJkz1bp1a/l8Pr344ou2j4ckrV69WldccYUSExOVlZWlcePG6dixYxH7le1iDWrWrFnodQ3697//rf/8z/9Udna2EhISlJWVpYEDB+qnn37SihUr1KlTJ0nSsGHDQq97eY9dHaUfY86cObr55pslST169Ag9x5w5cyp9jKpes5ycnNAfBQ8++KAsy6p26+KmTZs0dOhQtW3bVi+88ELE7dX5DGzcuFG9e/dWWlpaKIz+8ssv+s1vfqPGjRsrISFBLVq00MMPP1zj911FFi9erM6dOys5OVlpaWnq1auXPv3007B99uzZE3of+Hw+NWjQQFdccYU++OCD0D7r169Xv379lJGRIZ/Pp6ysLF133XX64YcfalRXMBB+//33kqS8vDw98MADat68uRISEtS4cWONHj064jM7bdo0XXnllcrIyFBKSoratm2rJ598stzPQlmLFi1ScnKy7rzzThUVFdWobqA0WgDhGCtXrlSvXr3Url07/elPf5LP59P06dPVv39/zZs3T7feemvY/sOHD9d1112nv/zlLyooKFB8fLymTJmi8ePHa9iwYRo/fryOHj2qp556Sl27dtVnn30W1ppy7NgxXX/99fr1r3+t+++/X6tWrdJjjz2m9PR0Pfroo2rUqJGWLFmia6+9Vr/+9a915513SlIoFJb9ojp8+LAGDx4sv9+vM888s8Lf81//+pf69u2r0aNHKyUlRZs3b9bUqVP12Wefhbqi7NZYE9u2bVNcXJzq1q0b2vbGG2/oo48+0qOPPqrMzExlZGTYPh6bNm1Sz5491axZM82ZM0fJycmaPn265s6dW6P6pOLw16lTJx07dkwPPfSQ2rVrp7179+q9997Tvn37dPHFF2v27Nmh43zddddJkq3W1kAgEPEFGxcX+Z/K6667TlOmTNFDDz2kadOm6eKLL5YknX322RU+tp3X7M4771T79u1100036Z577tHtt98un89n+7U5cOCABgwYoLi4OC1cuDCixa46n4GjR4/q+uuv1913362xY8eqqKhIR44cUY8ePbRt2zZNnDhR7dq100cffaTc3Fxt2LCh3D8AamLu3LkaNGiQevfurXnz5qmwsFBPPvmkunfvrmXLlqlLly6SpMGDB2vdunV6/PHHdd5552n//v1at26d9u7dK0kqKChQr1691Lx5c02bNk0NGzbUrl27tHz5cuXn59eotq1bt0oq/qwfOnRI3bp10w8//BB6L3711Vd69NFHtXHjRn3wwQehP/K2bdum22+/PRQUv/jiCz3++OPavHmz/vznP1f4fH/4wx/0u9/9Tjk5ORo/fnyNagYiGKAWmD17tpFk1qxZU+E+l112mcnIyDD5+fmhbUVFRaZNmzamSZMmJhAIhD3WkCFDwu6/fft2ExcXZ+65556w7fn5+SYzM9PccsstoW1Dhw41ksxf//rXsH379u1rWrZsGbq+Z88eI8lMmDCh0t+vqKjI3HDDDSY1NdV8/vnnoe0TJkwwlX0MA4GAOXbsmFm5cqWRZL744otq11iRbt26mQsuuMAcO3bMHDt2zOzcudOMHTvWSDI333xzaD9JJj093fzyyy9h97d7PG699VaTlJRkdu3aFbZfq1atjCTz7bffhj1Xea9l06ZNzdChQ0PXhw8fbuLj482mTZsq/P3WrFljJJnZs2dX+VoYY8zy5cuNpHIv//rXv8qt79VXXzWSzPLly209h93X7NtvvzWSzFNPPWXrcYMCgYDp37+/8Xg85u233464vSafgT//+c9h+86cObPc993UqVONJPP+++9XWWfwfb9nz55yb/f7/SYrK8u0bdvW+P3+sDozMjLM5ZdfHtqWmppqRo8eXeFzrV271kgyb7zxRpV1lTV06FCTkpIS+ozs2bPHPPvss8ayLNOpUydjjDG5ubnG4/FE/LfrtddeM5LMO++8U+HveOzYMfPSSy8Zr9cb9vkKfjb9fr8ZNWqUSUhIMC+//HK16wcqQxcwHKGgoEB///vfNXDgQKWmpoa2e71eDR48WD/88IO2bNkSdp9f/epXYdffe+89FRUVaciQISoqKgpdEhMT1a1bt4iZvJZlqX///mHb2rVrF+r2qY5Ro0bp7bff1quvvhpqKarIN998o9tvv12ZmZnyer2Kj49Xt27dJEn//Oc/T2qNX331leLj4xUfH6+srCz993//twYNGqTnn38+bL+rrroqrEWwOsdj+fLl6tmzpxo2bBi2X9kW2+p499131aNHD7Vu3brGj1GRqVOnas2aNWGX7OzsE37cmryHqysnJ0dvvfWWcnJy1Ldv34jbq/sZkCI/Rx9++KFSUlJCM6ODgl30y5Ytk1Q8VrT0c1Sn23LLli3auXOnBg8eLI/n+NdUamqqfvWrX2n16tU6dOiQJOmSSy7RnDlzNHnyZK1evTqiO/Wcc85R3bp19eCDD2rmzJnatGmT7TokhXoP4uPj1aBBA40ePVp9+vTRokWLJEn/+7//qzZt2ujCCy8M+12vueYaWZYV9pquX79e119/verVqxf6bA8ZMkR+v19ff/112PMeOXJEN954o1555RW9//77GjRoULXqBqpCFzAcYd++fTLGqFGjRhG3ZWVlSVKoyyeo7L4//fSTJIXGhpVV+otGkpKTk5WYmBi2zefzVXv5h8mTJ2vmzJn605/+VOWM34MHD6pr165KTEzU5MmTdd555yk5OVk7duzQTTfdpMOHD5/UGs8++2zNnz9flmUpMTFRzZs3L3eQf9nXsjrHY+/evcrMzIzYr7xtdu3Zs+eUTZ5p0aKFOnbseNIftybv4epYvHixHnvsMfXv37/CbsKafAbq1KkTti14PMuOXc3IyFBcXFzod3jxxRc1bNiwsH2MMbZ+l+BjVPRaBQIB7du3T8nJyVqwYIEmT56sF154QY888ohSU1M1YMAAPfnkk8rMzFR6erpWrlypxx9/XA899JD27dunRo0a6a677tL48ePLnehUWlJSklatWiWp+LPVtGnTsNfkp59+0tatWyt8nOBSN9u3b1fXrl3VsmVLPfvss2rWrJkSExP12WefaeTIkRGf7d27d2vHjh26+uqrdfnll9t63YDqIADCEerWrSuPx6Mff/wx4radO3dKkurXrx+2vewXVPD21157TU2bNj1FlYab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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", "\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.13.5" }, "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 }