\(\renewcommand\AA{\unicode{x212B}}\)

CalculatePlaczek v1

../_images/CalculatePlaczek-v1_dlg.png

CalculatePlaczek dialog.

Summary

Calculate 1st or 2nd order Placzek correction factors using given workspace and incident spectrums.

Properties

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.

Description

This algorithm can calculate the 1st and 2nd order Placzek inelastic scattering correction [1] [2] . For this particular algorithm:

  • The input workspace must
    • contain a sample with proper chemical formula as the correction calculation relies on it.
    • have a valid instrument geometry attached to it as the correction factors are calculated on a per spectrum (i.e. detector) basis.
  • A workspace containing the incident spectrum extracted from the monitor is needed.
    • For the first order correction, only the incident spectrum and its first order derivative is needed.
    • For the second order correction, the incident spectrum along with its first and second derivate are needed.
    • It is implicitly assumed that
      • IncidentSpectra.readY(0) returns the incident spectrum.
      • IncidentSpectra.readY(1) returns the first order derivative.
      • IncidentSpectra.readY(2) returns the second order derivative.
  • The algorithm will try to extract temperature from the sample log if it is not provided. However, this will be a simple average without any additional consideration about outliers or bad reading. Therefore, it is recommended to provide a sample temperature in Kelvin explicitly.
  • The Placzek correction calculation requires a detector efficiency curve and its derivatives. This algorithm will prioritize the use of input EfficiencySpectra. However, when EfficiencySpectra is not provided:
    • The algorithm will can generate a theoretical detector efficiency curve (see He3TubeEfficiency for details) using the input Parameter LambdaD.
    • When no LambdaD is provided, the default value 1.44 will be used, which is also the implicit value used in the original CalculatePlaczekSelfScattering.
    • Generally speaking it is better to measure the detector efficiency instead of relying on a theoretical one.
  • The calculated Placzek correction factor will be scaled by the packing fraction if ScaleByPackingFraction=True (default).
(1)\[P_\text{scaled} = (1 + P) * p_\text{packingFraction}\]

where \(P\) is the Placzek correction factor, and \(p\) is the packing fraction.

Physics

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, \(P_1\) is given as:

(2)\[P_1 = 2 \sin^2(\dfrac{\theta}{2}) \left[ (f-1)\phi_1 - f \epsilon_1 + f - 3 \right] \sum_\alpha c_\alpha \bar{b_\alpha^2} \dfrac{m}{M_\alpha}\]

where

  • \(\theta\) is the scattering angle.
  • \(f = \frac{L_1}{L_1+L_2}\) with \(L_1\) being the distance between moderator and the sample and \(L_2\) being the distance between the sample and the detector.
  • \(\phi_1\) is the first order incident flux coefficient.
  • \(\epsilon_1\) is the first order detector efficiency coefficient.
  • \(c_\alpha\) is the number proportion of species \(\alpha\).
  • \(b_\alpha\) is the total scattering length of species \(\alpha\).
  • \(m\) is the mass of neutron.
  • \(M_\alpha\) refers to the atomic mass of species \(\alpha\).

When the incident flux \(\phi\) is available from monitor, the first order incident flux coefficient, \(\phi_1\) can be calculated with

(3)\[\phi_1 = \lambda_i \dfrac{\phi'(\lambda_i)}{\phi(\lambda_i)}\]

where \(\phi'(\lambda)\) is defined as

(4)\[\phi'(\lambda) = \dfrac{\ln(\phi(\lambda))}{\ln(\lambda)}\]

When the detector efficiency \(\epsilon\) is measured as a function of wave vector \(k = 2\pi / \lambda\), the first order detector efficiency coefficient, \(\epsilon_1\) can be calculated with

(5)\[\epsilon_1 = k_i \dfrac{\epsilon'(k_i)}{\epsilon(k_i)}\]

However, if the detector efficiency is never measured, one can still use an approximated detector efficiency curve

(6)\[\epsilon(k) \approx 1 - \exp(\dfrac{-\lambda}{\lambda_d})\]

where \(\lambda_d\) is the reference wavelength for the detector. Therefore, the approximate first order detector efficiency coefficient, \(\epsilon_1\) simplified to

(7)\[\epsilon_1 = \dfrac{x e^x}{1 - e^x}\]

where \(x = -\lambda / \lambda_d\). It is worth points out that the derivative of the detector efficiency is computed with respect to \(\ln(k)\), namely

\[\epsilon' = \dfrac{\ln(\epsilon(k))}{\ln(k)}\]

The detailed explanation can be found in [2] .

(Source code, png, hires.png, pdf)

../_images/CalculatePlaczekPlotP1.png

The second order Placzek correction, \(P_2\) is similar to the first order, just with some new components

\[\begin{split}P_2 &= \sum_\alpha c_\alpha \bar{b_\alpha^2} \dfrac{m}{M_\alpha} \{\dfrac{k_B T}{2E} + \dfrac{k_B T}{E} \sin^2(\dfrac{\theta}{2}) \left[ (8f - 9)(f-1)\phi_1 -3f(2f-3)\epsilon_1 +2f(1-f)\phi_1\epsilon_1 +(1-f)^2\phi_2 +f^2\epsilon_2 +3(4f-5)(f-1) \right] \} \\ &+ 2 \sin^2(\dfrac{\theta}{2}) \sum_\alpha c_\alpha \bar{b_\alpha^2} (\dfrac{m}{M_\alpha})^2 \{ 1 + \sin^2(\dfrac{\theta}{2}) \left[(4f-7)(f-1)\phi_1 +f(7-2f)\epsilon_1 +2f(1-f)\phi_1\epsilon_1 +(1-f)^2\phi_2 +f^2\epsilon_2 +(2f^2 -7f +8) \right] \}\end{split}\]

where

  • \(k_B\) is the Boltzmann constant.
  • \(T\) is the temperature in Kelvin.
  • \(E\) is the energy of the incident neutron as \(E = h^2/(2m\lambda^2_i)\).
  • \(\phi_2\) is the second order incident flux coefficient.
  • \(\epsilon_2\) is the second order detector efficiency coefficient.

Similar to \(\phi_1\), \(\phi_2\) can be calculated when incident flux is measured by the monitor,

(8)\[\phi_2 = \lambda_i \dfrac{\phi''(\lambda_i)}{\phi(\lambda_i)}\]

and \(\epsilon_2\) can be calculated directly from measured detector efficiency,

(9)\[\epsilon_2 = k_i \dfrac{\epsilon''(k_i)}{\epsilon(k_i)}\]

If no detector efficiency is measured, \(\epsilon_2\) can also be approximated with the theoretical detector efficiency formula, namely

(10)\[\epsilon_2 = \dfrac{-x (x+2) e^x}{1 - e^x} = -(x+2)\epsilon_1\]

where \(x = -\lambda / \lambda_d\).

(Source code, png, hires.png, pdf)

../_images/CalculatePlaczekPlotP2.png

Usage

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",
)

References

[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