Source code for dodal.beamlines.i07

from functools import cache

from daq_config_server import ConfigClient

from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.common.beamlines.beamline_utils import set_config_client
from dodal.device_manager import DeviceManager
from dodal.devices.beamlines.i07.dcm import DCM
from dodal.devices.beamlines.i07.id import InsertionDevice
from dodal.devices.undulator import UndulatorOrder
from dodal.log import set_beamline as set_log_beamline
from dodal.utils import BeamlinePrefix, get_beamline_name

BL = get_beamline_name("i07")
set_log_beamline(BL)
set_utils_beamline(BL)
PREFIX = BeamlinePrefix(BL)

devices = DeviceManager()


[docs] @devices.fixture @cache def config_client() -> ConfigClient: client = ConfigClient() set_config_client(client) return client
@devices.factory() def dcm() -> DCM: """Instantiate DCM using two PV bases.""" return DCM( f"{PREFIX.beamline_prefix}-MO-DCM-01:", f"{PREFIX.beamline_prefix}-DI-DCM-01:" ) @devices.factory() def harmonic() -> UndulatorOrder: return UndulatorOrder() @devices.factory() def id(harmonic: UndulatorOrder, config_client: ConfigClient) -> InsertionDevice: """Get the i07 undulator device, instantiate it if it hasn't already been. If this is called when already instantiated it will return the existing object. """ return InsertionDevice( f"{PREFIX.insertion_prefix}-MO-SERVC-01:", harmonic, config_client, id_gap_lookup_table_path="/dls_sw/i07/software/gda/config/lookupTables/IIDCalibrationTable.txt", )