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
00027
00028 #ifndef XSH_DRL_H
00029 #define XSH_DRL_H
00030
00031
00032
00033
00034 #include <cpl.h>
00035 #include <xsh_error.h>
00036 #include <xsh_dfs.h>
00037 #include <xsh_utils.h>
00038 #include <xsh_data_pre.h>
00039 #include <xsh_data_rec.h>
00040 #include <xsh_data_instrument.h>
00041 #include <xsh_data_order.h>
00042 #include <xsh_data_dispersol.h>
00043 #include <xsh_parameters.h>
00044 #include <xsh_qc_handling.h>
00045
00046
00047
00048 #define XSH_CONCAT(A,B) A ## B
00049 #define XSH_STRING(A) # A
00050
00051 #define PICKUP_NOISE_HOT_PIXEL_MAP
00052
00053
00054
00055
00056
00057
00058
00059
00060 #define REGDEBUG_OPTEXTRACT 0
00061 cpl_frame*
00062 xsh_bpmap_2pre(cpl_frame* bpmap,const char* prefix, xsh_instrument* inst);
00063
00064 void
00065 xsh_prepare( cpl_frameset* frames, cpl_frame* bpmap, cpl_frame* mbias,
00066 const char* prefix, xsh_instrument* instr,
00067 const int pre_overscan_corr);
00068 cpl_frame * xsh_preframe_extract( cpl_frame* frame, int xmin, int ymin,
00069 int xmax, int ymax, const char* name, xsh_instrument *instr);
00070
00071 cpl_frame *
00072 xsh_remove_crh_multiple( cpl_frameset* rawFrames,
00073 const char * name,
00074 xsh_stack_param* stack_param,
00075 xsh_clipping_param *crh_clipping,
00076 xsh_instrument* inst ,
00077 cpl_imagelist **,
00078 cpl_image** , const int save_tmp) ;
00079
00080 #if defined(PICKUP_NOISE_HOT_PIXEL_MAP)
00081 cpl_frame *
00082 xsh_compute_noise_map( cpl_imagelist *, cpl_frame * bpmap,
00083 xsh_clipping_param *,
00084 xsh_instrument* instr,
00085 cpl_frame ** noisemap ) ;
00086 #else
00087 cpl_frame *
00088 xsh_compute_noise_map( cpl_imagelist *,
00089 cpl_frame * bpmap,
00090 xsh_clipping_param *,
00091 xsh_instrument* instr) ;
00092 #endif
00093
00094 cpl_frame *
00095 xsh_create_master_dark( cpl_frame* bpMap,
00096 xsh_instrument* instr,
00097 cpl_parameterlist* parameters,
00098 cpl_frame* crh_frm,cpl_frame* bp_map_frm);
00099
00100 cpl_frame *
00101 xsh_create_master_dark2(cpl_frameset * raws,
00102 xsh_stack_param* stack_param,
00103 cpl_parameterlist* drs_param,
00104 cpl_propertylist* qc_log,
00105 xsh_instrument* instr);
00106
00107 cpl_frame *
00108 xsh_compute_qc_on_master_bias (cpl_frameset* raws,
00109 cpl_frame * frame,
00110 xsh_instrument* instr,
00111 cpl_parameterlist* drs_params);
00112
00113
00114 cpl_frame * xsh_create_master_flat( cpl_frame* frame,xsh_instrument * instr);
00115
00116 cpl_frame * xsh_create_master_dark_bpmap( cpl_frame* frame,xsh_instrument * instr);
00117
00118
00119 cpl_frame * xsh_compute_linearity( cpl_frameset *, xsh_instrument *,
00120 xsh_clipping_param *,const int decode_bp ) ;
00121
00122 int
00123 xsh_linear_group_by_exptime( cpl_frameset *,
00124 xsh_instrument *,
00125 double ,
00126 cpl_frameset ** ) ;
00127
00128 cpl_frame*
00129 xsh_subtract_bias(cpl_frame* frame,
00130 cpl_frame* bias,
00131 xsh_instrument* instr,
00132 const char* type,
00133 const int pre_overscan_corr,const int save_tmp);
00134
00135 cpl_frameset*
00136 xsh_subtract_nir_on_off(cpl_frameset* on,
00137 cpl_frameset* off,
00138 xsh_instrument* instr);
00139 cpl_frame*
00140 xsh_subtract_dark(cpl_frame * frame,
00141 cpl_frame * dark,
00142 const char* filename,
00143 xsh_instrument* instr);
00144
00145 #define XSH_DIVIDE_FLAT_THRESH 1e-10
00146 cpl_frame* xsh_divide_flat(cpl_frame * frame, cpl_frame * flat,
00147 const char* filename, xsh_instrument* instr);
00148
00149 #define XSH_MULTIPLY_FLAT_THRESH 1e+30
00150 cpl_frame* xsh_multiply_flat(cpl_frame * frame, cpl_frame * flat,
00151 const char* filename, xsh_instrument* instr);
00152
00153
00154 cpl_frame*
00155 xsh_subtract_background(cpl_frame * frame,
00156 cpl_frame* ordertable,
00157 xsh_background_param* bckg,
00158 xsh_instrument* instr,
00159 const char* prefix,
00160 cpl_frame** grid_frame,
00161 cpl_frame** frame_backg,const int save_tmp);
00162 cpl_frame*
00163 xsh_detect_order_edge(cpl_frame* frame,
00164 cpl_frame* order_table,
00165 xsh_detect_order_param * det_param,
00166 xsh_instrument* instr);
00167
00168 cpl_frame *
00169 xsh_detect_continuum( cpl_frame* frame,
00170 cpl_frame* order_table,
00171 cpl_frame * spectral_format,
00172 xsh_detect_continuum_param * param,
00173 xsh_clipping_param * dcn_clipping,
00174 xsh_instrument* instr,
00175 cpl_frame** resid_frame) ;
00176
00177 cpl_frame *
00178 xsh_order_table_from_fmtchk( xsh_pre * pre,
00179 cpl_frame * spectral_frame,
00180 xsh_detect_continuum_param * detect_param,
00181 xsh_instrument * instrument ) ;
00182
00183
00184 #define WAVELENGTH_PRECISION 0.00001
00185 #define SLIT_PRECISION 0.00001
00186 #define SLIT_PRECISION_IFU 0.21
00187
00188 void xsh_create_map( cpl_frame *dispsol_frame, cpl_frame *ordertab_frame,
00189 cpl_frame *pre_frame, xsh_instrument *instrument, cpl_frame **wavemap_frame,
00190 cpl_frame **slitmap_frame,const char* rec_prefix);
00191
00192 cpl_frame *
00193 xsh_create_wavemap( cpl_frame * in_frame,
00194 cpl_frame * resid_frame,
00195 cpl_frame * order_frame,
00196 xsh_dispersol_param * dispersol_param,
00197 xsh_instrument * instrument );
00198
00199 cpl_frame * xsh_create_poly_wavemap( cpl_frame *pre_frame,
00200 cpl_frame *wave_tab_2d_frame, cpl_frame *order_tab_frame,
00201 cpl_frame *spectral_format_frame, xsh_dispersol_param *dispsol_par,
00202 xsh_instrument * instrument, const char * filename,
00203 cpl_frame **dispersol_frame, cpl_frame **slitmap_frame);
00204
00205 void
00206 xsh_create_model_map( cpl_frame* model_frame, xsh_instrument* instrument,
00207 const char* wave_map_tag, const char* slit_map_tag,
00208 cpl_frame **wavemap_frame, cpl_frame **slitmap_frame,const int save_tmp);
00209
00210 cpl_frame *
00211 xsh_create_order_table( cpl_frame * in_frame,
00212 cpl_frame * spectralformat_frame,
00213 cpl_frame * resid_frame,
00214 cpl_frame * arclines,
00215 xsh_detect_arclines_param * da,
00216 xsh_clipping_param * dac,
00217 xsh_instrument * instrument ) ;
00218
00219 #define XSH_DETECT_ARCLINES_TYPE_POLY 0
00220 #define XSH_DETECT_ARCLINES_TYPE_MODEL 1
00221 #define XSH_DETECT_ARCLINES_MODE_NORMAL 0
00222 #define XSH_DETECT_ARCLINES_MODE_CORRECTED 1
00223 #define XSH_DETECT_ARCLINES_MODE_RECOVER 2
00224
00225 typedef enum {
00226 XSH_SOLUTION_ABSOLUTE,
00227 XSH_SOLUTION_RELATIVE
00228 } xsh_sol_wavelength;
00229
00230 void
00231 xsh_detect_arclines( cpl_frame *frame,
00232 cpl_frame *theo_tab_frame,
00233 cpl_frame *arc_lines_tab_frame,
00234 cpl_frame* wave_tab_guess_frame,
00235 cpl_frame *order_tab_recov_frame,
00236 cpl_frame *config_model_frame,
00237 cpl_frame *spectralformat_frame,
00238 cpl_frame **resid_tab_orders_frame,
00239 cpl_frame **arc_lines_clean_tab_frame,
00240 cpl_frame **wave_tab_frame,
00241 cpl_frame **resid_tab_frame,
00242 xsh_sol_wavelength type,
00243 xsh_detect_arclines_param *da,
00244 xsh_clipping_param *dac,
00245 xsh_instrument *instr,
00246 const char* rec_id,
00247 const int clean_tmp,
00248 const int resid_tab_name_sw);
00249
00250 void
00251 xsh_detect_arclines_dan( cpl_frame *frame,
00252 cpl_frame *theo_tab_frame,
00253 cpl_frame *arc_lines_tab_frame,
00254 cpl_frame* wave_tab_guess_frame,
00255 cpl_frame *order_tab_recov_frame,
00256 cpl_frame *config_model_frame,
00257 cpl_frame *spectralformat_frame,
00258 cpl_frame **resid_tab_orders_frame,
00259 cpl_frame **arc_lines_clean_tab_frame,
00260 cpl_frame **wave_tab_frame,
00261 cpl_frame **resid_tab_frame,
00262 xsh_sol_wavelength type,
00263 xsh_detect_arclines_param *da,
00264 xsh_clipping_param *dac,
00265 xsh_instrument *instr,
00266 const char* rec_id,
00267 const int clean_tmp,
00268 const int resid_tab_name_sw);
00269
00270 void
00271 xsh_follow_arclines_slit( cpl_frame *inframe,
00272 cpl_frame *arclines,
00273 cpl_frame *wavesol,
00274 cpl_frame *order_table,
00275 cpl_frame *spectralformat_frame,
00276 cpl_frame *model_config_frame,
00277 cpl_frame *wavemap_frame,
00278 cpl_frame *slitmap_frame,
00279 cpl_frame *disptab_frame,
00280 xsh_follow_arclines_param *param,
00281 xsh_instrument * instrument,
00282 cpl_frame ** tilt_list,
00283 cpl_frame ** shift_frame);
00284
00285
00286 void
00287 xsh_follow_arclines_ifu( cpl_frame *inframe,
00288 cpl_frame *arclines,
00289 cpl_frame *wavesol,
00290 cpl_frame *order_table,
00291 cpl_frame *spectralformat_frame,
00292 cpl_frame *model_config_frame,
00293 cpl_frame *wavemap_frame,
00294 cpl_frame *slitmap_frame,
00295 cpl_frame *disptab_frame,
00296 xsh_follow_arclines_param *follow_param,
00297 xsh_instrument * instrument,
00298 cpl_frameset *tilt_set,
00299 cpl_frame **shift_frame);
00300
00301
00302 void xsh_rec_slit_size( xsh_rectify_param *rectify_par, double *slit_min,
00303 int *nslit, XSH_MODE mode);
00304
00305 cpl_frame* xsh_rectify_orders( cpl_frame *sci_frame,
00306 xsh_order_list *orderlist_frame,
00307 cpl_frame *wavesol_frame, cpl_frame *model_frame, xsh_instrument *instrument,
00308 xsh_rectify_param *rectify_par, cpl_frame *spectralformat_frame,
00309 cpl_frame *disp_tab_frame, const char * res_name, const char* tag,
00310 cpl_frame** res_frame_ext,cpl_frame** res_frame_tab,
00311 int min_index, int max_index, double slit_min, int nslit, double slit_shift,
00312 cpl_frame *slitshift_tab);
00313
00314 cpl_frameset * xsh_rectify_orders_ifu(cpl_frame *sci_frame,
00315 xsh_order_list *orderlist, cpl_frameset *wavesol_frameset,
00316 cpl_frameset *shift_frameset,
00317 cpl_frame *model_frame, xsh_instrument *instrument,
00318 xsh_rectify_param *rectify_par, cpl_frame *spectralformat_frame,
00319 cpl_frame * slitmap_frame,cpl_frameset ** rec_frameset_ext, cpl_frameset ** rec_frameset_tab,
00320 int min_index, int max_index, const char* rec_prefix);
00321
00322 cpl_frame *
00323 xsh_rectify (cpl_frame * sci_frame, cpl_frame * order_table_frame,
00324 cpl_frame * wavesol_frame,
00325 cpl_frame * model_config_frame,
00326 xsh_instrument *instrument,
00327 xsh_rectify_param * rectify_par,
00328 cpl_frame *spectral_format,
00329 cpl_frame *disp_tab_frame,
00330 const char * fname,
00331 cpl_frame** res_frame_ext,cpl_frame ** res_frame_tab,
00332 const char* prefix);
00333
00334 cpl_frame * shift_with_kw( cpl_frame * rec_frame,
00335 xsh_instrument *instrument,
00336 xsh_rectify_param * rectify_par,
00337 const char * fname,
00338 cpl_frame** res_frame_ext,
00339 double **ref_ra, double **ref_dec, int flag);
00340
00341
00342 cpl_frame * xsh_rectify_and_shift( cpl_frame *sci_frame,
00343 cpl_frame * orderlist_frame,
00344 cpl_frame *wavesol_frame,
00345 cpl_frame * model_frame,
00346 xsh_instrument *instrument,
00347 xsh_rectify_param *rectify_par,
00348 cpl_frame *spectralformat_frame,
00349 cpl_frame * loc_frame,
00350 cpl_frame * loc0_frame,
00351 double *throw_shift,
00352 cpl_frame *disp_tab_frame,
00353 const char * res_name,
00354 cpl_frame** res_frame_ext,
00355 cpl_frame** res_frame_tab);
00356
00357 cpl_frameset *
00358 xsh_rectify_ifu(cpl_frame * sci_frame,
00359 cpl_frame * order_table_frame,
00360 cpl_frameset *wavesol_frame_set,
00361 cpl_frameset *shiftifu_frameset,
00362 cpl_frame * model_config_frame,
00363 xsh_instrument *instrument,
00364 xsh_rectify_param * rectify_par,
00365 cpl_frame * spectral_format,
00366 cpl_frame * slitmap_frame,
00367 cpl_frameset** rec_frameset_ext,
00368 cpl_frameset** rec_frameset_tab,
00369 const char* rec_prefix) ;
00370
00371 #define XSH_RECTIFY_TYPE_POLY 0
00372 #define XSH_RECTIFY_TYPE_MODEL 1
00373 cpl_frame *
00374 xsh_shift_rectified( cpl_frame * rec_frame,
00375 cpl_frame * loc_frame,
00376 cpl_frame * loc0_frame,
00377 const char * file_name,
00378 xsh_combine_nod_param * combine_nod_param,
00379 xsh_rectify_param * rectif_par,
00380 xsh_instrument * instrument,
00381 cpl_frame** res_frame_ext ) ;
00382
00383 void xsh_compute_slitlet_center( xsh_order_list * order_list,
00384 cpl_frame * slitmap_frame,
00385 double * down, double * cen,
00386 double * up,
00387 XSH_ARM arm ) ;
00388
00389
00390
00391 void xsh_get_slit_edges( cpl_frame *slitmap_frame, double *sdown, double *sup,
00392 double *sldown, double *slup, xsh_instrument *instrument);
00393
00394 void xsh_compute_slitlet_limits( cpl_frameset *shift_set, double sdown,
00395 double sldown, double slup, double sup, double slit_bin,
00396 double *slitmin_tab, int *nslit_tab, double *slitcen_tab);
00397
00398 cpl_frame *
00399 xsh_subtract_sky_single (cpl_frame * sci_frame,
00400 cpl_frame * order_table_frame,
00401 cpl_frame * slitmap_frame,
00402 cpl_frame * wavemap_frame,
00403 cpl_frame * locTable_frame,
00404 cpl_frame * mflat_frame,cpl_frame* usr_defined_break_points_frame,
00405 xsh_instrument * instrument,
00406 int nbkpts,
00407 xsh_subtract_sky_single_param* sky_par,
00408 cpl_frame ** sky_spectrum,
00409 cpl_frame ** sky_spectrum_eso,const char* rec_prefix) ;
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419 cpl_frame * xsh_add_sky_model( cpl_frame *sub_sky_frame, cpl_frame *sky_frame,
00420 xsh_instrument * instrument, const char* rec_prefix );
00421
00422 cpl_frame*
00423 xsh_localize_obj( cpl_frame * sci_frame,
00424 cpl_frame *skymask_frame,
00425 xsh_instrument *instrument,
00426 xsh_localize_obj_param * loc_obj_par,
00427 xsh_slit_limit_param * slit_limit_param,
00428 const char * fname );
00429
00430 cpl_frameset *
00431 xsh_localize_obj_ifu( cpl_frameset * sci_frame,
00432 cpl_frame *skymask_frame,
00433 xsh_instrument *instrument,
00434 xsh_localize_obj_param * loc_obj_par,
00435 xsh_slit_limit_param * slit_limit_param);
00436
00437 cpl_frame* xsh_extract ( cpl_frame * rec_frame,
00438 cpl_frame* loc_frame,
00439 xsh_instrument* instrument,
00440 xsh_extract_param* extract_par,
00441 cpl_frame** res_frame_ext,
00442 const char* rec_prefix);
00443
00444 cpl_frameset *
00445 xsh_extract_ifu(cpl_frameset * rec_frame_set,
00446 cpl_frameset * loc_frame_set,
00447 xsh_instrument* instrument,
00448 xsh_extract_param * extract_par,
00449 const char* rec_prefix) ;
00450
00451 cpl_frame * xsh_abs_remove_crh_single( cpl_frame *sci_frame,
00452 cpl_frame* wavemap_frame,
00453 xsh_instrument * instrument,
00454 xsh_remove_crh_single_param * single_par,
00455 const char * res_tag);
00456
00457 cpl_frame *
00458 xsh_remove_crh_single( cpl_frame * sci_frame,cpl_frame * wave_frame,
00459 xsh_instrument * instrument,
00460 xsh_remove_crh_single_param * single_par,
00461 const char * name );
00462
00463 cpl_frame * xsh_merge_ord_slitlet( cpl_frame * rec_frame,
00464 xsh_instrument* instrument,
00465 xsh_merge_param* merge_par, int slitlet,
00466 const char* rec_prefix);
00467
00468 cpl_frame *
00469 xsh_merge_ord (cpl_frame * sci_frame, xsh_instrument * instrument,
00470 xsh_merge_param* merge,const char* rec_prefix) ;
00471
00472 cpl_frameset *
00473 xsh_merge_ord_ifu(cpl_frameset * rec_frameset,
00474 xsh_instrument* instrument,
00475 xsh_merge_param* merge_par,const char* rec_prefix) ;
00476
00477
00478 #define XSH_OBJPOS_NB_COL 2
00479 #define XSH_OBJPOS_COLNAME_WAVELENGTH "Wavelength"
00480 #define XSH_OBJPOS_UNIT_WAVELENGTH "nm"
00481 #define XSH_OBJPOS_COLNAME_SLIT "Slit"
00482 #define XSH_OBJPOS_UNIT_SLIT "arcsec"
00483 #define XSH_LAMBDA_DIMM 0.0000005
00484
00485 double xsh_convert_seeing( cpl_frame* frame);
00486
00487 cpl_frame* xsh_localize_ifu_slitlet( cpl_frame *merge2d_slitlet,
00488 cpl_frame *skymask_frame, int smooth_hsize,
00489 int nscales, int HF_skip, const char* resname, double cut_sigma_low,
00490 double cut_sigma_up, double cut_snr_low, double cut_snr_up,
00491 double slit_min, double slit_max, int deg, int box_hsize, xsh_instrument *instr);
00492
00493 cpl_frameset* xsh_localize_ifu( cpl_frameset *merge2d_frameset,
00494 cpl_frame *skymask_frame,
00495 xsh_localize_ifu_param * locifu_par, xsh_instrument *instrument,
00496 const char* resname);
00497
00498 #define XSH_SHIFTIFU_NB_COL 2
00499 #define XSH_SHIFTIFU_COLNAME_WAVELENGTH "Wavelength"
00500 #define XSH_SHIFTIFU_UNIT_WAVELENGTH "nm"
00501 #define XSH_SHIFTIFU_COLNAME_SHIFTSLIT "Slit_shift"
00502 #define XSH_SHIFTIFU_UNIT_SHIFTSLIT "arcsec"
00503
00504 cpl_frame* xsh_compute_shift_ifu_slitlet( double lambda_ref, cpl_frame *objpos_frame,
00505 cpl_frame *shiftifu_frame, double lambdaref_hsize, const char* resname);
00506
00507 cpl_frameset* xsh_compute_shift_ifu( double lambda_ref, double lambdaref_hsize,
00508 cpl_frameset *objpos_frameset,
00509 cpl_frameset *shiftifu_frameset, xsh_instrument* instr, const char* prefix);
00510
00511 cpl_frameset *
00512 xsh_subtract_sky_nod( cpl_frameset * raws, xsh_instrument * instrument,
00513 int mode_fast);
00514
00515 void
00516 xsh_flat_merge_qth_d2( cpl_frame *qth_frame,
00517 cpl_frame *qth_order_tab_frame,
00518 cpl_frame *d2_frame,
00519 cpl_frame *d2_order_tab_frame,
00520 cpl_frame *qth_bkg_frame,
00521 cpl_frame *d2_bkg_frame,
00522 cpl_frame **qth_d2_flat_frame,
00523 cpl_frame **qth_d2_bkg_frame,
00524 cpl_frame **qth_d2_order_tab_frame,
00525 xsh_instrument *instrument);
00526 void
00527 xsh_flat_merge_qth_d2_smooth( cpl_frame *qth_frame,
00528 cpl_frame *qth_order_tab_frame,
00529 cpl_frame *d2_frame,cpl_frame *d2_order_tab_frame,
00530 cpl_frame *qth_bkg_frame, cpl_frame *d2_bkg_frame,
00531 cpl_frame **qth_d2_flat_frame,
00532 cpl_frame **qth_d2_bkg_frame,
00533 cpl_frame **qth_d2_order_tab_frame,
00534 xsh_instrument *instrument);
00535
00536 #define XSH_MATH_SQRT_2 1.4142135623730951
00537 void xsh_opt_extract( cpl_frame *sci_frame, cpl_frame *order_table_frame,
00538 cpl_frame *wavesol_frame, cpl_frame *model_frame, cpl_frame *wavemap_frame,
00539 cpl_frame *slitmap_frame, cpl_frame *loc_frame,
00540 cpl_frame *spectralformat_frame, cpl_frame *masterflat_frame,
00541 xsh_instrument *instrument, xsh_opt_extract_param *opt_extract_par,
00542 const char* rec_prefix,
00543 cpl_frame **orderext1d_frame,
00544 cpl_frame **orderoxt1d_frame,
00545 cpl_frame **orderoxt1d_eso_frame,
00546 cpl_frame** qc_subextract_frame,
00547 cpl_frame** qc_s2ddiv1d_frame,
00548 cpl_frame** qc_model_frame,
00549 cpl_frame** qc_weight_frame);
00550
00551
00552 #define REGDEBUG_GAUSSIAN 0
00553 #define REGDEBUG_BLAZE 0
00554 #define REGDEBUG_EXTRACT 0
00555 #define REGDEBUG_EXTRACT_XY 0
00556 #define REGDEBUG_SUBEXTRACT_XY 0
00557 #define REGDEBUG_EXTRACT_STD 0
00558 #define REGDEBUG_N 0
00559
00560 void xsh_opt_extract_orders( cpl_frame *sci_frame,
00561 cpl_frame *orderlist_frame,
00562 cpl_frame *wavesol_frame,
00563 cpl_frame *model_frame,
00564 cpl_frame *wavemap_frame,
00565 cpl_frame *slitmap_frame,
00566 cpl_frame *loc_frame,
00567 cpl_frame *spectralformat_frame,
00568 cpl_frame *masterflat_frame,
00569 xsh_instrument *instrument,
00570 xsh_opt_extract_param* opt_extract_par,
00571 int min_index, int max_index,
00572 const char* rec_refix,
00573 cpl_frame** orderext1d_frame,
00574 cpl_frame** orderoxt1d_frame,
00575 cpl_frame** orderoxt1d_eso_frame,
00576 cpl_frame** qc_subextract_frame,
00577 cpl_frame** qc_s2ddiv1d_frame,
00578 cpl_frame** qc_model_frame,
00579 cpl_frame** qc_weight_frame);
00580
00581 cpl_frame *
00582 xsh_combine_nod( cpl_frameset * frames,
00583 xsh_combine_nod_param * param,
00584 const char * fname,
00585 xsh_instrument * instrument,
00586 cpl_frame** res_frame_ext ) ;
00587
00588
00589 cpl_frame*
00590 xsh_create_master_bias2(cpl_frameset* rawFrames,xsh_stack_param* stack_par,
00591 xsh_instrument* instr,
00592 const char* result_name,const int method_code);
00593
00594 cpl_frame* xsh_compute_slice_dist( cpl_frameset *loc_frame_set,
00595 cpl_frame *order_tab, cpl_frame *slitmap_frame,
00596 cpl_frameset *merge_frameset, double lambda, xsh_instrument *instrument);
00597
00598 cpl_frame *
00599 xsh_format( cpl_frameset * rect_frame_set,
00600 const char * result_name,
00601 xsh_instrument * instrument, const char* rec_prefix ) ;
00602
00603 cpl_frame* xsh_cube( cpl_frameset *merge2d_frameset,
00604 xsh_instrument * instrument, const char* rec_prefix);
00605
00606 void xsh_center_cube( cpl_frame *cube_frame, cpl_frame *sky_line_frame,
00607 int chunk_size, xsh_instrument *instrument);
00608
00609 cpl_frameset *
00610 xsh_subtract_sky_offset( cpl_frameset * object_raws,
00611 cpl_frameset * sky_raws,
00612 int nraws,
00613 xsh_instrument * instrument ) ;
00614
00615 cpl_frame *
00616 xsh_combine_offset (cpl_frameset * rawFrames,
00617 const char *result_name,
00618 xsh_stack_param* stack_par,
00619 xsh_clipping_param * crh_clipping,
00620 xsh_instrument* instr,
00621 cpl_imagelist ** list,
00622 cpl_image** crh_ima, const int save_tmp) ;
00623
00624 cpl_frame *
00625 xsh_compute_response( cpl_frame * rect_frame,
00626 cpl_frame * std_star_flux_frame,
00627 cpl_frame * atmos_ext_frame,
00628 cpl_frame * high_abs_tab_frame,
00629 xsh_instrument * instrument,
00630 double exptime ) ;
00631
00632 cpl_frame *
00633 xsh_compute_response_ord( cpl_frame * rect_frame,
00634 cpl_frame * std_star_flux_frame,
00635 cpl_frame * atmos_ext_frame,
00636 cpl_frame * high_abs_tab_frame,
00637 xsh_instrument * instrument,
00638 double exptime) ;
00639
00640 void xsh_data_check_spectralformat( cpl_frame *spectralformat_frame,
00641 cpl_frame *orderlist_frame, cpl_frame *wavesol_frame,
00642 cpl_frame *model_config,
00643 xsh_instrument *instr);
00644
00645 cpl_error_code
00646 xsh_wavemap_qc(cpl_frame* frm_map,const cpl_frame* frm_tab);
00647
00648 cpl_error_code
00649 xsh_wavetab_qc(cpl_frame* frm_tab,const int is_poly);
00650
00651 cpl_frame*
00652 xsh_flexcor( cpl_frame* afc_frame,
00653 cpl_frame *wave_tab_frame,
00654 cpl_frame *model_config_frame,
00655 cpl_frame *order_tab_frame,
00656 cpl_frame *attresidtab_frame,
00657 int afc_xmin, int afc_ymin, xsh_instrument *instr,
00658 cpl_frame **afc_order_tab_frame,
00659 cpl_frame **afc_model_config_frame);
00660
00661 cpl_frame* xsh_afcthetab_create( cpl_frame *wave_tab_frame,
00662 cpl_frame *model_config_frame, int order,
00663 cpl_frame *spectralformat_frame,cpl_frame *arclines_frame,
00664 int xmin, int ymin,
00665 xsh_instrument *instr,const int clean_tmp);
00666
00667 cpl_frameset* xsh_ifu_wavetab_create( cpl_frame *wave_tab_frame,
00668 cpl_frame *shift_tab_frame, xsh_instrument *instr);
00669
00670 cpl_frame * xsh_calibrate_flux( cpl_frame * spectrum_frame,
00671 cpl_frame * respon_frame,
00672 cpl_frame * atmos_ext_frame,
00673 const char * fname,
00674 xsh_instrument * instrument ) ;
00675
00676 cpl_frame*
00677 xsh_create_dispersol_physmod(cpl_frame* pre_frame,
00678 cpl_frame *order_tab_frame,
00679 cpl_frame* mod_cfg_frame,
00680 cpl_frame* wave_map_frame,
00681 cpl_frame* slit_map_frame,
00682 xsh_dispersol_param *dispsol_param,
00683 cpl_frame* spectral_format_frame,
00684 xsh_instrument* instrument,
00685 const int clean_tmp);
00686
00687 #define LSTART_COLUMN_NAME "LAMBDASTART"
00688 #define LEND_COLUMN_NAME "LAMBDAEND"
00689 #define GUESS_TELL_MASK_RESOLUTION_UVB 9100
00690 #define GUESS_TELL_MASK_RESOLUTION_VIS 17400
00691 #define GUESS_TELL_MASK_RESOLUTION_NIR 11300
00692 cpl_frame* xsh_compute_absorp( cpl_frame *s1d_frame, cpl_frame *telllist_frame,
00693 int filter_hsize, double threshold, xsh_instrument* instr);
00694
00695 void xsh_mark_tell( cpl_frame *s1d_frame, cpl_frame *tellmask_frame);
00696
00697 #endif