Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.mrao.cam.ac.uk/projects/OAS/pmwiki/uploads/MROIFringeTrackerSW.DesignDocuments/StepData.txt
Дата изменения: Mon Oct 17 13:19:48 2011
Дата индексирования: Sat Mar 1 04:07:37 2014
Кодировка:

Поисковые слова: п п п п п п п п п р п р п р п р п р п р п
====== StepData ======
Created Monday 20 June 2011

===== Assumptions and Prerequisities =====
The data structures are expressed here in C-style pseudo-code, though they would be implemented using the Generic System Interface (resulting in generated C code which may well differ from that below). The array dimensions are given in row-major order i.e. fastest-varying index at the right.

==== New datatypes required ====
* Double precision complex number, e.g.:
typedef struct
{
double real;
double imag;
} Complex;

* Multidimensional array

==== Configuration data ====
The following are strictly constant (UPPER_CASE_WITH_UNDERSCORES):
#define MAX_DLS 10

The following metadata (lower_case_with_underscores) are derived from the current MROI configuration, and are not expected to change during the night. I've included typical values in some cases:

int num_gd_trials; /**< Number of trial group delays */
int num_bas; /**< Number of baselines measured by FT (up to 9) */
int num_channels = 5; /**< Number of spectral channels used for fringe tracking */
int num_output; /**< Total number of combiner outputs in use */
int num_win = 5; /**< Number of windows (subframes) per camera :TODO: not needed? */
int win_length = 5; /**< Window size parallel to spectral dispersion /pix */
int win_width = 1; /**< Window size perpendicular to spectral dispersion /pix */
String baseline[num_bas]; /**< Baseline role identifiers */
int baseline_modulator[num_bas]; /**< Mapping from baseline to corresponding modulator */
int baseline_dl[num_bas][2]; /**< Mapping from baseline to corresponding two delay lines :TODO: sign convention */
int baseline_num_output[num_bas]; /** Number of outputs in use for each baseline (1 or 2) :TODO: common value for all baselines?*/
int baseline_output[num_bas][2]; /**< Mapping from baseline to combiner output(s) */
int output_baseline[num_output]; /**< Mapping from combiner output to baseline */

One way to expose the baseline_* metadata would be to define a Baseline class.

===== Monitor Data =====

/**
* Pixel data at a modulator position from all cameras.
* The reset level has been subtracted and the data have been averaged over multiple reads.
*/
typedef struct
{
MROITime t[num_output]; /**< Mean timestamp of multiple reads */
unsigned short int pixel[num_output][win_width][win_length]; /**< Average pixel value over multiple reads /ADU */
} FTPixels;

We may also wish to publish copies of the other inputs to the Fringe Engine i.e. modulator positions and delay line positions.


/**
* Outputs from processing pixel data for a complete set of modulator steps A-B-C-D or AC-BD.
* A new instance is generated following each modulator step.
*/
typedef struct
{
MROITime t[num_bas]; /**< Mean time of ABCD fringe measurement */
Complex groupDelaySpectrum[num_bas][num_gd_trials]; /**< GD spectrum from latest coherent integration */
Complex avgGroupDelaySpectrum[num_bas][num_gd_trials]; /**< Running average GD spectrum (i.e. after incoherent integration) */
double estDelay[num_bas]; /**< Delay estimated from centroid of avgGroupDelaySpectrum */
FringeOffset delayCommand[MAX_DLS]; /**< Offsets (with valid flags) sent to DLs - see EBS memo */

/* :TODO: The following are not yet calculated by the FT Simulator: */
bool fringesPresent[num_bas]; /**< Fringes detected? :TODO: publish separately from struct? */
float visibility[num_bas]; /**< Fringe contrast :TODO: or [num_bas][num_channels] ? */
float flux[num_bas][num_channels]; /**< Incoherent flux /ADU */'
float phaseJitter[num_bas]; /**< Variance of fringe phase */
float fringeSNR[num_bas][num_channels]; /**< Signal-to-noise of fringes */
} FTData;