Source code for htss.devices
import epics
from bluesky.protocols import Status
from dodal.devices.areadetector import AdAravisDetector
from ophyd import Component, Device, EpicsMotor, EpicsSignalWithRBV, MotorBundle
from .names import pv_prefix
class SampleStage(MotorBundle):
x: EpicsMotor = Component(EpicsMotor, "X")
theta: EpicsMotor = Component(EpicsMotor, "A")
class Backlight(Device):
on: EpicsSignalWithRBV = Component(EpicsSignalWithRBV, "State")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.on.put_complete = True
def set(self, value) -> Status:
# Shortcut so that bps.abs_set(beam.on, True) is the same
# as bps.abs_set(beam, True)
return self.on.set(value)
[docs]
def sample(name: str = "sample_stage") -> SampleStage:
"""
Create sample stage Ophyd device
Args:
name: Name for this device for reference in events.
Defaults to "sample_stage".
Returns:
SampleStage: A new Ophyd Device
"""
return SampleStage(name=name, prefix=f"{pv_prefix()}-MO-MAP-01:STAGE:")
[docs]
def det(name: str = "det") -> AdAravisDetector:
"""
Create detector stage Ophyd device
Args:
name: Name for this device for reference in events.
Defaults to "det".
Returns:
SampleStage: A new Ophyd Device
"""
det = AdAravisDetector(name=name, prefix=f"{pv_prefix()}-EA-DET-01:")
det.read_attrs += ["cam"]
det.cam.read_attrs += ["acquire_time", "acquire_period"]
det.hdf.reg_root = "/exports/mybeamline/data"
det.hdf.write_path_template = "%Y"
return det
def beam(name: str = "beam") -> Backlight:
"""
Create an object to represent the beam
Args:
name: Name for this device for reference in events.
Defaults to "beam".
Backlight:
SampleStage: A new Ophyd Device
"""
return Backlight(name=name, prefix=f"{pv_prefix()}-EA-BEAM-01:")
def suppress_epics_warnings() -> None:
def handle_messages(text):
...
epics.ca.replace_printf_handler(handle_messages)