CR2RE Pipeline Reference Manual 1.6.10
cr2res_wave.h
1/*
2 * This file is part of the CR2RES Pipeline
3 * Copyright (C) 2002,2003 European Southern Observatory
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1307 USA
18 */
19
20#ifndef CR2RES_WAVE_H
21#define CR2RES_WAVE_H
22
23/*-----------------------------------------------------------------------------
24 Includes
25 -----------------------------------------------------------------------------*/
26
27#include <cpl.h>
28#include "hdrl.h"
29#include "cr2res_utils.h"
30
31/*-----------------------------------------------------------------------------
32 Define
33 -----------------------------------------------------------------------------*/
34
35#define CR2RES_WAVELENGTH_ERROR_DEFAULT 0.2
36#define CR2RES_WAVELENGTH_MIN_FIT_PIX 20
37
38typedef enum {
39 CR2RES_XCORR,
40 CR2RES_LINE1D,
41 CR2RES_LINE2D,
42 CR2RES_ETALON,
43 CR2RES_UNSPECIFIED
44} cr2res_wavecal_type ;
45
46/*-----------------------------------------------------------------------------
47 Prototypes
48 -----------------------------------------------------------------------------*/
49
51 cpl_table * tw_in,
52 cpl_table * spectra_tab,
53 const cpl_frame * catalog_frame,
54 int reduce_order,
55 int reduce_trace,
56 cr2res_wavecal_type wavecal_type,
57 int degree,
58 int xdegree,
59 double wl_start,
60 double wl_end,
61 double wl_err,
62 double wl_shift,
63 int log_flag,
64 int fallback_input_wavecal_flag,
65 int keep_higher_degrees_flag,
66 int clean_spectrum,
67 int display,
68 double display_wmin,
69 double display_wmax,
70 int zp_order,
71 int grat1_order,
72 cpl_propertylist ** qcs,
73 cpl_table ** lines_diagnostics,
74 cpl_table ** extracted_out,
75 cpl_table ** trace_wave_out) ;
76
77cpl_polynomial * cr2res_wave_1d(
78 cpl_bivector * spectrum,
79 cpl_bivector * spectrum_err,
80 cpl_polynomial * wavesol_init,
81 const cpl_array * wave_error_init,
82 int order,
83 int trace_nb,
84 cr2res_wavecal_type wavecal_type,
85 const char * catalog,
86 int degree,
87 int clean_spectrum,
88 int log_flag,
89 int keep_higher_degrees_flag,
90 int display,
91 double display_wmin,
92 double display_wmax,
93 double * best_xcorr,
94 double * lines_resol_fwhm,
95 double * lines_pos,
96 double * lines_resol,
97 double * lines_intens,
98 cpl_array ** wavelength_error,
99 cpl_table ** lines_diagnostics) ;
100
101cpl_polynomial * cr2res_wave_2d(
102 cpl_bivector ** spectra,
103 cpl_bivector ** spectra_err,
104 cpl_polynomial ** wavesol_init,
105 cpl_array ** wavesol_init_err,
106 int * orders,
107 int * traces_nb,
108 int ninputs,
109 const char * catalog,
110 cpl_size degree_x,
111 cpl_size degree_y,
112 double threshold,
113 int n_iterations,
114 int zp_order,
115 int display,
116 cpl_array ** wavelength_error,
117 cpl_table ** lines_diagnostics) ;
118
119cpl_polynomial * cr2res_wave_xcorr(
120 cpl_bivector * spectrum,
121 cpl_polynomial * wavesol_init,
122 double wl_error,
123 cpl_bivector * lines_list,
124 int degree,
125 int propagate_flag,
126 int cleaning_filter_size,
127 double slit_width,
128 double fwhm,
129 int display,
130 double * best_xcorr,
131 cpl_array ** wavelength_error) ;
132
133cpl_polynomial * cr2res_wave_etalon(
134 cpl_bivector * spectrum,
135 const cpl_bivector * spectrum_err,
136 cpl_polynomial * wavesol_init,
137 int degree,
138 cpl_array ** wavelength_error) ;
139
140cpl_polynomial * cr2res_wave_estimate_compute(
141 double wmin,
142 double wmax) ;
143
144cpl_array * cr2res_wave_get_estimate(
145 const char * filename,
146 int detector,
147 int order) ;
148
149hdrl_image * cr2res_wave_gen_wave_map(
150 const cpl_table * trace_wave) ;
151
152cpl_polynomial * cr2res_wave_polys_1d_to_2d(
153 cpl_polynomial ** poly_1ds,
154 int * orders,
155 int npolys,
156 cpl_size xdegree) ;
157
158cpl_polynomial * cr2res_wave_poly_2d_to_1d(
159 cpl_polynomial * poly_2d,
160 int order) ;
161#ifdef CR2RES_UNUSED
162char * cr2res_wave_method_print(cr2res_wavecal_type wavecal_type) ;
163#endif
164
165int cr2res_wave_fit_single_line(
166 const cpl_vector * spec,
167 const cpl_vector * unc,
168 cpl_size pixel_pos,
169 cpl_size window_size,
170 cpl_size peak_width,
171 int display,
172 cpl_vector ** result);
173
174int cr2res_wave_extract_lines(
175 cpl_bivector * spectrum,
176 cpl_bivector * spectrum_err,
177 cpl_polynomial * wavesol_init,
178 const cpl_array * wave_error_init,
179 cpl_bivector * lines_list,
180 int window_size,
181 double peak_width,
182 int display,
183 cpl_matrix ** px,
184 cpl_vector ** py,
185 cpl_vector ** sigma_py,
186 cpl_vector ** heights,
187 cpl_vector ** fit_error) ;
188
189cpl_vector * cr2res_wave_etalon_measure_fringes(
190 cpl_vector * spectrum) ;
191
192#endif
hdrl_image * cr2res_wave_gen_wave_map(const cpl_table *trace_wave)
Compute the wavelength map from the trace_wave table.
Definition: cr2res_wave.c:1608
cpl_polynomial * cr2res_wave_polys_1d_to_2d(cpl_polynomial **poly_1ds, int *orders, int npolys, cpl_size xdegree)
Create a 2D Wavelength Polynomial out of a several 1D ones.
Definition: cr2res_wave.c:1685
cpl_polynomial * cr2res_wave_poly_2d_to_1d(cpl_polynomial *poly_2d, int order)
Create a 1D Wavelength Polynomial out of a 2D one.
Definition: cr2res_wave.c:1776
cpl_polynomial * cr2res_wave_2d(cpl_bivector **spectra, cpl_bivector **spectra_err, cpl_polynomial **wavesol_init, cpl_array **wavesol_init_err, int *orders, int *traces_nb, int ninputs, const char *catalog, cpl_size degree_x, cpl_size degree_y, double threshold, int n_iterations, int zp_order, int display, cpl_array **wavelength_error, cpl_table **lines_diagnostics)
Compute the 2D wavelength polynomial based on a line spectrum and a reference catalog by finding line...
Definition: cr2res_wave.c:889
int cr2res_wave_apply(cpl_table *tw_in, cpl_table *spectra_tab, const cpl_frame *catalog_frame, int reduce_order, int reduce_trace, cr2res_wavecal_type wavecal_type, int degree, int xdegree, double wl_start, double wl_end, double wl_err, double wl_shift, int log_flag, int fallback_input_wavecal_flag, int keep_higher_degrees_flag, int clean_spectrum, int display, double display_wmin, double display_wmax, int zp_order, int grat1_order, cpl_propertylist **qcs, cpl_table **lines_diagnostics, cpl_table **extracted_out, cpl_table **trace_wave_out)
Apply the Wavelength Calibration.
Definition: cr2res_wave.c:150
cpl_polynomial * cr2res_wave_1d(cpl_bivector *spectrum, cpl_bivector *spectrum_err, cpl_polynomial *wavesol_init, const cpl_array *wave_error_init, int order, int trace_nb, cr2res_wavecal_type wavecal_type, const char *catalog, int degree, int clean_spectrum, int log_flag, int keep_higher_degrees_flag, int display, double display_wmin, double display_wmax, double *best_xcorr, double *lines_resol_fwhm, double *lines_pos, double *lines_resol, double *lines_intens, cpl_array **wavelength_error, cpl_table **lines_diagnostics)
1D Wavelength Calibration
Definition: cr2res_wave.c:689
cpl_array * cr2res_wave_get_estimate(const char *filename, int detector, int order)
Compute the wavelength estimate.
Definition: cr2res_wave.c:1527
cpl_polynomial * cr2res_wave_estimate_compute(double wmin, double wmax)
Compute the polynomial from boundaries.
Definition: cr2res_wave.c:1481
cpl_polynomial * cr2res_wave_etalon(cpl_bivector *spectrum, const cpl_bivector *spectrum_err, cpl_polynomial *wavesol_init, int degree, cpl_array **wavelength_error)
Find solution from etalon.
Definition: cr2res_wave.c:1405
cpl_polynomial * cr2res_wave_xcorr(cpl_bivector *spectrum, cpl_polynomial *wavesol_init, double wl_error, cpl_bivector *lines_list, int degree, int propagate_flag, int cleaning_filter_size, double slit_width, double fwhm, int display, double *best_xcorr, cpl_array **wavelength_error)
Find solution by cross-correlating template spectrum.
Definition: cr2res_wave.c:1221