Source code for sophys.common.devices.xspress

from ophyd import Component
from ophyd.areadetector import DetectorBase, SingleTrigger
from ophyd.areadetector.plugins import ROIStatNPlugin_V25
from ophyd.device import create_device_from_components
from ..utils import HDF5PluginWithFileStoreV34
from .cam import Xspress3DetectorCamV33


[docs] class XspressBase(SingleTrigger, DetectorBase): cam = Component(Xspress3DetectorCamV33, "det1:") hdf5 = Component(HDF5PluginWithFileStoreV34, "HDF1:")
def Xspress(prefix: str, rois_per_mca: int = 1, **kwargs): xspressComponents = dict() for mca_num in range(1, 5): for roi_num in range(1, rois_per_mca + 1): xspressComponents.update( { f"mca{mca_num}roi_{roi_num}": Component( ROIStatNPlugin_V25, f"MCA{mca_num}ROI:{roi_num}:" ) } ) xspress = create_device_from_components( name="xspress", base_class=XspressBase, **xspressComponents ) return xspress(prefix=prefix, **kwargs)