XPS module


Eventually this module will be expanded to cover the peak-fitting functionality of the BLOCHfit Igor module. Until then, it’s just a few calculators and a helper function for labelling features in an XPS overview.


For a chosen element, display the binding energy and kinetic energy for all core levels. A red entry means that first-order light cannot excite it, but contamination from higher orders may still cause the feature to appear in your measurements. The database covers up to Bi and is based on data from webelements.com, which in turn references mostly Cardona and Ley, Photoemission in Solids I (1978)

def XPS.searchByElement()




Sometimes you can have an unknown peak and you need to reverse-lookup what it could come from based on its kinetic or binding energy:

def XPS.searchByEnergy()




But since binding energies vary slightly depending on environment and/or the photon energy calibration might not be perfect, an alternative fingerprint if you have a multiplet is to look up candidates based on the spin-orbit splitting:

def XPS.searchBySplitting()




Now that you have hopefully identified all the peaks in your XPS spectrum, here is a helper function for labelling them.

def XPS.addPeakLabel( axis,

Required parameters

axis: The matplotlib axis object containing the XPS trace

spectrum: The XPS spectrum being plotted

xrange: Two-element list containing the start and end values of the subregion that will be searched for a peak

Optional parameters

hv: If ‘None’, will assume that you plotted the spectrum ‘as-is’ without modifying the energy axis. If non-zero AND the axis is called ‘Kinetic energy’, it will assume that you asked the plotting function to convert to binding energy, and it will do the same when searching for peaks. Default = None

label: String to label the peak with. Default = ‘’ (i.e. empty string)


Nothing (adds a label to an already-existing matplotlib plot)