Source code for dodal.beamlines.training_rig

from pathlib import Path

from ophyd_async.epics.adaravis import AravisDetector
from ophyd_async.fastcs.panda import HDFPanda

from dodal.common.beamlines.beamline_utils import (
    device_factory,
    get_path_provider,
    set_path_provider,
)
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.common.beamlines.device_helpers import HDF5_PREFIX
from dodal.common.visit import LocalDirectoryServiceClient, StaticVisitPathProvider
from dodal.devices.training_rig.sample_stage import TrainingRigSampleStage
from dodal.log import set_beamline as set_log_beamline
from dodal.utils import BeamlinePrefix, get_beamline_name

#
# HTSS Training Rig
#
# A mock-beamline design that is employed at Diamond, consisting of a pair of
# simple motors, a GigE camera and a PandA.
# Since there are multiple rigs whose PVs are identical aside from the prefix,
# this module can be used for any rig. It should fill in the prefix automatically
# if the ${BEAMLINE} environment variable is correctly set, else defaulting
# to p46, which is known to be in good working order.
#

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

set_path_provider(
    StaticVisitPathProvider(
        BL,
        Path("/data"),
        client=LocalDirectoryServiceClient(),
    )
)


[docs] @device_factory() def sample_stage() -> TrainingRigSampleStage: return TrainingRigSampleStage(f"{PREFIX.beamline_prefix}-MO-MAP-01:STAGE:")
[docs] @device_factory() def det() -> AravisDetector: return AravisDetector( f"{PREFIX.beamline_prefix}-EA-DET-01:", path_provider=get_path_provider(), drv_suffix="DET:", hdf_suffix=HDF5_PREFIX, )
@device_factory() def panda() -> HDFPanda: return HDFPanda( prefix=f"{PREFIX.beamline_prefix}-MO-PANDA-01:", path_provider=get_path_provider(), )