mirror of
https://github.com/bec-project/ophyd_devices.git
synced 2025-06-01 01: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