ScaleX v1

../_images/ScaleX-v1_dlg.png

ScaleX dialog.

Summary

Scales the X-axis of an input workspace by the given factor, which can be either multiplicative or additive.

Properties

Name Direction Type Default Description
InputWorkspace Input MatrixWorkspace Mandatory Name of the input workspace
OutputWorkspace Output MatrixWorkspace Mandatory Name of the output workspace
Factor Input number 1 The value by which to scale the X-axis of the input workspace. Default is 1.0
Operation Input string Multiply Whether to multiply by, or add factor. Allowed values: [‘Multiply’, ‘Add’]
IndexMin Input number 0 The workspace index of the first spectrum to scale. Only used if IndexMax is set.
IndexMax Input number Optional The workspace index of the last spectrum to scale. Only used if explicitly set.
InstrumentParameter Input string   The name of an instrument parameter whose value is used to scale as the input factor
Combine Input boolean False If true, combine the value given in the Factor property with the value obtained from the instrument parameter. The factors are combined using the operation specified in the Operation parameter

Description

Scales the X axis, the X-coordinate of histograms in a histogram workspace, and the X-coordinate of events in an event workspace by the requested amount.

  • The amount can be specified either as:
  • an absolute numerical value via the “Factor” argument or
  • an detector parameter name whose value is retrieved from the instrument.

Usage

Example - Modify the mean and standard deviation of a Gaussian via rescaling of the X-axis:

import numpy as np

# A Gaussian in the [-1, 1] range
DataX=np.arange(-1,1,0.01)
mean=0.3
sigma=0.2
DataY=np.exp( -(DataX-mean)**2/(2*sigma**2) )
ws = CreateWorkspace(DataX,DataY)

# Center the Gaussian by shifting the X-axis, then find its average
ws2 = ScaleX(ws, Factor=-mean, Operation='Add')
print('mean={:.2f}'.format(abs(np.sum( ws2.dataX(0) *ws2.dataY(0) ) / np.sum( ws2.dataY(0) ))))

# Decrease the standard deviation of the Gaussian by half via shrinkage of the X-axis,
# then find its standard deviation
ws3 = ScaleX(ws2, Factor=0.5, Operation='Multiply')
print('sigma={:.2f}'.format(np.sqrt( np.sum( ws3.dataX(0)**2 *ws3.dataY(0) ) / np.sum( ws3.dataY(0) ) )))

Output:

mean=0.00
sigma=0.10

Categories: Algorithms | Arithmetic | CorrectionFunctions

Source

C++ source: ScaleX.cpp (last modified: 2017-08-01)

C++ header: ScaleX.h (last modified: 2016-02-12)