mirror of
https://github.com/bec-project/ophyd_devices.git
synced 2025-05-30 00:20:41 +02:00
Feat/areadetector updates
This commit is contained in:
parent
66cbdc2263
commit
d4406373a9
0
ophyd_devices/devices/areadetector/__init__.py
Normal file
0
ophyd_devices/devices/areadetector/__init__.py
Normal file
130
ophyd_devices/devices/areadetector/cam.py
Normal file
130
ophyd_devices/devices/areadetector/cam.py
Normal file
@ -0,0 +1,130 @@
|
||||
"""AreaDetector Devices
|
||||
"""
|
||||
|
||||
# isort: skip_file
|
||||
from ophyd import EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV
|
||||
from ophyd.areadetector import ADComponent as ADCpt
|
||||
from ophyd.areadetector.cam import (
|
||||
CamBase as _CamBase,
|
||||
FileBase as _FileBase,
|
||||
Andor3DetectorCam as _Andor3DetectorCam,
|
||||
PilatusDetectorCam as _PilatusDetectorCam,
|
||||
EigerDetectorCam as _EigerDetectorCam,
|
||||
ProsilicaDetectorCam as _ProsilicaDetectorCam,
|
||||
SimDetectorCam as _SimDetectorCam,
|
||||
URLDetectorCam as _URLDetectorCam,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"CamBase",
|
||||
"FileBase",
|
||||
"Andor3DetectorCam",
|
||||
"EigerDetectorCam",
|
||||
"PilatusDetectorCam",
|
||||
"ProsilicaDetectorCam",
|
||||
"URLDetectorCam",
|
||||
"AravisDetectorCam",
|
||||
"PylonDetectorCam",
|
||||
"VimbaDetectorCam",
|
||||
]
|
||||
|
||||
|
||||
class CamBase(_CamBase):
|
||||
pool_max_buffers = None
|
||||
|
||||
|
||||
class FileBase(_FileBase):
|
||||
file_number_sync = None
|
||||
file_number_write = None
|
||||
|
||||
|
||||
class Andor3DetectorCam(CamBase, _Andor3DetectorCam):
|
||||
gate_mode = ADCpt(EpicsSignalWithRBV, "GateMode")
|
||||
insertion_delay = ADCpt(EpicsSignalWithRBV, "InsertionDelay")
|
||||
mcp_gain = ADCpt(EpicsSignalWithRBV, "MCPGain")
|
||||
mcp_intelligate = ADCpt(EpicsSignalWithRBV, "MCPIntelligate")
|
||||
|
||||
|
||||
class EigerDetectorCam(CamBase, _EigerDetectorCam): ...
|
||||
|
||||
|
||||
class PilatusDetectorCam(CamBase, _PilatusDetectorCam): ...
|
||||
|
||||
|
||||
class ProsilicaDetectorCam(CamBase, _ProsilicaDetectorCam): ...
|
||||
|
||||
|
||||
class SimDetectorCam(CamBase, _SimDetectorCam): ...
|
||||
|
||||
|
||||
class URLDetectorCam(CamBase, _URLDetectorCam): ...
|
||||
|
||||
|
||||
class GenICam(CamBase):
|
||||
frame_rate = ADCpt(EpicsSignalWithRBV, "FrameRate")
|
||||
frame_rate_enable = ADCpt(EpicsSignalWithRBV, "FrameRateEnable")
|
||||
trigger_source = ADCpt(EpicsSignalWithRBV, "TriggerSource")
|
||||
trigger_overlay = ADCpt(EpicsSignalWithRBV, "TriggerOverlay")
|
||||
trigger_software = ADCpt(EpicsSignal, "TriggerSoftware")
|
||||
exposure_mode = ADCpt(EpicsSignalWithRBV, "ExposureMode")
|
||||
exposure_auto = ADCpt(EpicsSignalWithRBV, "ExposureAuto")
|
||||
gain_auto = ADCpt(EpicsSignalWithRBV, "GainAuto")
|
||||
pixel_format = ADCpt(EpicsSignalWithRBV, "PixelFormat")
|
||||
|
||||
|
||||
class AravisDetectorCam(GenICam):
|
||||
ar_convert_pixel_format = ADCpt(EpicsSignalWithRBV, "ARConvertPixelFormat")
|
||||
ar_shift_dir = ADCpt(EpicsSignalWithRBV, "ARShiftDir")
|
||||
ar_shift_bits = ADCpt(EpicsSignalWithRBV, "ARShiftBits")
|
||||
|
||||
|
||||
class VimbaDetectorCam(GenICam):
|
||||
time_stamp_mode = ADCpt(EpicsSignalWithRBV, "TimeStampMode")
|
||||
unique_id_mode = ADCpt(EpicsSignalWithRBV, "UniqueIdMode")
|
||||
convert_pixel_format = ADCpt(EpicsSignalWithRBV, "ConvertPixelFormat")
|
||||
|
||||
|
||||
class PylonDetectorCam(GenICam):
|
||||
time_stamp_mode = ADCpt(EpicsSignalWithRBV, "TimeStampMode")
|
||||
unique_id_mode = ADCpt(EpicsSignalWithRBV, "UniqueIdMode")
|
||||
convert_pixel_format = ADCpt(EpicsSignalWithRBV, "ConvertPixelFormat")
|
||||
convert_bit_align = ADCpt(EpicsSignalWithRBV, "ConvertBitAlign")
|
||||
convert_shift_bits = ADCpt(EpicsSignalWithRBV, "ConvertShiftBits")
|
||||
|
||||
|
||||
class SLSDetectorCam(CamBase, FileBase):
|
||||
detector_type = ADCpt(EpicsSignalRO, "DetectorType_RBV")
|
||||
setting = ADCpt(EpicsSignalWithRBV, "Setting")
|
||||
delay_time = ADCpt(EpicsSignalWithRBV, "DelayTime")
|
||||
threshold_energy = ADCpt(EpicsSignalWithRBV, "ThresholdEnergy")
|
||||
enable_trimbits = ADCpt(EpicsSignalWithRBV, "Trimbits")
|
||||
bit_depth = ADCpt(EpicsSignalWithRBV, "BitDepth")
|
||||
num_gates = ADCpt(EpicsSignalWithRBV, "NumGates")
|
||||
num_cycles = num_images = ADCpt(EpicsSignalWithRBV, "NumCycles")
|
||||
num_frames = ADCpt(EpicsSignalWithRBV, "NumFrames")
|
||||
trigger_mode = timing_mode = ADCpt(EpicsSignalWithRBV, "TimingMode")
|
||||
trigger_software = ADCpt(EpicsSignal, "TriggerSoftware")
|
||||
high_voltage = ADCpt(EpicsSignalWithRBV, "HighVoltage")
|
||||
# Receiver and data callback
|
||||
receiver_mode = ADCpt(EpicsSignalWithRBV, "ReceiverMode")
|
||||
receiver_stream = ADCpt(EpicsSignalWithRBV, "ReceiverStream")
|
||||
enable_data = ADCpt(EpicsSignalWithRBV, "UseDataCallback")
|
||||
missed_packets = ADCpt(EpicsSignalRO, "ReceiverMissedPackets_RBV")
|
||||
# Direct settings access
|
||||
setup_file = ADCpt(EpicsSignal, "SetupFile")
|
||||
load_setup = ADCpt(EpicsSignal, "LoadSetup")
|
||||
command = ADCpt(EpicsSignal, "Command")
|
||||
# Mythen 3
|
||||
counter_mask = ADCpt(EpicsSignalWithRBV, "CounterMask")
|
||||
counter1_threshold = ADCpt(EpicsSignalWithRBV, "Counter1Threshold")
|
||||
counter2_threshold = ADCpt(EpicsSignalWithRBV, "Counter2Threshold")
|
||||
counter3_threshold = ADCpt(EpicsSignalWithRBV, "Counter3Threshold")
|
||||
gate1_delay = ADCpt(EpicsSignalWithRBV, "Gate1Delay")
|
||||
gate1_width = ADCpt(EpicsSignalWithRBV, "Gate1Width")
|
||||
gate2_delay = ADCpt(EpicsSignalWithRBV, "Gate2Delay")
|
||||
gate2_width = ADCpt(EpicsSignalWithRBV, "Gate2Width")
|
||||
gate3_delay = ADCpt(EpicsSignalWithRBV, "Gate3Delay")
|
||||
gate3_width = ADCpt(EpicsSignalWithRBV, "Gate3Width")
|
||||
# Moench
|
||||
json_frame_mode = ADCpt(EpicsSignalWithRBV, "JsonFrameMode")
|
||||
json_detector_mode = ADCpt(EpicsSignalWithRBV, "JsonDetectorMode")
|
222
ophyd_devices/devices/areadetector/plugins.py
Normal file
222
ophyd_devices/devices/areadetector/plugins.py
Normal file
@ -0,0 +1,222 @@
|
||||
# vi: ts=4 sw=4
|
||||
"""AreaDetector up-to-date plugins.
|
||||
|
||||
.. _areaDetector: http://cars.uchicago.edu/software/epics/areaDetector.html
|
||||
"""
|
||||
# This module contains:
|
||||
# - Classes like `StatsPlugin_V{X}{Y}` that are design to be counterparts to
|
||||
# AreaDetector verion X.Y.
|
||||
#
|
||||
# isort: skip_file
|
||||
|
||||
from ophyd import Component as Cpt, Device, EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV
|
||||
|
||||
# fmt: off
|
||||
from ophyd.areadetector.plugins import (
|
||||
PluginBase, PluginBase_V34,
|
||||
FilePlugin, FilePlugin_V34,
|
||||
AttributePlugin, AttributePlugin_V34,
|
||||
AttrPlotPlugin, AttrPlotPlugin_V34,
|
||||
CircularBuffPlugin, CircularBuffPlugin_V34,
|
||||
CodecPlugin, CodecPlugin_V34,
|
||||
ColorConvPlugin, ColorConvPlugin_V34,
|
||||
FFTPlugin, FFTPlugin_V34,
|
||||
HDF5Plugin, HDF5Plugin_V34,
|
||||
ImagePlugin, ImagePlugin_V34,
|
||||
JPEGPlugin, JPEGPlugin_V34,
|
||||
MagickPlugin, MagickPlugin_V34,
|
||||
NetCDFPlugin, NetCDFPlugin_V34,
|
||||
NexusPlugin, NexusPlugin_V34,
|
||||
OverlayPlugin, OverlayPlugin_V34,
|
||||
PosPlugin, PosPluginPlugin_V34,
|
||||
PvaPlugin, PvaPlugin_V34,
|
||||
ProcessPlugin, ProcessPlugin_V34,
|
||||
ROIPlugin, ROIPlugin_V34,
|
||||
ROIStatPlugin, ROIStatPlugin_V34,
|
||||
ROIStatNPlugin, ROIStatNPlugin_V25,
|
||||
ScatterPlugin, ScatterPlugin_V34,
|
||||
StatsPlugin, StatsPlugin_V34,
|
||||
TIFFPlugin, TIFFPlugin_V34,
|
||||
TimeSeriesPlugin, TimeSeriesPlugin_V34,
|
||||
TransformPlugin, TransformPlugin_V34,
|
||||
)
|
||||
|
||||
class PluginBase_V35(PluginBase_V34, version=(3, 5), version_of=PluginBase):
|
||||
codec = Cpt(EpicsSignalRO, "Codec_RBV", string=True)
|
||||
compressed_size = Cpt(EpicsSignalRO, "CompressedSize_RBV")
|
||||
|
||||
def read_configuration(self):
|
||||
ret = Device.read_configuration(self)
|
||||
source_plugin = self.source_plugin
|
||||
if source_plugin:
|
||||
ret.update(source_plugin.read_configuration())
|
||||
|
||||
return ret
|
||||
|
||||
def describe_configuration(self):
|
||||
ret = Device.describe_configuration(self)
|
||||
|
||||
source_plugin = self.source_plugin
|
||||
if source_plugin:
|
||||
ret.update(source_plugin.describe_configuration())
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
class FilePlugin_V35(
|
||||
PluginBase_V35, FilePlugin_V34, version=(3, 5), version_of=FilePlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class ColorConvPlugin_V35(
|
||||
PluginBase_V35, ColorConvPlugin_V34, version=(3, 5), version_of=ColorConvPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class HDF5Plugin_V35(
|
||||
FilePlugin_V35, HDF5Plugin_V34, version=(3, 5), version_of=HDF5Plugin
|
||||
):
|
||||
flush_now = Cpt(
|
||||
EpicsSignal,
|
||||
"FlushNow",
|
||||
string=True,
|
||||
doc="0=Done 1=Flush")
|
||||
|
||||
|
||||
class ImagePlugin_V35(
|
||||
PluginBase_V35, ImagePlugin_V34, version=(3, 5), version_of=ImagePlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class JPEGPlugin_V35(
|
||||
FilePlugin_V35, JPEGPlugin_V34, version=(3, 5), version_of=JPEGPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class MagickPlugin_V35(
|
||||
FilePlugin_V35, MagickPlugin_V34, version=(3, 5), version_of=MagickPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class NetCDFPlugin_V35(
|
||||
FilePlugin_V35, NetCDFPlugin_V34, version=(3, 5), version_of=NetCDFPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class NexusPlugin_V35(
|
||||
FilePlugin_V35, NexusPlugin_V34, version=(3, 5), version_of=NexusPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class OverlayPlugin_V35(
|
||||
PluginBase_V35, OverlayPlugin_V34, version=(3, 5), version_of=OverlayPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class ProcessPlugin_V35(
|
||||
PluginBase_V35, ProcessPlugin_V34, version=(3, 5), version_of=ProcessPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class ROIPlugin_V35(
|
||||
PluginBase_V35, ROIPlugin_V34, version=(3, 5), version_of=ROIPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class ROIStatPlugin_V35(
|
||||
PluginBase_V35, ROIStatPlugin_V34, version=(3, 5), version_of=ROIStatPlugin
|
||||
):
|
||||
...
|
||||
|
||||
class ROIStatNPlugin_V35(ROIStatNPlugin_V25, version=(3, 5), version_of=ROIStatNPlugin):
|
||||
...
|
||||
|
||||
class StatsPlugin_V35(
|
||||
PluginBase_V35, StatsPlugin_V34, version=(3, 5), version_of=StatsPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class TIFFPlugin_V35(
|
||||
FilePlugin_V35, TIFFPlugin_V34, version=(3, 5), version_of=TIFFPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class TransformPlugin_V35(
|
||||
PluginBase_V35, TransformPlugin_V34, version=(3, 5), version_of=TransformPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class PvaPlugin_V35(
|
||||
PluginBase_V35, PvaPlugin_V34, version=(3, 5), version_of=PvaPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class FFTPlugin_V35(
|
||||
PluginBase_V35, FFTPlugin_V34, version=(3, 5), version_of=FFTPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class ScatterPlugin_V35(
|
||||
PluginBase_V35, ScatterPlugin_V34, version=(3, 5), version_of=ScatterPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class PosPluginPlugin_V35(
|
||||
PluginBase_V35, PosPluginPlugin_V34, version=(3, 5), version_of=PosPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class CircularBuffPlugin_V35(
|
||||
PluginBase_V35,
|
||||
CircularBuffPlugin_V34,
|
||||
version=(3, 5),
|
||||
version_of=CircularBuffPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class AttrPlotPlugin_V35(
|
||||
PluginBase_V35, AttrPlotPlugin_V34, version=(3, 5), version_of=AttrPlotPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class TimeSeriesPlugin_V35(
|
||||
PluginBase_V35, TimeSeriesPlugin_V34, version=(3, 5), version_of=TimeSeriesPlugin
|
||||
):
|
||||
...
|
||||
|
||||
|
||||
class CodecPlugin_V35(
|
||||
PluginBase_V35, CodecPlugin_V34, version=(3, 5), version_of=CodecPlugin
|
||||
):
|
||||
blosc_shuffle = Cpt(
|
||||
EpicsSignalWithRBV, "BloscShuffle", string=True, doc="0=None 1=Byte 2=Bit"
|
||||
)
|
||||
|
||||
|
||||
class AttributePlugin_V35(
|
||||
PluginBase_V35, AttributePlugin_V34, version=(3, 5), version_of=AttributePlugin
|
||||
):
|
||||
ts_acquiring = None
|
||||
ts_control = None
|
||||
ts_current_point = None
|
||||
ts_num_points = None
|
||||
ts_read = None
|
@ -1,45 +0,0 @@
|
||||
from ophyd import ADComponent as ADCpt
|
||||
from ophyd import CamBase, DetectorBase, EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV
|
||||
from ophyd.areadetector.plugins import FileBase
|
||||
|
||||
|
||||
class SLSDetectorCam(CamBase, FileBase):
|
||||
detector_type = ADCpt(EpicsSignalRO, "DetectorType_RBV")
|
||||
setting = ADCpt(EpicsSignalWithRBV, "Setting")
|
||||
delay_time = ADCpt(EpicsSignalWithRBV, "DelayTime")
|
||||
threshold_energy = ADCpt(EpicsSignalWithRBV, "ThresholdEnergy")
|
||||
enable_trimbits = ADCpt(EpicsSignalWithRBV, "Trimbits")
|
||||
bit_depth = ADCpt(EpicsSignalWithRBV, "BitDepth")
|
||||
num_gates = ADCpt(EpicsSignalWithRBV, "NumGates")
|
||||
num_cycles = ADCpt(EpicsSignalWithRBV, "NumCycles")
|
||||
num_frames = ADCpt(EpicsSignalWithRBV, "NumFrames")
|
||||
timing_mode = ADCpt(EpicsSignalWithRBV, "TimingMode")
|
||||
trigger_software = ADCpt(EpicsSignal, "TriggerSoftware")
|
||||
high_voltage = ADCpt(EpicsSignalWithRBV, "HighVoltage")
|
||||
# Receiver and data callback
|
||||
receiver_mode = ADCpt(EpicsSignalWithRBV, "ReceiverMode")
|
||||
receiver_stream = ADCpt(EpicsSignalWithRBV, "ReceiverStream")
|
||||
enable_data = ADCpt(EpicsSignalWithRBV, "UseDataCallback")
|
||||
missed_packets = ADCpt(EpicsSignalRO, "ReceiverMissedPackets_RBV")
|
||||
# Direct settings access
|
||||
setup_file = ADCpt(EpicsSignal, "SetupFile")
|
||||
load_setup = ADCpt(EpicsSignal, "LoadSetup")
|
||||
command = ADCpt(EpicsSignal, "Command")
|
||||
# Mythen 3
|
||||
counter_mask = ADCpt(EpicsSignalWithRBV, "CounterMask")
|
||||
counter1_threshold = ADCpt(EpicsSignalWithRBV, "Counter1Threshold")
|
||||
counter2_threshold = ADCpt(EpicsSignalWithRBV, "Counter2Threshold")
|
||||
counter3_threshold = ADCpt(EpicsSignalWithRBV, "Counter3Threshold")
|
||||
gate1_delay = ADCpt(EpicsSignalWithRBV, "Gate1Delay")
|
||||
gate1_width = ADCpt(EpicsSignalWithRBV, "Gate1Width")
|
||||
gate2_delay = ADCpt(EpicsSignalWithRBV, "Gate2Delay")
|
||||
gate2_width = ADCpt(EpicsSignalWithRBV, "Gate2Width")
|
||||
gate3_delay = ADCpt(EpicsSignalWithRBV, "Gate3Delay")
|
||||
gate3_width = ADCpt(EpicsSignalWithRBV, "Gate3Width")
|
||||
# Moench
|
||||
json_frame_mode = ADCpt(EpicsSignalWithRBV, "JsonFrameMode")
|
||||
json_detector_mode = ADCpt(EpicsSignalWithRBV, "JsonDetectorMode")
|
||||
|
||||
|
||||
class SLSDetector(DetectorBase):
|
||||
cam = ADCpt(SLSDetectorCam, "cam1:")
|
Loading…
x
Reference in New Issue
Block a user