X-ray reflectivity
X-ray reflectivity is a surface-sensitive analytical technique used in chemistry, physics, and materials science to characterize surfaces, thin films and multilayers. It is related to the complementary techniques of neutron reflectometry and ellipsometry.
The basic idea behind the technique is to reflect a beam of x-rays from a flat surface and to then measure the intensity of x-rays reflected in the specular direction. If the interface is not perfectly sharp and smooth then the reflected intensity will deviate from that predicted by the law of Fresnel reflectivity. The deviations can then be analyzed to obtain the density profile of the interface normal to the surface.
The technique appears to have first been applied to x-rays by Lyman G. Parratt in 1954. Parratt's initial work explored the surface of copper-coated glass, but since that time the technique has been extended to a wide range of both solid and liquid interfaces.
The basic mathematical relationship which describes specular reflectivity is fairly straightforward. When an interface is not perfectly sharp, but has an average electron density profile given by, then the X-ray reflectivity can be approximated by:
Here is the reflectivity,, is the x-ray wavelength, is the density deep within the material and is the angle of incidence. Below the critical angle , 100% of incident radiation is reflected,. For,. Typically one can then use this formula to compare parameterized models of the average density profile in the z-direction with the measured X-ray reflectivity and then vary the parameters until the theoretical profile matches the measurement.
For films with multiple layers, X-ray reflectivity may show oscillations with Q, analogous to the Fabry-Pérot effect, here called Kiessig fringes. The period of these oscillations can be used to infer layer thicknesses, interlayer roughnesses, electron densities and their contrasts, and complex refractive indices, for example using the Abeles matrix formalism or the recursive Parratt-formalism as follows:
where Xj is the ratio of reflected and transmitted amplitudes between layers j and j+1, dj is the thickness of layer j, and rj,j+1 is the Fresnel coefficient for layers j and j+1
where kj,z is the z component of the wavenumber. For specular reflection where the incident and reflected angles are equal, Q used previously is two times kz because. With conditions RN+1 = 0 and T1 = 1 for an N-interface system, all Xj can be calculated successively. Roughness can also be accounted for by adding the factor
where is a standard deviation.
Thin film thickness and critical angle can also be approximated with a linear fit of squared incident angle of the peaks in rad2 vs unitless squared peak number as follows:
Curve fitting
X-ray reflectivity measurements are analyzed by fitting to the measured data a simulated curve calculated using the recursive Parratt's formalism combined with the rough interface formula. The fitting parameters are typically layer thicknesses, densities and interfacial roughnesses. Measurements are typically normalized so that the maximum reflectivity is 1, but normalization factor can be included in fitting, as well. Additional fitting parameters may be background radiation level and limited sample size due to which beam footprint at low angles may exceed the sample size, thus reducing reflectivity.Several fitting algorithms have been attempted for X-ray reflectivity, some of which find a local optimum instead of the global optimum. The Levenberg-Marquardt method finds a local optimum. Due to the curve having many interference fringes, it finds incorrect layer thicknesses unless the initial guess is extraordinarily good. The derivative-free simplex method also finds a local optimum. In order to find global optimum, global optimization algorithms such as simulated annealing are required. Unfortunately, simulated annealing may be hard to parallelize on modern multicore computers. Given enough time, simulated annealing can be shown to find the global optimum with a probability approaching 1, but such convergence proof does not mean the required time is reasonably low. In 1998, it was found that genetic algorithms are robust and fast fitting methods for X-ray reflectivity. Thus, genetic algorithms have been adopted by the software of practically all X-ray diffractometer manufacturers and also by open source fitting software.
Fitting a curve requires a function usually called fitness function, cost function, fitting error function or figure of merit. It measures the difference between measured curve and simulated curve, and therefore, lower values are better. When fitting, the measurement and the best simulation are typically represented in logarithmic space.
From mathematical standpoint, the fitting error function takes into account the effects of Poisson-distributed photon counting noise in a mathematically correct way:
However, this function may give too much weight to the high-intensity regions. If high-intensity regions are important, this may not be a problem, but the fit may not visually agree with the measurement at low-intensity high-angle ranges.
Another popular fitting error function is the 2-norm in logarithmic space function. It is defined in the following way:
Needless to say, in the equation data points with zero measured photon counts need to be removed. This 2-norm in logarithmic space can be generalized to p-norm in logarithmic space. The drawback of this 2-norm in logarithmic space is that it may give too much weight to regions where relative photon counting noise is high.
Open source software
Diffractometer manufacturers typically provide commercial software to be used for X-ray reflectivity measurements. However, several open source software packages are also available: GenX is a commonly used open source X-ray reflectivity curve fitting software. It is implemented in the Python programming language and runs therefore on both Windows and Linux. Motofit runs in the IGOR Pro environment, and thus cannot be used in open-source operating systems such as Linux. Micronova XRR runs under Java and is therefore available on any operating system on which Java is available.Reflex is a standalone software dedicated to the simulation and analysis of X-rays and neutron reflectiity from multilayers. REFLEX is a user-friendly freeware program working under Windows and Linux platforms.