ophyd_async.fastcs.jungfrau#

Package Contents#

Classes#

Jungfrau

Ophyd-async implementation of a Jungfrau Detector.

DetectorStatus

All members should exist in the Backend, and there will be no extras.

JungfrauController

Detector logic for arming and disarming the detector.

JungfrauDriverIO

Contains signals for handling IO on the Jungfrau detector.

JungfrauTriggerMode

All members should exist in the Backend, and there will be no extras.

AcquisitionType

All members should exist in the Backend, and there will be no extras.

GainMode

All members should exist in the Backend, and there will be no extras.

PedestalMode

All members should exist in the Backend, and there will be no extras.

Functions#

create_jungfrau_external_triggering_info

Create safe Jungfrau TriggerInfo for external triggering.

create_jungfrau_internal_triggering_info

Create safe Jungfrau TriggerInfo for internal triggering.

create_jungfrau_pedestal_triggering_info

Create safe Jungfrau TriggerInfo for pedestal triggering.

API#

class ophyd_async.fastcs.jungfrau.Jungfrau(prefix: str, path_provider: PathProvider, drv_suffix: str, hdf_suffix: str, odin_nodes: int, name='')[source]#

Bases: ophyd_async.core.StandardDetector[ophyd_async.fastcs.jungfrau._controller.JungfrauController, ophyd_async.epics.odin.OdinWriter]

Ophyd-async implementation of a Jungfrau Detector.

class ophyd_async.fastcs.jungfrau.DetectorStatus[source]#

Bases: ophyd_async.core.StrictEnum

All members should exist in the Backend, and there will be no extras.

IDLE#

‘Idle’

ERROR#

‘Error’

WAITING#

‘Waiting’

RUN_FINISHED#

‘RunFinished’

TRANSMITTING#

‘Transmitting’

RUNNING#

‘Running’

STOPPED#

‘Stopped’

ophyd_async.fastcs.jungfrau.create_jungfrau_external_triggering_info(total_triggers: PositiveInt, exposure_time_s: float) TriggerInfo[source]#

Create safe Jungfrau TriggerInfo for external triggering.

Uses parameters which more closely-align with Jungfrau terminology to create TriggerInfo. This device currently only supports one frame per trigger when being externally triggered, but support for this can be added if needed

Args: total_triggers: Total external triggers expected before ending acquisition. exposure_time_s: How long to expose the detector for each of its frames.

Returns: TriggerInfo

ophyd_async.fastcs.jungfrau.create_jungfrau_internal_triggering_info(number_of_frames: PositiveInt, exposure_time_s: float) TriggerInfo[source]#

Create safe Jungfrau TriggerInfo for internal triggering.

Uses parameters which more closely-align with Jungfrau terminology to create TriggerInfo.

Args: number_of_frames: Total frames taken after starting acquisition. exposure_time_s: How long to expose the detector for each of its frames.

Returns: TriggerInfo

ophyd_async.fastcs.jungfrau.create_jungfrau_pedestal_triggering_info(exposure_time_s: float, pedestal_frames: PositiveInt, pedestal_loops: PositiveInt)[source]#

Create safe Jungfrau TriggerInfo for pedestal triggering.

Uses parameters which more closely-align with Jungfrau terminology to create TriggerInfo.

NOTE: To trigger the jungfrau in pedestal mode, you must first set the jungfrau acquisition_type signal to AcquisitionType.PEDESTAL!

Args: exposure_time_s: How long to expose the detector for each of its frames. pedestal_frames: Number of frames taken once triggering begins pedestal_loops: Number of repeats of the pedestal scan before detector disarms.

Returns: TriggerInfo

class ophyd_async.fastcs.jungfrau.JungfrauController(driver: JungfrauDriverIO)[source]#

Bases: ophyd_async.core.DetectorController

Detector logic for arming and disarming the detector.

get_deadtime(exposure: float | None = None) float[source]#

Get state-independent deadtime.

For a given exposure, what is the safest minimum time between exposures that can be determined without reading signals.

async prepare(trigger_info: TriggerInfo) None[source]#

Do all necessary steps to prepare the detector for triggers.

Parameters:

trigger_info – The sort of triggers to expect.

async arm()[source]#

Arm the detector.

async wait_for_idle()[source]#

Wait on the internal _arm_status and wait for it to get disarmed/idle.

async disarm()[source]#

Disarm the detector, return detector to an idle state.

class ophyd_async.fastcs.jungfrau.JungfrauDriverIO(uri: str, name: str = '')[source]#

Bases: ophyd_async.core.Device

Contains signals for handling IO on the Jungfrau detector.

exposure_time: SignalRW[float]#

None

period_between_frames: SignalRW[float]#

None

delay_after_trigger: SignalRW[float]#

None

frames_per_acq: SignalRW[NonNegativeInt]#

None

pedestal_mode_state: SignalRW[PedestalMode]#

None

pedestal_mode_frames: SignalRW[NonNegativeInt]#

None

pedestal_mode_loops: SignalRW[NonNegativeInt]#

None

gain_mode: SignalRW[GainMode]#

None

acquisition_start: SignalX#

None

acquisition_stop: SignalX#

None

bit_depth: SignalR[int]#

None

trigger_mode: SignalRW[JungfrauTriggerMode]#

None

detector_status: SignalR[DetectorStatus]#

None

class ophyd_async.fastcs.jungfrau.JungfrauTriggerMode[source]#

Bases: ophyd_async.core.StrictEnum

All members should exist in the Backend, and there will be no extras.

INTERNAL#

‘Internal’

EXTERNAL#

‘External’

class ophyd_async.fastcs.jungfrau.AcquisitionType[source]#

Bases: ophyd_async.core.StrictEnum

All members should exist in the Backend, and there will be no extras.

STANDARD#

‘Standard’

PEDESTAL#

‘Pedestal’

class ophyd_async.fastcs.jungfrau.GainMode[source]#

Bases: ophyd_async.core.StrictEnum

All members should exist in the Backend, and there will be no extras.

DYNAMIC#

‘Dynamic’

FORCE_SWITCH_G1#

‘ForceSwitchG1’

FORCE_SWITCH_G2#

‘ForceSwitchG2’

FIX_G1#

‘FixG1’

FIX_G2#

‘FixG2’

FIX_G0#

‘FixG0’

class ophyd_async.fastcs.jungfrau.PedestalMode[source]#

Bases: ophyd_async.core.StrictEnum

All members should exist in the Backend, and there will be no extras.

ON#

‘On’

OFF#

‘Off’