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