27#ifndef XSH_UTILS_TABLE_H
28#define XSH_UTILS_TABLE_H
40#define XSH_TABLE_LOAD( TABLE, NAME) \
41 check_msg( TABLE = cpl_table_load( NAME, 1, 0),\
42 "Can't load %s FITS table", NAME)
44#define XSH_TABLE_FREE( TABLE)\
46 cpl_table_delete ( TABLE);\
51#define XSH_TABLE_GET_ARRAY( TYPE) \
52 void xsh_table_get_array_##TYPE( cpl_table* table, const char* colname, \
53 TYPE* pointer, int nb)\
55 const cpl_array* array = NULL;\
56 int array_size = 0, k=0;\
57 const TYPE* data = NULL;\
59 XSH_ASSURE_NOT_NULL( pointer);\
60 check( array = cpl_table_get_array( table, colname, 0));\
61 check( array_size = cpl_array_get_size( array));\
62 XSH_ASSURE_NOT_ILLEGAL( nb == array_size);\
63 check( data = cpl_array_get_data_##TYPE##_const( array));\
64 for( k=0; k< array_size; k++){\
65 pointer[k] = data[k];\
75 const char *colname, cpl_type coltype,
int i,
void *result);
77 int* pointer,
int nb);
79 float* pointer,
int nb);
81 double* pointer,
int nb);
84 cpl_boolean reverse1);
86 const char *column2, cpl_boolean reverse1,
87 cpl_boolean reverse2);
91 const char *column1,
const char *column2,
const char *column3,
92 cpl_boolean reverse1, cpl_boolean reverse2,cpl_boolean reverse3);
116 const cpl_frame *line_intmon,
129 const double min,
const double max);
static xsh_instrument * instrument
cpl_error_code xsh_wavecal_qclog_intmon(cpl_frame *table_check, const cpl_frame *line_intmon, const double exptime, xsh_instrument *inst)
computes intmon QC log
cpl_error_code xsh_table_merge_clean_and_resid_tabs(cpl_frame *frm_resid, cpl_frame *frm_clean)
cpl_error_code xsh_sort_table_2(cpl_table *t, const char *column1, const char *column2, cpl_boolean reverse1, cpl_boolean reverse2)
Sort a table by two columns.
cpl_error_code xsh_sort_table_1(cpl_table *t, const char *column1, cpl_boolean reverse1)
Sort a table by one column.
double xsh_data_interpolate(double wav, int nrow, double *pw, double *pe)
Interpolate data points.
cpl_table * xsh_table_shift_rv(cpl_table *orig, const char *col_wave, const double offset)
cpl_table * xsh_histogram(const cpl_table *data, const char *cname, const int nbins, const double min, const double max)
cpl_error_code xsh_frame_table_monitor_flux_qc(cpl_frame *frm, const char *colw, const char *colf, const char *prefix, xsh_instrument *instrument)
Computes statistics on spectrum for QC.
double xsh_table_interpolate(cpl_table *tbl, double wav, const char *colx, const char *coly)
Interpolate table columns.
cpl_error_code xsh_get_table_value(const cpl_table *table, const char *colname, cpl_type coltype, int i, void *result)
Read a table value from a fits table.
cpl_error_code xsh_sort_table_3(cpl_table *t, const char *column1, const char *column2, const char *column3, cpl_boolean reverse1, cpl_boolean reverse2, cpl_boolean reverse3)
Sort a table by two columns.
void xsh_table_get_array_double(cpl_table *table, const char *colname, double *pointer, int nb)
void xsh_table_get_array_float(cpl_table *table, const char *colname, float *pointer, int nb)
void xsh_table_get_array_int(cpl_table *table, const char *colname, int *pointer, int nb)