EXAFS Extended X-ray Absorption Fine Structure · an orientation for new practitioners

The wiggles above an absorption edge

Measuring bond lengths with an interference pattern

Tune X-rays through the absorption edge of one element and each atom of that element ejects a photoelectron. The part of that electron wave which scatters off the neighbours and comes back interferes with the part still on its way out — and that interference is written into the absorption coefficient as a decaying ripple. Read the ripple and you get distances to about a hundredth of an ångström, from any sample, ordered or not.

Simulated Cu K-edge — μ(E) hover the plot
The whole experiment in one trace. Below the edge the element is transparent; at E0 = 8979 eV the Cu 1s electron can be promoted and absorption jumps; above it, XANES (strong, multiple-scattering-dominated) gives way to the weak, sine-like EXAFS oscillations that this page is about.
μ(E)

What you actually measure

An X-ray absorption experiment is a very simple experiment done very carefully. A monochromator — usually a pair of Si(111) or Si(220) crystals — picks a single photon energy out of a synchrotron beam, and you step that energy through the absorption edge of the element you care about while recording how much beam the sample removes.

In transmission, ion chambers before and after the sample give I0 and I1, and Beer–Lambert gives the absorption directly: μ(E)x = ln(I0/I1). For dilute samples the edge step disappears into the background, so instead you count the element's own fluorescence with an energy-discriminating detector and use μ(E) ∝ If/I0. A third ion chamber and a reference foil sit downstream so that every single scan carries its own energy calibration.

The edge energy is a core-level binding energy, so it belongs to one element and one core level. That is the origin of the technique's defining virtue: you choose which atom you are standing on, and the rest of the sample is invisible.

EdgeEnergyTransitionPractical note
Ti K4966 eV1s → εpHe paths or vacuum needed; air absorbs badly
Fe K7112 eV1s → εpThe foil most beamlines calibrate on
Cu K8979 eV1s → εpThe standard test sample for EXAFS
Pb L313035 eV2p3/2 → εdHeavy elements: use an L edge, K is out of range

Three regions get named, and the boundaries are conventions rather than physics. The pre-edge region is background. XANES (roughly the first 50 eV) is intense and dominated by multiple scattering and by the density of unoccupied states — it reports on oxidation state and site symmetry, and it is usually read by comparison with standards rather than fitted. EXAFS is everything above that, out to as far as the signal survives: weak, oscillatory, and quantitatively interpretable.

A workable transmission sample
Δμx ≈ 1
edge step, in absorption lengths
μx ≲ 2.5
total absorption above the edge
uniform
pinholes and thickness variation damp the oscillations and distort amplitudes — they bias N and σ² low and high respectively
grain size
smaller than one absorption length; sieve, and dilute with BN or cellulose
Sample preparation is where most bad EXAFS comes from, and no amount of fitting repairs it. Fluorescence has its own version of this problem, called self-absorption, which flattens the oscillations of concentrated samples.

Cooling the sample is the cheapest improvement available. Thermal disorder enters as an exponential damping term, and a cryostat routinely turns an unusable second shell into a fittable one.

sin(2kR)

Where the oscillations come from

X-ray absorption is a transition from a core state to an unoccupied final state. Above the edge, that final state is a photoelectron travelling outward. For an isolated atom there is nothing else to say, and μ(E) decays smoothly.

Put neighbours around the absorber and the outgoing electron wave scatters off them. Part of it is backscattered and returns to the absorbing atom, where the final state is now the sum of the outgoing wave and everything that has come back. The transition matrix element depends on the amplitude of that final state at the absorber, so absorption is modulated by whether the returning wave arrives in phase or out of phase with the outgoing one.

The photoelectron's wavelength is set by its kinetic energy, so sweeping the X-ray energy sweeps the wavelength continuously. A neighbour at distance R imposes a round trip of 2R, so the interference cycles through constructive and destructive as sin(2kR + φ). That is the whole idea: a distance becomes a frequency.

Two consequences follow immediately. Because the interference is evaluated inside the tiny volume of the core orbital, EXAFS is a strictly local probe and needs no long-range order — glasses, liquids, solutions and nanoparticles are as tractable as crystals. And because the returning electron must survive the round trip, the useful range is only a few ångströms.

Outgoing and backscattered waves
6.0 Å−1
2.55 Å
Drag k and watch the returning crest at the absorber flip between in-phase and out-of-phase. The trace below is the single-shell χ(k) that results; the marker is the current k. Note that the phase shift φ(k) is included, so the crests do not fall exactly where naive path-length counting would put them.
χ(k)

From energy to wavenumber

Since the physics is a wave phenomenon, the natural variable is not photon energy but photoelectron wavenumber. Take the photon energy above the edge as the electron's kinetic energy and

k = √2me(E − E0)ℏ ≈ 0.5123 √E − E0 [eV] Å−1

so 50 eV above the edge is k ≈ 3.6 Å−1 and 1000 eV above it is k ≈ 16 Å−1. Real data typically become useless somewhere between 12 and 18 Å−1.

The fine structure itself is defined as the fractional modulation of the absorption:

χ(k) = μ(E) − μ0(E) Δμ0(E0)

The numerator subtracts the smooth atomic-like background; the denominator normalises by the measured edge step so that χ is per absorbing atom and independent of sample thickness and concentration.

μ0 is not measured. It is a smooth spline drawn through the data, and choosing it is the most subjective step in the whole analysis. The standard algorithm (AUTOBK) constrains the spline so that it cannot absorb signal from above a chosen distance Rbkg, typically about 1 Å or half the first-shell distance. Set it too high and the spline eats your first shell; too low and low-frequency background survives into χ(k).

Finally, χ(k) is always plotted and fitted with a k-weight: k¹, k² or k³. The oscillations decay steeply with k, and multiplying by a power of k rebalances the plot so that the whole range contributes. It is not cosmetic: light backscatterers dominate at low k and heavy ones at high k, so fitting with several k-weights at once is a genuine discriminator between candidate structures.

The same signal, three weightings
k¹χ(k) k²χ(k) k³χ(k)
Each trace is normalised to its own maximum so the shapes can be compared. Higher k-weight pushes emphasis toward high k, where heavy scatterers live and where noise also lives.
the eqn

The EXAFS equation, term by term

Almost everything you will do as a practitioner is an argument about one of these eight factors. Select a term to see what it does and how it will bite you.

χ(k) = · · ·
χ(R)

Fourier transform: distances as peaks

A sum of sines in k, each with a frequency set by 2R, is exactly the thing a Fourier transform separates. Transforming knχ(k) over a finite window gives a complex function of R whose magnitude shows a peak for each shell. This was the original insight of Sayers, Stern and Lytle in 1971, and it is what turned a curiosity into a structural technique.

Three things about that plot need to be said out loud, because every newcomer gets them wrong at least once.

  • The peaks are not at the bond lengths. The phase shift φ(k) has a roughly linear part, and a linear term in the phase is a shift in the conjugate variable. Peaks appear 0.2–0.5 ångström short. The Cu–Cu bond at 2.55 Å shows up near 2.2 Å.
  • It is not a radial distribution function. Peak heights are weighted by F(k), σ², λ(k) and by your choice of k-weight and window. A large peak can be four heavy atoms or twelve light disordered ones.
  • Some features are artefacts of the transform. A finite k range produces truncation ripples and side lobes; that is why a window function (Hamming, Kaiser–Bessel) with a soft edge dk is applied first.

Fitting is normally done in R space, over a window that isolates the shells you intend to model, but the model itself is always built in k space and transformed identically to the data. Fitting the complex transform — real and imaginary parts, not just the magnitude — is what makes the distances precise, because the phase carries the information that the magnitude throws away.

The simulator below is the fastest way to build intuition. Try: raise σ² and watch the high-k end vanish before the peak does; switch the neighbour from O to Pb and watch the signal move to high k; turn on a second shell 0.3 Å away and watch a beat appear that no single sine could produce.

Two shells whose distances differ by ΔR beat with a period π/ΔR in k. If that period is longer than your usable k range, you cannot resolve them — which is the whole content of the resolution limit δR ≈ π/(2kmax), about 0.11 Å for kmax = 14 Å−1.

Live EXAFS simulator
Shell 1
12.0
2.55 Å
0.0085 Ų
6.0
2.85 Å
0.0085 Ų
Transform
3.0
14.0
total kⁿχ(k) shell 1 shell 2
Top: the weighted oscillations, with the Hamming window drawn as a faint envelope. Bottom: the magnitude of the Fourier transform. The dashed vertical marks sit at the true R values you dialled in — the peaks do not land on them, and that gap is the phase shift. Backscattering amplitudes and phases here are a smooth parametrisation chosen to reproduce the right trends with Z; a real analysis uses FEFF.
the fit

Getting numbers out

You do not fit the EXAFS equation with free-floating F(k) and φ(k); those are computed ahead of time. You give FEFF a plausible atomic cluster, it builds self-consistent muffin-tin potentials, enumerates the scattering paths, and returns Fj(k), φj(k) and λ(k) for each one. The fit then adjusts a small number of physically meaningful parameters per path — typically ΔR, N (through S02N), σ² and a shared ΔE0 — until the model matches the data over a chosen R window.

The single most important discipline is knowing how few parameters you are entitled to. A band-limited signal measured over a finite range contains a finite number of independent points:

Nidp ≈ 2 Δk ΔR / π

For a good first-shell dataset — k from 3 to 14 Å−1, R from 1 to 3 Å — that is about 14–16 independent points, depending on which additive constant you adopt. Four variables per path means you are already at the limit with three or four paths, and a fit with more free parameters than independent points is not a fit, whatever the software reports.

Two parameter pairs are strongly correlated and no amount of good data fully separates them: N with σ² (both set the amplitude, and S02 joins the same fight), and R with ΔE0 (both set the phase). Always look at the correlation matrix; a fit with a 0.95 correlation between N and σ² is reporting one number, not two.

The usual defences are constraints and restraints: one ΔE0 for all paths, coordination numbers fixed by known stoichiometry, σ² tied across chemically similar paths or to an Einstein/correlated-Debye temperature, fits performed simultaneously with k¹, k² and k³ weighting, and where possible with data from two edges or several temperatures fitted together.

What a fit should report
R-factor
fractional misfit; below about 0.02 is a good first-shell fit, below 0.05 tolerable for a complex one
χ²ν
reduced chi-square; useful for comparing models on the same data, rarely near 1 because measurement uncertainties are underestimated
Nidp, Nvar
independent points and number of variables — both, always
correlations
at least every pair above ~0.8
Uncertainties from a well-behaved first-shell fit are typically ±0.01–0.02 Å in R, 10–20% in N, ±1 eV in ΔE0. Outer shells are worse on all counts.

EXAFS reports an average over every atom of that element in the beam. A sample containing two distinct sites gives one averaged signal, and a broad or asymmetric distance distribution is not described by a Gaussian σ² at all — it needs higher cumulants, and ignoring them systematically shortens the fitted R.

scope

What it is good at, and what it is not

Strengths

  • Element-specific. You choose the absorbing atom by choosing an edge, and nothing else in the sample contributes.
  • No long-range order required. Glasses, melts, solutions, amorphous films, nanoparticles, single-atom catalysts, proteins.
  • Precise distances. First-shell R to 0.01–0.02 Å, better than most diffraction refinements achieve for a local environment.
  • Dilute samples. Fluorescence detection reaches parts-per-million concentrations at a modern undulator beamline.
  • In situ and operando. Hard X-rays penetrate cells, furnaces and electrolytes; time resolution reaches milliseconds with quick-scanning or dispersive optics.
  • Complementary to diffraction. Diffraction gives the long-range average; EXAFS gives the local truth, and the two disagree in interesting ways.

Limits

  • Short range. Nothing beyond roughly 5 Å, and usually much less at room temperature.
  • Poor Z discrimination. Neighbours differing by fewer than about three atomic numbers are effectively indistinguishable.
  • Coordination numbers are soft. Correlated with σ² and S02; 10–20% is a good day.
  • Averaging. Mixtures and multiple sites give one blended signal with no intrinsic way to separate them.
  • Limited resolution. Two shells closer than about π/2kmax ≈ 0.1 Å cannot be separated.
  • No direct angles. Bond angles enter only indirectly, through multiple-scattering paths, and only when those paths are strong.
  • Model-dependent. The answer is conditioned on the cluster you handed to FEFF; a good fit is evidence for a model, not proof of it.
next

Where to go from here

Software you will actually use

Athena
data reduction: alignment, deglitching, normalisation, background removal, Fourier transforms
Artemis
fitting against FEFF paths; both are part of the Demeter package built on IFEFFIT
Larch / xraylarch
the modern Python successor; scriptable, and the right choice for batch or automated analysis
FEFF
the ab initio scattering calculation that supplies F(k), φ(k) and λ(k)

The most valuable thing a new student can do is measure a Cu or Fe foil in transmission, reduce it, and fit the first shell against the known crystal structure. It takes an afternoon, it exercises every step above, and you know the right answer in advance.

Reading

1971
D. E. Sayers, E. A. Stern, F. W. Lytle, Phys. Rev. Lett. 27, 1204 — the paper that introduced the Fourier transform of χ(k).
1988
D. C. Koningsberger & R. Prins (eds.), X-Ray Absorption, Wiley — the classic reference volume.
2000
J. J. Rehr & R. C. Albers, Rev. Mod. Phys. 72, 621 — the theory behind FEFF.
2005
B. Ravel & M. Newville, J. Synchrotron Rad. 12, 537 — the Athena/Artemis paper.
2013
S. Calvin, XAFS for Everyone, CRC Press — the friendliest book-length introduction.
2014
M. Newville, “Fundamentals of XAFS”, Rev. Mineral. Geochem. 78, 33 — the best short review; start here.