\(\renewcommand\AA{\unicode{x212B}}\)
CalculatePlaczek v1¶
Summary¶
Calculate 1st or 2nd order Placzek correction factors using given workspace and incident spectrums.
See Also¶
Properties¶
| Name | Direction | Type | Default | Description | 
|---|---|---|---|---|
| InputWorkspace | Input | Mandatory | Raw diffraction data workspace for associated correction to be calculated for. Workspace must have instrument and sample data. | |
| IncidentSpectra | Input | Mandatory | Workspace of fitted incident spectrum with its derivatives (1st &| 2nd). | |
| EfficiencySpectra | Input | 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 | 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- EfficiencySpectrais not provided:- The algorithm will can generate a theoretical detector efficiency curve (see He3TubeEfficiency for details) using the input Parameter - LambdaD.
- When no - LambdaDis 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).
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:
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
where \(\phi'(\lambda)\) is defined as
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
However, if the detector efficiency is never measured, one can still use an approximated detector efficiency curve
where \(\lambda_d\) is the reference wavelength for the detector. Therefore, the approximate first order detector efficiency coefficient, \(\epsilon_1\) simplified to
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
The detailed explanation can be found in [2] .
 
Enable :plots: using DOCS_PLOTDIRECTIVE in CMake
The second order Placzek correction, \(P_2\) is similar to the first order, just with some new components
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,
and \(\epsilon_2\) can be calculated directly from measured detector efficiency,
If no detector efficiency is measured, \(\epsilon_2\) can also be approximated with the theoretical detector efficiency formula, namely
where \(x = -\lambda / \lambda_d\).
 
Enable :plots: using DOCS_PLOTDIRECTIVE in CMake
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¶
Categories: AlgorithmIndex | CorrectionFunctions
Source¶
C++ header: CalculatePlaczek.h
C++ source: CalculatePlaczek.cpp