Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/dodal/beamlines/i03.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from functools import cache

from ophyd_async.core import PathProvider, Reference
from ophyd_async.fastcs.eiger import EigerDetector as FastEiger
from ophyd_async.fastcs.eiger import EigerDetector as FastCSEiger
from ophyd_async.fastcs.panda import HDFPanda
from yarl import URL

Expand Down Expand Up @@ -164,8 +164,8 @@ def eiger(eiger: EigerDetector) -> EigerDetector:


@devices.factory()
def fastcs_eiger(path_provider: PathProvider) -> FastEiger:
return FastEiger(
def fastcs_eiger(path_provider: PathProvider) -> FastCSEiger:
return FastCSEiger(
prefix=PREFIX.beamline_prefix,
path_provider=path_provider,
drv_suffix="-EA-EIGER-02:",
Expand Down
18 changes: 16 additions & 2 deletions src/dodal/beamlines/i04.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from ophyd_async.core import Reference
from ophyd_async.fastcs.eiger import EigerDetector as FastCSEiger

from dodal.common.beamlines.beamline_parameters import get_beamline_parameters
from dodal.common.beamlines.beamline_utils import (
device_factory,
device_instantiation,
get_path_provider,
)
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
from dodal.devices.aperturescatterguard import (
Expand Down Expand Up @@ -409,6 +411,18 @@ def beamsize() -> Beamsize:
If this is called when already instantiated in i04, it will return the existing object.
"""
return Beamsize(
transfocator=transfocator(),
aperture_scatterguard=aperture_scatterguard(),
transfocator=transfocator(), aperture_scatterguard=aperture_scatterguard()
)


@device_factory()
def fastcs_eiger() -> FastCSEiger:
"""Get the i04 FastCS Eiger device, instantiate it if it hasn't already been.
If this is called when already instantiated in i04, it will return the existing object.
"""
return FastCSEiger(
prefix=PREFIX.beamline_prefix,
path_provider=get_path_provider(),
drv_suffix="-EA-EIGER-02:",
hdf_suffix="-EA-EIGER-01:OD:",
)
36 changes: 23 additions & 13 deletions src/dodal/plans/configure_arm_trigger_and_disarm_detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,28 @@ def configure_arm_trigger_and_disarm_detector(
eiger: EigerDetector,
detector_params: DetectorParams,
trigger_info: TriggerInfo,
):
yield from configure_and_arm_detector(eiger, detector_params, trigger_info)
start = time.time()
yield from bps.kickoff(eiger, wait=True)
LOGGER.info(f"Kickoff Eiger: {time.time() - start}s")
start = time.time()
yield from bps.trigger(eiger.drv.detector.trigger, wait=True)
LOGGER.info(f"Triggering Eiger: {time.time() - start}s")
start = time.time()
yield from bps.complete(eiger, wait=True)
LOGGER.info(f"Completing Capture: {time.time() - start}s")
start = time.time()
yield from bps.unstage(eiger, wait=True)
LOGGER.info(f"Disarming Eiger: {time.time() - start}s")


def configure_and_arm_detector(
eiger: EigerDetector,
detector_params: DetectorParams,
trigger_info: TriggerInfo,
group: str = "arm_detector",
wait: bool = False,
):
assert detector_params.expected_energy_ev
start = time.time()
Expand All @@ -48,20 +70,8 @@ def configure_arm_trigger_and_disarm_detector(
yield from set_mx_settings_pvs(eiger, detector_params, wait=True)
LOGGER.info(f"Setting MX PVs: {time.time() - start}s")
start = time.time()
yield from bps.prepare(eiger, trigger_info, wait=True)
yield from bps.prepare(eiger, trigger_info, group=group)
LOGGER.info(f"Preparing Eiger: {time.time() - start}s")
start = time.time()
yield from bps.kickoff(eiger, wait=True)
LOGGER.info(f"Kickoff Eiger: {time.time() - start}s")
start = time.time()
yield from bps.trigger(eiger.drv.detector.trigger, wait=True)
LOGGER.info(f"Triggering Eiger: {time.time() - start}s")
start = time.time()
yield from bps.complete(eiger, wait=True)
LOGGER.info(f"Completing Capture: {time.time() - start}s")
start = time.time()
yield from bps.unstage(eiger, wait=True)
LOGGER.info(f"Disarming Eiger: {time.time() - start}s")


def set_cam_pvs(
Expand Down