erlab.analysis.xps

Functions

get_cross_section(element)

Get the photoionization cross section curves for a given element.

get_edge(element, *[, hv, work_function, ...])

Get the x-ray absorption edges for a given element.

get_total_cross_section(element)

Get the total photoionization cross section curve for a given element.

Classes

CoreLevelEdge(edge, kinetic_energies)

Absorption edge and harmonic kinetic energies for one core level.

class erlab.analysis.xps.CoreLevelEdge(edge, kinetic_energies)[source]

Bases: object

Absorption edge and harmonic kinetic energies for one core level.

Variables:
  • edge – Absorption edge in eV.

  • kinetic_energies – Mapping from harmonic order to photoelectron kinetic energy in eV.

Examples

>>> import erlab.analysis as era
>>> au_4f = era.xps.CoreLevelEdge.from_edge(
...     84.0, hv=1486.6, workfunction=4.5, max_harmonic=3
... )
>>> au_4f.edge
84.0
>>> au_4f.kinetic_energies
{1: 1398.1, 2: 2884.7}
edge: float
kinetic_energies: dict[int, float]
classmethod from_edge(edge, *, hv, workfunction=0.0, max_harmonic=1)[source]

Build a CoreLevelEdge from an absorption edge value.

Parameters:
  • edge (float) – Absorption edge in eV.

  • hv (float) – Fundamental photon energy in eV.

  • workfunction (float, default: 0.0) – Work function in eV subtracted from each harmonic kinetic energy.

  • max_harmonic (int, default: 1) – Highest harmonic order to include. The returned mapping contains orders 1 through max_harmonic.

Returns:

CoreLevelEdge – A record containing the absorption edge and the per-harmonic kinetic energies.

Return type:

CoreLevelEdge

Examples

>>> import erlab.analysis as era
>>> edge = era.xps.CoreLevelEdge.from_edge(
...     706.8, hv=1486.6, workfunction=4.5, max_harmonic=2
... )
>>> edge.kinetic_energies[1]
775.3
erlab.analysis.xps.get_cross_section(element)[source]

Get the photoionization cross section curves for a given element.

Data are based on the Elettra WebCrossSections service, which is based on Yeh and Lindau [1985].

Parameters:

element (str | int) – The element symbol, name, or atomic number. For example, "Fe", "Iron", or 26.

Returns:

dict – A dictionary mapping subshell orbital labels to 1D DataArrays with coordinate hv (photon energy in eV).

Return type:

dict[str, DataArray]

Examples

>>> import numpy as np
>>> import erlab.analysis as era
>>> curves = era.xps.get_cross_section("Cu")
>>> list(curves.keys())
['2s', '2p', '3s', '3p', '3d', '4s']
erlab.analysis.xps.get_edge(element, *, hv=None, work_function=0.0, max_harmonic=1)[source]

Get the x-ray absorption edges for a given element.

The values are taken from xraydb [Newville et al., 2023] which is based on the compilation described by Elam et al. [2002]. The values for core level edges can be treated as the binding energies of the corresponding electrons. When hv is provided, a conversion to kinetic energies is performed for each edge and its harmonics up to max_harmonic, using the provided work function.

Parameters:
  • element (str | int) – The element symbol, name, or atomic number. For example, "Fe", "Iron", or 26.

  • hv (float | None, default: None) – Optional photon energy in eV. When provided, the returned mapping contains CoreLevelEdge records with kinetic energies computed from each edge for the fundamental and higher harmonics up to max_harmonic.

  • work_function (float, default: 0.0) – Work function in eV used for the kinetic-energy conversion. Only valid when hv is provided.

  • max_harmonic (int, default: 1) – Highest harmonic order to include in the kinetic-energy calculation. Harmonics are computed as integer multiples of hv from 1 through max_harmonic. Only valid when hv is provided.

Returns:

dict – A dictionary mapping subshell labels to absorption edges in eV when hv is omitted. When hv is provided, the mapping values are CoreLevelEdge objects containing the absorption edge and per-harmonic kinetic energies.

Return type:

dict[str, float] | dict[str, CoreLevelEdge]

Notes

The returned values come from xraydb. In many XPS contexts these numbers are close to, and interpreted similarly to, core-level binding energies.

Examples

>>> import erlab.analysis as era
>>> edges = era.xps.get_edge("Fe")
>>> edges["2p3/2"]
706.8
>>> edges["3p3/2"]
52.7
>>> edges_ke = era.xps.get_edge("Fe", hv=1486.6, work_function=4.5, max_harmonic=2)
>>> fe_2p = edges_ke["2p3/2"]
>>> fe_2p.edge
706.8
>>> fe_2p.kinetic_energies
{1: 775.3, 2: 2261.9}
erlab.analysis.xps.get_total_cross_section(element)[source]

Get the total photoionization cross section curve for a given element.

Data are based on the Elettra WebCrossSections service, which is based on Yeh and Lindau [1985].

Parameters:

element (str | int) – The element symbol, name, or atomic number. For example, "Fe", "Iron", or 26.

Returns:

DataArray – A 1D DataArray with coordinate hv (photon energy in eV).

Return type:

DataArray