id3c.devices.laser_optics#

Laser optics bundle (us / ds axes) with IN/OUT state.

The us and ds axes are upstream and downstream positioners of the laser optics. At nominal positions they are either fully IN (in the beam path) or fully OUT (retracted).

This device declares its two axes as InterlockedEpicsMotor. The actual interlock callable (against sample_stage.omega) is wired late, in id3c.startup.

Configuration Components (plain ophyd.Signal, kind="config"):

  • in_position – nominal IN location (mm), applied to both axes

  • out_position – nominal OUT location (mm), applied to both axes

  • tolerance – +/- window (mm) for IN/OUT comparison

  • settle_time – post-move delay (s) in move_in/move_out

Derived Components (ophyd.signal.AttributeSignal, kind="omitted"):

  • out_status – mirrors is_out

Derived signals are subscribable, which is what the mid-motion interlock watcher on sample_stage.omega uses. Note however that AttributeSignal itself does not emit on EPICS updates; the watcher should subscribe to the underlying us.user_readback and ds.user_readback signals (which it does, by wiring in startup.py). out_status is exposed for manual .get() queries and for any code that just wants the boolean.

Attributes#

Classes#

LaserOptics

Retractable laser optics with IN/OUT state and motion plans.

Module Contents#

id3c.devices.laser_optics.logger[source]#
class id3c.devices.laser_optics.LaserOptics(prefix='', *, name, kind=None, read_attrs=None, configuration_attrs=None, parent=None, child_name_separator='_', connection_timeout=DEFAULT_CONNECTION_TIMEOUT, **kwargs)[source]#

Bases: ophyd.MotorBundle

Retractable laser optics with IN/OUT state and motion plans.

us[source]#
ds[source]#
in_position[source]#
out_position[source]#
tolerance[source]#
settle_time[source]#
out_status[source]#
property is_out: bool[source]#

True iff both axes are within tolerance of out_position.

move_out()[source]#

Move both axes to out_position and verify.

Such as:

yield from laser_optics.move_out()