D7YIGPositionCalibration v1¶
Summary¶
Performs D7 position calibration using YIG scan and returns D7 IPF readable by LoadILLPolarizedDiffraction.
See Also¶
LoadILLPolarizedDiffraction, PolDiffILLReduction, D7AbsoluteCrossSections
Properties¶
Name |
Direction |
Type |
Default |
Description |
---|---|---|---|---|
Filenames |
Input |
list of str lists |
The file names with a single YIG scan. |
|
InputWorkspace |
Input |
The name of the workspace containing the entire YIG scan. |
||
YIGPeaksFile |
Input |
string |
/jenkins_workdir/workspace/build_and_publish_docs/mambaforge/envs/docs-build/instrument/D7_YIG_peaks.xml |
The file name with all YIG peaks in d-spacing. Allowed extensions: [‘.xml’] |
ApproximateWavelength |
Input |
number |
3.1 |
The initial guess for the neutrons’ wavelength |
MinimalDistanceBetweenPeaks |
Input |
number |
3 |
The minimal allowable distance between two YIG peaks (in degrees 2theta). |
BankOffsets |
Input |
dbl list |
3,3,0 |
List of values of offset for each bank (in degrees). |
BraggPeakWidth |
Input |
number |
2 |
An initial guess for the width of YIG Bragg peaks used for fitting (in degrees). |
MaskedBinsRange |
Input |
dbl list |
-35,15 |
The lower and upper bound for the masked region around the direct beam (in degrees). |
CalibrationOutputFile |
Input |
string |
The output YIG calibration Instrument Parameter File. Allowed values: [‘xml’] |
|
ClearCache |
Input |
boolean |
True |
Whether to clear the intermediate fitting results. |
FitOutputWorkspace |
Output |
The table workspace name that will be used to store all of the calibration parameters. |
||
FittingMethod |
Input |
string |
None |
Option to provide the initial guesses or perform fits for Bragg peaks either individually or globally. Allowed values: [‘None’, ‘Individual’, ‘Global’] |
Description¶
This is the algorithm that performs wavelength and position calibration for both individual detectors and detector banks using measurement of a sample of powdered
It is crucial for a reliable calibration to first run a test without setting the BankOffsets parameter and with FittingMethod set to None. This allows checking the positions of the initial guesses for the positions of YIG Bragg peaks in the conjoined_input workspace. Then, the BankOffsets can be obtained by comparing the peak positions coming from the detectors with their expected location, coming from known d-spacings for YIG.
Currently the algorithm is focused on the D7 instrument that has three detector banks and a monitor, and all of them can move individually. The detector position and wavelength calibration have to be checked each time the used wavelength is changed, since the instrument has to be manually moved into a different parking position around the monochromator.
The property MaskedBinsRange allows to mask multiple
The values of the fitted wavelength, three bank gradients, and the
Calibration method¶
A YIG scan data is loaded into a single 2D Workspace where the X axis contains detector positions during each step of the scan, and the Y axis the measured intensities normalized to monitor. The Y axis data is also 2D with each row representing full scan for a single detector. It is recommended to mask scan points located between -35 and 15 degrees to remove the impact of the direct neutron beam.
The provided YIG d-spacing values are loaded from an XML list. The default d-spacing is coming from Ref. [2]. The peak positions are converted into 2theta positions using the initial assumption of the neutron wavelength. All peaks that would require the
YIG peaks in the detector’s scan are fitted using a Gaussian distribution. The Bragg peaks are fitted either separately, when the FittingMethod property is set to Individual, or all peaks measured by a detector are fitted together, when the FittingMethod property is set to Global. The fitting results are stored in a new workspace, where the Y axis contains the fitted peak centres and the X axis the calculated peak positions.
The workspace containing the peak fitting results is then fitted using a Multidomain function of the form:
where m is the bank slope,
Usage¶
Note
To run these usage examples please first download the usage data, and add these to your path. In Mantid this is done using Manage User Directories.
Example - D7YIGPositionCalibration - calibration at the shortest wavelength
approximate_wavelength = '3.1' # Angstrom
D7YIGPositionCalibration(Filenames='402652:403041', ApproximateWavelength=approximate_wavelength,
YIGPeaksFile='D7_YIG_peaks.xml', CalibrationOutputFile='test_shortWavelength.xml',
MinimalDistanceBetweenPeaks=1.5, BankOffsets=[3, 3, 1], ClearCache=True,
FittingMethod='Individual', FitOutputWorkspace='shortWavelength')
print('The calibrated wavelength is: {0:.2f}'.format(float(approximate_wavelength)*mtd['shortWavelength'].column(1)[1]))
print('The bank2 gradient is: {0:.3f}'.format(1.0 / mtd['shortWavelength'].column(1)[0]))
print('The bank3 gradient is: {0:.3f}'.format(1.0 / mtd['shortWavelength'].column(1)[176]))
print('The bank4 gradient is: {0:.3f}'.format(1.0 / mtd['shortWavelength'].column(1)[352]))
Example - D7YIGPositionCalibration - calibration at the intermediate wavelength
Load('ILL/D7/396442_396831.nxs', OutputWorkspace='intermediateWavelengthScan')
approximate_wavelength = '4.8' # Angstrom
D7YIGPositionCalibration(InputWorkspace='intermediateWavelengthScan', ApproximateWavelength=approximate_wavelength,
YIGPeaksFile='D7_YIG_peaks.xml', CalibrationOutputFile='test_intermediateWavelength.xml',
MinimalDistanceBetweenPeaks=1.5, BankOffsets=[3, 3, -1],
MaskedBinsRange=[-50, -25, 15],
FittingMethod='Individual', FitOutputWorkspace='intermediateWavelength')
print('The calibrated wavelength is: {0:.1f}'.format(float(approximate_wavelength)*mtd['intermediateWavelength'].column(1)[1]))
print('The bank2 gradient is: {0:.1f}'.format(1.0 / mtd['intermediateWavelength'].column(1)[0]))
print('The bank3 gradient is: {0:.1f}'.format(1.0 / mtd['intermediateWavelength'].column(1)[176]))
print('The bank4 gradient is: {0:.1f}'.format(1.0 / mtd['intermediateWavelength'].column(1)[352]))
Output:
The calibrated wavelength is: 4.8
The bank2 gradient is: 1.0
The bank3 gradient is: 1.0
The bank4 gradient is: 1.0
Categories: AlgorithmIndex | ILL\Diffraction
Source¶
Python: D7YIGPositionCalibration.py