baseline.shirley {baseline}R Documentation

Shirley Background Estimation


Shirley Background correction for X-ray Photoelectron Spectroscopy.


baseline.shirley(spectra, t = NULL, limits = NULL, maxit = 50, err = 1e-6)



matrix with only 1 y-coordinates by rows (i.e.: y = spectra[1,])


Optional vector of spectrum abscissa


list with the y coordinates between calculation of background. Ususally these are the extreme point of the data range.


max number of iteration


Tolerance of difference between iterations


The shape of the spectrum background or baseline is affected by inelastic energy loss processes, secondary electrons and nearby peaks. A reasonable approximation is essential for a qualitative and quantitative analysis of XPS data especially if several components interfere in one spectrum. The choice of an adequate background model is determined by the physical and chemical conditions of the measurements and the significance of the background to the information to be obtained. The subtraction of the baseline before entering the fit iterations or the calculation of the peak area can be an acceptable approximation for simple analytical problems. In order to obtain chemical and physical parameters in detail, however, it is absolutely necessary to include the background function in the iterative peak fit procedure. The primary function F(E) results from the experimentally obtained function M(E) and the background function U(E) as

F(E) = M(E)-U(E)

The kinetic energy E of the spectra can be described as

E = SE + SW * (i-1)

SE means the start energy in eV, SW is the step width in eV and i the channel number. i can assume values between 1 and N with N as the number of data points.

In case of baseline calculation before initiating the fit procedure, the background is set to the averaged experimental function M(E) in a sector around the chosen start and end channels. With i{_1} as left channel (E{_1}: low energy side) and i{_2} as right channel (E{_2}: high energy side) the simulation of the baseline is obtained as




If ZAP is the number of points used for averaging (can be set in the preferences), the intensity of the averaged measuring function at the low energy side is calculated by


and at the high energy side by


In many cases the Shirley model turned out to be a successful approximation for the inelastic background of core level peaks of buried species, which suffered significantly from inelastic losses of the emitted photoelectrons. The calculation of the baseline is an iterative procedure. The number of iteration cycles should be chosen high enough so that the shape of the obtained background function does not change anymore. The analytical expression for the Shirley background is

U(E)= \int_{E}^{∞}F(E')dE'+c

The algorithm of Proctor and Sherwood ([1] A. Proctor, P.M.A. Sherwood, Anal. Chem. 54 (1982) 13) is based on the assumption that for every point of the spectrum the background intensity generated by a photoelectron line is proportional to the number of all photoelectrons with higher kinetic energy. The intensity of the background U(i) in channel i is given by


where a and b are the measured intensities in channel i{_1} and i{_2}, respectively, and P(i) and Q(i) represent the effective peak areas to lower and higher kinetic energies relative to the channel under consideration. An iterative procedure is necessary because P, Q, and U(i) are unknown. In first approximation U(i) = b is used.

The function baseline.shirley implements the shirley baseline. It is an iterative algorithm. The iteration stops when the deviation between two consequent iteration is lower than err or when the max number of iterations maxit is reached.


The baseline function return an object of class baseline.


A. Proctor, P.M.A. Sherwood, Anal. Chem. 54 (1982) 13.

See Also



Data <- O1s

## The same example with C1s data 
# data("C1s")
# Data <- C1s

Y <- Data[2,, drop = FALSE]
X <- Data[1,]

corrected <- baseline(Y, method = "shirley", t = X)
plot(corrected, rev.x = TRUE, labels = X)

## Not run: 
# Dependent on external software
baselineGUI(Y, labels=X, method="shirley")

## End(Not run)

[Package baseline version 1.3-1 Index]