33#include "moo_line_table.h"
71 cpl_table *table = cpl_table_new(0);
73 cpl_table_new_column(table, MOO_LINE_TABLE_NAME, CPL_TYPE_STRING);
74 cpl_table_new_column(table, MOO_LINE_TABLE_WAVE, CPL_TYPE_DOUBLE);
75 cpl_table_new_column(table, MOO_LINE_TABLE_FLUX, CPL_TYPE_DOUBLE);
76 cpl_table_new_column(table, MOO_LINE_TABLE_SPECTRO, CPL_TYPE_INT);
77 cpl_table_new_column(table, MOO_LINE_TABLE_DETECTOR, CPL_TYPE_STRING);
78 cpl_table_new_column(table, MOO_LINE_TABLE_SLITLET, CPL_TYPE_INT);
79 cpl_table_new_column(table, MOO_LINE_TABLE_INDEXEXT, CPL_TYPE_INT);
80 cpl_table_new_column(table, MOO_LINE_TABLE_INDEXRBN, CPL_TYPE_INT);
82 cpl_errorstate prestate = cpl_errorstate_get();
84 cpl_table_new_column(table, MOO_LINE_TABLE_INTENSITY, CPL_TYPE_DOUBLE);
85 cpl_table_new_column(table, MOO_LINE_TABLE_XGAUSS, CPL_TYPE_DOUBLE);
86 cpl_table_new_column(table, MOO_LINE_TABLE_XBARY, CPL_TYPE_DOUBLE);
87 cpl_table_new_column(table, MOO_LINE_TABLE_YLOC, CPL_TYPE_DOUBLE);
88 cpl_table_new_column(table, MOO_LINE_TABLE_AMPLITUDE, CPL_TYPE_DOUBLE);
89 cpl_table_new_column(table, MOO_LINE_TABLE_BACKGROUND, CPL_TYPE_DOUBLE);
90 cpl_table_new_column(table, MOO_LINE_TABLE_FWHM, CPL_TYPE_DOUBLE);
91 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_FLUX, CPL_TYPE_DOUBLE);
92 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_ERR, CPL_TYPE_DOUBLE);
93 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_MSE, CPL_TYPE_DOUBLE);
94 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_CHI2, CPL_TYPE_DOUBLE);
95 cpl_table_new_column(table, MOO_LINE_TABLE_MATCHED, CPL_TYPE_INT);
96 cpl_table_new_column(table, MOO_LINE_TABLE_DISP, CPL_TYPE_DOUBLE);
99 cpl_table_new_column(table, MOO_LINE_TABLE_XGUESS, CPL_TYPE_DOUBLE);
100 cpl_table_new_column(table, MOO_LINE_TABLE_INTENSITY, CPL_TYPE_DOUBLE);
101 cpl_table_new_column(table, MOO_LINE_TABLE_GFITTED, CPL_TYPE_INT);
102 cpl_table_new_column(table, MOO_LINE_TABLE_XGAUSS, CPL_TYPE_DOUBLE);
103 cpl_table_new_column(table, MOO_LINE_TABLE_XBARY, CPL_TYPE_DOUBLE);
104 cpl_table_new_column(table, MOO_LINE_TABLE_XDIFF, CPL_TYPE_DOUBLE);
105 cpl_table_new_column(table, MOO_LINE_TABLE_WAVEDIFF, CPL_TYPE_DOUBLE);
106 cpl_table_new_column(table, MOO_LINE_TABLE_YLOC, CPL_TYPE_DOUBLE);
107 cpl_table_new_column(table, MOO_LINE_TABLE_AMPLITUDE, CPL_TYPE_DOUBLE);
108 cpl_table_new_column(table, MOO_LINE_TABLE_BACKGROUND, CPL_TYPE_DOUBLE);
109 cpl_table_new_column(table, MOO_LINE_TABLE_FWHM, CPL_TYPE_DOUBLE);
110 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_FLUX, CPL_TYPE_DOUBLE);
111 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_ERR, CPL_TYPE_DOUBLE);
112 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_MSE, CPL_TYPE_DOUBLE);
113 cpl_table_new_column(table, MOO_LINE_TABLE_FIT_CHI2, CPL_TYPE_DOUBLE);
114 cpl_table_new_column(table, MOO_LINE_TABLE_FILTERED, CPL_TYPE_INT);
116 cpl_table_new_column(table, MOO_LINE_TABLE_MFITTED, CPL_TYPE_INT);
117 cpl_table_new_column(table, MOO_LINE_TABLE_WAVEFIT, CPL_TYPE_DOUBLE);
118 cpl_table_new_column(table, MOO_LINE_TABLE_RESOLUTION, CPL_TYPE_DOUBLE);
120 if (!cpl_errorstate_is_equal(prestate)) {
121 cpl_table_delete(table);
128moo_slitlet_shift_table_new(
int size)
130 cpl_table *detected_table = cpl_table_new(size);
132 cpl_errorstate prestate = cpl_errorstate_get();
133 cpl_table_new_column(detected_table, MOO_SLITLET_SHIFT_TABLE_SLITLET,
135 cpl_table_new_column(detected_table, MOO_SLITLET_SHIFT_TABLE_WAVE,
137 cpl_table_new_column(detected_table, MOO_SLITLET_SHIFT_TABLE_XDIFF,
140 if (!cpl_errorstate_is_equal(prestate)) {
141 cpl_table_delete(detected_table);
142 detected_table = NULL;
144 return detected_table;
148moo_detected_table_new(
int size,
int isGuess)
150 cpl_table *detected_table = cpl_table_new(size);
152 cpl_errorstate prestate = cpl_errorstate_get();
153 cpl_table_new_column(detected_table, MOO_LINE_TABLE_INDEXEXT, CPL_TYPE_INT);
154 cpl_table_new_column(detected_table, MOO_LINE_TABLE_SLITLET, CPL_TYPE_INT);
157 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_MIN,
159 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_MAX,
161 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_WIN_CEN,
163 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_NGOOD,
165 cpl_table_new_column(detected_table, MOO_LINE_TABLE_INTENSITY,
167 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_BADFIT,
169 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_FLUX,
171 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_ERR,
173 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_MSE,
175 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_CHI2,
177 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_BACKGROUND,
179 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XGAUSS,
181 cpl_table_new_column(detected_table, MOO_LINE_TABLE_AMPLITUDE,
183 cpl_table_new_column(detected_table, MOO_LINE_TABLE_BACKGROUND,
185 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XBARY,
187 cpl_table_new_column(detected_table, MOO_LINE_TABLE_FWHM,
189 cpl_table_new_column(detected_table, MOO_LINE_TABLE_FILTERED,
193 cpl_table_new_column(detected_table, MOO_LINE_TABLE_WAVE,
195 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XGUESS,
197 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XDIFF,
199 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_NOT_IN_RANGE,
201 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_WIN_CEN,
203 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_WIN_MIN,
205 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_WIN_MAX,
207 cpl_table_new_column(detected_table, MOO_LINE_TABLE_INTENSITY,
210 cpl_table_new_column(detected_table, MOO_LINE_TABLE_GFITTED,
212 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XGAUSS,
214 cpl_table_new_column(detected_table, MOO_LINE_TABLE_AMPLITUDE,
216 cpl_table_new_column(detected_table, MOO_LINE_TABLE_BACKGROUND,
218 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_FLUX,
220 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_ERR,
222 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_MSE,
224 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_FIT_CHI2,
226 cpl_table_new_column(detected_table, MOO_LINE_TABLE_XBARY,
228 cpl_table_new_column(detected_table, MOO_LINE_TABLE_FWHM,
230 cpl_table_new_column(detected_table, MOO_LINE_TABLE_FILTERED,
232 cpl_table_new_column(detected_table, MOO_DETECTED_TABLE_WAVETH,
236 if (!cpl_errorstate_is_equal(prestate)) {
237 cpl_table_delete(detected_table);
238 detected_table = NULL;
240 return detected_table;
244moo_table_append(cpl_table *global_line_table, cpl_table *line_table)
246 cpl_ensure_code(global_line_table != NULL, CPL_ERROR_NULL_INPUT);
247 cpl_ensure_code(line_table != NULL, CPL_ERROR_NULL_INPUT);
249 cpl_size nrow = cpl_table_get_nrow(global_line_table);
250 cpl_error_code status =
251 cpl_table_insert(global_line_table, line_table, nrow);
cpl_table * moo_line_table_new(int isGuess)
create a line table