00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef XSH_DATA_DISPERSOL_H
00027 #define XSH_DATA_DISPERSOL_H
00028
00029 #include <cpl.h>
00030 #include <xsh_data_instrument.h>
00031 #include <xsh_data_pre.h>
00032
00033 #define XSH_DISPERSOL_TABLE_NBCOL 4
00034 #define XSH_DISPERSOL_TABLE_COLNAME_AXIS "AXIS"
00035 #define XSH_DISPERSOL_TABLE_COLNAME_ORDER "ORDER"
00036 #define XSH_DISPERSOL_TABLE_COLNAME_DEGX "DEGX"
00037 #define XSH_DISPERSOL_TABLE_COLNAME_DEGY "DEGY"
00038 #define XSH_DISPERSOL_AXIS_SLIT "SLIT"
00039 #define XSH_DISPERSOL_AXIS_LAMBDA "LAMBDA"
00040 typedef struct{
00041 int absorder;
00042 cpl_polynomial *lambda_poly;
00043 cpl_polynomial *slit_poly;
00044 }xsh_dispersol;
00045
00046
00047 typedef struct{
00048 int size;
00049 int degx;
00050 int degy;
00051 int binx;
00052 int biny;
00053 xsh_dispersol *list;
00054 cpl_propertylist *header;
00055 }xsh_dispersol_list;
00056
00057
00058 xsh_dispersol_list*
00059 xsh_dispersol_list_new( int size, int deg_x, int deg_y,
00060 xsh_instrument *instr);
00061
00062 xsh_dispersol_list*
00063 xsh_dispersol_list_load( cpl_frame *frame, xsh_instrument *instr);
00064
00065 void
00066 xsh_dispersol_list_add( xsh_dispersol_list *list,
00067 int idx,
00068 int absorder,
00069 cpl_polynomial *lambda_poly,
00070 cpl_polynomial *slit_poly);
00071
00072 cpl_frame*
00073 xsh_dispersol_list_to_wavemap( xsh_dispersol_list *list,
00074 cpl_frame *order_frame,
00075 xsh_pre *pre,
00076 xsh_instrument *instr,
00077 const char* tag);
00078
00079 cpl_frame*
00080 xsh_dispersol_list_to_slitmap( xsh_dispersol_list *list,
00081 cpl_frame *order_frame,
00082 xsh_pre *pre,
00083 xsh_instrument *instr,
00084 const char* tag);
00085
00086 double xsh_dispersol_list_eval( xsh_dispersol_list *list,
00087 cpl_polynomial *poly, cpl_vector *pos);
00088
00089 void
00090 xsh_dispersol_list_free( xsh_dispersol_list **list);
00091
00092 cpl_frame* xsh_dispersol_list_save( xsh_dispersol_list *list,const char* tag);
00093
00094 #endif