{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# The old way analysis\n\nOld workflow for analyzing a deflector scan data. This workflow use the\nall the function in the most explicit way without using any entry method.\nThis is not a recommended workflow but it can help on understanding what it is\nbehind the entry methods.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the \"fundamental\" python libraries for a generic data analysis:\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\nimport matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the navarp libraries:\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from navarp.utils import navfile, fermilevel, navplt, ktransf, isocut" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load the data from a file:\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "file_name = r\"nxarpes_simulated_cone.nxs\"\nentry = navfile.load(file_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot a single slice\nEx: scan = 0.5\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "scan = 0.5\nscan_ind = np.argmin(abs(entry.scans-scan))\nisoscan = isocut.maps_sum(scan, 0, entry.scans, entry.data)\n\nqmisoscan = navplt.pimage(\n entry.angles, entry.energies, isoscan, cmap='binary', style='tht_ekin')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fermi level determination\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "energy_range = [93.8, 94.3]\ndata_sum = np.sum(entry.data, axis=tuple([0, 1]))\npopt = fermilevel.fit_efermi(entry.energies, data_sum, energy_range)\nefermi, res = popt[0], popt[1]*4\n\nfig, axfit = plt.subplots(1)\naxfit.axvline(popt[0])\naxfit.plot(entry.energies, data_sum, '+')\naxfit.plot(entry.energies, fermilevel.fermi_fun(entry.energies, *popt), 'r-')\naxfit.set_xlabel(r'Kinetic Energy (eV)')\naxfit.set_xlim(energy_range)\ndvis = data_sum[\n (entry.energies >= energy_range[0]) &\n (entry.energies <= energy_range[1])\n]\ndvis_min = dvis.min()\ndvis_max = dvis.max()\ndvis_delta = dvis_max - dvis_min\naxfit.set_ylim(\n dvis_min - dvis_delta*0.05,\n dvis_max + dvis_delta*0.05\n)\n\n# Overwrite hv from the derived fermi level and the known work function\nhv_from_file = np.copy(entry.hv)\nentry.hv = np.array([efermi + entry.analyzer.work_fun])\nprint(\n \"hv = {:g} eV (from the file was {:g})\".format(\n np.squeeze(entry.hv), np.squeeze(hv_from_file))\n)\nprint(\"Energy resolution = {:.0f} meV\".format(res*1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot a single slice with fermi level alignment\nEx: scan = 0.5\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "scan = 0.5\nscan_ind = np.argmin(abs(entry.scans-scan))\nisoscan = isocut.maps_sum(scan, 0, entry.scans, entry.data)\n\nqmisoscan = navplt.pimage(\n entry.angles, entry.energies-efermi, isoscan,\n cmap='magma_r', style='tht_eef')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting iso-energetic cut\nEx: isoenergy cut at ekin = efermi\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ekin = efermi\ndekin = 0.005\nisoev = isocut.maps_sum(ekin, dekin, entry.energies, entry.data)\nqmisoev = navplt.pimage(\n entry.angles, entry.scans, isoev,\n cmap='magma_r', style='tht_phi', cmapscale='linear')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 0 }