de_twin.column.CorrectorUnit#

class de_twin.column.CorrectorUnit(side, *, seed=0, clock, lock, tuned=True, ht_kv=200.0, drift_rates=None, drift_step_s=1.0, operator=None, beam_check=None, label=None, host='127.0.0.1')[source]#

Bases: object

One corrector (one CEOS-RPC server): probe (STEM, port 7072) or image (TEM, 7071).

Normally built by Corrector; everything is in nm / seconds of the injected clock. Thread-safe through the owner’s lock.

Parameters:
__init__(side, *, seed=0, clock, lock, tuned=True, ht_kv=200.0, drift_rates=None, drift_step_s=1.0, operator=None, beam_check=None, label=None, host='127.0.0.1')[source]#
Parameters:

Methods

__init__(side, *[, seed, tuned, ht_kv, ...])

aberration(name)

getAberration: (x, y, status) from the last measurement (metres / rad).

aberrations_string()

alignment_json()

endpoint()

CorrectorFactory::describe.

info()

CorrectorInfo::toString (getCorrectorInfo).

perturb([kind, scale])

Detune: "ht" (HT change, cold start) or "mode" (probe/function mode).

post_correct(name[, value, target, select, ...])

value / target in nm (rad for WD); None = omitted.

post_fetch_alignment()

post_get_config(name)

post_measure_c1a1()

post_put_alignment(data)

post_readback()

post_reconnect()

post_set_config(name, value)

post_tableau([tab_type, angle_mrad, max_fit])

residual([t])

Ground truth: native + corrector offset + drift at time t (default now).

set_beam_tilt(x, y[, relative, wait_s, sleeper])

CorrectorService::setBeamTilt (radians).

set_residual(name, value_nm)

Test / expert knob: make the residual name exactly value_nm now.

simulate_measurement([kind, tab, ...])

Run the tableau / C1A1 analysis on the current aberrations (no side effects other than the measurement noise stream).

status()

time_to_idle()

total([t])

What a measurement sees: residual + the operator's focus (C1) and stig (A1).

wait([timeout, sleeper])

Wait (on the clock) until the running command finishes.

Attributes

residual(t=None)[source]#

Ground truth: native + corrector offset + drift at time t (default now).

Parameters:

t (float | None)

Return type:

Aberrations

total(t=None)[source]#

What a measurement sees: residual + the operator’s focus (C1) and stig (A1).

Parameters:

t (float | None)

Return type:

Aberrations

set_residual(name, value_nm)[source]#

Test / expert knob: make the residual name exactly value_nm now.

Parameters:
Return type:

None

perturb(kind='mode', scale=1.0)[source]#

Detune: "ht" (HT change, cold start) or "mode" (probe/function mode).

Parameters:
Return type:

None

status()[source]#
Return type:

int

property busy: bool#
time_to_idle()[source]#
Return type:

float

info()[source]#

CorrectorInfo::toString (getCorrectorInfo).

Return type:

str

endpoint()[source]#

CorrectorFactory::describe.

Return type:

str

aberrations_string()[source]#
Return type:

str

aberration(name)[source]#

getAberration: (x, y, status) from the last measurement (metres / rad).

Parameters:

name (str)

Return type:

tuple[float, float, int]

wait(timeout=None, sleeper=None)[source]#

Wait (on the clock) until the running command finishes. Returns the state.

Parameters:
Return type:

int

post_measure_c1a1()[source]#
Return type:

tuple[bool, str]

post_tableau(tab_type='', angle_mrad=0.0, max_fit='')[source]#
Parameters:
Return type:

tuple[bool, str]

simulate_measurement(kind='tableau', tab='Standard', angle_mrad=0.0, max_fit='', t=None)[source]#

Run the tableau / C1A1 analysis on the current aberrations (no side effects other than the measurement noise stream). Returns a result or an error string.

Parameters:
Return type:

MeasurementResult | str

post_correct(name, value=None, target=None, select='', *, beam_tilt_managed=False)[source]#

value / target in nm (rad for WD); None = omitted.

Parameters:
Return type:

tuple[bool, str]

alignment_json()[source]#
Return type:

str

post_fetch_alignment()[source]#
Return type:

tuple[bool, str]

post_put_alignment(data)[source]#
Parameters:

data (str)

Return type:

tuple[bool, str]

post_get_config(name)[source]#
Parameters:

name (str)

Return type:

tuple[bool, str]

post_set_config(name, value)[source]#
Parameters:
Return type:

tuple[bool, str]

post_readback()[source]#
Return type:

tuple[bool, str]

post_reconnect()[source]#
Return type:

tuple[bool, str]

set_beam_tilt(x, y, relative=True, wait_s=0.0, sleeper=None)[source]#

CorrectorService::setBeamTilt (radians). Returns (completed, still_running, why_not). wait_s == 0: posts; still_running True means accepted.

Parameters:
Return type:

tuple[bool, bool, str]