Struct FineAcqState#

Struct Documentation#

struct FineAcqState#

Persistent state for the fine-acquisition per-frame state machine.

which - which camera to use (“L” or “R”) aimpoint - desired star location on the chip, FITS 1-based pixels. This is the pixel analogue of CF’s —goal-x / —goal-y. The star is driven toward this pixel, not toward an ra/dec. bg_region - background estimation ROI, 1-based inclusive. Matches the —bg-x1/x2/y1/y2 defaults in slicecamd.cfg. dra_samp - accumulated dRA*cos(dec) samples in degrees ddec_samp - accumulated dDEC samples in degrees max_samples - samples to gather before evaluating a move goal_arcsec - convergence threshold; loop stops when median offset magnitude falls below this value gain - fraction of the median offset commanded each cycle (0..1) settle_count - configured frames to discard after each commanded move settle_frames - runtime countdown; decremented to zero before resuming

Public Functions

inline void reset()#
inline bool is_valid() const noexcept#

Public Members

std::string which#
Point aimpoint = {NAN, NAN}#

1-based pixel aim point; NAN until configured

Rect bg_region#

background ROI (1-based)

std::vector<double> dra_samp#

dRA*cos(dec) samples, degrees

std::vector<double> ddec_samp#

dDEC samples, degrees

int max_samples = 10#

samples before evaluating a move

int min_samples = 3#

minimum samples before scatter-gated early exit

double prec_arcsec = 0.35#

MAD scatter threshold per axis for early exit (arcsec)

double goal_arcsec = 0.4#

convergence threshold, arcsec

double gain = 1.0#

gain applied when offset <= gain_threshold_arcsec

double gain_large = 1.0#

gain applied when offset > gain_threshold_arcsec

double gain_threshold_arcsec = 2.0#

offset above which gain_large is used

int settle_frames = 0#

countdown of frames to discard while telescope settles

int settle_count = 2#

configured: frames to discard after each move

double settle_sec = 3.0#

time-based settle (sec) after each move; 0 disables (needed when autoexpose shortens frames so the frame-count settle is too brief in wall-clock)

int consecutive_centroid_failures = 0#

counts consecutive centroid failures

double exptime_min = 0.1#

clamp: minimum auto-adjusted exposure (sec)

double exptime_max = 15.0#

clamp: maximum auto-adjusted exposure (sec)

double saturation = NAN#

raw-peak saturation ceiling; NAN disables the guard

double counts_faint = NAN#

below this (top-10%-mean) raise toward counts_faint_goal

double counts_faint_goal = NAN#

faint-mode brightness goal

double counts_bright = NAN#

above this lower toward counts_bright_goal

double counts_bright_goal = NAN#

bright-mode brightness goal

double min_snr = NAN#

peak SNR at/above which faint raises are vetoed; NAN disables

int autoexpose_window = 2#

frames per pre-acquisition auto-exposure decision

std::vector<double> top10_samp#

per-frame top-10%-mean brightness samples, parallel to dra_samp

std::vector<double> snr_samp#

per-frame peak-SNR samples, parallel to top10_samp