Source code for ophyd_async.epics.adpilatus._pilatus
from collections.abc import Sequence
from ophyd_async.core import PathProvider
from ophyd_async.core._signal import SignalR
from ophyd_async.epics.adcore._core_detector import AreaDetector
from ophyd_async.epics.adcore._core_io import NDPluginBaseIO
from ophyd_async.epics.adcore._core_writer import ADWriter
from ophyd_async.epics.adcore._hdf_writer import ADHDFWriter
from ._pilatus_controller import PilatusController, PilatusReadoutTime
from ._pilatus_io import PilatusDriverIO
[docs]
class PilatusDetector(AreaDetector[PilatusController]):
"""A Pilatus StandardDetector writing HDF files"""
def __init__(
self,
prefix: str,
path_provider: PathProvider,
readout_time: PilatusReadoutTime = PilatusReadoutTime.PILATUS3,
drv_suffix: str = "cam1:",
writer_cls: type[ADWriter] = ADHDFWriter,
fileio_suffix: str | None = None,
name: str = "",
plugins: dict[str, NDPluginBaseIO] | None = None,
config_sigs: Sequence[SignalR] = (),
):
driver = PilatusDriverIO(prefix + drv_suffix)
controller = PilatusController(driver)
writer = writer_cls.with_io(
prefix,
path_provider,
dataset_source=driver,
fileio_suffix=fileio_suffix,
plugins=plugins,
)
super().__init__(
controller=controller,
writer=writer,
plugins=plugins,
name=name,
config_sigs=config_sigs,
)