Skip to article frontmatterSkip to article content

Chapter 4 Spectroscopy

Chapter 4 Spectroscopy


Introduction to X-Rays

Download

OpenInColab

part of

MSE672: Introduction to Transmission Electron Microscopy

Spring 2024

Gerd DuscherKhalid Hattar
Microscopy FacilitiesTennessee Ion Beam Materials Laboratory
Materials Science & EngineeringNuclear Engineering
Institute of Advanced Materials & Manufacturing

The University of Tennessee, Knoxville

Background and methods to analysis and quantification of data acquired with transmission electron microscopes.

Load relevant python packages

Check Installed Packages

import sys
import importlib.metadata
def test_package(package_name):
    """Test if package exists and returns version or -1"""
    try:
        version = importlib.metadata.version(package_name)
    except importlib.metadata.PackageNotFoundError:
        version = '-1'
    return version

if test_package('pyTEMlib') < '0.2024.2.3':
    print('installing pyTEMlib')
    !{sys.executable} -m pip install  --upgrade pyTEMlib -q

print('done')
installing pyTEMlib
done

Load the plotting and figure packages

Import the python packages that we will use:

Beside the basic numerical (numpy) and plotting (pylab of matplotlib) libraries,

  • three dimensional plotting and some libraries from the book

  • kinematic scattering library.

%matplotlib widget
import matplotlib.pyplot as plt
import numpy as np
import sys
import os
if 'google.colab' in sys.modules:
    from google.colab import output
    from google.colab import drive
    output.enable_custom_widget_manager()
    
__notebook__ = 'CH4_12-Introduction_X_Rays'
__notebook_version__ = '2023_01_22'

Inelastic Scattering:

When a high energy electron collides with matter there are several process going on:

inelastic_scattering

In an TEM and SEM there are quite a few inelastic signals available:

  • Secondary electrons

  • X-Rays

  • Auger electrons

  • Light (photons in visible range)

X-Rays

Here we consider only X-Rays and Auger Electrons as those originate from competing processes: X-Ray_Auger

The excited atom has two possibilities to return to the ground state:

We consider the energy before and after the relaxation process.

X-Ray branch

The emitted photon has the energy of the energy gained in the relaxtion process. In the carbon atom case above, an electron from the 2p states relaxes to the 1s state: from the L3_3 to the K shell.

The energy difference of a photon is the EKE_K - ELE_L, which is well in the X-ray range.

Please note that the transition from 2s to 1s is dipole forbidden and cannot occur.

Auger branch

The emitted electron leaves behind an atom with a closed K shell (EK-E_K) and looses two 2p electrons (+2EL+2 E_L. This energy will be transfered to the Auger electron as kinetic energy Ekin=EK2EL E_{kin} = E_K-2E_L

## 
E_K = 284 # in eV
E_L = 7   # in eV

print(f'X-ray photon has the energy {E_K-E_L} eV')
print(f'Auger electron has the kinetic energy {E_K-2* E_L} eV')
X-ray photon has the energy 277 eV
Auger electron has the kinetic energy 270 eV

Fluorescent Yield

The Auger and X-ray branches are not equally probable. In the carbon atom characteristic X-ray emission occurs at about 26% of the K-shell ionization.

The fraction that of the ionization that yields photons is called fluorescent yield ω\omega.

The fluorescent yield is strongly dependent on the atomic number [E.A. Preoteasa et al. 2012 – ISBN 978-1-61470-208-5]:

fluorescentYield

The fluorescent yield follows approximatively an equation of the form:

ω=Z4α+Z4\omega = \frac{Z^4}{\alpha+Z^4}

with

  • ZZ: atomic number

  • α\alpha: constant about 106^6 for K lines

Z =  np.linspace(1,100,100)

alpha_K = 1e6
alpha_L = 6.5e7
alpha_M = 8*1e8#2.2e10
omega_K = Z**4/(alpha_K+Z**4)
omega_L = Z**4/(alpha_L+Z**4)
omega_M = Z**4/(alpha_M+Z**4)

plt.figure()
plt.plot(Z,omega_K, label='K')
plt.plot(Z,omega_L, label='L')
plt.plot(Z,omega_M, label='M')
plt.legend()
plt.xlabel('atomic number Z')
plt.ylabel('fluorescent yield $\omega$ [photons/ionization]')
plt.axhline(y=0., color='gray', linewidth=0.5);

## uncomment lines below for log scale 
# plt.gca().set_yscale('log')
# plt.ylim(1e-4, 0.9)
Loading...
omega_K[13], Z[13]
(0.03699480747600191, 14.0)

Comparison

The data and formula agree quite well given the simplicty of the model.

fname = './images/fluorescenceYield3.png'
im = plt.imread(fname)
Z =  np.linspace(1,100,100)

alpha_K = .8e6
alpha_L = 4.5e7
alpha_M = 6*1e8#2.2e10
omega_K = Z**4/(alpha_K+Z**4.005)
omega_L = Z**4/(alpha_L+Z**4.1)
omega_M = Z**4/(alpha_M+Z**4)


plt.figure()

plt.imshow(im, cmap = 'gray', extent = (-25, 107,-.195,1.056))
plt.plot(Z,omega_K, label='K')
plt.plot(Z,omega_L, label='L')
plt.plot(Z,omega_M, label='M')
plt.legend()

plt.gca().set_aspect('auto')
#plt.axhline(y=0., color='gray', linewidth=0.5);
#plt.axhline(y=1., color='gray', linewidth=0.5);
#plt.axvline(x=0., color='gray', linewidth=0.5);
#plt.axvline(x=100., color='gray', linewidth=0.5);

plt.plot(np.arange(11,22,1) , [0.0192, 0.0265, 0.0357, 0.0470, 0.0604, 0.0761, 0.0942, 0.138, 0.163, 0.219, 0.250])
Loading...
0.314
0.347
0.381
0.445
0.479
0.540
0.567
0.597
0.622
0.691
0.730
0.830
0.850
0.859
0.867
0.895
0.901
Loading...
8**4/(alpha_K+8**4)
0.0045304923370969455

Energy Dispersive Spectrum

An energy dispersive X-ray spectrum (EDS)contains two different parts:

Spectrum

The Bremsstrahlung causes the background the characteristic X-ray peaks are sitting on.