SetInstrumentParameter v1

../_images/SetInstrumentParameter-v1_dlg.png

SetInstrumentParameter dialog.

Summary

Add or replace an parameter attached to an instrument component.

Properties

Name Direction Type Default Description
Workspace InOut Workspace Mandatory Workspace to add the log entry to
ComponentName Input string   The name of the component to attach the parameter to. Default: the whole instrument
DetectorList Input int list   The detector ID list to attach the parameter to. If set this will override any ComponentName
ParameterName Input string Mandatory The name that will identify the parameter
ParameterType Input string String The type that the parameter value will be. Allowed values: [‘String’, ‘Number’, ‘Bool’]
Value Input string   The content of the Parameter

Description

This algorithm adds or replaces an parameter attached to an instrument component, or the entire instrument. Instrument parameters are specific to a workspace, they will get carried on to output workspaces created from an input workspace to an algorithm, but will not appear on unrelated workspaces that happen to have been recorded on the same instrument.

The workspace must have a instrument already defined, and will be altered in place. If the name of the instrument component to attach the parameter is not specified it will be attached to the whole instrument.

At present this algorithm only supports simple instrument parameters, NOT fitting parameters.

Parameter Types

The algorithm supports three types of parameters; Number (integer or floating point), String and Bool. For Bool type, valid values are 1, 0, true or false (not case-sensitive).

Usage

Example - a few simple parameters

ws = CreateSampleWorkspace()
#set a string parameter on the whole instrument
SetInstrumentParameter(ws,ParameterName="TestParam",Value="Hello")

#set a Number parameter just for bank 1
SetInstrumentParameter(ws,ParameterName="NumberParam",Value="3", ComponentName="bank1",ParameterType="Number")

#set a different value on bank 2
SetInstrumentParameter(ws,ParameterName="NumberParam",Value="3.5", ComponentName="bank2",ParameterType="Number")

instrument=ws.getInstrument()
bank1=instrument.getComponentByName("bank1")
bank2=instrument.getComponentByName("bank2")

print("The whole instrument parameter can be read from anywhere.")
print("  The instrument: " + instrument.getStringParameter("TestParam")[0])
print("  bank 1: " + bank1.getStringParameter("TestParam")[0])
print("  bank 2: " + bank2.getStringParameter("TestParam")[0])

print("The parameters  on the Bank 1 can be read from the bank or below.")
#For this one call getIntParameter as the number was an int
print("  bank 1: " + str(bank1.getIntParameter("NumberParam")[0]))
#For this one call getNumberParameter as the number was a float
print("  bank 2: " + str(bank2.getNumberParameter("NumberParam")[0]))
#if you are not sure of the type of a parameter you can call getParameterType
print("  The type of NumberParam in bank 1: " + bank1.getParameterType("NumberParam"))
print("  The type of NumberParam in bank 2: " + bank2.getParameterType("NumberParam"))

Output:

The whole instrument parameter can be read from anywhere.
  The instrument: Hello
  bank 1: Hello
  bank 2: Hello
The parameters  on the Bank 1 can be read from the bank or below.
  bank 1: 3
  bank 2: 3.5
  The type of NumberParam in bank 1: int
  The type of NumberParam in bank 2: double

Example - Overwriting existing values

ws = CreateSampleWorkspace()
#set a string parameter on the whole instrument
SetInstrumentParameter(ws,ParameterName="TestParam",Value="Hello")
SetInstrumentParameter(ws,ParameterName="TestParam",Value="Goodbye")
SetInstrumentParameter(ws,ParameterName="TestParam",Value="Hello from bank 1",ComponentName="bank1")

instrument=ws.getInstrument()
bank1=instrument.getComponentByName("bank1")

print("The SetInstrumentParameter overwrites previous values where the ParameterName and Component match.")
print("  The test param for the instrument is: " + instrument.getStringParameter("TestParam")[0])
print("Different Components can have the same Parameter Name with different values.")
print("You will receive the closest value to the component you ask from.")
print("  The test param for bank 1 is: " + bank1.getStringParameter("TestParam")[0])

Output:

The SetInstrumentParameter overwrites previous values where the ParameterName and Component match.
  The test param for the instrument is: Goodbye
Different Components can have the same Parameter Name with different values.
You will receive the closest value to the component you ask from.
  The test param for bank 1 is: Hello from bank 1

Categories: AlgorithmIndex | DataHandling\Instrument

Source

C++ source: SetInstrumentParameter.cpp (last modified: 2019-06-04)

C++ header: SetInstrumentParameter.h (last modified: 2018-10-05)