diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py index 4cd78b85fba9520b875c68f70bf4ce1b4fc3a37c..1505f26f31fd6b582a0b185958ecc0bc26c5dbdc 100644 --- a/src/toolbox_scs/constants.py +++ b/src/toolbox_scs/constants.py @@ -71,8 +71,8 @@ mnemonics = { "M2BEND": ({'source': 'SA3_XTD10_MIRR-2/MOTOR/BENDER', 'key': 'actualPosition.value', 'dim': None},), - "tpi": ({'source': 'SCS_XTD10_TPI/DCTRL/SHUTTER', - 'key': 'operationModePLC.value', + "TPI": ({'source': 'SCS_XTD10_TPI/DCTRL/SHUTTER', + 'key': 'hardwareStatusBitField.value', 'dim': None},), "VSLIT": ({'source': 'SA3_XTD10_VSLIT/MDL/BLADE', 'key': 'actualGap.value', diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py index c66dd3816364c6ed4d75a544477f5b89aa530f1c..9813e313fd6ec8a0df31b26c85162afd7cdb1b3a 100644 --- a/src/toolbox_scs/load.py +++ b/src/toolbox_scs/load.py @@ -20,6 +20,7 @@ from .constants import mnemonics as _mnemonics from .mnemonics_machinery import mnemonics_for_run from .util.exceptions import ToolBoxValueError import toolbox_scs.detectors as tbdet +from toolbox_scs.misc import get_tpi_state __all__ = [ 'concatenateRuns', @@ -253,6 +254,9 @@ def load(proposalNB=None, runNB=None, if extract_bam and len(bam) > 0: data = tbdet.get_bam(run, mnemonics=bam, merge_with=data) + if 'TPI' in data: + data['TPI'] = get_tpi_state(data['TPI']) + return run, data diff --git a/src/toolbox_scs/misc/__init__.py b/src/toolbox_scs/misc/__init__.py index 2d92125e29303ed0444bdd418ce748504b5e4602..aca146ca005e61f8d92322d7104805984824986b 100644 --- a/src/toolbox_scs/misc/__init__.py +++ b/src/toolbox_scs/misc/__init__.py @@ -1,11 +1,13 @@ from .bunch_pattern import * from .bunch_pattern_external import * from .laser_utils import * +from .train_picker import * from .undulator import * __all__ = ( bunch_pattern.__all__ + bunch_pattern_external.__all__ + laser_utils.__all__ + + train_picker.__all__ + undulator.__all__ ) diff --git a/src/toolbox_scs/misc/train_picker.py b/src/toolbox_scs/misc/train_picker.py new file mode 100644 index 0000000000000000000000000000000000000000..e55078c5bae08ac226bec19a50b14ce86ffacdfa --- /dev/null +++ b/src/toolbox_scs/misc/train_picker.py @@ -0,0 +1,20 @@ +__all__ = [ + 'get_tpi_state' +] + + +def get_tpi_state(arr): + """ Extract the closed (True) or opened (False) state of the train picker + from the hardwareStatusBitField + + Parameters + ---------- + arr: array + the array of hardwareStatusBitField values + + Returns + ------- + tpi_state: boolean array + the tpi state + """ + return arr & (1 << 9) > 0