\(\renewcommand\AA{\unicode{x212B}}\)
Table of Contents
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | MatrixWorkspace | Mandatory | Input workspace for data (diffraction pattern). |
OutputWorkspace | Output | Workspace2D | Output Workspace2D for the fitted peaks. | |
BraggPeakParameterWorkspace | Input | TableWorkspace | Mandatory | TableWorkspace containg all peaks’ parameters. |
InstrumentParameterWorkspace | InOut | TableWorkspace | Mandatory | TableWorkspace containg instrument’s parameters. |
OutputBraggPeakParameterWorkspace | Output | TableWorkspace | Output TableWorkspace containing the fitted peak parameters for each peak. | |
OutputBraggPeakParameterDataWorkspace | Output | Workspace2D | Output Workspace2D containing fitted peak parameters for further refinement. | |
OutputZscoreWorkspace | Output | TableWorkspace | Output TableWorkspace containing the Zscore of the fitted peak parameters. | |
WorkspaceIndex | Input | number | 0 | Worskpace index for the data to refine against. |
MinTOF | Input | number | Optional | Minimum TOF to fit peaks. |
MaxTOF | Input | number | Optional | Maximum TOF to fit peaks. |
FittingMode | Input | string | Robust | Fitting mode such that user can determinewhether the input parameters are trustful or not. Allowed values: [‘Robust’, ‘Confident’] |
UseGivenPeakCentreTOF | Input | boolean | True | Use each Bragg peak’s centre in TOF given in BraggPeakParameterWorkspace.Otherwise, calculate each peak’s centre from d-spacing. |
PeakParametersStartingValueFrom | Input | string | (HKL) & Calculation | Choice of how to generate starting values of Bragg peak profile parmeters. Allowed values: [‘(HKL) & Calculation’, ‘From Bragg Peak Table’] |
MinimumPeakHeight | Input | number | 0.2 | Minimum peak height (with background removed) Any peak whose maximum height under this value will be treated as zero intensity. |
PeaksCorrelated | Input | boolean | False | Flag for fact that all peaks’ corresponding profile parameters are correlated by an analytical function |
MinimumHKL | Input | int list | Miller index of the left most peak (peak with minimum d-spacing) to be fitted. | |
NumberPeaksToFitBelowLowLimit | Input | number | 0 | Number of peaks to fit with d-spacing value less than specified minimum. |
RightMostPeakHKL | Input | int list | Miller index of the right most peak. It is only required and used in RobustFit mode. | |
RightMostPeakLeftBound | Input | number | Optional | Left bound of the right most peak. Used in RobustFit mode. |
RightMostPeakRightBound | Input | number | Optional | Right bound of the right most peak. Used in RobustFit mode. |
FitCompositePeakBackground | Input | boolean | True | Flag to do fit to both peak and background in a composite function as last fit step. |
This algorithm fits a certain set of single diffraction peaks in a powder diffraction pattern.
The assumption is that all the peaks in the diffraction patter can be described by a single peak type. A specific peak parameter will have its values plotted by an analytical function among all the peaks.
It serves as the first step to fit/refine instrumental parameters that will be introduced in Le Bail fit. The second step is realized by algorithm RefinePowderInstrumentParameters.
Fitting mode determines the approach (or algorithm) to fit diffraction peaks. 2 modes are supported:
Peaks are fitted from high d-spacing, i.e., lowest possible Miller index, to low d-spacing values. If MinimumHKL is specified, then peak will be fitted from maximum d-spacing/TOF, to the peak with Miller index as MinimumHKL.
Several use cases are listed below about how to use this algorithm.
This is the extreme case such that
This algorithm is designed to work with other algorithms to do Le Bail fit. The introduction can be found in the wiki page of LeBailFit v1.
FitPowderDiffPeaks is designed to work with other algorithms, such RefinePowderInstrumentParameters, and LeBailFit. See Le Bail *fit concept page for full list of such algorithms.
A common scenario is that the starting values of instrumental geometry related parameters (Dtt1, Dtt1t, and etc) are enough far from the real values.
Example - Fit diffraction peaks by single peak fitting:
# Load reduced powder diffraction data
LoadAscii(Filename='PG3_11487-3.dat',
OutputWorkspace='PG3_11487', Unit='TOF')
# Create table workspaces used by Le Bail fit algorithms
CreateLeBailFitInput(ReflectionsFile='LB4854b3.hkl', FullprofParameterFile='2011B_HR60b3.irf',
Bank=3, LatticeConstant=4.1568899999999998, InstrumentParameterWorkspace='Bank3InstrumentParameterTable1',
BraggPeakParameterWorkspace='BraggPeakParameterTable1')
# Fit background of the powder diffraction data
ProcessBackground(InputWorkspace='PG3_11487', OutputWorkspace='PG3_11487_Background', Options='SelectBackgroundPoints',
LowerBound=10080, UpperBound=72000, SelectionMode='FitGivenDataPoints',
BackgroundPoints='10082,10591,11154,12615,13690,13715,15073,16893,17764,19628,21318,24192,35350,44212,50900,60000,69900,79000',
NoiseTolerance=0.10000000000000001, UserBackgroundWorkspace='dummy0', OutputBackgroundParameterWorkspace='dummy1')
Fit(Function='name=Polynomial,n=6,A0=0.473391,A1=-3.8911e-05,A2=1.7206e-09,A3=-3.21291e-14,A4=9.31264e-20,A5=3.90465e-24,A6=-3.28688e-29',
InputWorkspace='PG3_11487_Background', MaxIterations=1000, OutputStatus='success',
OutputChi2overDoF=2.0078239589764837, Minimizer='Levenberg-MarquardtMD', CreateOutput=True,
Output='PG3_11487_Background', StartX=10080, EndX=72000,
OutputNormalisedCovarianceMatrix='PG3_11487_Background_NormalisedCovarianceMatrix',
OutputParameters='PG3_11487_Background_Parameters', OutputWorkspace='PG3_11487_Background_Workspace', Version=1)
# Fit individual peaks in the diffraction pattern
FitPowderDiffPeaks(InputWorkspace='PG3_11487', OutputWorkspace='Bank3FittedPeaks',
BraggPeakParameterWorkspace='BraggPeakParameterTable1',
InstrumentParameterWorkspace='Bank3InstrumentParameterTable1',
OutputBraggPeakParameterWorkspace='BraggPeakParameterTable2_0',
OutputBraggPeakParameterDataWorkspace='BraggPeakParameterTable2_P',
OutputZscoreWorkspace='BraggPeakParameterTable2_Zscore',
MinTOF=16866, MaxTOF=70000, UseGivenPeakCentreTOF=False, MinimumPeakHeight=0.29999999999999999,
PeaksCorrelated=True, MinimumHKL='12,12,12', RightMostPeakHKL='1,1,0', RightMostPeakLeftBound=65800, RightMostPeakRightBound=67000)
# Print result
resultws = mtd["BraggPeakParameterTable2_P"]
for i in range(10):
print("Peak @ d = {:.5f}, TOF_0 = {:.5f}, A = {:.5f}, B = {:.5f}, Sigma = {:.5f}".
format(resultws.readX(0)[i], resultws.readY(0)[i], resultws.readY(1)[i], resultws.readY(2)[i], resultws.readY(3)[i]))
Output:
GeneraateHKL? = False
Peak @ d = 0.75894, TOF_0 = 17142.23075, A = 0.15403, B = 0.10084, Sigma = 6.03789
Peak @ d = 0.77192, TOF_0 = 17435.01857, A = 0.16520, B = 0.10221, Sigma = 6.63462
Peak @ d = 0.79999, TOF_0 = 18069.21642, A = 0.15039, B = 0.09358, Sigma = 6.41801
Peak @ d = 0.81523, TOF_0 = 18413.34201, A = 0.14661, B = 0.09132, Sigma = 6.67055
Peak @ d = 0.83138, TOF_0 = 18778.30857, A = 0.13545, B = 0.09075, Sigma = 6.44981
Peak @ d = 0.84852, TOF_0 = 19164.95217, A = 0.14572, B = 0.08599, Sigma = 7.30674
Peak @ d = 0.88625, TOF_0 = 20017.59170, A = 0.12676, B = 0.08361, Sigma = 7.24717
Peak @ d = 0.90711, TOF_0 = 20488.70341, A = 0.12200, B = 0.08131, Sigma = 7.27715
Peak @ d = 0.92951, TOF_0 = 20994.85671, A = 0.12909, B = 0.08600, Sigma = 8.46692
Peak @ d = 0.95366, TOF_0 = 21540.74042, A = 0.10656, B = 0.07592, Sigma = 7.61463
Categories: AlgorithmIndex | Diffraction\Fitting
C++ header: FitPowderDiffPeaks.h (last modified: 2020-03-25)
C++ source: FitPowderDiffPeaks.cpp (last modified: 2020-04-07)