giwlcalibration.h
00001 /* $Id: giwlcalibration.h,v 1.17 2007/03/12 12:53:24 rpalsa Exp $ 00002 * 00003 * This file is part of the GIRAFFE Pipeline 00004 * Copyright (C) 2002-2006 European Southern Observatory 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 2 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00019 */ 00020 00021 /* 00022 * $Author: rpalsa $ 00023 * $Date: 2007/03/12 12:53:24 $ 00024 * $Revision: 1.17 $ 00025 * $Name: giraffe-2_10 $ 00026 */ 00027 00028 #ifndef GIWLCALIBRATION_H 00029 #define GIWLCALIBRATION_H 00030 00031 #include <cxtypes.h> 00032 00033 #include <cpl_macros.h> 00034 #include <cpl_parameterlist.h> 00035 00036 #include <gitable.h> 00037 #include <girange.h> 00038 #include <gilinedata.h> 00039 #include <gilocalization.h> 00040 #include <giextraction.h> 00041 #include <giwlsolution.h> 00042 00043 00044 #ifdef __cplusplus 00045 extern "C" { 00046 #endif 00047 00048 00057 struct GiWCalConfig { 00058 00063 cxint line_nwidths; 00064 00069 cxint *line_widths; 00070 00077 cxdouble line_separation; 00078 00084 cxdouble line_fluxratio; 00085 00091 cxdouble line_brightness; 00092 00098 cxint line_count; 00099 00104 GiRange *line_wlrange; 00105 00106 00114 cxchar *line_model; 00115 00122 cxchar *line_residuals; 00123 00129 cxdouble line_threshold; 00130 00135 cxdouble line_offset; 00136 00142 cxint line_niter; 00143 00149 cxint line_ntest; 00150 00156 cxdouble line_dchisq; 00157 00163 cxdouble line_rwidthratio; 00164 00170 cxdouble line_widthexponent; 00171 00176 cxdouble line_saturation; 00177 00182 cxint16 slit_position; 00183 00188 cxdouble slit_dx; 00189 00194 cxdouble slit_dy; 00195 00200 cxdouble slit_phi; 00201 00209 cxchar *opt_model; 00210 00215 cxint opt_direction; 00216 00222 cxbool opt_solution; 00223 00229 cxbool opt_subslits; 00230 00235 cxint16 opt_flags; 00236 00242 cxint opt_niter; 00243 00249 cxint opt_ntest; 00250 00256 cxdouble opt_dchisq; 00257 00263 cxdouble pxw_cliplevel; 00264 00270 cxint pxw_clipniter; 00271 00277 cxdouble pxw_clipmfrac; 00278 00283 cxint pxw_xorder; 00284 00289 cxint pxw_yorder; 00290 00296 cxdouble xws_cliplevel; 00297 00303 cxint xws_clipniter; 00304 00310 cxdouble xws_clipmfrac; 00311 00316 cxint xws_xorder; 00317 00322 cxint xws_yorder; 00323 00324 }; 00325 00326 typedef struct GiWCalConfig GiWCalConfig; 00327 00328 00329 struct GiWCalData { 00330 GiTable *coeffs; 00331 GiTable *lines; 00332 GiLineData *linedata; 00333 }; 00334 00335 typedef struct GiWCalData GiWCalData; 00336 00337 00338 GiWCalData *giraffe_wcaldata_new(void); 00339 void giraffe_wcaldata_delete(GiWCalData *self); 00340 00341 00342 cxint giraffe_calibrate_wavelength(GiWCalData *result, 00343 GiExtraction *extraction, 00344 GiLocalization *localization, 00345 GiTable *fibers, GiTable *slitgeometry, 00346 GiTable *grating, GiTable *lines, 00347 GiTable *initial, GiWCalConfig *config); 00348 00349 GiWCalConfig *giraffe_wlcalibration_config_create(cpl_parameterlist *); 00350 void giraffe_wlcalibration_config_destroy(GiWCalConfig *); 00351 void giraffe_wlcalibration_config_add(cpl_parameterlist *); 00352 00353 00354 #ifdef __cplusplus 00355 } 00356 #endif 00357 00358 #endif /* GIWLCALIBRATION_H */