ophyd_async.epics.pmac#

Package Contents#

Classes#

PmacAxisAssignmentIO

A Device that (direct) moves a PMAC Coordinate System Motor.

PmacCoordIO

A Device that represents a Pmac Coordinate System.

PmacIO

Device that represents a pmac controller.

PmacTrajectoryIO

Device that moves a PMAC Motor record.

PmacTrajectoryFlyableLogic

Minimum logic needed for controlling a StandardFlyable.

PmacScanInfo

API#

class ophyd_async.epics.pmac.PmacAxisAssignmentIO(prefix: str, name: str = '')[source]#

Bases: ophyd_async.core.Device

A Device that (direct) moves a PMAC Coordinate System Motor.

Note that this does not go through a motor record. This mirrors the interface provided by pmac/Db/motor_in_cs.template

class ophyd_async.epics.pmac.PmacCoordIO(prefix: str, name: str = '')[source]#

Bases: ophyd_async.core.Device

A Device that represents a Pmac Coordinate System.

This mirrors the interfaces provided by pmac/Db/pmacCsController.template, and pmac/Db/pmacDirectMotor.template

class ophyd_async.epics.pmac.PmacIO(prefix: str, raw_motors: Sequence[Motor], coord_nums: Sequence[int], name: str = '')[source]#

Bases: ophyd_async.core.Device

Device that represents a pmac controller.

This mirrors the interface provided by pmac/Db/pmacController.template

class ophyd_async.epics.pmac.PmacTrajectoryIO(prefix: str, name: str = '')[source]#

Bases: ophyd_async.core.StandardReadable

Device that moves a PMAC Motor record.

This mirrors the interface provided by pmac/Db/pmacControllerTrajectory.template

class ophyd_async.epics.pmac.PmacTrajectoryFlyableLogic(pmac: PmacIO)[source]#

Bases: ophyd_async.core.FlyableLogic[ophyd_async.epics.pmac._pmac_trajectory.PmacScanInfo, ophyd_async.epics.pmac._pmac_trajectory.PmacFlyCtx]

Minimum logic needed for controlling a StandardFlyable.

Inherit and fill in the hooks for a particular flyable (e.g. a motion or trigger system). This base holds no state; concrete subclasses are typically @dataclasses that hold whatever signals or sub-devices they need as fields.

State that must be carried between stages is threaded through an explicit context object rather than stored on the logic: on_prepare returns it, on_kickoff receives and returns it, and on_complete receives it. StandardFlyable owns that context and enforces the call ordering, so subclasses do not need to guard against being called out of order. A flyer with no cross-stage state uses None for the context (see the PandA trigger logics).

async on_prepare(value: PmacScanInfo) PmacFlyCtx[source]#

Move to the start of the fly scan, set it up, and return its context.

Parameters:

value – the per-scan info for this fly scan.

async on_kickoff(ctx: PmacFlyCtx) PmacFlyCtx[source]#

Start the fly scan.

Parameters:

ctx – the context returned by on_prepare.

Return the (possibly updated) context to be passed to on_complete.

async on_complete(ctx: PmacFlyCtx) None[source]#

Block until the fly scan is done.

Parameters:

ctx – the context returned by on_kickoff.

async stop() None[source]#

Stop/disarm the flyer and wait for everything to be stopped.

Called by on_stage and on_unstage by default; override those instead if stage and unstage need to differ.

async on_stage() None[source]#

Set the flyer up on stage(). Defaults to stop.

class ophyd_async.epics.pmac.PmacScanInfo[source]#
spec: Spec[Motor]#

None

ramp_time: float | None#

None

turnaround_time: float | None#

None