diff --git a/pyproject.toml b/pyproject.toml index 454073e1bd2..159f8c2ee71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "scanspec>=0.7.3", "pyzmq==26.3.0", # Until we can move to RHEL 8 https://github.com/DiamondLightSource/mx-bluesky/issues/1139 "deepdiff", - "daq-config-server>=v1.0.0", # For getting Configuration settings. + "daq-config-server>=v1.1.2", # For getting Configuration settings. ] dynamic = ["version"] diff --git a/src/dodal/common/beamlines/beamline_parameters.py b/src/dodal/common/beamlines/beamline_parameters.py index fb66035e4f4..a29856f0460 100644 --- a/src/dodal/common/beamlines/beamline_parameters.py +++ b/src/dodal/common/beamlines/beamline_parameters.py @@ -1,7 +1,7 @@ -import ast -from typing import Any, cast +from typing import Any + +from daq_config_server.client import ConfigServer -from dodal.log import LOGGER from dodal.utils import get_beamline_name BEAMLINE_PARAMETER_KEYWORDS = ["FB", "FULL", "deadtime"] @@ -24,41 +24,12 @@ def __repr__(self) -> str: def __getitem__(self, item: str): return self.params[item] - @classmethod - def from_lines(cls, file_name: str, config_lines: list[str]): - config_lines_nocomments = [line.split("#", 1)[0] for line in config_lines] - config_lines_sep_key_and_value = [ - # XXX removes all whitespace instead of just trim - line.translate(str.maketrans("", "", " \n\t\r")).split("=") - for line in config_lines_nocomments - ] - config_pairs: list[tuple[str, Any]] = [ - cast(tuple[str, Any], param) - for param in config_lines_sep_key_and_value - if len(param) == 2 - ] - for i, (param, value) in enumerate(config_pairs): - try: - # BEAMLINE_PARAMETER_KEYWORDS effectively raw string but whitespace removed - if value not in BEAMLINE_PARAMETER_KEYWORDS: - config_pairs[i] = ( - param, - cls.parse_value(value), - ) - except Exception as e: - LOGGER.warning(f"Unable to parse {file_name} line {i}: {e}") - - return cls(params=dict(config_pairs)) - @classmethod def from_file(cls, path: str): - with open(path) as f: - config_lines = f.readlines() - return cls.from_lines(path, config_lines) - - @classmethod - def parse_value(cls, value: str): - return ast.literal_eval(value.replace("Yes", "True").replace("No", "False")) + config_server = ConfigServer(url="https://daq-config.diamond.ac.uk") + return cls( + params=config_server.get_file_contents(path, dict, reset_cached_result=True) + ) def get_beamline_parameters(beamline_param_path: str | None = None): diff --git a/tests/common/beamlines/test_beamline_parameters.py b/tests/common/beamlines/test_beamline_parameters.py index aeba8295f1d..b0e6132ed6a 100644 --- a/tests/common/beamlines/test_beamline_parameters.py +++ b/tests/common/beamlines/test_beamline_parameters.py @@ -8,7 +8,6 @@ get_beamline_parameters, ) from tests.test_data import ( - BAD_BEAMLINE_PARAMETERS, I04_BEAMLINE_PARAMETERS, TEST_BEAMLINE_PARAMETERS_TXT, ) @@ -34,40 +33,6 @@ def test_i03_beamline_parameters(): ] -@patch("dodal.common.beamlines.beamline_parameters.LOGGER") -def test_parse_exception_causes_warning(mock_logger): - params = GDABeamlineParameters.from_file(BAD_BEAMLINE_PARAMETERS) - assert params["flux_predict_polynomial_coefficients_5"] == [ - -0.0000707134131045123, - 7.0205491504418, - -194299.6440518530, - 1835805807.3974800, - -3280251055671.100, - ] - mock_logger.warning.assert_called_once() - - params = GDABeamlineParameters.from_file(BAD_BEAMLINE_PARAMETERS) - assert params["flux_predict_polynomial_coefficients_5"] == [ - -0.0000707134131045123, - 7.0205491504418, - -194299.6440518530, - 1835805807.3974800, - -3280251055671.100, - ] - - -def test_parse_list(): - test_data = [([1, 2, 3], "[1, 2, 3]"), ([1, True, 3], "[1, Yes, 3]")] - for expected, input in test_data: - actual = GDABeamlineParameters.parse_value(input) - assert expected == actual, f"Actual:{actual}, expected: {expected}\n" - - -def test_parse_list_raises_exception(): - with pytest.raises(SyntaxError): - GDABeamlineParameters.parse_value("[1, 2") - - def test_get_beamline_parameters_works_with_no_environment_variable_set(): if environ.get("BEAMLINE"): del environ["BEAMLINE"] @@ -108,32 +73,6 @@ def test_get_beamline_parameters_raises_error_when_beamline_not_found( get_beamline_parameters() -def test_parse_nested_list(): - actual = GDABeamlineParameters.parse_value("[[1, 2], [3, 4]]") - expected = [[1, 2], [3, 4]] - assert actual == expected - - -def test_parse_nested_nested_list(): - actual = GDABeamlineParameters.parse_value("[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]") - expected = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] - assert actual == expected - - -def test_leading_comma_in_list_causes_error(): - with pytest.raises(SyntaxError): - GDABeamlineParameters.parse_value("[,1, 2, 3, 4]") - with pytest.raises(SyntaxError): - GDABeamlineParameters.parse_value("[[1, 2], [ ,3, 4]]") - - -def test_Yes_and_No_replaced_with_bool_values(): # noqa: N802 - value = "[Yes, No, True, False, 0, 1]" - expected = [True, False, True, False, 0, 1] - actual = GDABeamlineParameters.parse_value(value) - assert actual == expected - - @pytest.fixture(autouse=True) def i03_beamline_parameters(): with patch.dict( diff --git a/tests/conftest.py b/tests/conftest.py index 6a80d6b92e6..5175000c653 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ import importlib +import json import logging import os import sys @@ -8,6 +9,7 @@ from unittest.mock import MagicMock, patch import pytest +from daq_config_server.models import ConfigModel from ophyd_async.core import PathProvider from dodal.common.beamlines import beamline_parameters, beamline_utils @@ -159,3 +161,33 @@ def eiger_params(tmp_path: Path) -> DetectorParams: det_dist_to_beam_converter_path=TEST_LUT_TXT, detector_size_constants=EIGER2_X_16M_SIZE.det_type_string, # type: ignore ) + + +def _fake_config_server_get_file_contents( + filepath: str | Path, + desired_return_type: type[str] | type[dict] | ConfigModel = str, + reset_cached_result: bool = True, +): + filepath = Path(filepath) + # Minimal logic required for unit tests + with filepath.open("r") as f: + contents = f.read() + print(contents) + if desired_return_type is str: + return contents + elif desired_return_type is dict: + print("return type is dict") + return json.loads(contents) + elif issubclass(desired_return_type, ConfigModel): # type: ignore + return desired_return_type.model_validate(json.loads(contents)) + + +@pytest.fixture(autouse=True) +def mock_config_server(): + # Don't actually talk to central service during unit tests, and reset caches between test + + with patch( + "daq_config_server.client.ConfigServer.get_file_contents", + side_effect=_fake_config_server_get_file_contents, + ): + yield diff --git a/tests/devices/test_daq_configuration/domain/beamlineParameters b/tests/devices/test_daq_configuration/domain/beamlineParameters index 0a783cd2f81..030fbcc9423 100644 --- a/tests/devices/test_daq_configuration/domain/beamlineParameters +++ b/tests/devices/test_daq_configuration/domain/beamlineParameters @@ -1,139 +1,77 @@ -# -# -BeamLine BL03S - -## Test data for device instantiation -BLSE=FB - -## BPFB (Beam Position FeedBack) -## HALF (default) only off during data collection -## FULL only off for XBPM2 during attenuation optimisation, fluo when trans < 2% and wedged MAD -## UNAVAILABLE (not default) prevents xbpm_feedback.py trying to access EPICS IOC that may not be running -BPFB=FULL -## Note: only beamline scientists control whether feedback is enabled -## via the XBPM feedback EDM screen in Synoptic - -# DCM parameters -DCM_Perp_Offset_FIXED = 25.6 -# -# beamstop -# -parked_x = 4.49 -parked_y = -50.0 -parked_y_plate = -50.5 -parked_z = -49.5 -parked_z_robot = 30.0 - -in_beam_z_MIN_START_POS = 60.0 - - -#Aperture - Scatterguard positions -# 100 micron ap -miniap_x_LARGE_APERTURE = 2.389 -miniap_y_LARGE_APERTURE = 40.986 -miniap_z_LARGE_APERTURE = 15.8 - -sg_x_LARGE_APERTURE = 5.25 -sg_y_LARGE_APERTURE = 4.43 - -# 50 micron ap -miniap_x_MEDIUM_APERTURE = 2.384 -miniap_y_MEDIUM_APERTURE = 44.967 -miniap_z_MEDIUM_APERTURE = 15.8 -sg_x_MEDIUM_APERTURE = 5.285 -sg_y_MEDIUM_APERTURE = 0.46 - -# 20 micron ap -miniap_x_SMALL_APERTURE = 2.430 -miniap_y_SMALL_APERTURE = 48.974 -miniap_z_SMALL_APERTURE = 15.8 -sg_x_SMALL_APERTURE = 5.3375 -sg_y_SMALL_APERTURE = -3.55 - -# Robot load -miniap_x_ROBOT_LOAD = 2.386 -miniap_y_ROBOT_LOAD = 31.40 -miniap_z_ROBOT_LOAD = 15.8 -sg_x_ROBOT_LOAD = 5.25 -sg_y_ROBOT_LOAD = 4.43 - -# manual mount -miniap_x_MANUAL_LOAD = -4.91 -miniap_y_MANUAL_LOAD = -49.0 -miniap_z_MANUAL_LOAD = -10.0 - -sg_x_MANUAL_LOAD = -4.7 -sg_y_MANUAL_LOAD = 1.8 - -miniap_x_SCIN_MOVE = -4.91 -# prion setting -#miniap_x_SCIN_MOVE = 0.0 -sg_x_SCIN_MOVE = -4.75 - -scin_y_SCIN_IN = 100.855 -scin_y_SCIN_OUT = -0.02 -scin_z_SCIN_IN = 101.5115 - - -scin_z_SCIN_OUT = 0.1 - -#distance to move gonx,y,z when scintillator is put in with standard pins -# For old gonio: -gon_x_SCIN_OUT_DISTANCE = 1.0 -# For SmarGon: -gon_x_SCIN_OUT_DISTANCE_smargon = 1 - -gon_y_SCIN_OUT_DISTANCE = 2.0 -gon_z_SCIN_OUT_DISTANCE = -0.5 - -# StandardEnergy on i03 is 12700eV -StandardEnergy = 12700 - -keyence_max_attempts = 1 -# Move gonio 100 microns, see difference in keyence values -# Then do 100/difference, put that number below -# Sign may change between Smargon and MiniKappa -keyence_slopeYToX = 2.5 -keyence_slopeYToY = -2.5 -keyence_slopeXToZ = 3.23 - -YAGSamX = 1022 -YAGSamY = -98.0 -YAGSamZ = -147 -YAGOmega = 0.0 - -#ipin value must be < ipin_threshold above background for data collection -ipin_threshold = 0.1 - -# energy thresholds for mirror stripes -# - first threshold is between bare/Rh stripes (e.g. 7000) -# - second threshold is between Rh/Pt stripes (e.g. 18000) -mirror_threshold_bare_rh = 6900 -mirror_threshold_rh_pt = 30000 - -# flux conversion factors -flux_factor_no_aperture = 1 -flux_factor_LARGE_APERTURE = 0.738 -flux_factor_MEDIUM_APERTURE = 0.36 -flux_factor_SMALL_APERTURE = 0.084 -flux_factor_no_aperture_plate = 1 -flux_factor_LARGE_APERTURE_plate = 0.738 -flux_factor_MEDIUM_APERTURE_plate = 0.36 -flux_factor_SMALL_APERTURE_plate = 0.084 - -#Deadtime settings -fluorescence_analyser_deadtimeThreshold=0.002 # used by edge scans -fluorescence_spectrum_deadtimeThreshold=0.0005 # used by spectrum - -#Other settings -fluorescence_attenuation_low_roi = 100 -fluorescence_attenuation_high_roi = 2048 -attenuation_optimisation_optimisation_cycles = 10 -attenuation_optimisation_start_transmission = 0.1 # per cent -fluorescence_mca_sca_offset = 400 - -#Total count settings -attenuation_optimisation_multiplier = 2 -attenuation_optimisation_target_count = 2000 -attenuation_optimisation_upper_limit = 50000 -attenuation_optimisation_lower_limit = 20000 +{ + "BLSE": "FB", + "BPFB": "FULL", + "DCM_Perp_Offset_FIXED": 25.6, + "parked_x": 4.49, + "parked_y": -50.0, + "parked_y_plate": -50.5, + "parked_z": -49.5, + "parked_z_robot": 30.0, + "in_beam_z_MIN_START_POS": 60.0, + "miniap_x_LARGE_APERTURE": 2.389, + "miniap_y_LARGE_APERTURE": 40.986, + "miniap_z_LARGE_APERTURE": 15.8, + "sg_x_LARGE_APERTURE": 5.25, + "sg_y_LARGE_APERTURE": 4.43, + "miniap_x_MEDIUM_APERTURE": 2.384, + "miniap_y_MEDIUM_APERTURE": 44.967, + "miniap_z_MEDIUM_APERTURE": 15.8, + "sg_x_MEDIUM_APERTURE": 5.285, + "sg_y_MEDIUM_APERTURE": 0.46, + "miniap_x_SMALL_APERTURE": 2.43, + "miniap_y_SMALL_APERTURE": 48.974, + "miniap_z_SMALL_APERTURE": 15.8, + "sg_x_SMALL_APERTURE": 5.3375, + "sg_y_SMALL_APERTURE": -3.55, + "miniap_x_ROBOT_LOAD": 2.386, + "miniap_y_ROBOT_LOAD": 31.4, + "miniap_z_ROBOT_LOAD": 15.8, + "sg_x_ROBOT_LOAD": 5.25, + "sg_y_ROBOT_LOAD": 4.43, + "miniap_x_MANUAL_LOAD": -4.91, + "miniap_y_MANUAL_LOAD": -49.0, + "miniap_z_MANUAL_LOAD": -10.0, + "sg_x_MANUAL_LOAD": -4.7, + "sg_y_MANUAL_LOAD": 1.8, + "miniap_x_SCIN_MOVE": -4.91, + "sg_x_SCIN_MOVE": -4.75, + "scin_y_SCIN_IN": 100.855, + "scin_y_SCIN_OUT": -0.02, + "scin_z_SCIN_IN": 101.5115, + "scin_z_SCIN_OUT": 0.1, + "gon_x_SCIN_OUT_DISTANCE": 1.0, + "gon_x_SCIN_OUT_DISTANCE_smargon": 1, + "gon_y_SCIN_OUT_DISTANCE": 2.0, + "gon_z_SCIN_OUT_DISTANCE": -0.5, + "StandardEnergy": 12700, + "keyence_max_attempts": 1, + "keyence_slopeYToX": 2.5, + "keyence_slopeYToY": -2.5, + "keyence_slopeXToZ": 3.23, + "YAGSamX": 1022, + "YAGSamY": -98.0, + "YAGSamZ": -147, + "YAGOmega": 0.0, + "ipin_threshold": 0.1, + "mirror_threshold_bare_rh": 6900, + "mirror_threshold_rh_pt": 30000, + "flux_factor_no_aperture": 1, + "flux_factor_LARGE_APERTURE": 0.738, + "flux_factor_MEDIUM_APERTURE": 0.36, + "flux_factor_SMALL_APERTURE": 0.084, + "flux_factor_no_aperture_plate": 1, + "flux_factor_LARGE_APERTURE_plate": 0.738, + "flux_factor_MEDIUM_APERTURE_plate": 0.36, + "flux_factor_SMALL_APERTURE_plate": 0.084, + "fluorescence_analyser_deadtimeThreshold": 0.002, + "fluorescence_spectrum_deadtimeThreshold": 0.0005, + "fluorescence_attenuation_low_roi": 100, + "fluorescence_attenuation_high_roi": 2048, + "attenuation_optimisation_optimisation_cycles": 10, + "attenuation_optimisation_start_transmission": 0.1, + "fluorescence_mca_sca_offset": 400, + "attenuation_optimisation_multiplier": 2, + "attenuation_optimisation_target_count": 2000, + "attenuation_optimisation_upper_limit": 50000, + "attenuation_optimisation_lower_limit": 20000 +} diff --git a/tests/plan_stubs/test_data/topup_long_delay.txt b/tests/plan_stubs/test_data/topup_long_delay.txt index 41eb4100971..9a036944631 100644 --- a/tests/plan_stubs/test_data/topup_long_delay.txt +++ b/tests/plan_stubs/test_data/topup_long_delay.txt @@ -1,2 +1,4 @@ -dodal_topup_threshold_exposure_s = 30 -dodal_topup_end_delay_s = 19 +{ + "dodal_topup_threshold_exposure_s": 30, + "dodal_topup_end_delay_s": 19 +} diff --git a/tests/plan_stubs/test_data/topup_short_params.txt b/tests/plan_stubs/test_data/topup_short_params.txt index 497b0d790e4..0bbcbd9fa23 100644 --- a/tests/plan_stubs/test_data/topup_short_params.txt +++ b/tests/plan_stubs/test_data/topup_short_params.txt @@ -1,2 +1,4 @@ -dodal_topup_threshold_exposure_s = 35 -dodal_topup_end_delay_s = 1 +{ + "dodal_topup_threshold_exposure_s": 35, + "dodal_topup_end_delay_s": 1 +} diff --git a/tests/plan_stubs/test_topup_plan.py b/tests/plan_stubs/test_topup_plan.py index 5be58415278..5ca1e7711b7 100644 --- a/tests/plan_stubs/test_topup_plan.py +++ b/tests/plan_stubs/test_topup_plan.py @@ -26,6 +26,10 @@ async def synchrotron() -> Synchrotron: @patch("dodal.plan_stubs.check_topup.wait_for_topup_complete") @patch("dodal.plan_stubs.check_topup.bps.sleep") +@patch( + "dodal.common.beamlines.beamline_parameters.BEAMLINE_PARAMETER_PATHS", + {"i03": TEST_BEAMLINE_PARAMETERS_TXT}, +) def test_when_topup_before_end_of_collection_wait( fake_sleep: MagicMock, fake_wait: MagicMock, diff --git a/tests/test_data/i04_beamlineParameters b/tests/test_data/i04_beamlineParameters index 87beab7f2cf..3e24a3e69f5 100644 --- a/tests/test_data/i04_beamlineParameters +++ b/tests/test_data/i04_beamlineParameters @@ -1,503 +1,283 @@ -# -# -BeamLine BL04I - -## BLSE=FB switches between scan alignment and feedback alignment -## by creating bl energy scannable with beamLineSpecificEnergy_FB -## after changing you must restart servers or >>> reset_namespace -BLSE=FB - -## BPFB (Beam Position FeedBack) -## HALF (default) only off during data collection -## FULL only off for XBPM2 during attenuation optimisation, fluo when trans < 2% and wedged MAD -## UNAVAILABLE (not default) prevents /dls_sw/i04/software/gda/mx-config/scripts/xbpm_feedback.py trying to access EPICS IOC that may not be running -BPFB=FULL -## Note: only beamline scientists control whether feedback is enabled -## via the I04 XBPM feedback EDM screen in Synoptic - -DCM_Perp_Offset_FIXED = 25.75 - -# -# beamstop -# -parked_x = 4.98 #4.48 -parked_y =-49.1 -parked_z = -49.3 -parked_z_robot = 49.50 #55, 17/11/2020 value changed see Jira I04-421 - -in_beam_z_MIN_START_POS = 49.5 #40.0 - -in_beam_x_STANDARD = -2.7 #-2.8 -in_beam_y_STANDARD = 44.99 #44.98 #44.96 #44.95 #44.95 #44.64 #44.645 #44.63 #44.64 #44.68 #44.53 # 45.00 (11/Oct/2023) -in_beam_z_STANDARD = 25.0 - -in_beam_x_HIGHRES = -2.7 #2.50 #-3.84 -in_beam_y_HIGHRES = 44.99 #44.97 #44.96 #44.95 #44.95 #44.60 #44.61 #44.645 #44.63 #44.64 #44.68 #44.65(11/Oct/2023) -# #in_beam_z_HIGHRES = 12 -# # this is used for fluo spectra; original distance 0f 12.0 gives W contamination - in_beam_z_HIGHRES = 25.0 - - -in_beam_x_LOWRES = -2.75 -in_beam_y_LOWRES = 44.93 #44.92 #44.89 #44.90 #44.53 #44.55 #44.58 #474.57 #44.58 #44.61 #44.59 #44.48 (09/Oct/2023) -in_beam_z_LOWRES = 49.50 - - -## in_beam_col_tilt = -120.0 ## what is this????; This refers to the old end station and is no longer needed (RF) - -checkCryoy=Yes -#If is to be moved in by the script. If not Yes then control is handed to the robot on activate script -#To force the cryojet run hutch_utilities.hutch.forceCryoOut() -manualCryojet=Yes - -############################################################################### -# # -# 2015-07-03 - values to use during miniAPY failure # -# with no scatterguard or aperture during this period # -# # -############################################################################### -#Aperture - Scatterguard positions new block with 200, 20 and 10 micron ap's -#200 micron ap -#miniap_x_LARGE_APERTURE=-4.0 -#miniap_y_LARGE_APERTURE=-48.95 -#miniap_z_LARGE_APERTURE=-12.0 -#sg_x_LARGE_APERTURE=-3.0 -#sg_y_LARGE_APERTURE=-4.4 - - -# 20 micron ap - new block with 200, 20 and 10 micron ap's - -#miniap_x_MEDIUM_APERTURE=-4.0 -#miniap_y_MEDIUM_APERTURE=-48.95 -#miniap_z_MEDIUM_APERTURE=-12.0 -#sg_x_MEDIUM_APERTURE=-3.0 -#sg_y_MEDIUM_APERTURE=-4.4 - -# 10 micron ap - new block with 200, 20 and 10 micron ap's - REALLY 20 um as miniap_y cannot reach its position for 10 um -#miniap_x_SMALL_APERTURE=-4.0 -#miniap_y_SMALL_APERTURE=-48.95 -#miniap_z_SMALL_APERTURE=-12.0 -#sg_x_SMALL_APERTURE=-3.0 -#sg_y_SMALL_APERTURE=-4.4 - -# Robot load -#miniap_x_ROBOT_LOAD=-4.0 -#miniap_y_ROBOT_LOAD=-48.95 -#miniap_z_ROBOT_LOAD=-12.0 -#sg_x_ROBOT_LOAD=-3.0 -#sg_y_ROBOT_LOAD=-4.4 - -# manual mount -#miniap_x_MANUAL_LOAD=-4.0 -#miniap_y_MANUAL_LOAD=-48.95 -#miniap_z_MANUAL_LOAD=-12.0 -#sg_x_MANUAL_LOAD=-3.0 -#sg_y_MANUAL_LOAD=-4.4 - - - - -############################################################################### -# 2015-01-19 - 200,20, 10 CRLS - set so to use 200 micron all the time # -# # -# 2015-07-03 - commented out until miniapY is fixed - values above to work # -# with no scatterguard or aperture during this period # -# # -############################################################################### -#Aperture - Scatterguard positions new block with 200, 20 and 10 micron ap's -#200 micron ap updated 2023-04-26 -miniap_x_LARGE_APERTURE= 4.10 #4.13 # until March 2023 4.38 #4.34 #4.35 #4.34 #3.65 # 4.29 #4.500 #4.6843 #4.717 #4.7 -miniap_y_LARGE_APERTURE= 41.13 #41.14 #until March 2023 41.88 #41.81 #41.86 #41.88 #41.8184 #41.25 #41.5384 #41.801 #42.155 #40.7385 -miniap_z_LARGE_APERTURE=16.9 -sg_x_LARGE_APERTURE= 4.51 #4.66 #4.78 #4.800 #4.8 #4.4782 #4.85 #3.9 -sg_y_LARGE_APERTURE= 4.53 #4.637 #4.682 #4.137 #3.6589 #3.68 #3.4 - - -# 20 micron ap - new block with 200, 20 and 10 micron ap's - -miniap_x_MEDIUM_APERTURE=4.303 #4.65 #4.607 -miniap_y_MEDIUM_APERTURE=45.245 #46.168 #44.746 -miniap_z_MEDIUM_APERTURE=16.9 -sg_x_MEDIUM_APERTURE=4.04 #4.85 #3.88 -sg_y_MEDIUM_APERTURE=0.15 - -# 10 micron ap - new block with 200, 20 and 10 micron ap's - REALLY 20 um as miniap_y cannot reach its position for 10 um -miniap_x_SMALL_APERTURE=4.3 #4.605 #4.61 -miniap_y_SMALL_APERTURE=49.765 #50.13 -miniap_z_SMALL_APERTURE=16.9 -sg_x_SMALL_APERTURE=4.85 #3.9 -sg_y_SMALL_APERTURE=-4.25 #3.35 - - -# Robot load, see Jira ticket I04-421 -miniap_x_ROBOT_LOAD=-4.0 # -4.9 -miniap_y_ROBOT_LOAD=24.9 #0.0 #-48.95 #0.0 -miniap_z_ROBOT_LOAD=16.9 -sg_x_ROBOT_LOAD=-3.0 #-4.9 -sg_y_ROBOT_LOAD=-4.4 - -# manual mount -miniap_x_MANUAL_LOAD=-4.0 # -4.9 -miniap_y_MANUAL_LOAD=-48.95 #-49 -miniap_z_MANUAL_LOAD=-12. -sg_x_MANUAL_LOAD=-3.0 #-4.9 -sg_y_MANUAL_LOAD=-4.4 - -miniap_x_SCIN_MOVE=-4.0 # -4.9 -sg_x_SCIN_MOVE=-3.0 # -4.9 - -###I04 Scintillator### -scin_y_SCIN_IN= 97.45 #97.25 #97.1 #96.22 #93.42 #96.92 -scin_y_SCIN_OUT=-0.1 #-0.8 , 17/11/2020 value changed see Jira I04-421 -scin_z_SCIN_IN= 93.8 #93.81 #93.87 #93.97 # 15-11-22 Home done, scan scin z value -scin_z_SCIN_OUT=0.2 - -###Tomography Scintillator### -#scin_y_SCIN_IN=102.0 -#scin_y_SCIN_OUT=-0.1 -#scin_z_SCIN_IN=99.17 -#scin_z_SCIN_OUT=0.2 - - -#distance to move gonx,y,z when scintillator is put in with standard pins -#gon_x_SCIN_OUT_DISTANCE=0.5 -#use with mini kappa: -#gon_x_SCIN_OUT_DISTANCE_kappa = 1.5 - -# For SmarGon: -gon_x_SCIN_OUT_DISTANCE_smargon = 1 - -#Required for single axis because _smargon won't be used -#gon_x_SCIN_OUT_DISTANCE=1.0 - -# -gon_y_SCIN_OUT_DISTANCE=2 -gon_z_SCIN_OUT_DISTANCE=-1.5 - -# For SmarGon with EM Grid holder (13-03-2018): -#gon_x_SCIN_OUT_DISTANCE_smargon = 0 -## -#gon_y_SCIN_OUT_DISTANCE=0 -#gon_z_SCIN_OUT_DISTANCE=0 - - - -#distance to move gonx,y,z when scintillator is put in with crosshair wire mounted -#gon_x_SCIN_OUT_DISTANCE=-7 -#gon_y_SCIN_OUT_DISTANCE=0 -#gon_z_SCIN_OUT_DISTANCE=0 - - -#CASS motor position tolerances (mm) -miniap_x_tolerance=0.001 -miniap_y_tolerance=0.001 -miniap_z_tolerance=0.1 -sg_x_tolerance=0.1 -sg_y_tolerance=0.1 -scin_y_tolerance=1.2 -scin_z_tolerance=0.1 -gon_x_tolerance=0.01 -gon_y_tolerance=0.1 -gon_z_tolerance=0.001 -bs_x_tolerance=0.005 -bs_y_tolerance=0.005 -bs_z_tolerance=0.2 -crl_x_tolerance=0.01 -crl_y_tolerance=0.01 -crl_pitch_tolerance=0.01 -crl_yaw_tolerance=0.01 -sg_y_up_movement_tolerance=1.0 - -sg_x_timeout=10 -sg_y_timeout=10 -miniap_x_timeout=10 -miniap_y_timeout=80 -gon_x_timeout=60 -gon_y_timeout=30 -gon_z_timeout=30 -crl_x_timeout=120 -crl_y_timeout=10 -crl_pitch_timeout=10 -crl_yaw_timeout=10 - -## CRL positions for low and high energy lens sets. Should deliver beam to same position on scintillator. -## Normally should only adjust the low energy set to match the position of the high energy that you've -## already checked on the scintillator screen. - -#crl_x_LOWE=-7.337 -#crl_y_LOWE=0.785 -#crl_pitch_LOWE=3.030 -#crl_yaw_LOWE=7.245 - -############################################################################################ -# All values set to NOCRL position to avoid CRL being moved in beam when energy is changed -# until GDA bug is fixed -############################################################################################ - -crl_x_LOWE=0.0 -crl_y_LOWE=0.8277 -crl_pitch_LOWE=3.0065 -crl_yaw_LOWE=7.1015 - -crl_x_NOCRL = 0.0 -crl_y_NOCRL = 0.8277 -crl_pitch_NOCRL= 3.0065 -crl_yaw_NOCRL = 7.1015 - -crl_x_HIGHE=0.0 -crl_y_HIGHE=0.8277 -crl_pitch_HIGHE=3.0065 -crl_yaw_HIGHE=7.1015 - -### Positions with Mirrors #### -#crl_x_LOWE=-7.5 -#crl_y_LOWE=-1.65 -#crl_pitch_LOWE=1.4 -#crl_yaw_LOWE=0.04 -# -#crl_x_NOCRL = 0.0 -#crl_y_NOCRL = 0.8277 -#crl_pitch_NOCRL= 3.0065 -#crl_yaw_NOCRL = 7.1015 -# -#crl_x_HIGHE=6.4 -#crl_y_HIGHE=-1.55 -#crl_pitch_HIGHE=0.74 -#crl_yaw_HIGHE=-1.555 -################################# - - -#Beam visualisation parameters -MinBackStopZ = 10.0 -BackStopYsafe = 20.0 -BackStopXyag = -17.95 -BackStopYyag = 24.05 -BackStopZyag = 18.0 -SampleYnormal = 2.65 -SampleYshift = 2.0 -parked_fluo_x=1.1 -#in_beam_fluo_x=1.0086 -#in_beam_fluo_x=-35.0 -in_beam_fluo_x=-40.0 -move_fluo = Yes -safe_det_z_default=1000 -safe_det_z_sampleChanger=333 -store_data_collections_in_ispyb=Yes -TakePNGsOfSample=Yes - -#robot requires these values -gonio_parked_x=0.0 -gonio_parked_y=0.0 -gonio_parked_z=0.0 -gonio_parked_omega=0 -gonio_parked_kappa = -7.5 -gonio_parked_chi = 0 -gonio_parked_phi = 0 - -col_inbeam_tolerance = 1.0 - -#Run 3 2015 - Set offsets to 0 at 12658eV on 25/6/2015 - see standing instruction -col_parked_tolerance=1.0 -col_parked_upstream_x=0.0 -col_parked_downstream_x=0.0 -col_parked_upstream_y=0.0 -col_parked_inboard_y=0.0 -col_parked_outboard_y=0.0 - - -# The following used by setupBeamLine script -setupBeamLine_energyStart = 6000. -setupBeamLine_energyEnd = 18000. -setupBeamLine_energyStep = 500. -setupBeamLine_rollStart = -1.95 -setupBeamLine_rollEnd = -1.55 -setupBeamLine_rollSteps = 80 -setupBeamLine_pitchStart = -0.65 -setupBeamLine_pitchEnd = -0.45 -setupBeamLine_pitchSteps = 200 -#values below in microns -beamXCentre=0. -beamYCentre=0. -beamXYSettleTime=6.0 -beamXYTolerance=5.0 -DataCollection_TurboMode=Yes -#time in seconds. If not set then the default is 0.1 - -#The following are used by beamLineenergy script -beamLineEnergy_rollBeamX = 100 -beamLineEnergy_rollBeamY = 400 -beamLineEnergy__rollWidth = .075 -beamLineEnergy__rollStep = .005 -beamLineEnergy__pitchWidth = .025 -beamLineEnergy__pitchStep = .001 -beamLineEnergy__fpitchWidth = .02 -beamLineEnergy__fpitchStep = .001 -beamLineEnergy__adjustSlits=Yes - -# "Beam stabilising, data collection will resume in " ... -dataCollectionMinSampleCurrent=-100 -dataCollectionSampleCurrent XBPM1Intensity - -#Mark is using the following in some test scripts -MinIPin = 1.0 -YAGPin = 1 -RotationAxisPin = 2 -PtPin = 3 -PowderPin = 4 - -#################################################################### -# I04 standard use settings -# -# Do Not Edit/Delete - Ralf - 31/1/2013 -# -# iPin In positions, Mark is going to try and use these in scripts -iPinInDetX = 31.52 -iPinInDetYaw = 1.4542 -iPinInDetY = 93.0 -iPinInDetZ = 200.0 -###################################################################### - - -#################################################################### -# -# iPin Out positions - for diffraction data collection with ADSC with CRLS -# -#DataCollectionDetY = 58.7 -#DataCollectionDetX = -42.5498 -#DataCollectionDetXUpstream = -26.9237 -#DataCollectionDetXDownstream = -57.8741 -#DataCollectionDetYaw = -37.32719 -#################################################################### - -#################################################################### -# -# iPin Out positions - for diffraction data collection with ADSC with Mirrors -# -DataCollectionDetY = 89.7 -DataCollectionDetX = 27.4 -DataCollectionDetXUpstream = 26.4 -DataCollectionDetXDownstream = 28.402 -DataCollectionDetYaw = 2.4132 -#################################################################### - -#################################################################### -## I04 tomography settings - PCO camera -# -# values updated 07/07/12 -# iPin In positions, Mark is going to try and use these in scripts -#iPinInDetX = 8.854 -#iPinInDetYaw = -30.0909 -#iPinInDetY = 315.2 -#iPinInDetZ = 300.0 -#################################################################### - - -# StandardEnergy on i04 is 12658eV -StandardEnergy=12658 - - -keyence_max_attempts=1 -#Keyence on YtoX and YtoY needs changing is using single axis -#See comment in I04-532 for details -keyence_slopeYToX=6.78 -keyence_slopeYToY=-6.72 -keyence_slopeXToZ=8.37 - - -# WITH MIRRORS # -#hfm_bare_vert = 5.0 -#hfm_bare_yaw = 0.0 -#hfm_bare_roll = 0.0 -#hfm_rh_vert = 5.0 -#hfm_rh_yaw = 0.0 -#hfm_rh_roll = 0.0 -#hfm_pt_vert = 5.0 -#hfm_pt_yaw = 0.0 -#hfm_pt_roll = 0.0 - -#vfm_bare_lat = 2.000 -#vfm_bare_yaw = 0.0 -#vfm_bare_roll = 0.0 -#vfm_rh_lat = 15.00 -#vfm_rh_yaw = 0.0 -#vfm_rh_roll = 0.0 -#vfm_pt_lat = -10 -#vfm_pt_yaw = 0.0 -#vfm_pt_roll = 0.0 - -# WITH CRLS # -hfm_bare_vert = -30 -hfm_bare_yaw = -30.0 -hfm_bare_roll = -30.0 -hfm_rh_vert = -30.0 -hfm_rh_yaw = -30.0 -hfm_rh_roll = -30.0 -hfm_pt_vert = -30.0 -hfm_pt_yaw = -30.0 -hfm_pt_roll = -30.0 - -vfm_bare_lat = 15 -vfm_bare_yaw = 15 -vfm_bare_roll = 15 -vfm_rh_lat = 15 -vfm_rh_yaw = 15 -vfm_rh_roll = 15 -vfm_pt_lat = 15 -vfm_pt_yaw = 15 -vfm_pt_roll = 15 - -# energy thresholds for mirror stripes -# - first threshold is between bare/Rh stripes (e.g. 7000) -# - second threshold is between Rh/Pt stripes (e.g. 18000) -mirror_threshold_bare_rh = 6900 -mirror_threshold_rh_pt = 30000 - -# flux conversion factors -#flux_factor_no_aperture = 1.0 -flux_factor_LARGE_APERTURE = 1.0 -flux_factor_MEDIUM_APERTURE = 0.11765 -flux_factor_SMALL_APERTURE = 0.00914 -flux_scale_factor = 0.372 - -# assuming gain 10^3 -#pin_diode_factor = 3.2E12 original -#from cross-calibration with calibrated diode -pin_diode_factor = 2.83E12 - -#ipin value must be < ipin_threshold above background for data collection -ipin_threshold = 0.1 - -# Predict flux by energy and beamsize settings #I04-521 -# N.B. Left most coefficient (at index 0 in the collection / array) is the quartic term, the right most coefficient is the zeroth order "offset" term -# UPDATED 2022/Jul/15 with data from redis key i04:energy_flux:lookup:20220714 - -flux_predict_polynomial_coefficients_5 = [-0.0000707134131045123, 7.0205491504418, -194299.6440518530, 1835805807.3974800, -3280251055671.100] -flux_predict_polynomial_coefficients_10 = [-0.0000294993821003877, 5.2802845275010, -169996.5290700170, 1715224280.7823100, -3138739154146.230] -flux_predict_polynomial_coefficients_15 = [-0.000116949636502, 9.7753003322588, -254199.7776101, 2389060415.280310, -5025997585036.5] -flux_predict_polynomial_coefficients_20 = [-0.000148647038038, 11.2819868214984, -279103.295297639, 2545953771.80574, -5238247429860.13] -flux_predict_polynomial_coefficients_30 = [-0.000116165765376, 9.94125586103289, -260734.485522517, 2447741129.31429, -4986276938582.08] -flux_predict_polynomial_coefficients_40 = [-0.000343179106809, 21.5410025335892, -476062.885598809, 4148019661.82909, -9657928196914.84] -flux_predict_polynomial_coefficients_50 = [-0.000131960426420, 10.8653440810523, -280456.000029892, 2613195448.12884, -5280016683595.84] -flux_predict_polynomial_coefficients_75 = [-0.000391735497188, 24.7767312725528, -553079.202372348, 4894987195.36134, -11870695542358.4] -flux_predict_polynomial_coefficients_100 = [-0.000644176658542, 38.0955904622075, -809187.061558403, 6988666352.26412, -17740487002411.2] - -flux_predict_polynomial_coefficients_undulator_singularity = [0.0000155500286383152,-0.003037473267702,1.89061626835703] -flux_predict_polynomial_energyranges_undulator_singularity = [[7365,9275],[11080,12995]] - -# Fluorescence/Vortex detector settings -attenuation_optimisation_type = deadtime # deadtime or total_counts - -#Deadtime settings -fluorescence_analyser_deadtimeThreshold=0.0015 # used by edge scans -fluorescence_spectrum_deadtimeThreshold=0.0010 # used by spectrum - -#Other settings -fluorescence_attenuation_low_roi = 100 -fluorescence_attenuation_high_roi = 2047 -attenuation_optimisation_optimisation_cycles = 10 -attenuation_optimisation_start_transmission = 1 # per cent -fluorescence_mca_sca_offset = 200 - -#Total count settings -attenuation_optimisation_multiplier = 2 -attenuation_optimisation_target_count = 28000 -attenuation_optimisation_upper_limit = 50000 -attenuation_optimisation_lower_limit = 20000 +{ + "BLSE": "FB", + "BPFB": "FULL", + "DCM_Perp_Offset_FIXED": 25.75, + "parked_x": 4.98, + "parked_y": -49.1, + "parked_z": -49.3, + "parked_z_robot": 49.5, + "in_beam_z_MIN_START_POS": 49.5, + "in_beam_x_STANDARD": -2.7, + "in_beam_y_STANDARD": 44.99, + "in_beam_z_STANDARD": 25.0, + "in_beam_x_HIGHRES": -2.7, + "in_beam_y_HIGHRES": 44.99, + "in_beam_z_HIGHRES": 25.0, + "in_beam_x_LOWRES": -2.75, + "in_beam_y_LOWRES": 44.93, + "in_beam_z_LOWRES": 49.5, + "checkCryoy": true, + "manualCryojet": true, + "miniap_x_LARGE_APERTURE": 4.1, + "miniap_y_LARGE_APERTURE": 41.13, + "miniap_z_LARGE_APERTURE": 16.9, + "sg_x_LARGE_APERTURE": 4.51, + "sg_y_LARGE_APERTURE": 4.53, + "miniap_x_MEDIUM_APERTURE": 4.303, + "miniap_y_MEDIUM_APERTURE": 45.245, + "miniap_z_MEDIUM_APERTURE": 16.9, + "sg_x_MEDIUM_APERTURE": 4.04, + "sg_y_MEDIUM_APERTURE": 0.15, + "miniap_x_SMALL_APERTURE": 4.3, + "miniap_y_SMALL_APERTURE": 49.765, + "miniap_z_SMALL_APERTURE": 16.9, + "sg_x_SMALL_APERTURE": 4.85, + "sg_y_SMALL_APERTURE": -4.25, + "miniap_x_ROBOT_LOAD": -4.0, + "miniap_y_ROBOT_LOAD": 24.9, + "miniap_z_ROBOT_LOAD": 16.9, + "sg_x_ROBOT_LOAD": -3.0, + "sg_y_ROBOT_LOAD": -4.4, + "miniap_x_MANUAL_LOAD": -4.0, + "miniap_y_MANUAL_LOAD": -48.95, + "miniap_z_MANUAL_LOAD": -12.0, + "sg_x_MANUAL_LOAD": -3.0, + "sg_y_MANUAL_LOAD": -4.4, + "miniap_x_SCIN_MOVE": -4.0, + "sg_x_SCIN_MOVE": -3.0, + "scin_y_SCIN_IN": 97.45, + "scin_y_SCIN_OUT": -0.1, + "scin_z_SCIN_IN": 93.8, + "scin_z_SCIN_OUT": 0.2, + "gon_x_SCIN_OUT_DISTANCE_smargon": 1, + "gon_y_SCIN_OUT_DISTANCE": 2, + "gon_z_SCIN_OUT_DISTANCE": -1.5, + "miniap_x_tolerance": 0.001, + "miniap_y_tolerance": 0.001, + "miniap_z_tolerance": 0.1, + "sg_x_tolerance": 0.1, + "sg_y_tolerance": 0.1, + "scin_y_tolerance": 1.2, + "scin_z_tolerance": 0.1, + "gon_x_tolerance": 0.01, + "gon_y_tolerance": 0.1, + "gon_z_tolerance": 0.001, + "bs_x_tolerance": 0.005, + "bs_y_tolerance": 0.005, + "bs_z_tolerance": 0.2, + "crl_x_tolerance": 0.01, + "crl_y_tolerance": 0.01, + "crl_pitch_tolerance": 0.01, + "crl_yaw_tolerance": 0.01, + "sg_y_up_movement_tolerance": 1.0, + "sg_x_timeout": 10, + "sg_y_timeout": 10, + "miniap_x_timeout": 10, + "miniap_y_timeout": 80, + "gon_x_timeout": 60, + "gon_y_timeout": 30, + "gon_z_timeout": 30, + "crl_x_timeout": 120, + "crl_y_timeout": 10, + "crl_pitch_timeout": 10, + "crl_yaw_timeout": 10, + "crl_x_LOWE": 0.0, + "crl_y_LOWE": 0.8277, + "crl_pitch_LOWE": 3.0065, + "crl_yaw_LOWE": 7.1015, + "crl_x_NOCRL": 0.0, + "crl_y_NOCRL": 0.8277, + "crl_pitch_NOCRL": 3.0065, + "crl_yaw_NOCRL": 7.1015, + "crl_x_HIGHE": 0.0, + "crl_y_HIGHE": 0.8277, + "crl_pitch_HIGHE": 3.0065, + "crl_yaw_HIGHE": 7.1015, + "MinBackStopZ": 10.0, + "BackStopYsafe": 20.0, + "BackStopXyag": -17.95, + "BackStopYyag": 24.05, + "BackStopZyag": 18.0, + "SampleYnormal": 2.65, + "SampleYshift": 2.0, + "parked_fluo_x": 1.1, + "in_beam_fluo_x": -40.0, + "move_fluo": true, + "safe_det_z_default": 1000, + "safe_det_z_sampleChanger": 333, + "store_data_collections_in_ispyb": true, + "TakePNGsOfSample": true, + "gonio_parked_x": 0.0, + "gonio_parked_y": 0.0, + "gonio_parked_z": 0.0, + "gonio_parked_omega": 0, + "gonio_parked_kappa": -7.5, + "gonio_parked_chi": 0, + "gonio_parked_phi": 0, + "col_inbeam_tolerance": 1.0, + "col_parked_tolerance": 1.0, + "col_parked_upstream_x": 0.0, + "col_parked_downstream_x": 0.0, + "col_parked_upstream_y": 0.0, + "col_parked_inboard_y": 0.0, + "col_parked_outboard_y": 0.0, + "setupBeamLine_energyStart": 6000.0, + "setupBeamLine_energyEnd": 18000.0, + "setupBeamLine_energyStep": 500.0, + "setupBeamLine_rollStart": -1.95, + "setupBeamLine_rollEnd": -1.55, + "setupBeamLine_rollSteps": 80, + "setupBeamLine_pitchStart": -0.65, + "setupBeamLine_pitchEnd": -0.45, + "setupBeamLine_pitchSteps": 200, + "beamXCentre": 0.0, + "beamYCentre": 0.0, + "beamXYSettleTime": 6.0, + "beamXYTolerance": 5.0, + "DataCollection_TurboMode": true, + "beamLineEnergy_rollBeamX": 100, + "beamLineEnergy_rollBeamY": 400, + "beamLineEnergy__rollWidth": 0.075, + "beamLineEnergy__rollStep": 0.005, + "beamLineEnergy__pitchWidth": 0.025, + "beamLineEnergy__pitchStep": 0.001, + "beamLineEnergy__fpitchWidth": 0.02, + "beamLineEnergy__fpitchStep": 0.001, + "beamLineEnergy__adjustSlits": true, + "dataCollectionMinSampleCurrent": -100, + "MinIPin": 1.0, + "YAGPin": 1, + "RotationAxisPin": 2, + "PtPin": 3, + "PowderPin": 4, + "iPinInDetX": 31.52, + "iPinInDetYaw": 1.4542, + "iPinInDetY": 93.0, + "iPinInDetZ": 200.0, + "DataCollectionDetY": 89.7, + "DataCollectionDetX": 27.4, + "DataCollectionDetXUpstream": 26.4, + "DataCollectionDetXDownstream": 28.402, + "DataCollectionDetYaw": 2.4132, + "StandardEnergy": 12658, + "keyence_max_attempts": 1, + "keyence_slopeYToX": 6.78, + "keyence_slopeYToY": -6.72, + "keyence_slopeXToZ": 8.37, + "hfm_bare_vert": -30, + "hfm_bare_yaw": -30.0, + "hfm_bare_roll": -30.0, + "hfm_rh_vert": -30.0, + "hfm_rh_yaw": -30.0, + "hfm_rh_roll": -30.0, + "hfm_pt_vert": -30.0, + "hfm_pt_yaw": -30.0, + "hfm_pt_roll": -30.0, + "vfm_bare_lat": 15, + "vfm_bare_yaw": 15, + "vfm_bare_roll": 15, + "vfm_rh_lat": 15, + "vfm_rh_yaw": 15, + "vfm_rh_roll": 15, + "vfm_pt_lat": 15, + "vfm_pt_yaw": 15, + "vfm_pt_roll": 15, + "mirror_threshold_bare_rh": 6900, + "mirror_threshold_rh_pt": 30000, + "flux_factor_LARGE_APERTURE": 1.0, + "flux_factor_MEDIUM_APERTURE": 0.11765, + "flux_factor_SMALL_APERTURE": 0.00914, + "flux_scale_factor": 0.372, + "pin_diode_factor": 2830000000000.0, + "ipin_threshold": 0.1, + "flux_predict_polynomial_coefficients_5": [ + -7.07134131045123e-05, + 7.0205491504418, + -194299.644051853, + 1835805807.39748, + -3280251055671.1 + ], + "flux_predict_polynomial_coefficients_10": [ + -2.94993821003877e-05, + 5.280284527501, + -169996.529070017, + 1715224280.78231, + -3138739154146.23 + ], + "flux_predict_polynomial_coefficients_15": [ + -0.000116949636502, + 9.7753003322588, + -254199.7776101, + 2389060415.28031, + -5025997585036.5 + ], + "flux_predict_polynomial_coefficients_20": [ + -0.000148647038038, + 11.2819868214984, + -279103.295297639, + 2545953771.80574, + -5238247429860.13 + ], + "flux_predict_polynomial_coefficients_30": [ + -0.000116165765376, + 9.94125586103289, + -260734.485522517, + 2447741129.31429, + -4986276938582.08 + ], + "flux_predict_polynomial_coefficients_40": [ + -0.000343179106809, + 21.5410025335892, + -476062.885598809, + 4148019661.82909, + -9657928196914.84 + ], + "flux_predict_polynomial_coefficients_50": [ + -0.00013196042642, + 10.8653440810523, + -280456.000029892, + 2613195448.12884, + -5280016683595.84 + ], + "flux_predict_polynomial_coefficients_75": [ + -0.000391735497188, + 24.7767312725528, + -553079.202372348, + 4894987195.36134, + -11870695542358.4 + ], + "flux_predict_polynomial_coefficients_100": [ + -0.000644176658542, + 38.0955904622075, + -809187.061558403, + 6988666352.26412, + -17740487002411.2 + ], + "flux_predict_polynomial_coefficients_undulator_singularity": [ + 1.55500286383152e-05, + -0.003037473267702, + 1.89061626835703 + ], + "flux_predict_polynomial_energyranges_undulator_singularity": [ + [ + 7365, + 9275 + ], + [ + 11080, + 12995 + ] + ], + "attenuation_optimisation_type": "deadtime", + "fluorescence_analyser_deadtimeThreshold": 0.0015, + "fluorescence_spectrum_deadtimeThreshold": 0.001, + "fluorescence_attenuation_low_roi": 100, + "fluorescence_attenuation_high_roi": 2047, + "attenuation_optimisation_optimisation_cycles": 10, + "attenuation_optimisation_start_transmission": 1, + "fluorescence_mca_sca_offset": 200, + "attenuation_optimisation_multiplier": 2, + "attenuation_optimisation_target_count": 28000, + "attenuation_optimisation_upper_limit": 50000, + "attenuation_optimisation_lower_limit": 20000 +} diff --git a/tests/test_data/test_beamline_parameters.txt b/tests/test_data/test_beamline_parameters.txt index 5247b15d3fb..b757968398c 100644 --- a/tests/test_data/test_beamline_parameters.txt +++ b/tests/test_data/test_beamline_parameters.txt @@ -1,298 +1,185 @@ -# -# -BeamLine BL03I - -## BLSE=FB switches between scan alignment and feedback alignment -## by creating bl energy scannable with beamLineSpecificEnergy_FB -## after changing you must restart servers or >>> reset_namespace -BLSE=FB - -## BPFB (Beam Position FeedBack) -## HALF (default) only off during data collection -## FULL only off for XBPM2 during attenuation optimisation, fluo when trans < 2% and wedged MAD -## UNAVAILABLE (not default) prevents xbpm_feedback.py trying to access EPICS IOC that may not be running -BPFB=FULL -## Note: only beamline scientists control whether feedback is enabled -## via the XBPM feedback EDM screen in Synoptic - -# DCM parameters -DCM_Perp_Offset_FIXED = 25.6 -# -# beamstop -# -parked_x = 4.49 -parked_y = -50.0 -parked_y_plate = -50.5 -parked_z = -49.5 -parked_z_robot = 30.0 - -in_beam_z_MIN_START_POS = 60.0 - -in_beam_x_HIGHRES = 1.52 -in_beam_y_HIGHRES = 44.78 -in_beam_z_HIGHRES = 30.0 - -in_beam_x_STANDARD = 1.52 -in_beam_y_STANDARD = 44.78 -in_beam_z_STANDARD = 30.0 - -in_beam_x_LOWRES = 1.52 -in_beam_y_LOWRES = 44.78 -in_beam_z_LOWRES = 48 - -checkCryojet = No -#If is to be moved in by the script. If not Yes then control is handed to the robot on activate script -#To force the cryojet run hutch_utilities.hutch.forceCryoOut() -manualCryojet = Yes - -######################################################### -############# All these need checking! ############ -######################################################### - -#Aperture - Scatterguard positions -# 100 micron ap -miniap_x_LARGE_APERTURE = 2.389 -miniap_y_LARGE_APERTURE = 40.986 -miniap_z_LARGE_APERTURE = 15.8 - -sg_x_LARGE_APERTURE = 5.25 -sg_y_LARGE_APERTURE = 4.43 - -# 50 micron ap -miniap_x_MEDIUM_APERTURE = 2.384 -miniap_y_MEDIUM_APERTURE = 44.967 -miniap_z_MEDIUM_APERTURE = 15.8 -sg_x_MEDIUM_APERTURE = 5.285 -sg_y_MEDIUM_APERTURE = 0.46 - -# 20 micron ap -miniap_x_SMALL_APERTURE = 2.430 -miniap_y_SMALL_APERTURE = 48.974 -miniap_z_SMALL_APERTURE = 15.8 -sg_x_SMALL_APERTURE = 5.3375 -sg_y_SMALL_APERTURE = -3.55 - -# Robot load -miniap_x_ROBOT_LOAD = 2.386 -miniap_y_ROBOT_LOAD = 31.40 -miniap_z_ROBOT_LOAD = 15.8 -sg_x_ROBOT_LOAD = 5.25 -sg_y_ROBOT_LOAD = 4.43 - -# manual mount -miniap_x_MANUAL_LOAD = -4.91 -miniap_y_MANUAL_LOAD = -49.0 -miniap_z_MANUAL_LOAD = -10.0 - -sg_x_MANUAL_LOAD = -4.7 -sg_y_MANUAL_LOAD = 1.8 - -miniap_x_SCIN_MOVE = -4.91 -# prion setting -#miniap_x_SCIN_MOVE = 0.0 -sg_x_SCIN_MOVE = -4.75 - -scin_y_SCIN_IN = 100.855 -scin_y_SCIN_OUT = -0.02 -scin_z_SCIN_IN = 101.5115 - - -scin_z_SCIN_OUT = 0.1 - -#distance to move gonx,y,z when scintillator is put in with standard pins -# For old gonio: -gon_x_SCIN_OUT_DISTANCE = 1.0 -# For SmarGon: -gon_x_SCIN_OUT_DISTANCE_smargon = 1 - -gon_y_SCIN_OUT_DISTANCE = 2.0 -gon_z_SCIN_OUT_DISTANCE = -0.5 - -#CASS motor position tolerances (mm) -miniap_x_tolerance = 0.004 -miniap_y_tolerance = 0.1 -miniap_z_tolerance = 0.1 -sg_x_tolerance = 0.1 -sg_y_tolerance = 0.1 -scin_y_tolerance = 0.1 -scin_z_tolerance = 0.12 -gon_x_tolerance = 0.01 -gon_y_tolerance = 0.1 -gon_z_tolerance = 0.001 -bs_x_tolerance = 0.02 -bs_y_tolerance = 0.005 -bs_z_tolerance = 0.3 -crl_x_tolerance = 0.01 -crl_y_tolerance = 0.01 -crl_pitch_tolerance = 0.01 -crl_yaw_tolerance = 0.01 -sg_y_up_movement_tolerance = 1.0 - -sg_x_timeout = 10 -sg_y_timeout = 10 -miniap_x_timeout = 60 -miniap_y_timeout = 10 -gon_x_timeout = 60 -gon_y_timeout = 30 -gon_z_timeout = 30 -crl_x_timeout = 10 -crl_y_timeout = 10 -crl_pitch_timeout = 10 -crl_yaw_timeout = 10 - -col_inbeam_tolerance = 1.0 - -# robot load collimation table reference positions (mm) -col_parked_tolerance = 1.0 -col_parked_upstream_x = 0.0 -col_parked_downstream_x = 0.0 -col_parked_upstream_y = 0.0 -col_parked_inboard_y = 0.0 -col_parked_outboard_y = 0.0 - -## CRL positions for low and high energy lens sets. Should deliver beam to same position on scintillator. -## Normally should only adjust the low energy set to match the position of the high energy that you've -## already checked on the scintillator screen. - -crl_x_LOWE = -11.78 -crl_y_LOWE = -4.3 -crl_pitch_LOWE = -4.75 -crl_yaw_LOWE = -1.0 - -crl_x_HIGHE = 2.22 -crl_y_HIGHE = -4.30 -crl_pitch_HIGHE = -2.75 -crl_yaw_HIGHE = 0 - - -######################################################### -########## End of new parameters ########### -######################################################### - - -#Beam visualisation parameters -MinBackStopZ = 30.0 -BackStopYsafe = 20.0 -BackStopXyag = -4.8 -BackStopYyag = 17.20 -BackStopZyag = 19.1 -SampleYnormal = 2.65 -SampleYshift = 2.0 -parked_fluo_x = -18.0 -in_beam_fluo_x = 12.0 -move_fluo = Yes -safe_det_z_default = 900 -safe_det_z_sampleChanger = 337 -store_data_collections_in_ispyb = Yes -TakePNGsOfSample = Yes - -#robot requires these values -gonio_parked_x = 0.0 -gonio_parked_y = 0.0 -gonio_parked_z = 0.0 -gonio_parked_omega = 0 -gonio_parked_chi = 0 -gonio_parked_phi = 0 - -# The following used by setupBeamLine script -setupBeamLine_energyStart = 7000.0 -setupBeamLine_energyEnd = 17000.0 -setupBeamLine_energyStep = 500 -setupBeamLine_rollStart = -4 -setupBeamLine_rollEnd = 4 -setupBeamLine_rollSteps = 21 -setupBeamLine_pitchStart = -3.7 -setupBeamLine_pitchEnd = -3.5 -setupBeamLine_pitchSteps = 200 -#values below in microns -beamXCentre = 0 -beamYCentre = 0 -beamXYSettleTime = 6.0 -beamXYTolerance = 5.0 -DataCollection_TurboMode = Yes -#time in seconds. If not set then the default is 0.1 - -#The following are used by beamLineenergy script -beamLineEnergy_rollBeamX 50 -beamLineEnergy_rollBeamY 200 -beamLineEnergy__rollWidth = .2 -beamLineEnergy__rollStep = .02 -beamLineEnergy__pitchWidth = .02 -beamLineEnergy__pitchStep = .002 -beamLineEnergy__fpitchWidth = .02 -beamLineEnergy__fpitchStep = .001 -beamLineEnergy__adjustSlits = No -#dataCollectionMinSampleCurrent = 0.245 -dataCollectionMinSampleCurrent = 0.000 -dataCollectionSampleCurrent qbpm3 - -#Mark is using the following in some test scripts -MinIPin = 1.0 -YAGPin = 1 -RotationAxisPin = 2 -PtPin = 3 -PowderPin = 4 - -iPinInDetZ = 340.0 - -DataCollectionDetX = -7.8504 -DataCollectionDetYaw = 6.499 -DataCollectionDetY = 48.0 - -# StandardEnergy on i03 is 12700eV -StandardEnergy = 12700 - -keyence_max_attempts = 1 -# Move gonio 100 microns, see difference in keyence values -# Then do 100/difference, put that number below -# Sign may change between Smargon and MiniKappa -keyence_slopeYToX = 2.5 -keyence_slopeYToY = -2.5 -keyence_slopeXToZ = 3.23 - -YAGSamX = 1022 -YAGSamY = -98.0 -YAGSamZ = -147 -YAGOmega = 0.0 - -#ipin value must be < ipin_threshold above background for data collection -ipin_threshold = 0.1 - -# energy thresholds for mirror stripes -# - first threshold is between bare/Rh stripes (e.g. 7000) -# - second threshold is between Rh/Pt stripes (e.g. 18000) -mirror_threshold_bare_rh = 6900 -mirror_threshold_rh_pt = 30000 - -# flux conversion factors -flux_factor_no_aperture = 1 -flux_factor_LARGE_APERTURE = 0.738 -flux_factor_MEDIUM_APERTURE = 0.36 -flux_factor_SMALL_APERTURE = 0.084 -flux_factor_no_aperture_plate = 1 -flux_factor_LARGE_APERTURE_plate = 0.738 -flux_factor_MEDIUM_APERTURE_plate = 0.36 -flux_factor_SMALL_APERTURE_plate = 0.084 - -# assuming gain 10^3 -pin_diode_factor = 2.66E19 - -# Fluorescence/Vortex detector settings -attenuation_optimisation_type = deadtime # deadtime or total_counts - -#Deadtime settings -fluorescence_analyser_deadtimeThreshold=0.002 # used by edge scans -fluorescence_spectrum_deadtimeThreshold=0.0005 # used by spectrum - -#Other settings -fluorescence_attenuation_low_roi = 100 -fluorescence_attenuation_high_roi = 2048 -attenuation_optimisation_optimisation_cycles = 10 -attenuation_optimisation_start_transmission = 0.1 # per cent -fluorescence_mca_sca_offset = 400 - -#Total count settings -attenuation_optimisation_multiplier = 2 -attenuation_optimisation_target_count = 2000 -attenuation_optimisation_upper_limit = 50000 -attenuation_optimisation_lower_limit = 20000 +{ + "BLSE": "FB", + "BPFB": "FULL", + "DCM_Perp_Offset_FIXED": 25.6, + "parked_x": 4.49, + "parked_y": -50.0, + "parked_y_plate": -50.5, + "parked_z": -49.5, + "parked_z_robot": 30.0, + "in_beam_z_MIN_START_POS": 60.0, + "in_beam_x_HIGHRES": 1.52, + "in_beam_y_HIGHRES": 44.78, + "in_beam_z_HIGHRES": 30.0, + "in_beam_x_STANDARD": 1.52, + "in_beam_y_STANDARD": 44.78, + "in_beam_z_STANDARD": 30.0, + "in_beam_x_LOWRES": 1.52, + "in_beam_y_LOWRES": 44.78, + "in_beam_z_LOWRES": 48, + "checkCryojet": false, + "manualCryojet": true, + "miniap_x_LARGE_APERTURE": 2.389, + "miniap_y_LARGE_APERTURE": 40.986, + "miniap_z_LARGE_APERTURE": 15.8, + "sg_x_LARGE_APERTURE": 5.25, + "sg_y_LARGE_APERTURE": 4.43, + "miniap_x_MEDIUM_APERTURE": 2.384, + "miniap_y_MEDIUM_APERTURE": 44.967, + "miniap_z_MEDIUM_APERTURE": 15.8, + "sg_x_MEDIUM_APERTURE": 5.285, + "sg_y_MEDIUM_APERTURE": 0.46, + "miniap_x_SMALL_APERTURE": 2.43, + "miniap_y_SMALL_APERTURE": 48.974, + "miniap_z_SMALL_APERTURE": 15.8, + "sg_x_SMALL_APERTURE": 5.3375, + "sg_y_SMALL_APERTURE": -3.55, + "miniap_x_ROBOT_LOAD": 2.386, + "miniap_y_ROBOT_LOAD": 31.4, + "miniap_z_ROBOT_LOAD": 15.8, + "sg_x_ROBOT_LOAD": 5.25, + "sg_y_ROBOT_LOAD": 4.43, + "miniap_x_MANUAL_LOAD": -4.91, + "miniap_y_MANUAL_LOAD": -49.0, + "miniap_z_MANUAL_LOAD": -10.0, + "sg_x_MANUAL_LOAD": -4.7, + "sg_y_MANUAL_LOAD": 1.8, + "miniap_x_SCIN_MOVE": -4.91, + "sg_x_SCIN_MOVE": -4.75, + "scin_y_SCIN_IN": 100.855, + "scin_y_SCIN_OUT": -0.02, + "scin_z_SCIN_IN": 101.5115, + "scin_z_SCIN_OUT": 0.1, + "gon_x_SCIN_OUT_DISTANCE": 1.0, + "gon_x_SCIN_OUT_DISTANCE_smargon": 1, + "gon_y_SCIN_OUT_DISTANCE": 2.0, + "gon_z_SCIN_OUT_DISTANCE": -0.5, + "miniap_x_tolerance": 0.004, + "miniap_y_tolerance": 0.1, + "miniap_z_tolerance": 0.1, + "sg_x_tolerance": 0.1, + "sg_y_tolerance": 0.1, + "scin_y_tolerance": 0.1, + "scin_z_tolerance": 0.12, + "gon_x_tolerance": 0.01, + "gon_y_tolerance": 0.1, + "gon_z_tolerance": 0.001, + "bs_x_tolerance": 0.02, + "bs_y_tolerance": 0.005, + "bs_z_tolerance": 0.3, + "crl_x_tolerance": 0.01, + "crl_y_tolerance": 0.01, + "crl_pitch_tolerance": 0.01, + "crl_yaw_tolerance": 0.01, + "sg_y_up_movement_tolerance": 1.0, + "sg_x_timeout": 10, + "sg_y_timeout": 10, + "miniap_x_timeout": 60, + "miniap_y_timeout": 10, + "gon_x_timeout": 60, + "gon_y_timeout": 30, + "gon_z_timeout": 30, + "crl_x_timeout": 10, + "crl_y_timeout": 10, + "crl_pitch_timeout": 10, + "crl_yaw_timeout": 10, + "col_inbeam_tolerance": 1.0, + "col_parked_tolerance": 1.0, + "col_parked_upstream_x": 0.0, + "col_parked_downstream_x": 0.0, + "col_parked_upstream_y": 0.0, + "col_parked_inboard_y": 0.0, + "col_parked_outboard_y": 0.0, + "crl_x_LOWE": -11.78, + "crl_y_LOWE": -4.3, + "crl_pitch_LOWE": -4.75, + "crl_yaw_LOWE": -1.0, + "crl_x_HIGHE": 2.22, + "crl_y_HIGHE": -4.3, + "crl_pitch_HIGHE": -2.75, + "crl_yaw_HIGHE": 0, + "MinBackStopZ": 30.0, + "BackStopYsafe": 20.0, + "BackStopXyag": -4.8, + "BackStopYyag": 17.2, + "BackStopZyag": 19.1, + "SampleYnormal": 2.65, + "SampleYshift": 2.0, + "parked_fluo_x": -18.0, + "in_beam_fluo_x": 12.0, + "move_fluo": true, + "safe_det_z_default": 900, + "safe_det_z_sampleChanger": 337, + "store_data_collections_in_ispyb": true, + "TakePNGsOfSample": true, + "gonio_parked_x": 0.0, + "gonio_parked_y": 0.0, + "gonio_parked_z": 0.0, + "gonio_parked_omega": 0, + "gonio_parked_chi": 0, + "gonio_parked_phi": 0, + "setupBeamLine_energyStart": 7000.0, + "setupBeamLine_energyEnd": 17000.0, + "setupBeamLine_energyStep": 500, + "setupBeamLine_rollStart": -4, + "setupBeamLine_rollEnd": 4, + "setupBeamLine_rollSteps": 21, + "setupBeamLine_pitchStart": -3.7, + "setupBeamLine_pitchEnd": -3.5, + "setupBeamLine_pitchSteps": 200, + "beamXCentre": 0, + "beamYCentre": 0, + "beamXYSettleTime": 6.0, + "beamXYTolerance": 5.0, + "DataCollection_TurboMode": true, + "beamLineEnergy__rollWidth": 0.2, + "beamLineEnergy__rollStep": 0.02, + "beamLineEnergy__pitchWidth": 0.02, + "beamLineEnergy__pitchStep": 0.002, + "beamLineEnergy__fpitchWidth": 0.02, + "beamLineEnergy__fpitchStep": 0.001, + "beamLineEnergy__adjustSlits": false, + "dataCollectionMinSampleCurrent": 0.0, + "MinIPin": 1.0, + "YAGPin": 1, + "RotationAxisPin": 2, + "PtPin": 3, + "PowderPin": 4, + "iPinInDetZ": 340.0, + "DataCollectionDetX": -7.8504, + "DataCollectionDetYaw": 6.499, + "DataCollectionDetY": 48.0, + "StandardEnergy": 12700, + "keyence_max_attempts": 1, + "keyence_slopeYToX": 2.5, + "keyence_slopeYToY": -2.5, + "keyence_slopeXToZ": 3.23, + "YAGSamX": 1022, + "YAGSamY": -98.0, + "YAGSamZ": -147, + "YAGOmega": 0.0, + "ipin_threshold": 0.1, + "mirror_threshold_bare_rh": 6900, + "mirror_threshold_rh_pt": 30000, + "flux_factor_no_aperture": 1, + "flux_factor_LARGE_APERTURE": 0.738, + "flux_factor_MEDIUM_APERTURE": 0.36, + "flux_factor_SMALL_APERTURE": 0.084, + "flux_factor_no_aperture_plate": 1, + "flux_factor_LARGE_APERTURE_plate": 0.738, + "flux_factor_MEDIUM_APERTURE_plate": 0.36, + "flux_factor_SMALL_APERTURE_plate": 0.084, + "pin_diode_factor": 2.66e+19, + "attenuation_optimisation_type": "deadtime", + "fluorescence_analyser_deadtimeThreshold": 0.002, + "fluorescence_spectrum_deadtimeThreshold": 0.0005, + "fluorescence_attenuation_low_roi": 100, + "fluorescence_attenuation_high_roi": 2048, + "attenuation_optimisation_optimisation_cycles": 10, + "attenuation_optimisation_start_transmission": 0.1, + "fluorescence_mca_sca_offset": 400, + "attenuation_optimisation_multiplier": 2, + "attenuation_optimisation_target_count": 2000, + "attenuation_optimisation_upper_limit": 50000, + "attenuation_optimisation_lower_limit": 20000 +}