Skip to main content

X-ray photoelectron spectroscopy (XPS)

Future

  • Docmuentation (priority)
  • Add database of inelastic mean free path (IMFP) of common materials

X-ray Photonelectron Spectroscopy

Example

An example analyzing a Ge peak fit within CasaXPS.

import xps

# Shortcut for the XPS machine at Dalhousie
# xps_mach = 'Dalhousie'
# mach = xps.MACH_PARAM[xps_mach]
mach = {
    'coef' : [0.9033, -4.0724, 5.0677, 1.1066],
    'scale'     : 0.01,
    'work_func' : 4.6,
}
hv = xps.PHOTON_ENERGY['Al']

# Pass energy [eV], found from XPS operator
pe = 30

sfwagner_Ge = xps.sf.Ge['3d']['area']

data = xps.parser.CasaXPS('Ge_example.csv')

# Labels defined by user in CasaXPS fits
pk_lbl = 'Ge 3d'
be = data.binding_energy(pk_lbl)
area = data.area(pk_lbl)

ke = xps.kinetic_energy(be, hv, mach['work_func'])

t_fn = xps.transmission(ke, pe, mach['coef'], mach['scale'])
t_fn_wagner = 1/ke # Proportional to 1/KE

sf_mach = xps.sf_machine(sfwagner_Ge, t_fn, t_fn_wagner)

pk_corr = xps.peak_correction(area, sf_mach)

# NOTE Use the xps.XPSPeak(...) helper for convienence
# analyzed_Ge = xps.XPSPeak(pk_lbl, be, area, sfwagner_Ge, hv, pe, mach)

# NOTE Returns pandas.DataFrame with all parameters calculated.
# The user can also query parameters individually
# df = analyzed_Ge.get_data()

Matrix Factor corrections

If using multple elements within a matrix (e.g. an alloy), you can utilize the xps.matrix_factor function. You require the inelastic mean free path of electron scattering (imfp) of both species in bulk and the density, as well as the imfp of the matrix at the measured kinetic energies of both elements. For example, if you have two corrected peaks: pk_Mn_corr, and pk_Ge_corr. The imfp can be calculated using the TPP-2M equation for inelastic mean free path, found in the following reference:

S. Tanuma, C. J. Powel, D. R. Penn, Surf. Interf. Anal., Vol 21, 165 (1994)

import xps
# pk_Mn_corr and pk_Ge_corr calculated as in the example above

# a is the kinetic energy used to determine imfp of Ge in Bulk
imfp_matrix_a = 21.17
imfp_Ge_a = 29.84
rho_Ge_a = 5.32

# b is the kinetic energy used to determine imfp of Mn in Bulk
imfp_matrix_b = 14.17
imfp_Mn_b = 14.87
rho_Mn_b = 7.43

mat_fact = xps.matrix_factor(imfp_Ge_a, imfp_Mn_b,
                             mfp_matrix_a, mfp_matrix_b,
                             rho_Ge_a, rho_Mn_b)
relative_pk_Ge_corr = (pk_Ge_corr/pk_Mn_corr)*mat_fact

# NOTE because Mn is used as the normalizing component we can use its
# corrected peak value directly, all other elements require the matrix
# factor correction
print('Ratios of Mn and Ge in MnGe matrix')
print('Mn : {:0.4e}'.format(pk_Mn_corr))
print('Ge : {:0.4e}'.format(relative_pk_Ge_corr))

sfwagner.{db,py}: Empirically derived set of atomic sensitivity factors for XPS

The data in Appendix 5 is reproduced and provided here for non-profit use with permission of the publisher John Wiley & Sons Ltd.

"Practical Surface Analysis by Auger and X-ray Photoelectron Spectroscopy", D. Briggs and M. P. Seah, Appendix 5, p511-514, Published by J. Wiley and Sons in 1983, ISBN 0-471-26279

Copyright (c) 1983 by John Wiley & Sons Ltd.

The original set of data first appeared in the following resource: C. D. Wagner, L. E. Davis, M. V. Zeller, J. A. Taylor, R. M. Raymond and L. H. Gale, Surf. Interface Anal., 3. 211 (1981)

Any use of this data must include the citations above in any work.

Electron Inelastic Mean Free Path (IMFP)

Electron IMFP can be calculated from using the Tanuma, Powel, Penn modified (TPP-2M) equation derived from equations (3), (4b,c,d,e) and (8) in the following reference:

S. Tanuma, C. J. Powel, D. R. Penn, Surf. Interf. Anal., Vol 21, 165 (1994)

For convienence the IMFP TPP-2M equation is located in xps.scatter and can be used as such:

from xps import scatter

# Mn example
kinetic_energy = 1000 # Can be calculated from xps.kinetic_energy

rho = 7.43         # [g/cc]
Nv = 7             # valence electrons
M = 53.938         # atomic mass
bandgap_energy = 0 # [eV]

# Return SI units [m]
imfp_Mn = scatter.imfp_TPP2M(kinetic_energy, rho, M, Nv,
                             bandgap_energy, 'SI')

The value here can be used in the xps.matrix_factor calculations outlined above.

Metadata

Release files for xps 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xps 0.2.2
File Size Uploaded Provenance
xps-0.2.2.tar.gz 11.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for xps 0.2.2
File Interpreter ABI Platform
xps-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 28.2 kB

Release files / xps-0.2.2.tar.gz

Download URL xps-0.2.2.tar.gz
Size 11.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ec7977bbd95b60ae1a8b813bbbb85b5b1110a6b251151566302caabc26934a11
BLAKE2b-256 checksum
How to use checksums
36383e3506a40bbb4d98fed5cdedb452c75cb9eda830303afb601cb1e1b80eaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.2

Release files / xps-0.2.2-py3-none-any.whl

Download URL xps-0.2.2-py3-none-any.whl
Size 16.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78f922ea11a973358916d622709df2a4acf3722c4c19763e585b54386426954f
BLAKE2b-256 checksum
How to use checksums
3309b71688962ffdad5643ed446dfd4fffea22c9894408366e3e65da6b0fdebb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.2

Security for xps 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page