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
array1D-array containing the x-values (energies) of the spectrum.
y
array1D-array containing the y-values (intensities) of the spectrum.
amplitude
floatstep height \(A\) of the fermi edge.
center
floatposition \(\mu\) of the edge (Fermi level)
kt
floatBoltzmann constant in eV/K multiplied by temperature T in Kelvin (\(k_B T\))
sigma
floatBroadening 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 (
listofstr, 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
array1D-array containing the x-values (energies) of the spectrum.
y
array1D-array containing the y-values (intensities) of the spectrum.
amplitude
floatamplitude \(A\) of the peak profile
sigma
floatBroadening of the Doniach-Sunjic.
gamma
floatAsymmetry of the Doniach-Sunjic.
center
floatCenter of the peak profile.
gaussian_sigma
floatBroadening 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 (
listofstr, 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
array1D-array containing the x-values (energies) of the spectrum.
y
array1D-array containing the y-values (intensities) of the spectrum.
amplitude
floatamplitude \(A\) of the larger peak (P1) of the dublett.
sigma
floatDoniach-broadening of the larger peak (P1) of the dublett.
gamma
floatAsymmetry of the larger peak (P1) of the dublett.
center
floatCenter of peak P1.
soc
floatDistance (\(d\)) in energy between the two peaks.
height_ratio
floatRatio (\(r\)) of the amplitude of the smaller peak with respect to the larger one.
fct_coster_kronig
floatFactor \(ckf\) scales P2’s broadening with respect to P1 (Coster-Kronig effect).
gaussian_sigma
floatBroadening 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 (
listofstr, 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:
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.