\(\renewcommand\AA{\unicode{x212B}}\)
Contents
To discuss sample corrections, specifically the absorption and multiple scattering, we must first define terms pertinent to the calculations of these corrections.
First, we define the total cross section per atom, which for the majority of elements, is equal to the sum of the element’s scattering and absorption cross sections:
where \(\lambda\) is the neutron wavelength, \(\sigma_s = \int_{\Omega} \frac{d\sigma}{d\Omega} \left( \lambda, 2\theta \right) d\Omega\), and \(\frac{d\sigma}{d\Omega} \left( \lambda, 2\theta \right)\) is the differential crosssection which is the crosssection (\(\sigma\)) per solid angle (\(d\Omega\)).
Typically, the scattering cross section is directly found from tabulated single atom values [1] and with good approximation, assumed independent of wavelength. If we observe the equation above for \(\sigma_s\), we have that it is equal to the integration of the differential cross section. Yet, for the typical diffraction experiment, the differential crosssection is exactly the quantity we wish to measure. Thus, to proceed one could chose from the following:
For the energies used to measure structure of materials, \(\sigma_s\) is to reasonable approximation independent of \(\lambda\). However, exceptions include nuclear resonances, strong Bragg scattering as in beryllium, and significant inelastic effects. [2]
For the absorption cross section, again typically the cross section is used from the same tabulated single atom values [1] but is only valid for the reference wavelength, 1.7982 \(\AA\), at which it was measured at. Thus, we can look up the value of \(\sigma_a (1.7982 \AA)\). Yet, the absorption cross section is a linear function of wavelength (away from nuclear resonances). Thus, we can calculate the absorption cross section at other wavelengths from:
NOTE: In Mantid, the reference wavelength is defined as a variable ReferenceLambda
in NeutronAtom.cpp
[3]. This variable should be used for consistency in all sample correction algorithms that
calculate \(\sigma_a (\lambda)\) from this reference wavelength.
The attenuation length is defined as:
where \(\rho\) is the atomic number density of the sample. Note that \(\rho\) is not the crystallographic or microscopic density of a unit cell but the macroscopic density of the bulk sample. If one were to measure a powder sample, the powder would not pack perfectly and thus there would be a given packing fraction, \(f\). Then, if the microscopic density is given as \(\rho_{micro}\), it is related to \(\rho\) via:
The definition of \(\rho\) is used throughout the rest of this documentation.
Methods for calculating the absorption corrections (and also the multiple scattering) generally fall into these categories:
The analytical and numerical integration methods generally provide a quicker solution, but at the expense of having to make assumptions about sample geometries and scattering processes that make them less flexible than the Monte Carlo techniques (integration and raytracing). However, in many cases analytical and numerical integration solutions are satisfactory and allow much more efficient analysis of results.
(Source code, png, hires.png, pdf)
Determination of the structure and/or dynamics of samples depends on the analysis of single scattering data. Overall, the absorption correction is a factor, \(A\), such that 0 < \(A\) < 1 . It is a factor that accounts for the loss of intensity from single scattering in the sample (or other component in the instrument). due to both scattering and capture events in the sample. The factor \(A\) is divided by the measured intensity. Thus, the absorption correction has an overall multiplicative enhancement of the measured intensity.
The figure shows how a general single scattering process might occur. The neutron travels a certain distance \(l_1\) through the sample before a single scattering event occurs in the volume element \(dV\) of the sample. Then, the neutron travels a final length \(l_2\) before leaving the sample and being picked up by a detector.
To formulate the absorption sample correction, first, we assume we have a homogeneous sample of a given shape that is fully illuminated by the incident beam. Then, the number of neutrons per unit solid angle scattered once by a volume element \(dV\) of the sample and seen by a detector is given by:
where \(J_0\) is the incident flux, \(\rho\) is the atomic number density, \(\frac{d\sigma}{d\Omega} \left( \theta \right)\) is the differential crosssection, \(l_1\) and \(l_2\) are the path lengths for incident neutrons to \(dV\) and from \(dV\) to the detector, respectively, and \(\lambda_1\) and \(\lambda_2\) are the incident and scattered wavelength, respectively.
Yet, this is only the contribution from a single volume element, or voxel, of the sample volume that contributes to a detector. Thus, if we integrate over the entire sample volume (all the voxels), we arrive at the total intensity of neutrons scattered once through an angle \(\theta\) and then leaving the sample without further scattering, given as:
In the last part of the equation for \(I_1(\theta)\), we have introduced the term \(A\), given as:
This is the basic absorption correction for a single sample volume (i.e. no container included, no partial correction factors, no partial illumination, etc.). NOTE: In some references, this term \(A\) is instead defined as the inverse \(A^{1}\). Some references use the notation here: [2] [4] [5] [7] [8] and [10], while others use the inverse notation: [6].
For elastic scattering, \(\lambda_1\) = \(\lambda_2\) = \(\lambda\) and we can simplify to:
When the scattering of a sample (liquid, powder, gas, etc.) is measured, the sample is often held in a thick sample container. This container contributes significantly to the measured neutron beam. Often the empty container is measured and the signal from the container (\(C\)) subtracted from the signal of sample plus container (\(S+C\)).
The PaalmanPings formalism (PPF) [4] provides a framework for correcting for individual component absorption contributions, or the partial absorption correction factors, when a sample is measured in a container and, possibly, one or more sample environments. PPF builds on the earlier work of Ritter [5], who described a graphical approach of accounting for partial absorption correction factors. The PPF goes beyond the work of Ritter in two important ways
In their analysis, Paalman and Pings show that the latter point is not generally of consequence since this region only exists for a few angstroms in most materials, but the ability to account for it is reassuring. The sample/container interaction could be of significant importance in cases where the container and sample are single crystal or polycrystalline.
Generally, the container measurement (neglecting multiple scattering and inelastic effects) is written:
The full PPF for the sample and container measurement (neglecting multiple scattering and inelastic effects) is written:
As discussed above, the final term in this expression is generally neglected.
The numerical and Monte Carlo integration approaches can be further extended in a number of ways:
where \(V = \int_V P(dV) D(dV) dV\) is the effective volume of the cylinder in the beam.
Indicates the energy modes that the algorithm can accommodate:
Legend for Energy Mode  

E  Elastic 
D  Direct 
I  Indirect 
Indicates the technique used for calculating the absorption correction:
Legend for Technique  

A  Analytical 
NI  Numerical Integration 
MC  Monte Carlo 
Due to the overlap between the Monte Carlo integration and Monte Carlo ray tracing techniques a single classification of “Monte Carlo” is used
Options that describe what functions the algorithm is capable of and the output types:
Legend for Functions  

L  Loads correction from file 
MS  Multiple scattering correction calculated 
FI  Full illumination of sample by beam 
PI  Full or partial illumination of sample by beam 
W  Outputs a corrected sample workspace 
A  Absorption correction calculated 
A+  Calculates both sample and container absorption corrections (\(A_{s,s}\), \(A_{c,c}\)) 
A++  Calculates full set of partial absorption corrections (\(A_{s,s}\), \(A_{s,sc}\), \(A_{c,c}\), \(A_{c,sc}\)) 
Algorithm  Energy Mode  Technique  Geometry  Input Units  Functions  Notes 

AbsorptionCorrection  E,D,I  NI  Any Shape  Wavelength  A,PI  Approximates sample shape using cuboid mesh of given element size
Base class: AbsorptionCorrection

AnnularRingAbsorption  E,D,I  MC  Annular / Hollow Cylinder  Wavelength  A,PI  Wrapper for MonteCarloAbsorption for hollow cylindrical sample 
AnvredCorrection  E  A  Sphere  Wavelength or TOF  A,FI,W  Absorption for spheres with additional corrections in ANVRED program from ISAW:
 weight factors for pixels of instrument
 correct for the slant path through the scintillator glass and scale factors

ApplyPaalmanPingsCorrection  E,D,I  Cylinder or Flat Plate / Slab  Wavelength  W  Simply applies the correction workspaces from other PaalmanPingsstyle algorithms
Can also apply shift and scale factors to container workspaces


CalculateCarpenterSampleCorrection  E  A  Cylinder  Wavelength  A,MS,FI  Only applicable to Vanadium
Inplane only

CalculateMonteCarloAbsorption  E,D,I  MC  Cylinder or
Flat Plate / Slab or
Annular / Hollow Cylinder

Wavelength  A+,PI  Uses multiple calls to SimpleShapeMonteCarloAbsorption to calculate
sample and container correction workspaces
(Deprecated)

CarpenterSampleCorrection  E  A  Cylinder  Wavelength  A,MS,FI,W  Calls CalculateCarpenterSampleCorrection

CuboidGaugeVolumeAbsorption  E,D,I  NI  Cuboid section in Any Shape sample  Wavelength  A,PI  Base class: AbsorptionCorrection via wrapping via wrapping FlatPlateAbsorption 
CylinderAbsorption  E,D,I  NI  Cylinder  Wavelength  A,FI  Base class: AbsorptionCorrection 
CylinderPaalmanPingsCorrection  E,D,I  NI  Cylinder  Wavelength  A++,PI  inplane only 
FlatPlateAbsorption  E,D,I  NI  Flat Plate / Slab  Wavelength  A,FI  Base class: AbsorptionCorrection 
FlatPlatePaalmanPingsCorrection  E,D,I  NI  Flat Plate / Slab  Wavelength  A++,FI  
HRPDSlabCanAbsorption  E  NI  HRPD aluminium flat plate only
with HRPD vanadium windows
with HRPD vanadium windows

Wavelength  A+*,FI  Only for HRPD via hardcoded dimensions.
Uses FlatPlateAbsorption for sample.
Uses slightly different analytical formula for aluminium holder and vanadium windows
for the HRPD instrument.
*Outputs a single correction workspace with both sample and container corrections

IndirectAnnulusAbsorption  I  MC  Annular / Hollow Cylinder for
both sample and container

Wavelength  A+,W  Workflow algorithm specific to Indirect geometry spectrometers.
Uses MonteCarloAbsorption for sample and container.
Will apply calculated absorption corrections and subtract container from sample.

IndirectCylinderAbsorption  I  MC  Cylinder for sample and
Annular / Hollow Cylinder
for container

Wavelength  A+,W  Workflow algorithm specific to Indirect geometry spectrometers.
Uses MonteCarloAbsorption for sample and container.
Will apply calculated absorption corrections and subtract container from sample.

IndirectFlatPlateAbsorption  I  MC  Flat Plate / Slab for both
sample and container

Wavelength  A+,W  Workflow algorithm specific to Indirect geometry spectrometers.
Uses MonteCarloAbsorption for sample and container.
Will apply calculated absorption corrections and subtract container from sample.

MayersSampleCorrection  E  NI  Cylinder  TOF  A,MS,FI,W  
MonteCarloAbsorption  E,D,I  MC  Any Shape  Wavelength  A+*,PI  “Workhorse” of the MCbased algorithms
*Outputs a single correction workspace with both sample and container corrections

MultipleScatteringCorrection  E, EI  
PaalmanPingsAbsorptionCorrection  E  NI  Any Shape

Wavelength

A++,PI  Calculates Paalman Pings partial absorption factors based on AbsorptionCorrection

PaalmanPingsMonteCarloAbsorption  E,D,I  MC  Cylinder or
Flat Plate / Slab or
Annular / Hollow Cylinder

Wavelength
Energy Transfer
Momentum Transfer

A++,PI  Calculates Paalman Pings partial absorption factors using MonteCarloAbsorption

PearlMCAbsorption  E  MC  Any Shape  N/A  L  Simply reads in precomputed \(\mu\) values for PEARL instrument from an
external Monte Carlo program. Uses LoadAscii

SimpleShapeMonteCarloAbsorption  E,D,I  MC  Cylinder or
Flat Plate / Slab or
Annular / Hollow Cylinder

Wavelength  A,PI  Wrapper for MonteCarloAbsorption for 3 shape types

SphericalAbsorption  E  NI  Sphere  Wavelength  A,FI,W  Wrapper around AnvredCorrection 
(Source code, png, hires.png, pdf)
Determination of the structure and/or dynamics of samples depends on the analysis of single scattering data. Small but unwanted higherorder scattering is always present although in many typical experiments multiple scattering effects are negligible. However, in some cases the data may contain a significant contribution from multiple scattering. In neutron scattering, the absorption crosssection is often much smaller than the scattering crosssection. For this reason it is necessary to account for multiple scattering events. Using the PPF notation from previously, the measured beam from \(S+C\) (neglecting multiple scattering and inelastic effects) is given as:
Thus, the multiple scattering is a parasitic signal that needs to be subtracted from the experimentally measured \(I^E\) intensity. To get an idea of when and why multiple scattering corrections are needed, let us define \(\sigma_n\) as the likelihood of a neutron being scattered \(n\) times. Then it is possible to show [6] that:
Where practical, the shape and thickness of a sample are carefully chosen to minimize as much unwanted multiple. This may be achieved by using a sample that is either [7]
Increasing the absorption cross section is not always attainable  due to the type of material in question  or desirable, due to the accompanying intensity losses becoming overly prohibitive.
The figure shows how a general double scattering process might occur. The neutron travels a certain distance \(l_1\) through the sample before the first scattering event in the volume element \(dV_1\). The second scattering occurs in another volume element \(dV_2\) after a distance \(l_{12}\) has been traversed following which the neutron travels a final length \(l_2\) before leaving the sample and being picked up by a detector.
We define the multiple scattering intensity, \(I_m\), in terms of the total scattering intensity, \(I_{total}\), from \(n\) number of orders of scattering intensity, \(I_n\), as:
Then, we see that to compute the multiple scattering, we must compute \(n1\) scattering intensity terms to subtract from the total, \(I_{total}\).
Let us first just consider the secondary scattering term, \(I_2\). We again assume we have a homogeneous sample of a given shape that is fully illuminated by the incident beam. Then, extending from Eq. (5), we have that the number of neutrons per unit solid angle scattered once by a volume element \(dV_1\) and then a second time by a volume element \(dV_2\) of the sample and seen by a detector is given by:
where \(\theta_1\) is the angle between the incident path and scatter path from \(dV_1\), \(\theta_2\) is the angle between scatter path from \(dV_1\) and scatter path from dV_2, \(\theta_s\) is the angle between the incident path and scatter path from \(dV_2\) to the detector, \(\mu_{12}\) is the scattered wavelength from volume element \(dV_1\), and the \(l_12\) term is due to the inverse square law (that as the distance increases between \(dV_1\) and \(dV_2\), the solid angle subtended by \(dV_2\) at \(dV_1\) decreases as the inverse square of \(l_{12}\)).
And the total secondary scattering intensity seen by a detector is:
We can generalize this for \(i^{th}\) order of scatter terms as:
and
Which then the multiple scattering up to the \(n\) order scattering term is given as:
Thus, some of the difficulties in correcting multiple scattering arises from:
To address (2) above, we can assume elastic scattering and then Eq. (19) becomes:
To address (3) above, we can assume isotropic scattering and then Eq. (19) becomes:
Combining both the elastic and isotropic assumptions, we have:
To address (4), a typical assumption in the analytical method [6] [9] approaches is to assume that the ratio \(\frac{I_n}{I_{n1}}\) is a constant, \(\Delta\), thus:
Then, with the assumption that \(\Delta < 1\), Eq. (19) can be manipulated into a geometric series:
Similarly:
Subtracting Eq. (25) from Eq. (24), we have:
Which, solving for \(I_m\) and based on the assumption \(\Delta < 1\), implying \(\Delta^n << \Delta\), we arrive at:
NOTE: Sears arrived at a separate equation for \(I_m\) based on flat plate samples but supposedly general enough for any shape sample: \(I_{m,Sears} = I_1 \left( \frac{exp(2\delta)1}{2\delta}  1 \right)\). However, comparisons of both equations for cylinders show that Eq. (27) is more accurate solution. [10]
From Eq. (27), we are left with calculating \(\Delta\):
Using the isotropic approximation, we arrive at:
where \(A_2\) is the secondary scattering absorption factor and \(A_1\) is the single scattering absorption factor, equivalent to \(A\) in Eq. (7). The absorption factors can be further simplified by using the elastic scattering assumption from Eq. (8).
We can now begin to solve for \(I_m\) by taking Eq. (27) and substituting this into Eq. (14):
Solving this for \(I_1\), we see that:
Thus, comparing Eq. (31) and Eq. (29) with Eq. (14), we see that:
The analytical approach has been further extended in a number of ways:
Monte Carlo approaches are a “brute force” technique that does require more computational time than the analytical approaches yet does not suffer many of the drawbacks to the analytical approach. Such drawbacks included assumptions of isotropic scattering required to formulate the solvable equations, not being able to include the intermediate energy transfers for scattering, and easier flexibility to handle complicated shapes for sample, container, and/or sample environments.
In the Monte Carlo ray tracing technique, a virtual experiment is performed such that individual neutrons are put on a trajectory through a model of the instrument with scattering kernels defined for samples, containers, and other components of the instrument. Neutron histories are recorded so there is a clear distinction between single and multiple scattered neutrons and the multiple scattering correction is easily obtained from the result.
In some areas, such as small angle scattering, there may be useful approximations that can be applied that are not present for the more general wide angle scattering case. Again matters may become complicated, as for example small angle scatter followed by incoherent scatter from hydrogen can be more significant in blurring sharp features than double small angle scatter. For early considerations of multiple small angle scattering see for example [13] [14].
Indicates the energy modes that the algorithm can accommodate:
Legend for Energy Mode  

E  Elastic 
D  Direct 
I  Indirect 
Indicates the technique used for calculating the absorption correction:
Legend for Technique  

NI  Numerical Integration 
MC  Monte Carlo 
Options that describe what functions the algorithm is capable of, assumptions, and the output types:
Functions  

L  Loads correction from file 
FI  Full illumination of sample by beam 
PI  Full or partial illumination of sample by beam 
W  Outputs a corrected sample workspace 
IA  Isotropic assumption is used for all orders of scattering 
EA  Elastic scattering assumption is used 
Algorithm  Energy Mode  Technique  Geometry  Input Units  Functions  Notes 

CalculateCarpenterSampleCorrection  E  A  Cylinder  Wavelength  IA,EA,FI  Only applicable to Vanadium
Inplane only

CarpenterSampleCorrection  E  A  Cylinder  Wavelength  IA,EA,FI,W  Only applicable to Vanadium
Inplane only

DiscusMultipleScatteringCorrection  E  MC  Any Shape  Wavelength  EA, FI, PI  This algorithm shares a similar heritage to MuscatData\MuscatFunc (see below)
It has been ported to C++ and integrated in to the Mantid framework featuring:
 Mantid geometry (mesh\CSG shape descriptions)
 multithreading for reduced run times
 spatial interpolation and wavelength interpolation
So far it only supports elastic scattering but it will be extended
shortly to run on inelastic instruments also

LoadMcStas  E,D,I  MC  Any Shape  L  Loads McStas [15] v2.1 histogram or event data files.
Can extract multiple scattering and subtract from scattering in Mantid


LoadMcStasNexus  E,D,I  MC  Any Shape  L  Loads McStas [15] v2.0 histogram data files.
Can extract multiple scattering and subtract from scattering in Mantid


MayersSampleCorrection  E  NI+MC  Cylinder  TOF  IA,EA,FI,W  Uses Monte Carlo integration to evaluate the analytical integral. 
MultipleScatteringCorrection  E  NI  Any shape  Wavelength  FI,IA,EA  
MuscatData  I  MC  Cylinder or Flat Plate / Slab  \(S(Q,\omega)\)  FI  
MuscatFunc  I  MC  Cylinder or Flat Plate / Slab  \(S(Q,\omega)\)  FI  
VesuvioCalculateMS  I  MC  Flat Plate / Slab  TOF  FI  Monte Carlo ray tracing algorithm for deep inelastic neutron scattering.
Calculates both total and multiple scattering output workspaces. Specific to
Vesuvio but possibly general.

[1]  (1, 2, 3) NIST Center for Neutron Research tabulated neutron scattering lengths and cross sections.  https://www.ncnr.nist.gov/resources/nlengths/list.html 
[2]  (1, 2) A.K. Soper (2012). GudrunN and GudrunX manual.  https://www.isis.stfc.ac.uk/OtherFiles/Disordered%20Materials/GudrunManual201710.pdf 
[3]  Mantid source code for NeutronAtom.cpp to define ReferenceLambda variable. 
[4]  (1, 2)

[5]  (1, 2)

[6]  (1, 2, 3, 4)

[7]  (1, 2) V.F. Sears (1975): Slowneutron multiple scattering, Advances in Physics, 24:1, 145 
[8]  (1, 2) A.K.Soper, W.S.Howells and A.C.Hannon ATLAS  Analysis of TimeofFlight Diffraction Data from Liquid and Amorphous Samples Rutherford Appleton Laboratory Report (1989): RAL89046 
[9] 

[10]  (1, 2, 3, 4, 5)

[11] 

[12] 

[13]  J.Schelten & W.Schmatz, J.Appl.Cryst. 13(1980)385390 
[14]  J.R.D.Copley J.Appl.Cryst 21(1988)639644 
[15]  (1, 2) McStas: A neutron raytrace simulation package website 
[16]  (1, 2, 3)

[17]  (1, 2, 3) FORTRAN source code for MUSCAT as 3rd party software in Mantid. 
Category: Concepts