Peak-like/Step-like models

The following sections documents the peak-like/step-like models implemented as an extension to the lmfit build-in models . The models are thereby mostly based on the lmfit lineshapes module.

FermiEdgeModel

class lmfitxps.models.FermiEdgeModel(*args, **kwargs)[source]

This Model function is intended to fit the Fermi edge in XPS spectra. To do so, a Fermi-Dirac Distribution is convoluted with a Gaussian.

The implementation is based on the Gaussian and thermal_distribution (form=’fermi’) lineshapes of the LMFIT package. The convolution is calculated using the FFT-Convolution implemented in scipy.signal.fftconvolve.

The Convolution is given by:

\[(FD * G)(E, A, \mu, k_B T, \sigma) = A \cdot \int_{-\infty}^{\infty} FD(E', \mu,k_B T) G(E - E', \sigma)\, dE'\]
Thereby is:
  • \(A\) is the step-height of the Fermi edge,

  • \(\mu\) is the Fermi level,

  • \(k_B T\) is the Boltzmann constant in eV/K multiplied by the temperature T in Kelvin (i.e. at room temperature: k_B T=k_B*T=8.6173e-5 eV/K*300K=0.02585 eV),

  • \(\sigma\) is the broadening parameter of the Gaussian kernel.

Table 7 Model-specific available parameters

Parameters

Type

Description

x

array

1D-array containing the x-values (energies) of the spectrum.

y

array

1D-array containing the y-values (intensities) of the spectrum.

amplitude

float

step height \(A\) of the fermi edge.

center

float

position \(\mu\) of the edge (Fermi level)

kt

float

Boltzmann constant in eV/K multiplied by temperature T in Kelvin (\(k_B T\))

sigma

float

Broadening of the gaussian kernel.

Hint

The FermiEdgeModel class inherits from lmfit.model.Model and only extends it. Therefore, the lmfit.model.Model class parameters are inherited as well.

LMFIT: Common models documentation

Parameters:
  • independent_vars (list of str, optional) – Arguments to the model function that are independent variables default is [‘x’]).

  • prefix (str, optional) – String to prepend to parameter names, needed to add two Models that have parameter names in common.

  • nan_policy ({'raise', 'propagate', 'omit'}, optional) – How to handle NaN and missing values in data. See Notes below.

  • **kwargs (optional) – Keyword arguments to pass to Model.

Notes

1. nan_policy sets what to do when a NaN or missing value is seen in the data. Should be one of:

  • ‘raise’ : raise a ValueError (default)

  • ‘propagate’ : do nothing

  • ‘omit’ : drop missing data

Note

The class functions are inherited from the lmfit Model class. For details, please refer to their documentation at lmfit Model Class Methods.

ConvGaussianDoniachSinglett

class lmfitxps.models.ConvGaussianDoniachSinglett(*args, **kwargs)[source]

A model based on a convolution of a Gaussian and a Doniach-Sunjic profile. The model is designed for fitting XPS signals with asymmetry. The Gaussian thereby represents the gaussian-like influences of the experimental setup and the Doniach-Sunjic represents the sample’s physics.

The implementation is based on the Gaussian and Doniach lineshapes of the LMFIT package. The convolution is calculated using the FFT-Convolution implemented in scipy.signal.fftconvolve.

The Convolution is, in analogy to the Voigt profile given by:

\[(DS * G)(E, A, \mu, \gamma, \alpha, \sigma) = A \cdot \int_{-\infty}^{\infty} DS(E', \mu,\gamma,\alpha) G(E - E', \sigma)\, dE'\]

The Doniach-Sunjic profile (\(DS\)) is convolved with the Gaussian kernel (\(G\)).

Thereby:
  • \(A\) is the amplitude of the peak profile,

  • \(\mu\) is the center of the peak,

  • \(\gamma\) represents the broadening of the Doniach-Sunjic lineshape,

  • \(\alpha\) is the asymmetry of the Doniach-Sunjic lineshape,

  • \(\sigma\) is the broadening parameter of the Gaussian kernel.

Table 8 Model-specific available parameters

Parameters

Type

Description

x

array

1D-array containing the x-values (energies) of the spectrum.

y

array

1D-array containing the y-values (intensities) of the spectrum.

amplitude

float

amplitude \(A\) of the peak profile

sigma

float

Broadening of the Doniach-Sunjic.

gamma

float

Asymmetry of the Doniach-Sunjic.

center

float

Center of the peak profile.

gaussian_sigma

float

Broadening of the gaussian kernel.

Hint

The ConvGaussianDoniachSinglett class inherits from lmfit.model.Model and only extends it. Therefore, the lmfit.model.Model class parameters are inherited as well.

LMFIT: Common models documentation

Parameters:
  • independent_vars (list of str, optional) – Arguments to the model function that are independent variables default is [‘x’]).

  • prefix (str, optional) – String to prepend to parameter names, needed to add two Models that have parameter names in common.

  • nan_policy ({'raise', 'propagate', 'omit'}, optional) – How to handle NaN and missing values in data. See Notes below.

  • **kwargs (optional) – Keyword arguments to pass to Model.

Notes

1. nan_policy sets what to do when a NaN or missing value is seen in the data. Should be one of:

  • ‘raise’ : raise a ValueError (default)

  • ‘propagate’ : do nothing

  • ‘omit’ : drop missing data

Note

The class functions are inherited from the lmfit Model class. For details, please refer to their documentation at lmfit Model Class Methods.

ConvGaussianDoniachDublett

class lmfitxps.models.ConvGaussianDoniachDublett(*args, **kwargs)[source]

This model represents a dublett peak profile as observed in XPS spectra. The model is basically the sum of two singlett peak profiles separated by the energy distance of the two orbitals with different spin-orbit state. The implementation is therefore similar to the one of ConvGaussianDoniachSinglett. It based on a convolution of a Gaussian and the sum of two Doniach-Sunjic profiles.

The implementation is based on the Gaussian and Doniach lineshapes of the LMFIT package. The convolution is calculated using the FFT-Convolution implemented in scipy.signal.fftconvolve.

\[\begin{split}&((DS_1+DS_2) * G)(E, A, \mu, \gamma, \alpha, \sigma, d, r, ckf) \\ &= A \cdot \int_{-\infty}^{\infty} (DS_1(E', \mu,\gamma,\alpha)+DS_2(E', \mu,\gamma,\alpha, d,r,ckf)) G(E - E', \sigma)\, dE'\end{split}\]
Thereby:
  • \(A\) is the amplitude of the larger peak of the dublett (P1),

  • \(r\) defines the ratio of the height of the smaller dublett-peak (P2) with respect to the larger one,

  • \(\mu\) is the center of the larger peak (P1),

  • \(d\) is the energy distance between the two peaks as an absolute value

  • \(\gamma\) represents the broadening of P1,

  • \(ckf\) scales the broadening of P2 with respect to P1 to represent the Coster-Kronig effect.

  • \(\alpha\) is the asymmetry of both peaks,

  • \(\sigma\) is the broadening parameter of the Gaussian kernel.

Table 9 Model-specific available parameters

Parameters

Type

Description

x

array

1D-array containing the x-values (energies) of the spectrum.

y

array

1D-array containing the y-values (intensities) of the spectrum.

amplitude

float

amplitude \(A\) of the larger peak (P1) of the dublett.

sigma

float

Doniach-broadening of the larger peak (P1) of the dublett.

gamma

float

Asymmetry of the larger peak (P1) of the dublett.

center

float

Center of peak P1.

soc

float

Distance (\(d\)) in energy between the two peaks.

height_ratio

float

Ratio (\(r\)) of the amplitude of the smaller peak with respect to the larger one.

fct_coster_kronig

float

Factor \(ckf\) scales P2’s broadening with respect to P1 (Coster-Kronig effect).

gaussian_sigma

float

Broadening of the gaussian kernel.

Hint

The ConvGaussianDoniachDublett class inherits from lmfit.model.Model and only extends it. Therefore, the lmfit.model.Model class parameters are inherited as well.

LMFIT: Common models documentation

Parameters:
  • independent_vars (list of str, optional) – Arguments to the model function that are independent variables default is [‘x’]).

  • prefix (str, optional) – String to prepend to parameter names, needed to add two Models that have parameter names in common.

  • nan_policy ({'raise', 'propagate', 'omit'}, optional) – How to handle NaN and missing values in data. See Notes below.

  • **kwargs (optional) – Keyword arguments to pass to Model.

Notes

1. nan_policy sets what to do when a NaN or missing value is seen in the data. Should be one of:

  • ‘raise’ : raise a ValueError (default)

  • ‘propagate’ : do nothing

  • ‘omit’ : drop missing data

Note

The class functions are inherited from the lmfit Model class. For details, please refer to their documentation at lmfit Model Class Methods.

Approximation to the FWHM of Doniach-Sunjic Line Shape

The Doniach-Sunjic line shape is commonly used in the analysis of X-ray photoelectron spectroscopy (XPS) data, despite having several limitations. Its popularity in the XPS community stems from its ability to accurately represent asymmetric XPS peaks.

However, there are notable challenges associated with the Doniach-Sunjic line shape:

  • The area under this line shape is ill-defined and infinite.

  • There is no closed formula available for calculating its full width at half maximum (FWHM).

To approximate the FWHM, the following formula is employed:

\[\text{FWHM}_{DS} = \gamma \cdot \left(2 + \alpha \cdot a + (\alpha \cdot b)^4\right)\]

In this formula:

  • \(\gamma\) denotes the broadening parameter of the Doniach-Sunjic line shape.

  • \(\alpha\) represents the asymmetry of the line shape.

  • The constants \(a = 2.5135\) and \(b = 3.6398\) provide an approximation for the FWHM with an error of less than 2% within a reasonable range of asymmetry, specifically when \(\alpha < 0.25\).

When \(\alpha = 0\), the Doniach-Sunjic line shape simplifies to a Lorentzian line shape, and thus, this approximation formula corresponds to the FWHM of a Lorentzian as well.