dls-dodal 1.69.0__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/METADATA +1 -1
- dls_dodal-2.0.0.dist-info/RECORD +354 -0
- {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/WHEEL +1 -1
- dodal/_version.py +2 -2
- dodal/beamlines/__init__.py +10 -17
- dodal/beamlines/adsim.py +17 -17
- dodal/beamlines/b01_1.py +11 -0
- dodal/beamlines/b07.py +17 -21
- dodal/beamlines/b07_1.py +20 -22
- dodal/beamlines/b07_shared.py +12 -0
- dodal/beamlines/b16.py +1 -1
- dodal/beamlines/b21.py +15 -6
- dodal/beamlines/i02_1.py +3 -3
- dodal/beamlines/i02_2.py +1 -1
- dodal/beamlines/i03.py +4 -4
- dodal/beamlines/i04.py +16 -8
- dodal/beamlines/i05.py +7 -45
- dodal/beamlines/i05_1.py +4 -13
- dodal/beamlines/i05_shared.py +51 -0
- dodal/beamlines/i06_1.py +7 -5
- dodal/beamlines/{i06.py → i06_shared.py} +25 -14
- dodal/beamlines/i07.py +14 -16
- dodal/beamlines/i09.py +54 -51
- dodal/beamlines/i09_1.py +25 -64
- dodal/beamlines/i09_1_shared.py +61 -0
- dodal/beamlines/i09_2.py +6 -100
- dodal/beamlines/i09_2_shared.py +110 -0
- dodal/beamlines/i10.py +60 -54
- dodal/beamlines/i10_1.py +99 -10
- dodal/beamlines/{i10_optics.py → i10_shared.py} +80 -66
- dodal/beamlines/i11.py +31 -18
- dodal/beamlines/i13_1.py +1 -1
- dodal/beamlines/i15.py +6 -6
- dodal/beamlines/i15_1.py +6 -6
- dodal/beamlines/i17.py +37 -28
- dodal/beamlines/i18.py +3 -4
- dodal/beamlines/i19_1.py +95 -34
- dodal/beamlines/i19_2.py +68 -52
- dodal/beamlines/i19_optics.py +26 -13
- dodal/beamlines/i20_1.py +6 -14
- dodal/beamlines/i21.py +35 -28
- dodal/beamlines/i22.py +19 -4
- dodal/beamlines/i23.py +1 -2
- dodal/beamlines/i24.py +11 -10
- dodal/beamlines/k07.py +99 -5
- dodal/beamlines/p38.py +3 -3
- dodal/beamlines/p60.py +28 -17
- dodal/beamlines/p99.py +16 -15
- dodal/beamlines/training_rig.py +20 -12
- dodal/cli.py +36 -2
- dodal/common/beamlines/beamline_parameters.py +2 -1
- dodal/common/beamlines/beamline_utils.py +11 -9
- dodal/common/beamlines/commissioning_mode.py +6 -3
- dodal/common/coordination.py +12 -14
- dodal/common/crystal_metadata.py +5 -8
- dodal/common/device_utils.py +4 -3
- dodal/common/maths.py +28 -40
- dodal/common/udc_directory_provider.py +13 -8
- dodal/common/visit.py +18 -21
- dodal/common/watcher_utils.py +13 -12
- dodal/device_manager.py +94 -54
- dodal/devices/aperturescatterguard.py +26 -27
- dodal/devices/areadetector/plugins/cam.py +1 -3
- dodal/devices/areadetector/plugins/mjpg.py +6 -5
- dodal/devices/attenuator/attenuator.py +12 -11
- dodal/devices/beamlines/b07/__init__.py +3 -0
- dodal/devices/{b07_1 → beamlines/b07_1}/__init__.py +2 -2
- dodal/devices/{b07_1 → beamlines/b07_1}/ccmc.py +5 -10
- dodal/devices/{b16 → beamlines/b16}/detector.py +2 -3
- dodal/devices/{i02_1 → beamlines/i02_1}/fast_grid_scan.py +2 -3
- dodal/devices/{i02_1 → beamlines/i02_1}/sample_motors.py +1 -1
- dodal/devices/{i03 → beamlines/i03}/beamsize.py +11 -7
- dodal/devices/{i03 → beamlines/i03}/dcm.py +1 -2
- dodal/devices/{i03 → beamlines/i03}/undulator_dcm.py +4 -5
- dodal/devices/beamlines/i04/beam_centre.py +151 -0
- dodal/devices/{i04 → beamlines/i04}/beamsize.py +11 -7
- dodal/devices/{i04 → beamlines/i04}/murko_results.py +5 -5
- dodal/devices/{i04 → beamlines/i04}/transfocator.py +10 -15
- dodal/devices/beamlines/i05/__init__.py +3 -0
- dodal/devices/beamlines/i06_shared/__init__.py +3 -0
- dodal/devices/beamlines/i06_shared/i06_enum.py +7 -0
- dodal/devices/{i07 → beamlines/i07}/dcm.py +2 -3
- dodal/devices/{i07 → beamlines/i07}/id.py +8 -9
- dodal/devices/beamlines/i09/__init__.py +3 -0
- dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_energy.py +5 -6
- dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/hard_undulator_functions.py +19 -16
- dodal/devices/{i10 → beamlines/i10}/diagnostics.py +4 -3
- dodal/devices/{i10 → beamlines/i10}/i10_apple2.py +31 -45
- dodal/devices/{i10 → beamlines/i10}/rasor/rasor_current_amp.py +1 -24
- dodal/devices/{i10 → beamlines/i10}/rasor/rasor_motors.py +2 -2
- dodal/devices/{i10 → beamlines/i10}/slits.py +5 -3
- dodal/devices/beamlines/i10_1/__init__.py +9 -0
- dodal/devices/beamlines/i10_1/electromagnet/magnet.py +16 -0
- dodal/devices/beamlines/i10_1/electromagnet/stages.py +14 -0
- dodal/devices/beamlines/i10_1/scaler_cards.py +13 -0
- dodal/devices/{i11 → beamlines/i11}/cyberstar_blower.py +1 -1
- dodal/devices/{i11 → beamlines/i11}/diff_stages.py +4 -6
- dodal/devices/{i11 → beamlines/i11}/mythen.py +3 -4
- dodal/devices/{i11 → beamlines/i11}/nx100robot.py +6 -6
- dodal/devices/{i11 → beamlines/i11}/spinner.py +1 -1
- dodal/devices/{i13_1 → beamlines/i13_1}/merlin.py +1 -1
- dodal/devices/{i15 → beamlines/i15}/dcm.py +1 -2
- dodal/devices/{i15 → beamlines/i15}/focussing_mirror.py +5 -5
- dodal/devices/{i15 → beamlines/i15}/jack.py +2 -2
- dodal/devices/{i15 → beamlines/i15}/multilayer_mirror.py +1 -1
- dodal/devices/{i17 → beamlines/i17}/i17_apple2.py +10 -16
- dodal/devices/{i18 → beamlines/i18}/diode.py +1 -1
- dodal/devices/{i19 → beamlines/i19}/access_controlled/attenuator_motor_squad.py +12 -8
- dodal/devices/{i19 → beamlines/i19}/access_controlled/blueapi_device.py +16 -15
- dodal/devices/beamlines/i19/access_controlled/piezo_control.py +72 -0
- dodal/devices/{i19 → beamlines/i19}/access_controlled/shutter.py +11 -9
- dodal/devices/{i19 → beamlines/i19}/backlight.py +3 -1
- dodal/devices/{i19 → beamlines/i19}/mapt_configuration.py +2 -1
- dodal/devices/{i19 → beamlines/i19}/pin_col_stages.py +11 -8
- dodal/devices/beamlines/i19/pin_tip.py +32 -0
- dodal/devices/beamlines/i21/__init__.py +3 -0
- dodal/devices/{i22 → beamlines/i22}/dcm.py +1 -2
- dodal/devices/{i22 → beamlines/i22}/fswitch.py +1 -3
- dodal/devices/{i22 → beamlines/i22}/nxsas.py +5 -4
- dodal/devices/{i24 → beamlines/i24}/beam_center.py +1 -1
- dodal/devices/{i24 → beamlines/i24}/beamstop.py +2 -2
- dodal/devices/{i24 → beamlines/i24}/commissioning_jungfrau.py +3 -2
- dodal/devices/{i24 → beamlines/i24}/dcm.py +1 -3
- dodal/devices/{i24 → beamlines/i24}/dual_backlight.py +3 -3
- dodal/devices/{i24 → beamlines/i24}/pmac.py +9 -7
- dodal/devices/{p60 → beamlines/p60}/lab_xray_source.py +1 -1
- dodal/devices/beamlines/p99/__init__.py +0 -0
- dodal/devices/{p99 → beamlines/p99}/andor2_point.py +11 -15
- dodal/devices/bimorph_mirror.py +22 -20
- dodal/devices/collimation_table.py +3 -2
- dodal/devices/common_dcm.py +30 -20
- dodal/devices/controllers.py +2 -2
- dodal/devices/cryostream.py +8 -0
- dodal/devices/current_amplifiers/current_amplifier.py +16 -18
- dodal/devices/current_amplifiers/current_amplifier_detector.py +9 -10
- dodal/devices/current_amplifiers/femto.py +8 -9
- dodal/devices/current_amplifiers/sr570.py +16 -16
- dodal/devices/current_amplifiers/struck_scaler_counter.py +5 -5
- dodal/devices/detector/det_resolution.py +9 -8
- dodal/devices/detector/detector.py +4 -2
- dodal/devices/diamond_filter.py +3 -4
- dodal/devices/eiger.py +3 -3
- dodal/devices/eiger_odin.py +1 -1
- dodal/devices/electron_analyser/base/base_controller.py +13 -13
- dodal/devices/electron_analyser/base/base_detector.py +15 -20
- dodal/devices/electron_analyser/base/base_driver_io.py +39 -46
- dodal/devices/electron_analyser/base/base_region.py +27 -30
- dodal/devices/electron_analyser/base/base_util.py +18 -16
- dodal/devices/electron_analyser/base/energy_sources.py +13 -19
- dodal/devices/eurotherm.py +3 -2
- dodal/devices/fast_grid_scan.py +31 -34
- dodal/devices/fast_shutter.py +24 -21
- dodal/devices/flux.py +1 -1
- dodal/devices/focusing_mirror.py +29 -11
- dodal/devices/hutch_shutter.py +6 -6
- dodal/devices/insertion_device/__init__.py +8 -0
- dodal/devices/insertion_device/apple2_controller.py +51 -60
- dodal/devices/insertion_device/apple2_undulator.py +40 -64
- dodal/devices/insertion_device/apple_knot_controller.py +222 -0
- dodal/devices/insertion_device/energy.py +100 -27
- dodal/devices/insertion_device/energy_motor_lookup.py +20 -27
- dodal/devices/insertion_device/lookup_table_models.py +45 -50
- dodal/devices/insertion_device/polarisation.py +1 -1
- dodal/devices/ipin.py +1 -1
- dodal/devices/linkam3.py +7 -5
- dodal/devices/motors.py +107 -19
- dodal/devices/mx_phase1/beamstop.py +2 -4
- dodal/devices/oav/oav_calculations.py +20 -13
- dodal/devices/oav/oav_detector.py +28 -23
- dodal/devices/oav/oav_parameters.py +4 -9
- dodal/devices/oav/oav_to_redis_forwarder.py +22 -18
- dodal/devices/oav/pin_image_recognition/__init__.py +4 -6
- dodal/devices/oav/pin_image_recognition/manual_test.py +1 -2
- dodal/devices/oav/pin_image_recognition/utils.py +30 -32
- dodal/devices/oav/snapshots/grid_overlay.py +10 -9
- dodal/devices/oav/snapshots/snapshot_image_processing.py +15 -13
- dodal/devices/oav/utils.py +9 -12
- dodal/devices/p45.py +3 -9
- dodal/devices/pgm.py +8 -14
- dodal/devices/pressure_jump_cell.py +93 -32
- dodal/devices/qbpm.py +1 -3
- dodal/devices/robot.py +12 -4
- dodal/devices/s4_slit_gaps.py +1 -1
- dodal/devices/selectable_source.py +5 -2
- dodal/devices/slits.py +2 -5
- dodal/devices/smargon.py +2 -3
- dodal/devices/temperture_controller/lakeshore/lakeshore.py +38 -64
- dodal/devices/temperture_controller/lakeshore/lakeshore_io.py +21 -35
- dodal/devices/tetramm.py +7 -7
- dodal/devices/turbo_slit.py +8 -7
- dodal/devices/undulator.py +42 -56
- dodal/devices/util/adjuster_plans.py +2 -3
- dodal/devices/util/epics_util.py +10 -10
- dodal/devices/util/lookup_tables.py +17 -18
- dodal/devices/v2f.py +2 -3
- dodal/devices/watsonmarlow323_pump.py +1 -1
- dodal/devices/xbpm_feedback.py +3 -2
- dodal/devices/xspress3/xspress3.py +8 -11
- dodal/devices/xspress3/xspress3_channel.py +3 -6
- dodal/devices/zebra/zebra.py +6 -7
- dodal/devices/zebra/zebra_constants_mapping.py +11 -7
- dodal/devices/zebra/zebra_controlled_shutter.py +2 -1
- dodal/devices/zocalo/zocalo_interaction.py +14 -14
- dodal/devices/zocalo/zocalo_results.py +33 -33
- dodal/log.py +23 -20
- dodal/plan_stubs/check_topup.py +15 -15
- dodal/plan_stubs/data_session.py +6 -6
- dodal/plan_stubs/motor_utils.py +22 -18
- dodal/plan_stubs/pressure_jump_cell.py +18 -0
- dodal/plan_stubs/wrapped.py +40 -55
- dodal/plans/bimorph.py +63 -52
- dodal/plans/device_setup_plans/__init__.py +5 -0
- dodal/plans/device_setup_plans/setup_pin_tip_params.py +63 -0
- dodal/plans/preprocessors/verify_undulator_gap.py +10 -8
- dodal/plans/spec_path.py +3 -5
- dodal/plans/verify_undulator_gap.py +1 -2
- dodal/plans/wrapped.py +4 -3
- dodal/testing/electron_analyser/device_factory.py +5 -7
- dodal/testing/fixtures/devices/apple2.py +38 -0
- dodal/testing/fixtures/run_engine.py +3 -7
- dodal/testing/fixtures/utils.py +1 -2
- dodal/utils.py +60 -58
- dls_dodal-1.69.0.dist-info/RECORD +0 -338
- dodal/beamline_specific_utils/i05_shared.py +0 -14
- dodal/devices/b07/__init__.py +0 -3
- dodal/devices/i04/beam_centre.py +0 -84
- dodal/devices/i05/__init__.py +0 -3
- dodal/devices/i09/__init__.py +0 -3
- dodal/devices/i21/__init__.py +0 -5
- {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/entry_points.txt +0 -0
- {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/licenses/LICENSE +0 -0
- {dls_dodal-1.69.0.dist-info → dls_dodal-2.0.0.dist-info}/top_level.txt +0 -0
- /dodal/{beamline_specific_utils → devices/beamlines}/__init__.py +0 -0
- /dodal/devices/{b07 → beamlines/b07}/enums.py +0 -0
- /dodal/devices/{b07_1 → beamlines/b07_1}/enums.py +0 -0
- /dodal/devices/{b16 → beamlines/b16}/__init__.py +0 -0
- /dodal/devices/{i02_1 → beamlines/i02_1}/__init__.py +0 -0
- /dodal/devices/{i02_2 → beamlines/i02_2}/__init__.py +0 -0
- /dodal/devices/{i03 → beamlines/i03}/__init__.py +0 -0
- /dodal/devices/{i03 → beamlines/i03}/constants.py +0 -0
- /dodal/devices/{i04 → beamlines/i04}/__init__.py +0 -0
- /dodal/devices/{i04 → beamlines/i04}/constants.py +0 -0
- /dodal/devices/{i04 → beamlines/i04}/max_pixel.py +0 -0
- /dodal/devices/{i05 → beamlines/i05}/enums.py +0 -0
- /dodal/devices/{i07 → beamlines/i07}/__init__.py +0 -0
- /dodal/devices/{i09 → beamlines/i09}/enums.py +0 -0
- /dodal/devices/{i09_1 → beamlines/i09_1}/__init__.py +0 -0
- /dodal/devices/{i09_1 → beamlines/i09_1}/enums.py +0 -0
- /dodal/devices/{i09_1_shared → beamlines/i09_1_shared}/__init__.py +0 -0
- /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/__init__.py +0 -0
- /dodal/devices/{i09_2_shared → beamlines/i09_2_shared}/i09_apple2.py +0 -0
- /dodal/devices/{i10 → beamlines/i10}/__init__.py +0 -0
- /dodal/devices/{i10 → beamlines/i10}/i10_setting_data.py +0 -0
- /dodal/devices/{i10 → beamlines/i10}/mirrors.py +0 -0
- /dodal/devices/{i10 → beamlines/i10}/rasor/__init__.py +0 -0
- /dodal/devices/{i10 → beamlines/i10}/rasor/rasor_scaler_cards.py +0 -0
- /dodal/devices/{i11 → beamlines/i10_1/electromagnet}/__init__.py +0 -0
- /dodal/devices/{i13_1 → beamlines/i11}/__init__.py +0 -0
- /dodal/devices/{i15 → beamlines/i13_1}/__init__.py +0 -0
- /dodal/devices/{i13_1 → beamlines/i13_1}/merlin_controller.py +0 -0
- /dodal/devices/{i17 → beamlines/i15}/__init__.py +0 -0
- /dodal/devices/{i15 → beamlines/i15}/laue.py +0 -0
- /dodal/devices/{i15 → beamlines/i15}/motors.py +0 -0
- /dodal/devices/{i15 → beamlines/i15}/rail.py +0 -0
- /dodal/devices/{i18 → beamlines/i17}/__init__.py +0 -0
- /dodal/devices/{i19 → beamlines/i18}/__init__.py +0 -0
- /dodal/devices/{i18 → beamlines/i18}/kb_mirror.py +0 -0
- /dodal/devices/{i19/access_controlled → beamlines/i19}/__init__.py +0 -0
- /dodal/devices/{i20_1 → beamlines/i19/access_controlled}/__init__.py +0 -0
- /dodal/devices/{i19 → beamlines/i19}/access_controlled/hutch_access.py +0 -0
- /dodal/devices/{i19 → beamlines/i19}/beamstop.py +0 -0
- /dodal/devices/{i19 → beamlines/i19}/diffractometer.py +0 -0
- /dodal/devices/{i22 → beamlines/i20_1}/__init__.py +0 -0
- /dodal/devices/{i21 → beamlines/i21}/enums.py +0 -0
- /dodal/devices/{i24 → beamlines/i22}/__init__.py +0 -0
- /dodal/devices/{p99 → beamlines/i24}/__init__.py +0 -0
- /dodal/devices/{i24 → beamlines/i24}/aperture.py +0 -0
- /dodal/devices/{i24 → beamlines/i24}/focus_mirrors.py +0 -0
- /dodal/devices/{i24 → beamlines/i24}/vgonio.py +0 -0
- /dodal/devices/{p60 → beamlines/p60}/__init__.py +0 -0
- /dodal/devices/{p60 → beamlines/p60}/enums.py +0 -0
- /dodal/devices/{p99 → beamlines/p99}/sample_stage.py +0 -0
dodal/beamlines/i19_2.py
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
|
+
from functools import cache
|
|
1
2
|
from pathlib import Path
|
|
2
3
|
|
|
4
|
+
from ophyd_async.core import PathProvider
|
|
3
5
|
from ophyd_async.fastcs.eiger import EigerDetector
|
|
4
6
|
from ophyd_async.fastcs.panda import HDFPanda
|
|
5
7
|
|
|
6
|
-
from dodal.common.beamlines.beamline_utils import (
|
|
7
|
-
device_factory,
|
|
8
|
-
get_path_provider,
|
|
9
|
-
set_path_provider,
|
|
10
|
-
)
|
|
11
8
|
from dodal.common.beamlines.beamline_utils import (
|
|
12
9
|
set_beamline as set_utils_beamline,
|
|
13
10
|
)
|
|
14
11
|
from dodal.common.visit import StaticVisitPathProvider
|
|
15
|
-
from dodal.
|
|
12
|
+
from dodal.device_manager import DeviceManager
|
|
13
|
+
from dodal.devices.beamlines.i19.access_controlled.attenuator_motor_squad import (
|
|
16
14
|
AttenuatorMotorSquad,
|
|
17
15
|
)
|
|
18
|
-
from dodal.devices.i19.access_controlled.blueapi_device import HutchState
|
|
19
|
-
from dodal.devices.i19.access_controlled.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
from dodal.devices.i19.
|
|
16
|
+
from dodal.devices.beamlines.i19.access_controlled.blueapi_device import HutchState
|
|
17
|
+
from dodal.devices.beamlines.i19.access_controlled.piezo_control import (
|
|
18
|
+
AccessControlledPiezoActuator,
|
|
19
|
+
FocusingMirrorName,
|
|
20
|
+
)
|
|
21
|
+
from dodal.devices.beamlines.i19.access_controlled.shutter import (
|
|
22
|
+
AccessControlledShutter,
|
|
23
|
+
)
|
|
24
|
+
from dodal.devices.beamlines.i19.backlight import BacklightPosition
|
|
25
|
+
from dodal.devices.beamlines.i19.beamstop import BeamStop
|
|
26
|
+
from dodal.devices.beamlines.i19.diffractometer import FourCircleDiffractometer
|
|
27
|
+
from dodal.devices.beamlines.i19.pin_col_stages import PinholeCollimatorControl
|
|
24
28
|
from dodal.devices.synchrotron import Synchrotron
|
|
25
29
|
from dodal.devices.zebra.zebra import Zebra
|
|
26
30
|
from dodal.devices.zebra.zebra_constants_mapping import (
|
|
@@ -39,13 +43,6 @@ PREFIX = BeamlinePrefix("i19", "I")
|
|
|
39
43
|
set_log_beamline(BL)
|
|
40
44
|
set_utils_beamline(BL)
|
|
41
45
|
|
|
42
|
-
set_path_provider(
|
|
43
|
-
StaticVisitPathProvider(
|
|
44
|
-
BL,
|
|
45
|
-
Path("/dls/i19-2/data/2025/cm40639-4/"),
|
|
46
|
-
)
|
|
47
|
-
)
|
|
48
|
-
|
|
49
46
|
I19_2_COMMISSIONING_INSTR_SESSION: str = "cm40639-5"
|
|
50
47
|
|
|
51
48
|
I19_2_ZEBRA_MAPPING = ZebraMapping(
|
|
@@ -53,67 +50,66 @@ I19_2_ZEBRA_MAPPING = ZebraMapping(
|
|
|
53
50
|
sources=ZebraSources(),
|
|
54
51
|
)
|
|
55
52
|
|
|
53
|
+
devices = DeviceManager()
|
|
54
|
+
|
|
56
55
|
|
|
57
|
-
@
|
|
56
|
+
@devices.fixture
|
|
57
|
+
@cache
|
|
58
|
+
def path_provider() -> PathProvider:
|
|
59
|
+
return StaticVisitPathProvider(
|
|
60
|
+
BL,
|
|
61
|
+
Path("/dls/i19-2/data/2026/cm44169-1/"),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@devices.factory()
|
|
58
66
|
def attenuator_motor_squad() -> AttenuatorMotorSquad:
|
|
59
67
|
return AttenuatorMotorSquad(
|
|
60
68
|
hutch=HutchState.EH2, instrument_session=I19_2_COMMISSIONING_INSTR_SESSION
|
|
61
69
|
)
|
|
62
70
|
|
|
63
71
|
|
|
64
|
-
@
|
|
72
|
+
@devices.factory()
|
|
65
73
|
def backlight() -> BacklightPosition:
|
|
66
|
-
"""Get the i19-2 backlight device, instantiate it if it hasn't already been.
|
|
67
|
-
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
68
|
-
"""
|
|
69
74
|
return BacklightPosition(prefix=f"{PREFIX.beamline_prefix}-EA-IOC-12:")
|
|
70
75
|
|
|
71
76
|
|
|
72
|
-
@
|
|
77
|
+
@devices.factory()
|
|
73
78
|
def beamstop() -> BeamStop:
|
|
74
|
-
"""Get the i19-2 beamstop device, instantiate it if it hasn't already been.
|
|
75
|
-
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
76
|
-
"""
|
|
77
79
|
return BeamStop(prefix=f"{PREFIX.beamline_prefix}-OP-ABSB-02:")
|
|
78
80
|
|
|
79
81
|
|
|
80
|
-
@
|
|
82
|
+
@devices.factory()
|
|
81
83
|
def diffractometer() -> FourCircleDiffractometer:
|
|
82
84
|
return FourCircleDiffractometer(prefix=PREFIX.beamline_prefix)
|
|
83
85
|
|
|
84
86
|
|
|
85
|
-
@
|
|
86
|
-
def eiger() -> EigerDetector:
|
|
87
|
+
@devices.factory()
|
|
88
|
+
def eiger(path_provider: PathProvider) -> EigerDetector:
|
|
87
89
|
return EigerDetector(
|
|
88
90
|
prefix=PREFIX.beamline_prefix,
|
|
89
|
-
path_provider=
|
|
91
|
+
path_provider=path_provider,
|
|
90
92
|
drv_suffix="-EA-EIGER-01:",
|
|
91
93
|
hdf_suffix="-EA-EIGER-01:OD:",
|
|
92
94
|
)
|
|
93
95
|
|
|
94
96
|
|
|
95
|
-
@
|
|
96
|
-
def panda() -> HDFPanda:
|
|
97
|
+
@devices.factory()
|
|
98
|
+
def panda(path_provider: PathProvider) -> HDFPanda:
|
|
97
99
|
return HDFPanda(
|
|
98
100
|
prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
|
|
99
|
-
path_provider=
|
|
101
|
+
path_provider=path_provider,
|
|
100
102
|
)
|
|
101
103
|
|
|
102
104
|
|
|
103
|
-
@
|
|
105
|
+
@devices.factory()
|
|
104
106
|
def pinhole_and_collimator() -> PinholeCollimatorControl:
|
|
105
|
-
"""Get the i19-2 pinhole and collimator control device, instantiate it if it
|
|
106
|
-
hasn't already been. If this is called when already instantiated in i19-2,
|
|
107
|
-
it will return the existing object.
|
|
108
|
-
"""
|
|
109
107
|
return PinholeCollimatorControl(prefix=PREFIX.beamline_prefix)
|
|
110
108
|
|
|
111
109
|
|
|
112
|
-
@
|
|
110
|
+
@devices.factory()
|
|
113
111
|
def shutter() -> AccessControlledShutter:
|
|
114
|
-
"""
|
|
115
|
-
If this is called when already instantiated, it will return the existing object.
|
|
116
|
-
"""
|
|
112
|
+
"""Access controlled wrapper for the experiment shutter."""
|
|
117
113
|
return AccessControlledShutter(
|
|
118
114
|
prefix=f"{PREFIX.beamline_prefix}-PS-SHTR-01:",
|
|
119
115
|
hutch=HutchState.EH2,
|
|
@@ -121,20 +117,40 @@ def shutter() -> AccessControlledShutter:
|
|
|
121
117
|
)
|
|
122
118
|
|
|
123
119
|
|
|
124
|
-
@
|
|
120
|
+
@devices.factory()
|
|
125
121
|
def synchrotron() -> Synchrotron:
|
|
126
|
-
"""Get the i19-2 synchrotron device, instantiate it if it hasn't already been.
|
|
127
|
-
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
128
|
-
"""
|
|
129
122
|
return Synchrotron()
|
|
130
123
|
|
|
131
124
|
|
|
132
|
-
@
|
|
125
|
+
@devices.factory()
|
|
133
126
|
def zebra() -> Zebra:
|
|
134
|
-
"""Get the i19-2 zebra device, instantiate it if it hasn't already been.
|
|
135
|
-
If this is called when already instantiated in i19-2, it will return the existing object.
|
|
136
|
-
"""
|
|
137
127
|
return Zebra(
|
|
138
128
|
mapping=I19_2_ZEBRA_MAPPING,
|
|
139
129
|
prefix=f"{PREFIX.beamline_prefix}-EA-ZEBRA-03:",
|
|
140
130
|
)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
@devices.factory()
|
|
134
|
+
def hfm_piezo() -> AccessControlledPiezoActuator:
|
|
135
|
+
"""Get the i19-2 access controlled hfm piezo device, instantiate it if it hasn't already been.
|
|
136
|
+
If this is called when already instantiated, it will return the existing object.
|
|
137
|
+
"""
|
|
138
|
+
return AccessControlledPiezoActuator(
|
|
139
|
+
prefix=f"{PREFIX.beamline_prefix}-OP-HFM-01:",
|
|
140
|
+
mirror_type=FocusingMirrorName.HFM,
|
|
141
|
+
hutch=HutchState.EH2,
|
|
142
|
+
instrument_session=I19_2_COMMISSIONING_INSTR_SESSION,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@devices.factory()
|
|
147
|
+
def vfm_piezo() -> AccessControlledPiezoActuator:
|
|
148
|
+
"""Get the i19-2 access controlled vfm piezo device, instantiate it if it hasn't already been.
|
|
149
|
+
If this is called when already instantiated, it will return the existing object.
|
|
150
|
+
"""
|
|
151
|
+
return AccessControlledPiezoActuator(
|
|
152
|
+
prefix=f"{PREFIX.beamline_prefix}-OP-VFM-01:",
|
|
153
|
+
mirror_type=FocusingMirrorName.VFM,
|
|
154
|
+
hutch=HutchState.EH2,
|
|
155
|
+
instrument_session=I19_2_COMMISSIONING_INSTR_SESSION,
|
|
156
|
+
)
|
dodal/beamlines/i19_optics.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
from dodal.common.beamlines.beamline_utils import (
|
|
2
|
-
device_factory,
|
|
3
|
-
)
|
|
4
1
|
from dodal.common.beamlines.beamline_utils import (
|
|
5
2
|
set_beamline as set_utils_beamline,
|
|
6
3
|
)
|
|
7
|
-
from dodal.
|
|
8
|
-
from dodal.devices.i19.access_controlled.hutch_access import (
|
|
4
|
+
from dodal.device_manager import DeviceManager
|
|
5
|
+
from dodal.devices.beamlines.i19.access_controlled.hutch_access import (
|
|
9
6
|
ACCESS_DEVICE_NAME,
|
|
10
7
|
HutchAccessControl,
|
|
11
8
|
)
|
|
9
|
+
from dodal.devices.focusing_mirror import FocusingMirrorWithPiezo
|
|
10
|
+
from dodal.devices.hutch_shutter import HutchShutter
|
|
12
11
|
from dodal.log import set_beamline as set_log_beamline
|
|
13
12
|
from dodal.utils import BeamlinePrefix
|
|
14
13
|
|
|
@@ -17,20 +16,34 @@ PREFIX = BeamlinePrefix("i19", "I")
|
|
|
17
16
|
set_log_beamline(BL)
|
|
18
17
|
set_utils_beamline(BL)
|
|
19
18
|
|
|
19
|
+
devices = DeviceManager()
|
|
20
|
+
|
|
20
21
|
|
|
21
|
-
@
|
|
22
|
+
@devices.factory()
|
|
22
23
|
def shutter() -> HutchShutter:
|
|
23
|
-
"""
|
|
24
|
-
If this is called when already instantiated, it will return the existing object.
|
|
25
|
-
"""
|
|
24
|
+
"""Real experiment shutter device for I19."""
|
|
26
25
|
return HutchShutter(f"{PREFIX.beamline_prefix}-PS-SHTR-01:")
|
|
27
26
|
|
|
28
27
|
|
|
29
|
-
@
|
|
28
|
+
@devices.factory()
|
|
30
29
|
def access_control() -> HutchAccessControl:
|
|
31
|
-
"""
|
|
32
|
-
If this is called when already instantiated, it will return the existing object.
|
|
33
|
-
"""
|
|
30
|
+
"""Device to check which hutch is the active hutch on i19."""
|
|
34
31
|
return HutchAccessControl(
|
|
35
32
|
f"{PREFIX.beamline_prefix}-OP-STAT-01:", ACCESS_DEVICE_NAME
|
|
36
33
|
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@devices.factory()
|
|
37
|
+
def vfm() -> FocusingMirrorWithPiezo:
|
|
38
|
+
"""Get the i19 vfm device, instantiate it if it hasn't already been.
|
|
39
|
+
If this is called when already instantiated, it will return the existing object.
|
|
40
|
+
"""
|
|
41
|
+
return FocusingMirrorWithPiezo(f"{PREFIX.beamline_prefix}-OP-VFM-01:")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@devices.factory()
|
|
45
|
+
def hfm() -> FocusingMirrorWithPiezo:
|
|
46
|
+
"""Get the i19 hfm device, instantiate it if it hasn't already been.
|
|
47
|
+
If this is called when already instantiated, it will return the existing object.
|
|
48
|
+
"""
|
|
49
|
+
return FocusingMirrorWithPiezo(f"{PREFIX.beamline_prefix}-OP-HFM-01:")
|
dodal/beamlines/i20_1.py
CHANGED
|
@@ -38,32 +38,26 @@ set_path_provider(
|
|
|
38
38
|
"""
|
|
39
39
|
NOTE: Due to the CA gateway machine being switched off, PVs are not available remotely
|
|
40
40
|
and you need to be on the beamline network to access them.
|
|
41
|
-
The simplest way to do this is to `ssh i20-1-ws001` and run dodal connect i20_1 from
|
|
41
|
+
The simplest way to do this is to `ssh i20-1-ws001` and run dodal connect i20_1 from
|
|
42
|
+
there.
|
|
42
43
|
"""
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
@device_factory()
|
|
46
47
|
def turbo_slit() -> TurboSlit:
|
|
47
|
-
"""
|
|
48
|
-
turboslit for selecting energy from the polychromator
|
|
49
|
-
"""
|
|
50
|
-
|
|
48
|
+
"""Turboslit for selecting energy from the polychromator."""
|
|
51
49
|
return TurboSlit(f"{PREFIX.beamline_prefix}-OP-PCHRO-01:TS:")
|
|
52
50
|
|
|
53
51
|
|
|
54
52
|
@device_factory()
|
|
55
53
|
def turbo_slit_x() -> Motor:
|
|
56
|
-
"""
|
|
57
|
-
turbo slit x motor
|
|
58
|
-
"""
|
|
54
|
+
"""Turbo slit x motor."""
|
|
59
55
|
return Motor(f"{PREFIX.beamline_prefix}-OP-PCHRO-01:TS:XFINE")
|
|
60
56
|
|
|
61
57
|
|
|
62
58
|
@device_factory()
|
|
63
59
|
def turbo_slit_pmac() -> PmacIO:
|
|
64
|
-
"""
|
|
65
|
-
PMac controller using running fly scans with trajectory
|
|
66
|
-
"""
|
|
60
|
+
"""PMac controller using running fly scans with trajectory."""
|
|
67
61
|
motor = turbo_slit_x()
|
|
68
62
|
return PmacIO(
|
|
69
63
|
prefix=f"{PREFIX.beamline_prefix}-MO-STEP-06:",
|
|
@@ -93,9 +87,7 @@ def alignment_y() -> Motor:
|
|
|
93
87
|
|
|
94
88
|
@device_factory(skip=True)
|
|
95
89
|
def xspress3() -> Xspress3:
|
|
96
|
-
"""
|
|
97
|
-
16 channels Xspress3 detector
|
|
98
|
-
"""
|
|
90
|
+
"""16 channels Xspress3 detector."""
|
|
99
91
|
return Xspress3(
|
|
100
92
|
f"{PREFIX.beamline_prefix}-EA-DET-03:",
|
|
101
93
|
num_channels=16,
|
dodal/beamlines/i21.py
CHANGED
|
@@ -2,13 +2,9 @@ from pathlib import Path
|
|
|
2
2
|
|
|
3
3
|
from daq_config_server.client import ConfigServer
|
|
4
4
|
|
|
5
|
-
from dodal.common.beamlines.beamline_utils import (
|
|
6
|
-
device_factory,
|
|
7
|
-
)
|
|
8
5
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
9
|
-
from dodal.
|
|
10
|
-
|
|
11
|
-
)
|
|
6
|
+
from dodal.device_manager import DeviceManager
|
|
7
|
+
from dodal.devices.beamlines.i21 import Grating
|
|
12
8
|
from dodal.devices.insertion_device import (
|
|
13
9
|
Apple2,
|
|
14
10
|
Apple2EnforceLHMoveController,
|
|
@@ -42,14 +38,15 @@ I21_CONF_CLIENT = ConfigServer(url="https://daq-config.diamond.ac.uk")
|
|
|
42
38
|
LOOK_UPTABLE_DIR = "/dls_sw/i21/software/gda/workspace_git/gda-diamond.git/configurations/i21-config/lookupTables/"
|
|
43
39
|
GAP_LOOKUP_FILE_NAME = "IDEnergy2GapCalibrations.csv"
|
|
44
40
|
PHASE_LOOKUP_FILE_NAME = "IDEnergy2PhaseCalibrations.csv"
|
|
41
|
+
devices = DeviceManager()
|
|
45
42
|
|
|
46
43
|
|
|
47
|
-
@
|
|
44
|
+
@devices.factory()
|
|
48
45
|
def synchrotron() -> Synchrotron:
|
|
49
46
|
return Synchrotron()
|
|
50
47
|
|
|
51
48
|
|
|
52
|
-
@
|
|
49
|
+
@devices.factory()
|
|
53
50
|
def pgm() -> PlaneGratingMonochromator:
|
|
54
51
|
return PlaneGratingMonochromator(
|
|
55
52
|
prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
|
|
@@ -57,12 +54,12 @@ def pgm() -> PlaneGratingMonochromator:
|
|
|
57
54
|
)
|
|
58
55
|
|
|
59
56
|
|
|
60
|
-
@
|
|
57
|
+
@devices.factory()
|
|
61
58
|
def id_gap() -> UndulatorGap:
|
|
62
59
|
return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:")
|
|
63
60
|
|
|
64
61
|
|
|
65
|
-
@
|
|
62
|
+
@devices.factory()
|
|
66
63
|
def id_phase() -> UndulatorPhaseAxes:
|
|
67
64
|
return UndulatorPhaseAxes(
|
|
68
65
|
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
@@ -73,20 +70,24 @@ def id_phase() -> UndulatorPhaseAxes:
|
|
|
73
70
|
)
|
|
74
71
|
|
|
75
72
|
|
|
76
|
-
@
|
|
77
|
-
def id(
|
|
73
|
+
@devices.factory()
|
|
74
|
+
def id(
|
|
75
|
+
id_gap: UndulatorGap, id_phase: UndulatorPhaseAxes
|
|
76
|
+
) -> Apple2[UndulatorPhaseAxes]:
|
|
78
77
|
"""I21 insertion device."""
|
|
79
78
|
return Apple2[UndulatorPhaseAxes](
|
|
80
|
-
id_gap=id_gap
|
|
81
|
-
id_phase=id_phase
|
|
79
|
+
id_gap=id_gap,
|
|
80
|
+
id_phase=id_phase,
|
|
82
81
|
)
|
|
83
82
|
|
|
84
83
|
|
|
85
|
-
@
|
|
86
|
-
def id_controller(
|
|
87
|
-
|
|
84
|
+
@devices.factory()
|
|
85
|
+
def id_controller(
|
|
86
|
+
id: Apple2[UndulatorPhaseAxes],
|
|
87
|
+
) -> Apple2EnforceLHMoveController[UndulatorPhaseAxes]:
|
|
88
|
+
"""I21 insertion device controller."""
|
|
88
89
|
return Apple2EnforceLHMoveController[UndulatorPhaseAxes](
|
|
89
|
-
apple2=id
|
|
90
|
+
apple2=id,
|
|
90
91
|
gap_energy_motor_lut=ConfigServerEnergyMotorLookup(
|
|
91
92
|
lut_config=LookupTableColumnConfig(grating=I21_GRATING_COLUMNS),
|
|
92
93
|
config_client=I21_CONF_CLIENT,
|
|
@@ -103,22 +104,28 @@ def id_controller() -> Apple2EnforceLHMoveController[UndulatorPhaseAxes]:
|
|
|
103
104
|
)
|
|
104
105
|
|
|
105
106
|
|
|
106
|
-
@
|
|
107
|
-
def id_energy(
|
|
108
|
-
|
|
107
|
+
@devices.factory()
|
|
108
|
+
def id_energy(
|
|
109
|
+
id_controller: Apple2EnforceLHMoveController[UndulatorPhaseAxes],
|
|
110
|
+
) -> InsertionDeviceEnergy:
|
|
111
|
+
return InsertionDeviceEnergy(id_controller=id_controller)
|
|
109
112
|
|
|
110
113
|
|
|
111
|
-
@
|
|
112
|
-
def id_polarisation(
|
|
113
|
-
|
|
114
|
+
@devices.factory()
|
|
115
|
+
def id_polarisation(
|
|
116
|
+
id_controller: Apple2EnforceLHMoveController[UndulatorPhaseAxes],
|
|
117
|
+
) -> InsertionDevicePolarisation:
|
|
118
|
+
return InsertionDevicePolarisation(id_controller=id_controller)
|
|
114
119
|
|
|
115
120
|
|
|
116
|
-
@
|
|
117
|
-
def
|
|
121
|
+
@devices.factory()
|
|
122
|
+
def energy(
|
|
123
|
+
id_energy: InsertionDeviceEnergy, pgm: PlaneGratingMonochromator
|
|
124
|
+
) -> BeamEnergy:
|
|
118
125
|
"""Beam energy."""
|
|
119
|
-
return BeamEnergy(id_energy=id_energy
|
|
126
|
+
return BeamEnergy(id_energy=id_energy, mono=pgm.energy)
|
|
120
127
|
|
|
121
128
|
|
|
122
|
-
@
|
|
129
|
+
@devices.factory()
|
|
123
130
|
def sample_temperature_controller() -> Lakeshore336:
|
|
124
131
|
return Lakeshore336(prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-01:")
|
dodal/beamlines/i22.py
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from ophyd_async.core import StaticPathProvider, UUIDFilenameProvider
|
|
1
4
|
from ophyd_async.epics.adaravis import AravisDetector
|
|
2
5
|
from ophyd_async.epics.adcore import NDPluginBaseIO, NDPluginStatsIO
|
|
3
6
|
from ophyd_async.epics.adpilatus import PilatusDetector
|
|
@@ -6,6 +9,7 @@ from ophyd_async.fastcs.panda import HDFPanda
|
|
|
6
9
|
from dodal.common.beamlines.beamline_utils import (
|
|
7
10
|
device_factory,
|
|
8
11
|
get_path_provider,
|
|
12
|
+
set_path_provider,
|
|
9
13
|
)
|
|
10
14
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
11
15
|
from dodal.common.beamlines.device_helpers import CAM_SUFFIX, DET_SUFFIX, HDF5_SUFFIX
|
|
@@ -13,11 +17,15 @@ from dodal.common.crystal_metadata import (
|
|
|
13
17
|
MaterialsEnum,
|
|
14
18
|
make_crystal_metadata_from_material,
|
|
15
19
|
)
|
|
20
|
+
from dodal.devices.beamlines.i22.dcm import DCM
|
|
21
|
+
from dodal.devices.beamlines.i22.fswitch import FSwitch
|
|
22
|
+
from dodal.devices.beamlines.i22.nxsas import (
|
|
23
|
+
NXSasMetadataHolder,
|
|
24
|
+
NXSasOAV,
|
|
25
|
+
NXSasPilatus,
|
|
26
|
+
)
|
|
16
27
|
from dodal.devices.bimorph_mirror import BimorphMirror
|
|
17
28
|
from dodal.devices.focusing_mirror import FocusingMirror
|
|
18
|
-
from dodal.devices.i22.dcm import DCM
|
|
19
|
-
from dodal.devices.i22.fswitch import FSwitch
|
|
20
|
-
from dodal.devices.i22.nxsas import NXSasMetadataHolder, NXSasOAV, NXSasPilatus
|
|
21
29
|
from dodal.devices.linkam3 import Linkam3
|
|
22
30
|
from dodal.devices.motors import XYPitchStage, XYRollStage, XYStage
|
|
23
31
|
from dodal.devices.slits import Slits
|
|
@@ -33,6 +41,13 @@ PREFIX = BeamlinePrefix(BL)
|
|
|
33
41
|
set_log_beamline(BL)
|
|
34
42
|
set_utils_beamline(BL)
|
|
35
43
|
|
|
44
|
+
# This should be removed when the DeviceManager is adopted
|
|
45
|
+
try:
|
|
46
|
+
get_path_provider()
|
|
47
|
+
except NameError:
|
|
48
|
+
# If one hasn't already been set, use a default to stop things crashing
|
|
49
|
+
set_path_provider(StaticPathProvider(UUIDFilenameProvider(), Path("/tmp")))
|
|
50
|
+
|
|
36
51
|
|
|
37
52
|
@device_factory()
|
|
38
53
|
def saxs() -> PilatusDetector:
|
|
@@ -267,7 +282,7 @@ def linkam() -> Linkam3:
|
|
|
267
282
|
|
|
268
283
|
@device_factory(skip=True)
|
|
269
284
|
def ppump() -> WatsonMarlow323Pump:
|
|
270
|
-
"""Sample Environment Peristaltic Pump"""
|
|
285
|
+
"""Sample Environment Peristaltic Pump."""
|
|
271
286
|
return WatsonMarlow323Pump(f"{PREFIX.beamline_prefix}-EA-PUMP-01:")
|
|
272
287
|
|
|
273
288
|
|
dodal/beamlines/i23.py
CHANGED
|
@@ -52,8 +52,7 @@ class I23DetectorPositions(StrictEnum):
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
def _is_i23_machine():
|
|
55
|
-
"""
|
|
56
|
-
Devices using PVA can only connect from i23 machines, due to the absence of
|
|
55
|
+
"""Devices using PVA can only connect from i23 machines, due to the absence of
|
|
57
56
|
PVA gateways at present.
|
|
58
57
|
"""
|
|
59
58
|
hostname = get_hostname()
|
dodal/beamlines/i24.py
CHANGED
|
@@ -12,16 +12,16 @@ from dodal.devices.attenuator.filter_selections import (
|
|
|
12
12
|
I24FilterOneSelections,
|
|
13
13
|
I24FilterTwoSelections,
|
|
14
14
|
)
|
|
15
|
+
from dodal.devices.beamlines.i24.aperture import Aperture
|
|
16
|
+
from dodal.devices.beamlines.i24.beam_center import DetectorBeamCenter
|
|
17
|
+
from dodal.devices.beamlines.i24.beamstop import Beamstop
|
|
18
|
+
from dodal.devices.beamlines.i24.commissioning_jungfrau import CommissioningJungfrau
|
|
19
|
+
from dodal.devices.beamlines.i24.dcm import DCM
|
|
20
|
+
from dodal.devices.beamlines.i24.dual_backlight import DualBacklight
|
|
21
|
+
from dodal.devices.beamlines.i24.focus_mirrors import FocusMirrorsMode
|
|
22
|
+
from dodal.devices.beamlines.i24.pmac import PMAC
|
|
23
|
+
from dodal.devices.beamlines.i24.vgonio import VerticalGoniometer
|
|
15
24
|
from dodal.devices.hutch_shutter import HutchShutter
|
|
16
|
-
from dodal.devices.i24.aperture import Aperture
|
|
17
|
-
from dodal.devices.i24.beam_center import DetectorBeamCenter
|
|
18
|
-
from dodal.devices.i24.beamstop import Beamstop
|
|
19
|
-
from dodal.devices.i24.commissioning_jungfrau import CommissioningJungfrau
|
|
20
|
-
from dodal.devices.i24.dcm import DCM
|
|
21
|
-
from dodal.devices.i24.dual_backlight import DualBacklight
|
|
22
|
-
from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
|
|
23
|
-
from dodal.devices.i24.pmac import PMAC
|
|
24
|
-
from dodal.devices.i24.vgonio import VerticalGoniometer
|
|
25
25
|
from dodal.devices.motors import YZStage
|
|
26
26
|
from dodal.devices.oav.oav_detector import OAVBeamCentreFile
|
|
27
27
|
from dodal.devices.oav.oav_parameters import OAVConfigBeamCentre
|
|
@@ -148,7 +148,8 @@ def commissioning_jungfrau(
|
|
|
148
148
|
path_provider: PathProvider,
|
|
149
149
|
) -> CommissioningJungfrau:
|
|
150
150
|
"""Get the commissionning Jungfrau 9M device, which uses a temporary filewriter
|
|
151
|
-
device in place of Odin while the detector is in commissioning.
|
|
151
|
+
device in place of Odin while the detector is in commissioning.
|
|
152
|
+
"""
|
|
152
153
|
return CommissioningJungfrau(
|
|
153
154
|
f"{PREFIX.beamline_prefix}-EA-JFRAU-01:",
|
|
154
155
|
f"{PREFIX.beamline_prefix}-JUNGFRAU-META:FD:",
|
dodal/beamlines/k07.py
CHANGED
|
@@ -1,21 +1,43 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from daq_config_server.client import ConfigServer
|
|
1
4
|
from ophyd_async.core import StrictEnum
|
|
2
5
|
|
|
3
|
-
from dodal.common.beamlines.beamline_utils import (
|
|
4
|
-
device_factory,
|
|
5
|
-
)
|
|
6
6
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
7
|
+
from dodal.device_manager import DeviceManager
|
|
8
|
+
from dodal.devices.insertion_device import (
|
|
9
|
+
Apple2,
|
|
10
|
+
Apple2EnforceLHMoveController,
|
|
11
|
+
ConfigServerEnergyMotorLookup,
|
|
12
|
+
InsertionDeviceEnergy,
|
|
13
|
+
InsertionDevicePolarisation,
|
|
14
|
+
LookupTableColumnConfig,
|
|
15
|
+
UndulatorGap,
|
|
16
|
+
UndulatorPhaseAxes,
|
|
17
|
+
)
|
|
7
18
|
from dodal.devices.pgm import PlaneGratingMonochromator
|
|
8
19
|
from dodal.devices.synchrotron import Synchrotron
|
|
9
20
|
from dodal.log import set_beamline as set_log_beamline
|
|
10
21
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
11
22
|
|
|
23
|
+
devices = DeviceManager()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
K07_CONF_CLIENT = ConfigServer(url="https://daq-config.diamond.ac.uk")
|
|
27
|
+
|
|
28
|
+
LOOK_UPTABLE_DIR = "/dls_sw/k07/software/gda/workspace_git/gda-diamond.git/configurations/k07/lookupTables/"
|
|
29
|
+
GAP_LOOKUP_FILE_NAME = "JIDEnergy2GapCalibrations.csv"
|
|
30
|
+
PHASE_LOOKUP_FILE_NAME = "JIDEnergy2PhaseCalibrations.csv"
|
|
31
|
+
K07_GRATING_COLUMNS = "Grating"
|
|
32
|
+
K07_PHASE_POLY_DEG_COLUMNS = ["0th-order"]
|
|
33
|
+
|
|
12
34
|
BL = get_beamline_name("k07")
|
|
13
35
|
PREFIX = BeamlinePrefix(BL)
|
|
14
36
|
set_log_beamline(BL)
|
|
15
37
|
set_utils_beamline(BL)
|
|
16
38
|
|
|
17
39
|
|
|
18
|
-
@
|
|
40
|
+
@devices.factory()
|
|
19
41
|
def synchrotron() -> Synchrotron:
|
|
20
42
|
return Synchrotron()
|
|
21
43
|
|
|
@@ -26,9 +48,81 @@ class Grating(StrictEnum):
|
|
|
26
48
|
|
|
27
49
|
|
|
28
50
|
# Grating does not exist yet - this class is a placeholder for when it does
|
|
29
|
-
@
|
|
51
|
+
@devices.factory(skip=True)
|
|
30
52
|
def pgm() -> PlaneGratingMonochromator:
|
|
31
53
|
return PlaneGratingMonochromator(
|
|
32
54
|
prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:",
|
|
33
55
|
grating=Grating,
|
|
34
56
|
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# Insertion device does not exist yet - these classes are placeholders at the moment.
|
|
60
|
+
@devices.factory(skip=True)
|
|
61
|
+
def id_gap() -> UndulatorGap:
|
|
62
|
+
return UndulatorGap(
|
|
63
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# Insertion device does not exist yet - these classes are placeholders at the moment.
|
|
68
|
+
@devices.factory(skip=True)
|
|
69
|
+
def id_phase() -> UndulatorPhaseAxes:
|
|
70
|
+
return UndulatorPhaseAxes(
|
|
71
|
+
prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
|
|
72
|
+
top_outer="RPQ1",
|
|
73
|
+
top_inner="RPQ2",
|
|
74
|
+
btm_inner="RPQ3",
|
|
75
|
+
btm_outer="RPQ4",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# Insertion device does not exist yet - these classes are placeholders at the moment.
|
|
80
|
+
@devices.factory(skip=True)
|
|
81
|
+
def id(
|
|
82
|
+
id_gap: UndulatorGap, id_phase: UndulatorPhaseAxes
|
|
83
|
+
) -> Apple2[UndulatorPhaseAxes]:
|
|
84
|
+
"""K07 insertion device."""
|
|
85
|
+
return Apple2[UndulatorPhaseAxes](
|
|
86
|
+
id_gap=id_gap,
|
|
87
|
+
id_phase=id_phase,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
# Insertion device does not exist yet - temporary use Apple2EnforceLHMoveController
|
|
92
|
+
@devices.factory(skip=True)
|
|
93
|
+
def id_controller(
|
|
94
|
+
id: Apple2[UndulatorPhaseAxes],
|
|
95
|
+
) -> Apple2EnforceLHMoveController[UndulatorPhaseAxes]:
|
|
96
|
+
"""I21 insertion device controller."""
|
|
97
|
+
return Apple2EnforceLHMoveController[UndulatorPhaseAxes](
|
|
98
|
+
apple2=id,
|
|
99
|
+
gap_energy_motor_lut=ConfigServerEnergyMotorLookup(
|
|
100
|
+
lut_config=LookupTableColumnConfig(grating=K07_GRATING_COLUMNS),
|
|
101
|
+
config_client=K07_CONF_CLIENT,
|
|
102
|
+
path=Path(LOOK_UPTABLE_DIR, GAP_LOOKUP_FILE_NAME),
|
|
103
|
+
),
|
|
104
|
+
phase_energy_motor_lut=ConfigServerEnergyMotorLookup(
|
|
105
|
+
lut_config=LookupTableColumnConfig(
|
|
106
|
+
grating=K07_GRATING_COLUMNS, poly_deg=K07_PHASE_POLY_DEG_COLUMNS
|
|
107
|
+
),
|
|
108
|
+
config_client=K07_CONF_CLIENT,
|
|
109
|
+
path=Path(LOOK_UPTABLE_DIR, GAP_LOOKUP_FILE_NAME),
|
|
110
|
+
),
|
|
111
|
+
units="eV",
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
# Insertion device does not exist yet - these classes are placeholders at the moment.
|
|
116
|
+
@devices.factory(skip=True)
|
|
117
|
+
def id_energy(
|
|
118
|
+
id_controller: Apple2EnforceLHMoveController[UndulatorPhaseAxes],
|
|
119
|
+
) -> InsertionDeviceEnergy:
|
|
120
|
+
return InsertionDeviceEnergy(id_controller)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# Insertion device does not exist yet - these classes are placeholders at the moment.
|
|
124
|
+
@devices.factory(skip=True)
|
|
125
|
+
def id_polarisation(
|
|
126
|
+
id_controller: Apple2EnforceLHMoveController[UndulatorPhaseAxes],
|
|
127
|
+
) -> InsertionDevicePolarisation:
|
|
128
|
+
return InsertionDevicePolarisation(id_controller)
|
dodal/beamlines/p38.py
CHANGED
|
@@ -15,9 +15,9 @@ from dodal.common.crystal_metadata import (
|
|
|
15
15
|
make_crystal_metadata_from_material,
|
|
16
16
|
)
|
|
17
17
|
from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
|
|
18
|
+
from dodal.devices.beamlines.i22.dcm import DCM
|
|
19
|
+
from dodal.devices.beamlines.i22.fswitch import FSwitch
|
|
18
20
|
from dodal.devices.focusing_mirror import FocusingMirror
|
|
19
|
-
from dodal.devices.i22.dcm import DCM
|
|
20
|
-
from dodal.devices.i22.fswitch import FSwitch
|
|
21
21
|
from dodal.devices.linkam3 import Linkam3
|
|
22
22
|
from dodal.devices.pressure_jump_cell import PressureJumpCell
|
|
23
23
|
from dodal.devices.slits import Slits
|
|
@@ -198,7 +198,7 @@ def linkam() -> Linkam3:
|
|
|
198
198
|
|
|
199
199
|
@device_factory()
|
|
200
200
|
def ppump() -> WatsonMarlow323Pump:
|
|
201
|
-
"""Peristaltic Pump"""
|
|
201
|
+
"""Peristaltic Pump."""
|
|
202
202
|
return WatsonMarlow323Pump(f"{PREFIX.beamline_prefix}-EA-PUMP-01:")
|
|
203
203
|
|
|
204
204
|
|