move dxp.py temporarilty to local dir to avoid git error messages
This commit is contained in:
@ -47,7 +47,7 @@ PH_Dummy:
|
|||||||
#
|
#
|
||||||
############################
|
############################
|
||||||
|
|
||||||
ScanX:
|
MA1_ScanX:
|
||||||
readoutPriority: baseline
|
readoutPriority: baseline
|
||||||
description: 'Vertical sample position ES-MA1.ScanX'
|
description: 'Vertical sample position ES-MA1.ScanX'
|
||||||
deviceClass: ophyd.EpicsMotor
|
deviceClass: ophyd.EpicsMotor
|
||||||
@ -58,10 +58,10 @@ ScanX:
|
|||||||
- phoenix_devices.yaml
|
- phoenix_devices.yaml
|
||||||
- class EpicsMotor
|
- class EpicsMotor
|
||||||
onFailure: retry
|
onFailure: retry
|
||||||
enabled: true
|
enabled: false
|
||||||
readOnly: false
|
readOnly: false
|
||||||
|
|
||||||
ScanY:
|
MA1_ScanY:
|
||||||
readoutPriority: baseline
|
readoutPriority: baseline
|
||||||
description: 'Horizontal sample position ES-MA1.ScanY'
|
description: 'Horizontal sample position ES-MA1.ScanY'
|
||||||
deviceClass: ophyd.EpicsMotor
|
deviceClass: ophyd.EpicsMotor
|
||||||
@ -72,15 +72,163 @@ ScanY:
|
|||||||
- phoenix_devices.yaml
|
- phoenix_devices.yaml
|
||||||
- class EpicsMotor
|
- class EpicsMotor
|
||||||
onFailure: retry
|
onFailure: retry
|
||||||
enabled: true
|
enabled: false
|
||||||
readOnly: false
|
readOnly: false
|
||||||
softwareTrigger: false
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
MA1_ROT:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'Horizontal sample position ES-MA1.ROT'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:ROT'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.ROT
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
MA1_TRZ1:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'position ES-MA1.ROT'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:TRZ1'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.TRZ1
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MA1_TRX1:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'position ES-MA1.TRX1'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:TRX1'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.TRX1
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# DIODES from ES1 ADC
|
# DIODES from ES1 ADC
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
SAI_01_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI01
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_01:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_02_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI02
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_02:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_03_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI03
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_03:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_04_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI04
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_04:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_05_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI05
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_05:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_06_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI06
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_06:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
SAI_07_MEAN:
|
SAI_07_MEAN:
|
||||||
readoutPriority: monitored
|
readoutPriority: monitored
|
||||||
description: DIODE SAI07
|
description: DIODE SAI07
|
||||||
@ -116,104 +264,19 @@ SAI_08_MEAN:
|
|||||||
#
|
#
|
||||||
# END OF STANDARD CONFIG
|
# END OF STANDARD CONFIG
|
||||||
#
|
#
|
||||||
#
|
|
||||||
# Configuration XMAP
|
MA1_TRZ1:
|
||||||
#
|
readoutPriority: baseline
|
||||||
xmap:
|
description: 'Horizontal sample position ES-MA1.ROT'
|
||||||
description: XMAP detector x-ray fluoresence
|
deviceClass: ophyd.EpicsMotor
|
||||||
deviceClass: phoenix_bec.devices.phoenix_xmap.XMAPPhoenix
|
|
||||||
deviceConfig:
|
deviceConfig:
|
||||||
prefix: 'X07MB-XMAP:'
|
prefix: 'X07MB-ES-MA1:TRZ1'
|
||||||
deviceTags:
|
deviceTags:
|
||||||
- phoenix
|
- ES-MA1.TRZ1
|
||||||
- xmap
|
- phoenix_devices.yaml
|
||||||
- phoenix_bec/device_configs/phoenix_xmap.yaml
|
- class EpicsMotor
|
||||||
- class XMAPPhoenix
|
onFailure: retry
|
||||||
- file phoenix_xmap
|
enabled: false
|
||||||
onFailure: buffer
|
readOnly: false
|
||||||
enabled: true
|
|
||||||
readoutPriority: async
|
|
||||||
softwareTrigger: false
|
|
||||||
|
|
||||||
#
|
|
||||||
# Configuration XMAP
|
|
||||||
#
|
|
||||||
xmap:
|
|
||||||
description: XMAP detector x-ray fluoresence
|
|
||||||
deviceClass: phoenix_bec.devices.phoenix_xmap.XMAPPhoenix
|
|
||||||
deviceConfig:
|
|
||||||
prefix: 'X07MB-XMAP:'
|
|
||||||
deviceTags:
|
|
||||||
- phoenix
|
|
||||||
- xmap
|
|
||||||
- phoenix_bec/device_configs/phoenix_xmap.yaml
|
|
||||||
- class XMAPPhoenix
|
|
||||||
- file phoenix_xmap
|
|
||||||
onFailure: buffer
|
|
||||||
enabled: true
|
|
||||||
readoutPriority: async
|
|
||||||
softwareTrigger: false
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# falcon without hdf5
|
|
||||||
#
|
|
||||||
falcon:
|
|
||||||
description: Falcon detector x-ray fluoresence with hdf5 plugin from device class phoenix_bec.devices. falcon_phoenix.FalconPhoenix
|
|
||||||
deviceClass: phoenix_bec.devices.phoenix_falcon.FalconPhoenix
|
|
||||||
deviceConfig:
|
|
||||||
prefix: 'X07MB-SITORO:'
|
|
||||||
deviceTags:
|
|
||||||
- phoenix
|
|
||||||
- falcon
|
|
||||||
- with hdf5
|
|
||||||
- phoenix_falcon.yaml
|
|
||||||
- class FalconPhoenix
|
|
||||||
- file:phoenix_falcon.py
|
|
||||||
onFailure: buffer
|
|
||||||
enabled: true
|
|
||||||
readoutPriority: async
|
|
||||||
softwareTrigger: false
|
|
||||||
#
|
|
||||||
# END FALCON with HDF5
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# falcon without hdf5
|
|
||||||
#
|
|
||||||
falcon:
|
|
||||||
description: Falcon detector x-ray fluoresence with hdf5 plugin from device class phoenix_bec.devices. falcon_phoenix.FalconPhoenix
|
|
||||||
deviceClass: phoenix_bec.devices.phoenix_falcon.FalconPhoenix
|
|
||||||
deviceConfig:
|
|
||||||
prefix: 'X07MB-SITORO:'
|
|
||||||
deviceTags:
|
|
||||||
- phoenix
|
|
||||||
- falcon
|
|
||||||
- with hdf5
|
|
||||||
- phoenix_falcon.yaml
|
|
||||||
- class FalconPhoenix
|
|
||||||
- file:phoenix_falcon.py
|
|
||||||
onFailure: buffer
|
|
||||||
enabled: true
|
|
||||||
readoutPriority: async
|
|
||||||
softwareTrigger: false
|
|
||||||
#
|
|
||||||
# END FALCON with HDF5
|
|
||||||
##
|
|
||||||
# Configuration XMAP
|
|
||||||
#
|
|
||||||
xmap:
|
|
||||||
description: XMAP detector x-ray fluoresence
|
|
||||||
deviceClass: phoenix_bec.devices.phoenix_xmap.XMAPPhoenix
|
|
||||||
deviceConfig:
|
|
||||||
prefix: 'X07MB-XMAP:'
|
|
||||||
deviceTags:
|
|
||||||
- phoenix
|
|
||||||
- xmap
|
|
||||||
- phoenix_bec/device_configs/phoenix_xmap.yaml
|
|
||||||
- class XMAPPhoenix
|
|
||||||
- file phoenix_xmap
|
|
||||||
onFailure: buffer
|
|
||||||
enabled: true
|
|
||||||
readoutPriority: async
|
|
||||||
softwareTrigger: false
|
softwareTrigger: false
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
PH_TTL:
|
PH_TTL:
|
||||||
description: PHOENIX TTL trigger
|
description: PHOENIX TTL TRIGGER
|
||||||
deviceClass: phoenix_bec.devices.phoenix_trigger.PhoenixTrigger
|
deviceClass: phoenix_bec.devices.phoenix_trigger.PhoenixTrigger
|
||||||
deviceConfig:
|
deviceConfig:
|
||||||
prefix: 'X07MB-OP2:'
|
prefix: 'X07MB-OP2:'
|
||||||
@ -47,7 +47,7 @@ PH_Dummy:
|
|||||||
#
|
#
|
||||||
############################
|
############################
|
||||||
|
|
||||||
ScanX:
|
MA1_ScanX:
|
||||||
readoutPriority: baseline
|
readoutPriority: baseline
|
||||||
description: 'Vertical sample position ES-MA1.ScanX'
|
description: 'Vertical sample position ES-MA1.ScanX'
|
||||||
deviceClass: ophyd.EpicsMotor
|
deviceClass: ophyd.EpicsMotor
|
||||||
@ -58,10 +58,10 @@ ScanX:
|
|||||||
- phoenix_devices.yaml
|
- phoenix_devices.yaml
|
||||||
- class EpicsMotor
|
- class EpicsMotor
|
||||||
onFailure: retry
|
onFailure: retry
|
||||||
enabled: true
|
enabled: false
|
||||||
readOnly: false
|
readOnly: false
|
||||||
|
|
||||||
ScanY:
|
MA1_ScanY:
|
||||||
readoutPriority: baseline
|
readoutPriority: baseline
|
||||||
description: 'Horizontal sample position ES-MA1.ScanY'
|
description: 'Horizontal sample position ES-MA1.ScanY'
|
||||||
deviceClass: ophyd.EpicsMotor
|
deviceClass: ophyd.EpicsMotor
|
||||||
@ -72,15 +72,163 @@ ScanY:
|
|||||||
- phoenix_devices.yaml
|
- phoenix_devices.yaml
|
||||||
- class EpicsMotor
|
- class EpicsMotor
|
||||||
onFailure: retry
|
onFailure: retry
|
||||||
enabled: true
|
enabled: false
|
||||||
readOnly: false
|
readOnly: false
|
||||||
softwareTrigger: false
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
MA1_ROT:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'Horizontal sample position ES-MA1.ROT'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:ROT'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.ROT
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
MA1_TRZ1:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'position ES-MA1.ROT'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:TRZ1'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.TRZ1
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MA1_TRX1:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'position ES-MA1.TRX1'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:TRX1'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.TRX1
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# DIODES from ES1 ADC
|
# DIODES from ES1 ADC
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
SAI_01_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI01
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_01:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_02_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI02
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_02:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_03_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI03
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_03:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_04_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI04
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_04:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_05_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI05
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_05:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
SAI_06_MEAN:
|
||||||
|
readoutPriority: monitored
|
||||||
|
description: DIODE SAI06
|
||||||
|
deviceClass: ophyd.EpicsSignalRO
|
||||||
|
deviceConfig:
|
||||||
|
auto_monitor: true
|
||||||
|
read_pv: 'X07MB-OP2-SAI_06:MEAN'
|
||||||
|
deviceTags:
|
||||||
|
- PHOENIX
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsSignalRO
|
||||||
|
onFailure: buffer
|
||||||
|
enabled: true
|
||||||
|
readOnly: true
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
SAI_07_MEAN:
|
SAI_07_MEAN:
|
||||||
readoutPriority: monitored
|
readoutPriority: monitored
|
||||||
description: DIODE SAI07
|
description: DIODE SAI07
|
||||||
@ -116,3 +264,19 @@ SAI_08_MEAN:
|
|||||||
#
|
#
|
||||||
# END OF STANDARD CONFIG
|
# END OF STANDARD CONFIG
|
||||||
#
|
#
|
||||||
|
|
||||||
|
MA1_TRZ1:
|
||||||
|
readoutPriority: baseline
|
||||||
|
description: 'Horizontal sample position ES-MA1.ROT'
|
||||||
|
deviceClass: ophyd.EpicsMotor
|
||||||
|
deviceConfig:
|
||||||
|
prefix: 'X07MB-ES-MA1:TRZ1'
|
||||||
|
deviceTags:
|
||||||
|
- ES-MA1.TRZ1
|
||||||
|
- phoenix_devices.yaml
|
||||||
|
- class EpicsMotor
|
||||||
|
onFailure: retry
|
||||||
|
enabled: false
|
||||||
|
readOnly: false
|
||||||
|
softwareTrigger: false
|
||||||
|
|
||||||
|
165
phoenix_bec/devices/dxp_loc.py
Normal file
165
phoenix_bec/devices/dxp_loc.py
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
"""
|
||||||
|
Base classes for XIA xMAP and FalconX dxp system.
|
||||||
|
Falcon interfaces with the dxpSITORO epics driver, https://github.com/epics-modules/dxpSITORO.
|
||||||
|
xMAP interfaces with the dxp epics driver, https://github.com/epics-modules/dxp.
|
||||||
|
|
||||||
|
An example usage for a 4-element FalconX system. ::
|
||||||
|
|
||||||
|
from ophyd import Component as Cpt
|
||||||
|
from ophyd_devices.devices.dxp import Falcon, EpicsMCARecord, EpicsDXPFalcon
|
||||||
|
from ophyd_devices.devices.areadetector.plugins import HDF5Plugin_V35 as HDF5Plugin
|
||||||
|
|
||||||
|
class FalconX4(Falcon):
|
||||||
|
# DXP parameters
|
||||||
|
dxp1 = Cpt(EpicsDXPFalcon, "dxp1:")
|
||||||
|
dxp2 = Cpt(EpicsDXPFalcon, "dxp2:")
|
||||||
|
dxp3 = Cpt(EpicsDXPFalcon, "dxp3:")
|
||||||
|
dxp4 = Cpt(EpicsDXPFalcon, "dxp4:")
|
||||||
|
|
||||||
|
# MCA record with spectrum data
|
||||||
|
mca1 = Cpt(EpicsMCARecord, "mca1")
|
||||||
|
mca2 = Cpt(EpicsMCARecord, "mca2")
|
||||||
|
mca3 = Cpt(EpicsMCARecord, "mca3")
|
||||||
|
mca4 = Cpt(EpicsMCARecord, "mca4")
|
||||||
|
|
||||||
|
# optionally with a HDF5 writer plugin
|
||||||
|
hdf = Cpt(HDF5Plugin, "HDF1:")
|
||||||
|
|
||||||
|
falcon = FalconX4("X07MB-SITORO:", name="falcon")
|
||||||
|
falcon.collect_mode.put(0) # 0: MCA spectra, 1: MCA mapping
|
||||||
|
falcon.preset_mode.put("Real time")
|
||||||
|
falcon.preset_real_time.put(1)
|
||||||
|
status = falcon.erase_start.set(1)
|
||||||
|
status.wait()
|
||||||
|
falcon.mca1.spectrum.get()
|
||||||
|
|
||||||
|
"""
|
||||||
|
from ophyd import Component as Cpt
|
||||||
|
from ophyd import Kind, EpicsSignal, EpicsSignalRO, Device
|
||||||
|
from ophyd.mca import EpicsMCARecord as _EpicsMCARecord, EpicsDXPBaseSystem, EpicsDXPMultiElementSystem, EpicsDXPMapping
|
||||||
|
from ophyd.areadetector import EpicsSignalWithRBV
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'EpicsMCARecord',
|
||||||
|
'EpicsDXPFalcon',
|
||||||
|
'Falcon',
|
||||||
|
'xMAP'
|
||||||
|
)
|
||||||
|
|
||||||
|
class EpicsMCARecord(_EpicsMCARecord):
|
||||||
|
"""EpicsMCARecord with addtional fields"""
|
||||||
|
calo = Cpt(EpicsSignal, ".CALO")
|
||||||
|
cals = Cpt(EpicsSignal, ".CALS")
|
||||||
|
calq = Cpt(EpicsSignal, ".CALQ")
|
||||||
|
tth = Cpt(EpicsSignal, ".TTH")
|
||||||
|
|
||||||
|
class EpicsDXPFalcon(Device):
|
||||||
|
"""All high-level DXP parameters for each channel"""
|
||||||
|
|
||||||
|
# Detection
|
||||||
|
detection_filter = Cpt(EpicsSignalWithRBV, "DetectionFilter")
|
||||||
|
detection_threshold = Cpt(EpicsSignalWithRBV, "DetectionThreshold")
|
||||||
|
min_pulse_pair_separation = Cpt(EpicsSignalWithRBV, "MinPulsePairSeparation")
|
||||||
|
|
||||||
|
# Pre-amp and energe range
|
||||||
|
detector_polarity = Cpt(EpicsSignalWithRBV, "DetectorPolarity")
|
||||||
|
decay_time = Cpt(EpicsSignalWithRBV, "DecayTime")
|
||||||
|
risetime_optimization = Cpt(EpicsSignalWithRBV, "RisetimeOptimization")
|
||||||
|
scale_factor = Cpt(EpicsSignalWithRBV, "ScaleFactor")
|
||||||
|
|
||||||
|
# Presets
|
||||||
|
preset_events = Cpt(EpicsSignalWithRBV, "PresetEvents")
|
||||||
|
preset_mode = Cpt(EpicsSignalWithRBV, "PresetMode", string=True)
|
||||||
|
preset_triggers = Cpt(EpicsSignalWithRBV, "PresetTriggers")
|
||||||
|
preset_real_time = Cpt(EpicsSignalWithRBV, "PresetReal")
|
||||||
|
|
||||||
|
# Couting statistics
|
||||||
|
elapsed_live_time = Cpt(EpicsSignalRO, "ElapsedLiveTime", lazy=True)
|
||||||
|
elapsed_real_time = Cpt(EpicsSignalRO, "ElapsedRealTime", lazy=True)
|
||||||
|
elapsed_trigger_live = Cpt(EpicsSignalRO, "ElapsedTriggerLiveTime", lazy=True)
|
||||||
|
triggers = Cpt(EpicsSignalRO, "Triggers", lazy=True)
|
||||||
|
events = Cpt(EpicsSignalRO, "Events", lazy=True)
|
||||||
|
input_count_rate = Cpt(EpicsSignalRO, "InputCountRate", lazy=True)
|
||||||
|
output_count_rate = Cpt(EpicsSignalRO, "OutputCountRate", lazy=True)
|
||||||
|
|
||||||
|
# Mapping
|
||||||
|
current_pixel = Cpt(EpicsSignal, "CurrentPixel")
|
||||||
|
|
||||||
|
# Diagnostic trace
|
||||||
|
trace_data = Cpt(EpicsSignal, "TraceData")
|
||||||
|
|
||||||
|
class EpicsDXPFalconMultiElementSystem(EpicsDXPBaseSystem):
|
||||||
|
# Preset control
|
||||||
|
preset_events = Cpt(EpicsSignal, "PresetEvents")
|
||||||
|
preset_real_time = Cpt(EpicsSignal, "PresetReal")
|
||||||
|
preset_mode = Cpt(EpicsSignal, "PresetMode", string=True)
|
||||||
|
preset_triggers = Cpt(EpicsSignal, "PresetTriggers")
|
||||||
|
|
||||||
|
# Acquisition control
|
||||||
|
erase_all = Cpt(EpicsSignal, "EraseAll")
|
||||||
|
erase_start = Cpt(EpicsSignal, "EraseStart", put_complete=True, trigger_value=1)
|
||||||
|
start_all = Cpt(EpicsSignal, "StartAll", put_complete=True, trigger_value=1)
|
||||||
|
stop_all = Cpt(EpicsSignal, "StopAll")
|
||||||
|
|
||||||
|
# Status
|
||||||
|
set_acquire_busy = Cpt(EpicsSignal, "SetAcquireBusy")
|
||||||
|
acquire_busy = Cpt(EpicsSignal, "AcquireBusy")
|
||||||
|
status_all = Cpt(EpicsSignal, "StatusAll")
|
||||||
|
status_all_once = Cpt(EpicsSignal, "StatusAllOnce")
|
||||||
|
acquiring = Cpt(EpicsSignal, "Acquiring")
|
||||||
|
|
||||||
|
# Reading
|
||||||
|
read_all = Cpt(EpicsSignal, "ReadAll", kind=Kind.omitted)
|
||||||
|
read_all_once = Cpt(EpicsSignal, "ReadAllOnce", kind=Kind.omitted)
|
||||||
|
|
||||||
|
# As a debugging note, if snl_connected is not '1', your IOC is
|
||||||
|
# misconfigured:
|
||||||
|
snl_connected = Cpt(EpicsSignal, "SNL_Connected")
|
||||||
|
|
||||||
|
# High-level parameters
|
||||||
|
copy_decay_time = Cpt(EpicsSignal, "CopyDecayTime", kind=Kind.omitted)
|
||||||
|
copy_detection_filter = Cpt(EpicsSignal, "CopyDetectionFilter", kind=Kind.omitted)
|
||||||
|
copy_detection_threshold = Cpt(EpicsSignal, "CopyDetectionThreshold", kind=Kind.omitted)
|
||||||
|
copy_detector_polarity = Cpt(EpicsSignal, "CopyDetectorPolarity", kind=Kind.omitted)
|
||||||
|
copy_min_pulse_pair_separation = Cpt(EpicsSignal, "CopyMinPulsePairSeparation", kind=Kind.omitted)
|
||||||
|
copt_risetime_optimization = Cpt(EpicsSignal, "CopyRisetimeOptimization", kind=Kind.omitted)
|
||||||
|
copy_scale_factor = Cpt(EpicsSignal, "CopyScaleFactor", kind=Kind.omitted)
|
||||||
|
read_traces = Cpt(EpicsSignal, "ReadTraces", kind=Kind.omitted)
|
||||||
|
|
||||||
|
# ROI and SCA
|
||||||
|
copy_roic_hannel = Cpt(EpicsSignal, "CopyROIChannel", kind=Kind.omitted)
|
||||||
|
copy_roie_nergy = Cpt(EpicsSignal, "CopyROIEnergy", kind=Kind.omitted)
|
||||||
|
copy_roi_sca = Cpt(EpicsSignal, "CopyROI_SCA", kind=Kind.omitted)
|
||||||
|
|
||||||
|
# do_* executes the process:
|
||||||
|
do_read_all = Cpt(EpicsSignal, "DoReadAll", kind=Kind.omitted)
|
||||||
|
do_status_all = Cpt(EpicsSignal, "DoStatusAll", kind=Kind.omitted)
|
||||||
|
do_read_traces = Cpt(EpicsSignal, "DoReadTraces", kind=Kind.omitted)
|
||||||
|
|
||||||
|
# Statistics
|
||||||
|
dead_time = Cpt(EpicsSignal, "DeadTime")
|
||||||
|
idead_time = Cpt(EpicsSignal, "IDeadTime")
|
||||||
|
max_elapsed_live = Cpt(EpicsSignal, "MaxElapsedLive")
|
||||||
|
max_elapsed_real = Cpt(EpicsSignal, "MaxElapsedReal")
|
||||||
|
max_elapsed_trigger_live = Cpt(EpicsSignal, "MaxElapsedTriggerLive")
|
||||||
|
max_triggers = Cpt(EpicsSignal, "MaxTriggers")
|
||||||
|
max_events = Cpt(EpicsSignal, "MaxEvents")
|
||||||
|
max_input_count_rate = Cpt(EpicsSignal, "MaxInputCountRate")
|
||||||
|
max_output_count_rate = Cpt(EpicsSignal, "MaxOutputCountRate")
|
||||||
|
|
||||||
|
|
||||||
|
class EpicsDxpFalconMapping(EpicsDXPMapping):
|
||||||
|
auto_apply = None
|
||||||
|
apply = None
|
||||||
|
nd_array_mode = Cpt(EpicsSignalWithRBV, "NDArrayMode")
|
||||||
|
|
||||||
|
|
||||||
|
class Falcon(EpicsDXPFalconMultiElementSystem, EpicsDxpFalconMapping):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
class xMAP(EpicsDXPMultiElementSystem, EpicsDXPMapping):
|
||||||
|
# Override signals from EpicsDXPMultiElementSystem, so calling `set`` method
|
||||||
|
# returns a waitable Status object. Otherwise the Status object is immediately done.
|
||||||
|
erase_start = Cpt(EpicsSignal, "EraseStart", put_complete=True, trigger_value=1)
|
||||||
|
start_all = Cpt(EpicsSignal, "StartAll", put_complete=True, trigger_value=1)
|
@ -57,7 +57,9 @@ from bec_lib.logger import bec_logger
|
|||||||
from ophyd import Component as Cpt
|
from ophyd import Component as Cpt
|
||||||
from ophyd import Device, EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV
|
from ophyd import Device, EpicsSignal, EpicsSignalRO, EpicsSignalWithRBV
|
||||||
|
|
||||||
from ophyd_devices.devices.dxp import Falcon, EpicsMCARecord, EpicsDXPFalcon
|
#from ophyd_devices.devices.dxp import Falcon, EpicsMCARecord, EpicsDXPFalcon
|
||||||
|
from dxp import Falcon, EpicsMCARecord, EpicsDXPFalcon
|
||||||
|
|
||||||
from ophyd_devices.devices.areadetector.plugins import HDF5Plugin_V35 as HDF5Plugin#
|
from ophyd_devices.devices.areadetector.plugins import HDF5Plugin_V35 as HDF5Plugin#
|
||||||
|
|
||||||
from ophyd_devices.interfaces.base_classes.psi_detector_base import (
|
from ophyd_devices.interfaces.base_classes.psi_detector_base import (
|
||||||
@ -170,7 +172,8 @@ class FalconSetup(CustomDetectorMixin):
|
|||||||
# TODO Check if lazy open is needed and wanted!
|
# TODO Check if lazy open is needed and wanted!
|
||||||
self.parent.hdf5.lazy_open.put(1)
|
self.parent.hdf5.lazy_open.put(1)
|
||||||
self.parent.hdf5.temp_suffix.put("")
|
self.parent.hdf5.temp_suffix.put("")
|
||||||
# size of queue for number of spectra allowed in the buffer, if too small at high throughput, data is lost
|
# size of queue for number of spectra allowed in the buffer,
|
||||||
|
# if too small at high throughput, data is lost
|
||||||
self.parent.hdf5.queue_size.put(2000)
|
self.parent.hdf5.queue_size.put(2000)
|
||||||
# Segmentation into Spectra within EPICS, 1 is activate, 0 is deactivate
|
# Segmentation into Spectra within EPICS, 1 is activate, 0 is deactivate
|
||||||
self.parent.nd_array_mode.put(1)
|
self.parent.nd_array_mode.put(1)
|
||||||
|
@ -232,7 +232,6 @@ class PhoenixTrigger(PSIDetectorBase):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
# Test the PhoenixTrigger class
|
# Test the PhoenixTrigger class
|
||||||
|
|
||||||
trigger = PhoenixTrigger(name="trigger", prefix="X07MB-OP2:")
|
trigger = PhoenixTrigger(name="trigger", prefix="X07MB-OP2:")
|
||||||
trigger.wait_for_connection(all_signals=True)
|
trigger.wait_for_connection(all_signals=True)
|
||||||
trigger.read()
|
trigger.read()
|
||||||
|
@ -18,7 +18,9 @@ from ophyd_devices.interfaces.base_classes.psi_detector_base import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from ophyd.mca import EpicsDXP
|
from ophyd.mca import EpicsDXP
|
||||||
from ophyd_devices.devices.dxp import xMAP, EpicsMCARecord
|
#from ophyd_devices.devices.dxp import xMAP, EpicsMCARecord
|
||||||
|
from dxp import xMAP, EpicsMCARecord
|
||||||
|
|
||||||
from ophyd_devices.devices.areadetector.plugins import HDF5Plugin_V35 as HDF5Plugin
|
from ophyd_devices.devices.areadetector.plugins import HDF5Plugin_V35 as HDF5Plugin
|
||||||
|
|
||||||
logger = bec_logger.logger
|
logger = bec_logger.logger
|
||||||
|
Reference in New Issue
Block a user