id4_common.devices.crl_device ============================= .. py:module:: id4_common.devices.crl_device .. autoapi-nested-parse:: CRL. Module Contents --------------- .. py:data:: logger .. py:data:: DEFAULT_MOTORS_IOC :value: '4idgSoft:' .. py:data:: EPICS_ENERGY_SLEEP :value: 0.15 .. py:class:: PyCRLSingleLens Bases: :py:obj:`ophyd.PVPositioner` Single CRL lens stack positioner. .. py:attribute:: readback .. py:attribute:: setpoint .. py:attribute:: done .. py:attribute:: done_value :value: 1 .. py:attribute:: num_lenses .. py:attribute:: radius .. py:attribute:: location .. py:attribute:: material .. py:attribute:: thickness_error .. py:attribute:: in_limit .. py:method:: set(new_position, *, timeout: float = None, moved_cb=None, wait: bool = False) Set lens position, returning immediately if already there. .. py:class:: PyCRLSignal Bases: :py:obj:`ophyd.EpicsSignal` EpicsSignal with a value sub-component and EGU readback. .. py:attribute:: value .. py:attribute:: egu .. py:class:: BeamsizeSignal Bases: :py:obj:`ophyd.Device` Beamsize handle in microns. The underlying ``focalSize`` setpoint and ``fSize_actual`` readback PVs are in meters and do not fully converge, so this device writes to the setpoint (microns -> meters) and reports the readback (meters -> microns) without enforcing a match: ``mov crl.beamsize 10`` writes 10 um to the setpoint and returns immediately. The raw meter-valued PVs remain available as ``crl.beamsize.setpoint`` and ``crl.beamsize.readback``. .. py:attribute:: setpoint .. py:attribute:: readback .. py:method:: set(value, **kwargs) Move the setpoint to ``value`` (microns); finish immediately. .. py:method:: get(**kwargs) Return the readback in microns. .. py:property:: position Readback in microns. .. py:method:: read() Report the readback as a single microns-valued field. .. py:method:: describe() Describe the microns-valued field reported by ``read()``. .. py:property:: hints Hint the microns-valued field for plotting. .. py:class:: PyCRL(*args, **kwargs) Bases: :py:obj:`ophyd.Device` PyCRL compound refractive lens controller. .. py:attribute:: energy_mono .. py:attribute:: energy_local .. py:attribute:: energy_select .. py:attribute:: slit_hor_size .. py:attribute:: slit_hor_pv .. py:attribute:: slit_vert_size .. py:attribute:: slit_vert_pv .. py:attribute:: beamsize .. py:attribute:: focal_power_index .. py:attribute:: focal_sizes .. py:attribute:: minimize_button .. py:attribute:: system_done .. py:attribute:: dq .. py:attribute:: q .. py:attribute:: z_offset .. py:attribute:: z_offset_pv .. py:attribute:: z_from_source .. py:attribute:: sample_offset .. py:attribute:: sample_offset_pv .. py:attribute:: sample .. py:attribute:: select_station .. py:attribute:: offset_g .. py:attribute:: offset_h .. py:attribute:: binary .. py:attribute:: ind_control .. py:attribute:: readbacks .. py:attribute:: preview_index .. py:attribute:: focal_size_preview .. py:attribute:: inter_lens_delay .. py:attribute:: verbose_console .. py:attribute:: thickness_error_flag .. py:attribute:: beam_mode .. py:attribute:: lens1 .. py:attribute:: lens2 .. py:attribute:: lens3 .. py:attribute:: lens4 .. py:attribute:: lens5 .. py:attribute:: lens6 .. py:attribute:: lens7 .. py:attribute:: lens8 .. py:method:: set(value, **kwargs) Set the system state. .. py:class:: EnergySignal Bases: :py:obj:`ophyd.Signal` Signal that moves the crl to a new energy. .. py:method:: put(*args, **kwargs) :abstractmethod: Raise NotImplementedError — use set() instead. .. py:method:: set(value, **kwargs) Move crl to the specified energy. .. py:class:: ZMotor Bases: :py:obj:`ophyd.EpicsMotor` EpicsMotor that optionally tracks X/Y when Z moves. .. py:method:: set(new_position, **kwargs) Move Z and optionally track X/Y. .. py:method:: stop(*, success=False) Stop Z and optionally X/Y. .. py:function:: make_crl_class(motors_ioc=DEFAULT_MOTORS_IOC) Return a CRLClass with lens motors bound to motors_ioc. :param motors_ioc: IOC prefix for the crl stage motors, e.g. ``"4idgSoft:"``. :type motors_ioc: str .. py:data:: CRLClass