Table of Contents
Calculate 1st or 2nd order Placzek correction factors using given workspace and incident spectrums.
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | MatrixWorkspace | Mandatory | Raw diffraction data workspace for associated correction to be calculated for. Workspace must have instrument and sample data. |
IncidentSpectra | Input | MatrixWorkspace | Mandatory | Workspace of fitted incident spectrum with its derivatives (1st &| 2nd). |
EfficiencySpectra | Input | MatrixWorkspace | Workspace of efficiency spectrum with its derivatives (1st &| 2nd).Default (not specified) will use LambdaD to calculate the efficiency spectrum. | |
LambdaD | Input | number | 1.44 | Reference wavelength in Angstrom, related to detector efficient coefficient alpha.The coefficient used to generate a generic detector efficiency curve,eps = 1 - exp(1 - alpha*lambda), where alpha is 1/LambdaD.Default is set to 1.44 for ISIS 3He detectors and 1/0.83 for ISIS:LAD circa 1990 scintillator detectors. |
CrystalDensity | Input | number | Optional | The crystalographic density of the sample material. |
Order | Input | number | 1 | Placzek correction order (1 or 2), default to 1 (self scattering). |
SampleTemperature | Input | number | Optional | Sample temperature in Kelvin.The input property is prioritized over the temperature recorded in the sample log.The temperature is necessary for computing second order correction. |
ScaleByPackingFraction | Input | boolean | True | Scale the correction value by packing fraction. |
OutputWorkspace | Output | MatrixWorkspace | Mandatory | Workspace with the Placzek scattering correction factors. |
This algorithm can calculate the 1st and 2nd order Placzek inelastic scattering correction [1] [2] . For this particular algorithm:
IncidentSpectra.readY(0)
returns the incident spectrum.IncidentSpectra.readY(1)
returns the first order derivative.IncidentSpectra.readY(2)
returns the second order derivative.EfficiencySpectra
. However, when EfficiencySpectra
is not provided:LambdaD
.LambdaD
is provided, the default value 1.44 will be used, which is also the implicit value used in the original CalculatePlaczekSelfScattering.ScaleByPackingFraction=True
(default).where P is the Placzek correction factor, and p is the packing fraction.
This section provides a brief description of the formula used to calculate the Placzek correction. In the original work [1] , the formula to compute the first order Placzek correction, P1 is given as:
where
When the incident flux ϕ is available from monitor, the first order incident flux coefficient, ϕ1 can be calculated with
where ϕ′(λ) is defined as
When the detector efficiency ϵ is measured as a function of wave vector k=2π/λ, the first order detector efficiency coefficient, ϵ1 can be calculated with
However, if the detector efficiency is never measured, one can still use an approximated detector efficiency curve
where λd is the reference wavelength for the detector. Therefore, the approximate first order detector efficiency coefficient, ϵ1 simplified to
where x=−λ/λd. It is worth points out that the derivative of the detector efficiency is computed with respect to ln(k), namely
The detailed explanation can be found in [2] .
(Source code, png, hires.png, pdf)
The second order Placzek correction, P2 is similar to the first order, just with some new components
where
Similar to ϕ1, ϕ2 can be calculated when incident flux is measured by the monitor,
and ϵ2 can be calculated directly from measured detector efficiency,
If no detector efficiency is measured, ϵ2 can also be approximated with the theoretical detector efficiency formula, namely
where x=−λ/λd.
(Source code, png, hires.png, pdf)
Example - CalculatePlaczek
The data files used in the following example code are available as part of the Mantid testing data.
# Load the incident flux from file
Load(
Filename='fluxSmoothedNOM161959.nxs',
OutputWorkspace='influx',
)
# Load the input workspace
# - must have instrument
# - must have sample with valid chemical formula
Load(Filename='inputwsNOM_164109.nxs', OutputWorkspace='NOM_164109')
# Calculate first order
# NOTE: temperature is not needed for first order calculation
CalculatePlaczek(
InputWorkspace="NOM_164109",
IncidentSpectra="influx",
LambdaD=1.44,
Order=1,
ScaleByPackingFraction=False,
CrystalDensity=0.01,
OutputWorkspace="NOM_P1",
)
# Calculate first and second order
CalculatePlaczek(
InputWorkspace="NOM_164109",
IncidentSpectra="influx",
LambdaD=1.44,
Order=2,
SampleTemperature=943.15, # in Kelvin
ScaleByPackingFraction=False,
CrystalDensity=0.01,
OutputWorkspace="NOM_P2",
)
[1] | (1, 2) Howe, McGreevy, and Howells, J., (1989), The analysis of liquid structure data from time-of-flight neutron diffractometry, Journal of Physics: Condensed Matter, Volume 1, Issue 22, pp. 3433-3451, doi: 10.1088/0953-8984/1/22/005 |
[2] | (1, 2) Howells, W.S. 1984. On the Choice of Moderator for a Liquids Diffractometer on a Pulsed Neutron Source., Nuclear Instruments and Methods in Physics Research 223 (1): 141–46. doi: 10.1016/0167-5087(84)90256-4 |
Categories: AlgorithmIndex | CorrectionFunctions