dodal.devices.insertion_device.EpicsPolynomialEnergyMotorLookup#

class dodal.devices.insertion_device.EpicsPolynomialEnergyMotorLookup[source]#

A specialized lookup device that synchronizes polynomial coefficients directly from EPICS PVs.

This device extends the static lookup by introducing Ophyd-async signals (DeviceVectors) to fetch live calibration data from an IOC. It allows physics tables to be updated dynamically without restarting the control system or manually reloading CSV files.

It implements the Triggerable protocol to allow on-demand table regeneration within a Bluesky plan.

Parameters:
  • prefix (str) – The EPICS prefix for the polynomial coefficient PVs.

  • max_value (float) – The maximum valid input value for the lookup.

  • min_value (float) – The minimum valid input value for the lookup.

  • poly_params (dict[Pol, str]) – Mapping of Polarization to the PV suffix (e.g., {Pol.LH: “HZ”}).

  • pv_start (int, optional) – The starting index of the PV coefficient (e.g., 12 for C12). Defaults to 12.

  • pv_end (int, optional) – The ending index of the PV coefficient (e.g., 1 for C1). Defaults to 1.

  • name (str, optional) – Name of the device for logging and Bluesky.

param_dict#

Dictionary of signals used to fetch coefficients for each polarization.

Type:

dict[Pol, DeviceVector]

Methods

connect([mock, timeout, force_reconnect])

trigger()

Triggering this device will update the lookup tables with the current PV values.

update_lookup()

Fetch the latest polynomial coefficients from EPICS, update the lookup table, and handle any errors that occur during the process.

update_lookup_table()

Overrides the base synchronous method to provide a warning.

Attributes

trigger() None[source]#

Triggering this device will update the lookup tables with the current PV values.

Return type:

None

async update_lookup() None[source]#

Fetch the latest polynomial coefficients from EPICS, update the lookup table, and handle any errors that occur during the process.

Return type:

None

update_lookup_table() None[source]#

Overrides the base synchronous method to provide a warning. Since EPICS communication is asynchronous, use ‘await update_lookup()’ instead.

Return type:

None