29#include "cr2res_utils.h"
35#define CR2RES_WAVELENGTH_ERROR_DEFAULT 0.2
36#define CR2RES_WAVELENGTH_MIN_FIT_PIX 20
44} cr2res_wavecal_type ;
52 cpl_table * spectra_tab,
53 const cpl_frame * catalog_frame,
56 cr2res_wavecal_type wavecal_type,
64 int fallback_input_wavecal_flag,
65 int keep_higher_degrees_flag,
72 cpl_propertylist ** qcs,
73 cpl_table ** lines_diagnostics,
74 cpl_table ** extracted_out,
75 cpl_table ** trace_wave_out) ;
78 cpl_bivector * spectrum,
79 cpl_bivector * spectrum_err,
80 cpl_polynomial * wavesol_init,
81 const cpl_array * wave_error_init,
84 cr2res_wavecal_type wavecal_type,
89 int keep_higher_degrees_flag,
94 double * lines_resol_fwhm,
97 double * lines_intens,
98 cpl_array ** wavelength_error,
99 cpl_table ** lines_diagnostics) ;
102 cpl_bivector ** spectra,
103 cpl_bivector ** spectra_err,
104 cpl_polynomial ** wavesol_init,
105 cpl_array ** wavesol_init_err,
109 const char * catalog,
116 cpl_array ** wavelength_error,
117 cpl_table ** lines_diagnostics) ;
120 cpl_bivector * spectrum,
121 cpl_polynomial * wavesol_init,
123 cpl_bivector * lines_list,
126 int cleaning_filter_size,
131 cpl_array ** wavelength_error) ;
134 cpl_bivector * spectrum,
135 const cpl_bivector * spectrum_err,
136 cpl_polynomial * wavesol_init,
138 cpl_array ** wavelength_error) ;
145 const char * filename,
150 const cpl_table * trace_wave) ;
153 cpl_polynomial ** poly_1ds,
159 cpl_polynomial * poly_2d,
162char * cr2res_wave_method_print(cr2res_wavecal_type wavecal_type) ;
165int cr2res_wave_fit_single_line(
166 const cpl_vector * spec,
167 const cpl_vector * unc,
169 cpl_size window_size,
172 cpl_vector ** result);
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,
185 cpl_vector ** sigma_py,
186 cpl_vector ** heights,
187 cpl_vector ** fit_error) ;
189cpl_vector * cr2res_wave_etalon_measure_fringes(
190 cpl_vector * spectrum) ;
hdrl_image * cr2res_wave_gen_wave_map(const cpl_table *trace_wave)
Compute the wavelength map from the trace_wave table.
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.
cpl_polynomial * cr2res_wave_poly_2d_to_1d(cpl_polynomial *poly_2d, int order)
Create a 1D Wavelength Polynomial out of a 2D one.
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...
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.
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
cpl_array * cr2res_wave_get_estimate(const char *filename, int detector, int order)
Compute the wavelength estimate.
cpl_polynomial * cr2res_wave_estimate_compute(double wmin, double wmax)
Compute the polynomial from boundaries.
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.
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.