\(\renewcommand\AA{\unicode{x212B}}\)
CalculateFlatBackground v1¶
Summary¶
Finds a constant background value of each desired histogram.
Properties¶
Name 
Direction 
Type 
Default 
Description 

InputWorkspace 
Input 
Mandatory 
The input workspace must either have constant width bins or is a distribution workspace. It is also assumed that all spectra have the same X bin boundaries 

OutputWorkspace 
Output 
Mandatory 
Name to use for the output workspace. 

StartX 
Input 
number 
Optional 
The X value at which to start the background fit. Mandatory for the Linear Fit and Mean modes, ignored by Moving Average. 
EndX 
Input 
number 
Optional 
The X value at which to end the background fit. Mandatory for the Linear Fit and Mean modes, ignored by Moving Average. 
WorkspaceIndexList 
Input 
int list 
Indices of the spectra that will have their background removed default: modify all spectra 

Mode 
Input 
string 
Linear Fit 
The background count rate is estimated either by taking a mean, doing a linear fit, or taking the minimum of a moving average (default: Linear Fit). Allowed values: [‘Linear Fit’, ‘Mean’, ‘Moving Average’] 
OutputMode 
Input 
string 
Subtract Background 
Once the background has been determined it can either be subtracted from the InputWorkspace and returned or just returned (default: Subtract Background). Allowed values: [‘Subtract Background’, ‘Return Background’] 
SkipMonitors 
Input 
boolean 
False 
By default, the algorithm calculates and removes background from monitors in the same way as from normal detectors If this property is set to true, background is not calculated/removed from monitors. 
NullifyNegativeValues 
Input 
boolean 
True 
When background is subtracted, signals in some time channels may become negative. If this option is true, signal in such bins is nullified and the module of the removed signalis added to the error. If false, the signal and errors are left unchanged 
AveragingWindowWidth 
Input 
number 
Optional 
The width of the moving average window in bins. Mandatory for the Moving Average mode. 
Description¶
This algorithm calculates the backgrounds for the histograms in a workspace. The backgrounds can be returned asis, or directly subtracted from the input workspace depending on OutputMode.
There are three modes of operation: Linear Fit fits a line to the range specified by StartX and EndX and uses the midpoint as the background. Mean calculates the mean in same range. Finally, Moving Average calculates a rolling average with cyclic boundary conditions over the histograms of the input workspace. Width of the averaging window can be specified by AveragingWindowWidth.
The error of the background is only calculated when Mean or Moving Average is used. It is the errors in all the bins in the background region or averaging window, summed in quadrature and divided by the number of bins. This background error value is added in quadrature to the errors in each bin of the input workspace if Subtract Background is specified, otherwise returned in the background workspace.
If NullifyNegativeValues is true, the background is set to the corresponding y value for the bins/points which would become negative when the background is subtracted. In these cases, the errors are set to either the background value or to the original error, whichever is greater.
Note
Generally, using Subtract Background directly or subtracting the returned background manually later produces the same end result. This is not true, however, for the errors if NullifyNegativeValues is set. In this case Subtract Background will set the errors for the otherwise negative y values either to the background value or to the original error, whereas manual subtraction will add the background errors to the original ones in quadrature.
Note
Care should be taken when subtracting the returned background from other workspaces than the input workspace if NullifyNegativeValues is set. For backgrounds corresponding to the y value which would be zeroed, this algorithm returns the original y values instead of the actual background.
Usage¶
Example  Subtracting background using Linear Fit (using a distribution):
import numpy as np
y = [3, 1, 1, 1, 7, 3]
x = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5]
input = CreateWorkspace(x, y, Distribution=True)
output = CalculateFlatBackground('input',
StartX=2,
EndX=4,
Mode='Linear Fit',
OutputMode='Subtract Background')
print('Values with subtracted background: {}'.format(np.around(output.readY(0))))
Output:
Values with subtracted background: [ 2. 0. 0. 0. 6. 0.]
Example  Returning background using Mean (using a histogram):
import numpy as np
y = [3, 4, 2, 3, 3]
x = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5]
input = CreateWorkspace(x, y)
output = CalculateFlatBackground('input',
StartX=1,
EndX=3,
Mode='Mean',
OutputMode='Return Background')
# Note how some bins in the output workspace will be different from
# 3 (even negative!). By default, NullifyNegativeValues will be set
# to true, and subtracting the output from the input workspace will
# set these bins to zero.
print('Calculated Mean background: {}'.format(np.around(output.readY(0))))
subtracted = input  output
print('Background subtracted: {}'.format(np.around(subtracted.readY(0))))
Output:
Calculated Mean background: [ 3. 3. 2. 3. 3.]
Background subtracted: [ 0. 1. 0. 0. 0.]
Example  Returning background using Moving Average (using a histogram):
import numpy as np
from scipy.constants import pi
def spectrum(x):
# A fancy triplepeakshaped spectrum
z = x / 10.0  0.5
return np.sin(5.5 * (z + 0.1) * pi) + 2.0 * np.exp(((z / 0.1)**2)) + 1.0
# Equidistant x grid. Represents bin boundaries
x = np.arange(0.5, 9.1, 0.2)
# y is a bin shorter than x and has to be evaluated at bin centres.
y = spectrum(x[:1] + 0.5 * (x[1]  x[0]))
input = CreateWorkspace(x, y)
output = CalculateFlatBackground('input',
AveragingWindowWidth=3,
Mode='Moving Average',
OutputMode='Return Background')
print('Background using moving window average: {0:.4}'.format(output.readY(0)[0]))
print('True minimum: {0:.4}'.format(np.amin(input.readY(0))))
Output:
Background using moving window average: 0.09483
True minimum: 0.04894
Categories: AlgorithmIndex  SANS  CorrectionFunctions\BackgroundCorrections
Source¶
C++ header: CalculateFlatBackground.h
C++ source: CalculateFlatBackground.cpp