diff --git a/src/dodal/beamlines/i10.py b/src/dodal/beamlines/i10.py index 34955eb0b8..2925023c57 100644 --- a/src/dodal/beamlines/i10.py +++ b/src/dodal/beamlines/i10.py @@ -1,180 +1,82 @@ -from dodal.beamlines.i10_shared import devices as i10_shared_devices -from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline from dodal.device_manager import DeviceManager -from dodal.devices.current_amplifiers import CurrentAmpDet -from dodal.devices.i10 import ( - I10Diagnostic, - I10Diagnostic5ADet, - I10Slits, - I10SlitsDrainCurrent, - PiezoMirror, +from dodal.devices.i10.i10_devices_configs import ( + devices_det_slits, + devices_diagnostics_i, + devices_diffractometer, + devices_femto, + devices_femto_det, + devices_idd, + devices_idu, + devices_mirror_i, + devices_pa_stage, + devices_pin_hole, + devices_rasor_temperature_controller, + devices_sample_stage, + devices_scaler_cards, + devices_shared_diagnostics, + devices_shared_mirror, + devices_shared_slit, + devices_slit_i, + devices_sr570, + devices_sr570_det, + pgm_device, ) -from dodal.devices.i10.diagnostics import I10Diagnostic, I10Diagnostic5ADet -from dodal.devices.i10.rasor.rasor_current_amp import RasorFemto, RasorSR570 -from dodal.devices.i10.rasor.rasor_motors import ( - DetSlits, - Diffractometer, - PaStage, -) -from dodal.devices.i10.rasor.rasor_scaler_cards import RasorScalerCard1 -from dodal.devices.motors import XYStage, XYZStage -from dodal.devices.temperture_controller import ( - Lakeshore340, -) -from dodal.log import set_beamline as set_log_beamline -from dodal.utils import BeamlinePrefix, get_beamline_name -BL = get_beamline_name("i10") -set_log_beamline(BL) -set_utils_beamline(BL) -PREFIX = BeamlinePrefix(BL) devices = DeviceManager() -devices.include(i10_shared_devices) -"""Mirrors""" +"""------------------shared-----------------------------------------""" +"""Insertion Devices""" -@devices.factory() -def focusing_mirror() -> PiezoMirror: - return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:") - - -"""Optic slits""" +devices.include(devices_idd) +devices.include(devices_idu) +"""Mirrors""" +devices.include(devices_shared_mirror) -@devices.factory() -def slits() -> I10Slits: - return I10Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-") - - -@devices.factory() -def slits_current() -> I10SlitsDrainCurrent: - return I10SlitsDrainCurrent(prefix=f"{PREFIX.beamline_prefix}-") - +"""Slits""" +devices.include(devices_shared_slit) """Diagnostics""" +devices.include(devices_shared_diagnostics) +"""Energy""" +devices.include(pgm_device) -@devices.factory() -def diagnostics() -> I10Diagnostic: - return I10Diagnostic( - prefix=f"{PREFIX.beamline_prefix}-DI-", - ) - - -@devices.factory() -def d5a_det() -> I10Diagnostic5ADet: - return I10Diagnostic5ADet(prefix=f"{PREFIX.beamline_prefix}-DI-") - - -"""Rasor devices""" - - -@devices.factory() -def pin_hole() -> XYStage: - return XYStage(prefix="ME01D-EA-PINH-01:") - - -@devices.factory() -def det_slits() -> DetSlits: - return DetSlits(prefix="ME01D-MO-APTR-0") - - -@devices.factory() -def diffractometer() -> Diffractometer: - return Diffractometer(prefix="ME01D-MO-DIFF-01:") +"""------------------i10 i devices-----------------------------------------""" +"""Mirrors""" +devices.include(devices_mirror_i) -@devices.factory() -def pa_stage() -> PaStage: - return PaStage(prefix="ME01D-MO-POLAN-01:") - - -@devices.factory() -def sample_stage() -> XYZStage: - return XYZStage(prefix="ME01D-MO-CRYO-01:") - - -@devices.factory() -def rasor_temperature_controller() -> Lakeshore340: - return Lakeshore340( - prefix="ME01D-EA-TCTRL-01:", - ) - - -@devices.factory() -def rasor_femto() -> RasorFemto: - return RasorFemto( - prefix="ME01D-EA-IAMP", - ) - - -@devices.factory() -def rasor_det_scalers() -> RasorScalerCard1: - return RasorScalerCard1(prefix="ME01D-EA-SCLR-01:SCALER1") - - -@devices.factory() -def rasor_sr570() -> RasorSR570: - return RasorSR570( - prefix="ME01D-EA-IAMP", - ) - - -@devices.factory() -def rasor_sr570_pa_scaler_det( - rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_sr570.ca1, - counter=rasor_det_scalers.det, - ) - - -@devices.factory() -def rasor_femto_pa_scaler_det( - rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_femto.ca1, - counter=rasor_det_scalers.det, - ) - - -@devices.factory() -def rasor_sr570_fluo_scaler_det( - rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_sr570.ca2, - counter=rasor_det_scalers.fluo, - ) - +"""Optic slits""" -@devices.factory() -def rasor_femto_fluo_scaler_det( - rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_femto.ca2, - counter=rasor_det_scalers.fluo, - ) +devices.include(devices_slit_i) -@devices.factory() -def rasor_sr570_drain_scaler_det( - rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_sr570.ca3, - counter=rasor_det_scalers.drain, - ) +"""Diagnostics""" +devices.include(devices_diagnostics_i) -@devices.factory() -def rasor_femto_drain_scaler_det( - rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 -) -> CurrentAmpDet: - return CurrentAmpDet( - current_amp=rasor_femto.ca3, - counter=rasor_det_scalers.drain, - ) +"""Rasor devices""" +"""Stage devices""" +devices.include(devices_pin_hole) +devices.include(devices_det_slits) +devices.include(devices_diffractometer) +devices.include(devices_pa_stage) +devices.include(devices_sample_stage) +"""Temperature controller""" +devices.include(devices_rasor_temperature_controller) +""" detectors """ +"""Current amplifiers""" +devices.include(devices_femto) +devices.include(devices_sr570) +"""Scaler cards""" +devices.include(devices_scaler_cards) +"""Detectors""" +devices.include( + devices_femto_det +) # Must include devices_scaler_cards and devices_femto +devices.include( + devices_sr570_det +) # Must include devices_scaler_cards and devices_sr570 + +"""---------------------------------------------------------------------""" diff --git a/src/dodal/beamlines/i10_1.py b/src/dodal/beamlines/i10_1.py index 72be2ae75b..d45e4dde66 100644 --- a/src/dodal/beamlines/i10_1.py +++ b/src/dodal/beamlines/i10_1.py @@ -1,38 +1,47 @@ -from dodal.beamlines.i10_shared import devices as i10_shared_devices -from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline from dodal.device_manager import DeviceManager -from dodal.devices.i10 import I10JDiagnostic, I10JSlits, PiezoMirror -from dodal.devices.temperture_controller.lakeshore.lakeshore import Lakeshore336 -from dodal.log import set_beamline as set_log_beamline -from dodal.utils import BeamlinePrefix, get_beamline_name - -BL = get_beamline_name("i10-1") -set_log_beamline(BL) -set_utils_beamline(BL) -PREFIX = BeamlinePrefix("i10", "J") +from dodal.devices.i10.i10_devices_configs import ( + devices_diagnostics_j, + devices_em_temperature_controller, + devices_idd, + devices_idu, + devices_mirror_j, + devices_shared_diagnostics, + devices_shared_mirror, + devices_shared_slit, + devices_slit_j, + pgm_device, +) + devices = DeviceManager() -devices.include(i10_shared_devices) +"""------------------shared-----------------------------------------""" +"""Insertion Devices""" + +devices.include(devices_idd) +devices.include(devices_idu) + +"""Mirrors""" +devices.include(devices_shared_mirror) + +"""Slits""" +devices.include(devices_shared_slit) -@devices.factory() -def em_temperature_controller() -> Lakeshore336: - return Lakeshore336( - prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-41:", - ) +"""Diagnostics""" +devices.include(devices_shared_diagnostics) +"""Energy""" +devices.include(pgm_device) -@devices.factory() -def slits() -> I10JSlits: - return I10JSlits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-") +"""------------------i10 j devices-----------------------------------------""" -@devices.factory() -def diagnostic() -> I10JDiagnostic: - return I10JDiagnostic( - prefix=f"{PREFIX.beamline_prefix}-DI-", - ) +"""Mirrors""" +devices.include(devices_mirror_j) +"""Diagnostics""" +devices.include(devices_diagnostics_j) +"""Optic slits """ +devices.include(devices_slit_j) -@devices.factory() -def focusing_mirror() -> PiezoMirror: - return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCA-01:") +"""EM devices""" +devices.include(devices_em_temperature_controller) diff --git a/src/dodal/devices/i10/i10_devices_configs/__init__.py b/src/dodal/devices/i10/i10_devices_configs/__init__.py new file mode 100644 index 0000000000..6cbefb2c8b --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/__init__.py @@ -0,0 +1,52 @@ +from .diagnostics import ( + devices_diagnostics_i, + devices_diagnostics_j, + devices_shared_diagnostics, +) +from .em.controllers import devices_em_temperature_controller +from .energy import pgm_device +from .insertion_devices import devices_idd, devices_idu +from .mirrors import devices_mirror_i, devices_mirror_j, devices_shared_mirror +from .rasor.controllers import devices_rasor_temperature_controller +from .rasor.detectors import ( + devices_femto, + devices_femto_det, + devices_scaler_cards, + devices_sr570, + devices_sr570_det, +) +from .rasor.stages import ( + devices_det_slits, + devices_diffractometer, + devices_pa_stage, + devices_pin_hole, + devices_sample_stage, +) +from .slits import devices_shared_slit, devices_slit_i, devices_slit_j + +__all__ = [ + "devices_pin_hole", + "devices_mirror_i", + "devices_shared_mirror", + "devices_shared_slit", + "devices_shared_diagnostics", + "devices_diagnostics_i", + "devices_idd", + "devices_idu", + "pgm_device", + "devices_slit_i", + "devices_det_slits", + "devices_diffractometer", + "devices_pa_stage", + "devices_sample_stage", + "devices_rasor_temperature_controller", + "devices_femto", + "devices_femto_det", + "devices_scaler_cards", + "devices_sr570", + "devices_sr570_det", + "devices_diagnostics_j", + "devices_slit_j", + "devices_mirror_j", + "devices_em_temperature_controller", +] diff --git a/src/dodal/devices/i10/i10_devices_configs/diagnostics/__init__.py b/src/dodal/devices/i10/i10_devices_configs/diagnostics/__init__.py new file mode 100644 index 0000000000..49c6ab1c24 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/diagnostics/__init__.py @@ -0,0 +1,9 @@ +from .diagnostics_i import devices_diagnostics_i +from .diagnostics_j import devices_diagnostics_j +from .shared_diagnostics import devices_shared_diagnostics + +__all__ = [ + "devices_shared_diagnostics", + "devices_diagnostics_i", + "devices_diagnostics_j", +] diff --git a/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_i.py b/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_i.py new file mode 100644 index 0000000000..7cad91c2a8 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_i.py @@ -0,0 +1,27 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + I10Diagnostic, + I10Diagnostic5ADet, +) +from dodal.devices.i10.diagnostics import I10Diagnostic, I10Diagnostic5ADet +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_diagnostics_i = DeviceManager() + + +@devices_diagnostics_i.factory() +def diagnostics() -> I10Diagnostic: + return I10Diagnostic( + prefix=f"{PREFIX.beamline_prefix}-DI-", + ) + + +@devices_diagnostics_i.factory() +def d5a_det() -> I10Diagnostic5ADet: + return I10Diagnostic5ADet(prefix=f"{PREFIX.beamline_prefix}-DI-") diff --git a/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_j.py b/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_j.py new file mode 100644 index 0000000000..46ac7219c0 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/diagnostics/diagnostics_j.py @@ -0,0 +1,20 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10.diagnostics import ( + I10JDiagnostic, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10-1") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix("i10", "J") +devices_diagnostics_j = DeviceManager() + + +@devices_diagnostics_j.factory() +def diagnostic() -> I10JDiagnostic: + return I10JDiagnostic( + prefix=f"{PREFIX.beamline_prefix}-DI-", + ) diff --git a/src/dodal/devices/i10/i10_devices_configs/diagnostics/shared_diagnostics.py b/src/dodal/devices/i10/i10_devices_configs/diagnostics/shared_diagnostics.py new file mode 100644 index 0000000000..3d502ae515 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/diagnostics/shared_diagnostics.py @@ -0,0 +1,26 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + I10SharedDiagnostic, + I10SharedSlitsDrainCurrent, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_shared_diagnostics = DeviceManager() + + +@devices_shared_diagnostics.factory() +def optics_diagnostics() -> I10SharedDiagnostic: + return I10SharedDiagnostic( + prefix=f"{PREFIX.beamline_prefix}-DI-", + ) + + +@devices_shared_diagnostics.factory() +def optics_slits_current() -> I10SharedSlitsDrainCurrent: + return I10SharedSlitsDrainCurrent(prefix=f"{PREFIX.beamline_prefix}-") diff --git a/src/dodal/devices/i10/i10_devices_configs/em/__init__.py b/src/dodal/devices/i10/i10_devices_configs/em/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/dodal/devices/i10/i10_devices_configs/em/controllers.py b/src/dodal/devices/i10/i10_devices_configs/em/controllers.py new file mode 100644 index 0000000000..0fda4b2f52 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/em/controllers.py @@ -0,0 +1,20 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.temperture_controller import ( + Lakeshore336, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10-1") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix("i10", "J") +devices_em_temperature_controller = DeviceManager() + + +@devices_em_temperature_controller.factory() +def em_temperature_controller() -> Lakeshore336: + return Lakeshore336( + prefix=f"{PREFIX.beamline_prefix}-EA-TCTRL-41:", + ) diff --git a/src/dodal/devices/i10/i10_devices_configs/energy/__init__.py b/src/dodal/devices/i10/i10_devices_configs/energy/__init__.py new file mode 100644 index 0000000000..a92cff2440 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/energy/__init__.py @@ -0,0 +1,5 @@ +from .shared_energy import pgm_device + +__all__ = [ + "pgm_device", +] diff --git a/src/dodal/devices/i10/i10_devices_configs/energy/shared_energy.py b/src/dodal/devices/i10/i10_devices_configs/energy/shared_energy.py new file mode 100644 index 0000000000..c6d5b4c4f8 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/energy/shared_energy.py @@ -0,0 +1,22 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10.i10_setting_data import I10Grating +from dodal.devices.pgm import PlaneGratingMonochromator +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +pgm_device = DeviceManager() + + +@pgm_device.factory() +def pgm() -> PlaneGratingMonochromator: + "I10 Plane Grating Monochromator, it can change energy via pgm.energy.set()" + return PlaneGratingMonochromator( + prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", + grating=I10Grating, + grating_pv="NLINES2", + ) diff --git a/src/dodal/devices/i10/i10_devices_configs/insertion_devices/__init__.py b/src/dodal/devices/i10/i10_devices_configs/insertion_devices/__init__.py new file mode 100644 index 0000000000..d2672f9adc --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/insertion_devices/__init__.py @@ -0,0 +1,6 @@ +from .shared_insertion_devices import devices_idd, devices_idu + +__all__ = [ + "devices_idd", + "devices_idu", +] diff --git a/src/dodal/beamlines/i10_shared.py b/src/dodal/devices/i10/i10_devices_configs/insertion_devices/shared_insertion_devices.py similarity index 75% rename from src/dodal/beamlines/i10_shared.py rename to src/dodal/devices/i10/i10_devices_configs/insertion_devices/shared_insertion_devices.py index 820dbfdcce..4a2f01b63f 100644 --- a/src/dodal/beamlines/i10_shared.py +++ b/src/dodal/devices/i10/i10_devices_configs/insertion_devices/shared_insertion_devices.py @@ -12,20 +12,11 @@ from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline from dodal.device_manager import DeviceManager -from dodal.devices.i10 import ( - I10SharedDiagnostic, - I10SharedSlits, - I10SharedSlitsDrainCurrent, - PiezoMirror, -) from dodal.devices.i10.i10_apple2 import ( I10Apple2, I10Apple2Controller, LinearArbitraryAngle, ) - -# Imports taken from i10 while we work out how to deal with split end stations -from dodal.devices.i10.i10_setting_data import I10Grating from dodal.devices.insertion_device import ( BeamEnergy, InsertionDeviceEnergy, @@ -44,7 +35,6 @@ Source, ) from dodal.devices.pgm import PlaneGratingMonochromator -from dodal.devices.synchrotron import Synchrotron from dodal.log import set_beamline as set_log_beamline from dodal.utils import BeamlinePrefix, get_beamline_name @@ -52,36 +42,9 @@ set_log_beamline(BL) set_utils_beamline(BL) PREFIX = BeamlinePrefix(BL) -devices = DeviceManager() - - -@devices.factory() -def synchrotron() -> Synchrotron: - return Synchrotron() - - -"""Mirrors""" - - -@devices.factory() -def first_mirror() -> PiezoMirror: - return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:") - - -@devices.factory() -def pgm() -> PlaneGratingMonochromator: - "I10 Plane Grating Monochromator, it can change energy via pgm.energy.set()" - return PlaneGratingMonochromator( - prefix=f"{PREFIX.beamline_prefix}-OP-PGM-01:", - grating=I10Grating, - grating_pv="NLINES2", - ) - - -@devices.factory() -def switching_mirror() -> PiezoMirror: - return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:") +devices_idd = DeviceManager() +devices_idu = DeviceManager() """ID""" @@ -90,12 +53,12 @@ def switching_mirror() -> PiezoMirror: LOOK_UPTABLE_DIR = "/dls_sw/i10/software/gda/workspace_git/gda-diamond.git/configurations/i10-shared/lookupTables/" -@devices.factory() +@devices_idd.factory() def idd_gap() -> UndulatorGap: return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:") -@devices.factory() +@devices_idd.factory() def idd_phase() -> UndulatorPhaseAxes: return UndulatorPhaseAxes( prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:", @@ -106,7 +69,7 @@ def idd_phase() -> UndulatorPhaseAxes: ) -@devices.factory() +@devices_idd.factory() def idd_jaw_phase() -> UndulatorJawPhase: return UndulatorJawPhase( prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:", @@ -114,7 +77,7 @@ def idd_jaw_phase() -> UndulatorJawPhase: ) -@devices.factory() +@devices_idd.factory() def idd( idd_gap: UndulatorGap, idd_phase: UndulatorPhaseAxes, @@ -124,7 +87,7 @@ def idd( return I10Apple2(id_gap=idd_gap, id_phase=idd_phase, id_jaw_phase=idd_jaw_phase) -@devices.factory() +@devices_idd.factory() def idd_controller(idd: I10Apple2) -> I10Apple2Controller: """I10 downstream insertion device controller.""" source = Source(column="Source", value="idd") @@ -145,24 +108,24 @@ def idd_controller(idd: I10Apple2) -> I10Apple2Controller: ) -@devices.factory() +@devices_idd.factory() def idd_energy(idd_controller: I10Apple2Controller) -> InsertionDeviceEnergy: return InsertionDeviceEnergy(id_controller=idd_controller) -@devices.factory() +@devices_idd.factory() def idd_polarisation( idd_controller: I10Apple2Controller, ) -> InsertionDevicePolarisation: return InsertionDevicePolarisation(id_controller=idd_controller) -@devices.factory() +@devices_idd.factory() def idd_laa(idd_controller: I10Apple2Controller) -> LinearArbitraryAngle: return LinearArbitraryAngle(id_controller=idd_controller) -@devices.factory() +@devices_idd.factory() def energy_dd( idd_energy: InsertionDeviceEnergy, pgm: PlaneGratingMonochromator ) -> BeamEnergy: @@ -170,12 +133,12 @@ def energy_dd( return BeamEnergy(id_energy=idd_energy, mono=pgm.energy) -@devices.factory() +@devices_idu.factory() def idu_gap() -> UndulatorGap: return UndulatorGap(prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:") -@devices.factory() +@devices_idu.factory() def idu_phase() -> UndulatorPhaseAxes: return UndulatorPhaseAxes( prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:", @@ -186,7 +149,7 @@ def idu_phase() -> UndulatorPhaseAxes: ) -@devices.factory() +@devices_idu.factory() def idu_jaw_phase() -> UndulatorJawPhase: return UndulatorJawPhase( prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-21:", @@ -194,7 +157,7 @@ def idu_jaw_phase() -> UndulatorJawPhase: ) -@devices.factory() +@devices_idu.factory() def idu( idu_gap: UndulatorGap, idu_phase: UndulatorPhaseAxes, @@ -204,8 +167,8 @@ def idu( return I10Apple2(id_gap=idu_gap, id_phase=idu_phase, id_jaw_phase=idu_jaw_phase) -@devices.factory() -def idu_controller(idd: I10Apple2) -> I10Apple2Controller: +@devices_idu.factory() +def idu_controller(idu: I10Apple2) -> I10Apple2Controller: """I10 upstream insertion device controller.""" source = Source(column="Source", value="idu") idu_gap_energy_motor_lut = ConfigServerEnergyMotorLookup( @@ -219,55 +182,32 @@ def idu_controller(idd: I10Apple2) -> I10Apple2Controller: path=Path(LOOK_UPTABLE_DIR, DEFAULT_PHASE_FILE), ) return I10Apple2Controller( - apple2=idd, + apple2=idu, gap_energy_motor_lut=idu_gap_energy_motor_lut, phase_energy_motor_lut=idu_phase_energy_motor_lut, ) -@devices.factory() +@devices_idu.factory() def idu_energy(idu_controller: I10Apple2Controller) -> InsertionDeviceEnergy: return InsertionDeviceEnergy(id_controller=idu_controller) -@devices.factory() +@devices_idu.factory() def idu_polarisation( idu_controller: I10Apple2Controller, ) -> InsertionDevicePolarisation: return InsertionDevicePolarisation(id_controller=idu_controller) -@devices.factory() +@devices_idu.factory() def idu_laa(idu_controller: I10Apple2Controller) -> LinearArbitraryAngle: return LinearArbitraryAngle(id_controller=idu_controller) -@devices.factory() +@devices_idu.factory() def energy_ud( idu_energy: InsertionDeviceEnergy, pgm: PlaneGratingMonochromator ) -> BeamEnergy: """Beam energy from down energy devices.""" return BeamEnergy(id_energy=idu_energy, mono=pgm.energy) - - -"""Slits""" - - -@devices.factory() -def optics_slits() -> I10SharedSlits: - return I10SharedSlits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-") - - -"""Diagnostics""" - - -@devices.factory() -def optics_diagnostics() -> I10SharedDiagnostic: - return I10SharedDiagnostic( - prefix=f"{PREFIX.beamline_prefix}-DI-", - ) - - -@devices.factory() -def optics_slits_current() -> I10SharedSlitsDrainCurrent: - return I10SharedSlitsDrainCurrent(prefix=f"{PREFIX.beamline_prefix}-") diff --git a/src/dodal/devices/i10/i10_devices_configs/mirrors/__init__.py b/src/dodal/devices/i10/i10_devices_configs/mirrors/__init__.py new file mode 100644 index 0000000000..9dfab9f6cc --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/mirrors/__init__.py @@ -0,0 +1,9 @@ +from .mirror_i import devices_mirror_i +from .mirror_j import devices_mirror_j +from .shared_mirrors import devices_shared_mirror + +__all__ = [ + "devices_mirror_i", + "devices_shared_mirror", + "devices_mirror_j", +] diff --git a/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_i.py b/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_i.py new file mode 100644 index 0000000000..14436d7d19 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_i.py @@ -0,0 +1,18 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + PiezoMirror, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_mirror_i = DeviceManager() + + +@devices_mirror_i.factory() +def focusing_mirror() -> PiezoMirror: + return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCS-01:") diff --git a/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_j.py b/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_j.py new file mode 100644 index 0000000000..9b17496198 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/mirrors/mirror_j.py @@ -0,0 +1,18 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + PiezoMirror, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10-1") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix("i10", "J") +devices_mirror_j = DeviceManager() + + +@devices_mirror_j.factory() +def focusing_mirror() -> PiezoMirror: + return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-FOCA-01:") diff --git a/src/dodal/devices/i10/i10_devices_configs/mirrors/shared_mirrors.py b/src/dodal/devices/i10/i10_devices_configs/mirrors/shared_mirrors.py new file mode 100644 index 0000000000..773bf14bd8 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/mirrors/shared_mirrors.py @@ -0,0 +1,29 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + PiezoMirror, +) +from dodal.devices.synchrotron import Synchrotron +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_shared_mirror = DeviceManager() + + +@devices_shared_mirror.factory() +def synchrotron() -> Synchrotron: + return Synchrotron() + + +@devices_shared_mirror.factory() +def first_mirror() -> PiezoMirror: + return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-COL-01:") + + +@devices_shared_mirror.factory() +def switching_mirror() -> PiezoMirror: + return PiezoMirror(prefix=f"{PREFIX.beamline_prefix}-OP-SWTCH-01:") diff --git a/src/dodal/devices/i10/i10_devices_configs/rasor/__init__.py b/src/dodal/devices/i10/i10_devices_configs/rasor/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/dodal/devices/i10/i10_devices_configs/rasor/controllers.py b/src/dodal/devices/i10/i10_devices_configs/rasor/controllers.py new file mode 100644 index 0000000000..1930782cd5 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/rasor/controllers.py @@ -0,0 +1,20 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.temperture_controller import ( + Lakeshore340, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_rasor_temperature_controller = DeviceManager() + + +@devices_rasor_temperature_controller.factory() +def rasor_temperature_controller() -> Lakeshore340: + return Lakeshore340( + prefix="ME01D-EA-TCTRL-01:", + ) diff --git a/src/dodal/devices/i10/i10_devices_configs/rasor/detectors.py b/src/dodal/devices/i10/i10_devices_configs/rasor/detectors.py new file mode 100644 index 0000000000..3a1f3a13a3 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/rasor/detectors.py @@ -0,0 +1,96 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.current_amplifiers import CurrentAmpDet +from dodal.devices.i10.rasor.rasor_current_amp import RasorFemto, RasorSR570 +from dodal.devices.i10.rasor.rasor_scaler_cards import RasorScalerCard1 +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_femto = DeviceManager() +devices_sr570 = DeviceManager() +devices_scaler_cards = DeviceManager() +devices_sr570_det = DeviceManager() +devices_femto_det = DeviceManager() + + +@devices_femto.factory() +def rasor_femto() -> RasorFemto: + return RasorFemto( + prefix="ME01D-EA-IAMP", + ) + + +@devices_scaler_cards.factory() +def rasor_det_scalers() -> RasorScalerCard1: + return RasorScalerCard1(prefix="ME01D-EA-SCLR-01:SCALER1") + + +@devices_sr570.factory() +def rasor_sr570() -> RasorSR570: + return RasorSR570( + prefix="ME01D-EA-IAMP", + ) + + +@devices_sr570_det.factory() +def rasor_sr570_pa_scaler_det( + rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_sr570.ca1, + counter=rasor_det_scalers.det, + ) + + +@devices_femto_det.factory() +def rasor_femto_pa_scaler_det( + rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_femto.ca1, + counter=rasor_det_scalers.det, + ) + + +@devices_sr570_det.factory() +def rasor_sr570_fluo_scaler_det( + rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_sr570.ca2, + counter=rasor_det_scalers.fluo, + ) + + +@devices_femto_det.factory() +def rasor_femto_fluo_scaler_det( + rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_femto.ca2, + counter=rasor_det_scalers.fluo, + ) + + +@devices_sr570_det.factory() +def rasor_sr570_drain_scaler_det( + rasor_sr570: RasorSR570, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_sr570.ca3, + counter=rasor_det_scalers.drain, + ) + + +@devices_femto_det.factory() +def rasor_femto_drain_scaler_det( + rasor_femto: RasorFemto, rasor_det_scalers: RasorScalerCard1 +) -> CurrentAmpDet: + return CurrentAmpDet( + current_amp=rasor_femto.ca3, + counter=rasor_det_scalers.drain, + ) diff --git a/src/dodal/devices/i10/i10_devices_configs/rasor/stages.py b/src/dodal/devices/i10/i10_devices_configs/rasor/stages.py new file mode 100644 index 0000000000..449e3d3e95 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/rasor/stages.py @@ -0,0 +1,45 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10.rasor.rasor_motors import ( + DetSlits, + Diffractometer, + PaStage, +) +from dodal.devices.motors import XYStage, XYZStage +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_pin_hole = DeviceManager() +devices_det_slits = DeviceManager() +devices_diffractometer = DeviceManager() +devices_pa_stage = DeviceManager() +devices_sample_stage = DeviceManager() + + +@devices_pin_hole.factory() +def pin_hole() -> XYStage: + return XYStage(prefix="ME01D-EA-PINH-01:") + + +@devices_det_slits.factory() +def det_slits() -> DetSlits: + return DetSlits(prefix="ME01D-MO-APTR-0") + + +@devices_diffractometer.factory() +def diffractometer() -> Diffractometer: + return Diffractometer(prefix="ME01D-MO-DIFF-01:") + + +@devices_pa_stage.factory() +def pa_stage() -> PaStage: + return PaStage(prefix="ME01D-MO-POLAN-01:") + + +@devices_sample_stage.factory() +def sample_stage() -> XYZStage: + return XYZStage(prefix="ME01D-MO-CRYO-01:") diff --git a/src/dodal/devices/i10/i10_devices_configs/slits/__init__.py b/src/dodal/devices/i10/i10_devices_configs/slits/__init__.py new file mode 100644 index 0000000000..6c8dcdd794 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/slits/__init__.py @@ -0,0 +1,9 @@ +from .shared_slits import devices_shared_slit +from .slits_i import devices_slit_i +from .slits_j import devices_slit_j + +__all__ = [ + "devices_shared_slit", + "devices_slit_i", + "devices_slit_j", +] diff --git a/src/dodal/devices/i10/i10_devices_configs/slits/shared_slits.py b/src/dodal/devices/i10/i10_devices_configs/slits/shared_slits.py new file mode 100644 index 0000000000..871ed47772 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/slits/shared_slits.py @@ -0,0 +1,19 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + I10SharedSlits, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_shared_slit = DeviceManager() +"""Slits""" + + +@devices_shared_slit.factory() +def optics_slits() -> I10SharedSlits: + return I10SharedSlits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-") diff --git a/src/dodal/devices/i10/i10_devices_configs/slits/slits_i.py b/src/dodal/devices/i10/i10_devices_configs/slits/slits_i.py new file mode 100644 index 0000000000..07dd6b82d8 --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/slits/slits_i.py @@ -0,0 +1,24 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import ( + I10Slits, + I10SlitsDrainCurrent, +) +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix(BL) +devices_slit_i = DeviceManager() + + +@devices_slit_i.factory() +def slits() -> I10Slits: + return I10Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-") + + +@devices_slit_i.factory() +def slits_current() -> I10SlitsDrainCurrent: + return I10SlitsDrainCurrent(prefix=f"{PREFIX.beamline_prefix}-") diff --git a/src/dodal/devices/i10/i10_devices_configs/slits/slits_j.py b/src/dodal/devices/i10/i10_devices_configs/slits/slits_j.py new file mode 100644 index 0000000000..68c674010b --- /dev/null +++ b/src/dodal/devices/i10/i10_devices_configs/slits/slits_j.py @@ -0,0 +1,16 @@ +from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline +from dodal.device_manager import DeviceManager +from dodal.devices.i10 import I10JSlits +from dodal.log import set_beamline as set_log_beamline +from dodal.utils import BeamlinePrefix, get_beamline_name + +BL = get_beamline_name("i10-1") +set_log_beamline(BL) +set_utils_beamline(BL) +PREFIX = BeamlinePrefix("i10", "J") +devices_slit_j = DeviceManager() + + +@devices_slit_j.factory() +def slits() -> I10JSlits: + return I10JSlits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-")