From 17fc2b96273e5fa5d0340f164bf532dc584241d2 Mon Sep 17 00:00:00 2001 From: Laurent Mercadier <laurent.mercadier@xfel.eu> Date: Tue, 6 Dec 2022 21:12:12 +0100 Subject: [PATCH] redefine TPI mnemonics and add function to read its state --- src/toolbox_scs/constants.py | 4 ++-- src/toolbox_scs/load.py | 4 ++++ src/toolbox_scs/misc/__init__.py | 2 ++ src/toolbox_scs/misc/train_picker.py | 20 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 src/toolbox_scs/misc/train_picker.py diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py index 4cd78b8..1505f26 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 c66dd38..9813e31 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 2d92125..aca146c 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 0000000..e55078c --- /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 -- GitLab