79#define RECIPE_ID "xsh_respon_slit_nod"
80#define RECIPE_AUTHOR "P.Goldoni, L.Guglielmi, R. Haigron, F. Royer, D. Bramich A. Modigliani"
81#define RECIPE_CONTACT "amodigli@eso.org"
102"Reduce STD star frames in SLIT configuration and nod mode";
105"This recipe reduces science exposure in SLIT configuration and NOD mode\n\
107 - A set of n Science frames ( n even ), \
108Tag = OBJECT_SLIT_NOD_arm\n\
109 - Spectral format table (Tag = SPECTRAL_FORMAT_TAB_arm)\n\
110 - [UVB,VIS] A master bias frame (Tag = MASTER_BIAS_arm)\n\
111 - A master flat frame (Tag = MASTER_FLAT_SLIT_arm)\n\
112 - An order table frame(Tag = ORDER_TABLE_EDGES_SLIT_arm)\n\
113 - [poly mode] A wave solution frame(Tag = WAVE_TAB_2D_arm)\n\
114 - [poly mode] A wave map frame(Tag = WAVE_MAP_arm)\n\
115 - [poly mode] A disp table frame(Tag = DISP_TAB_arm)\n\
116 - [physical model mode]A model cfg table (Format = TABLE, Tag = XSH_MOD_CFG_TAB_arm)\n\
117 - [OPTIONAL] A telluric model catalog (Tag = TELL_MOD_CAT_arm arm=VIS,NIR)\n\
118 - A standard star fluxes catalog (Tag = FLUX_STD_CATALOG_arm Type = FLX)\n\
119 - A table to set response sampling points (Tag = RESP_FIT_POINTS_CAT_arm)\n\
120 - [OPTIONAL] An atmospheric extinction table (Tag = ATMOS_EXT_arm)\n\
121 if provided this is the one used to flux calibrate the spectra\n\
123 - [If STD is in catal] The response function (Tag = PREFIX_RESPONSE_ORDER1D_SLIT_arm)\n\
124 - [If STD is in catal] The response function (Tag = PREFIX_RESPONSE_MERGE1D_SLIT_arm)\n\
125 - PREFIX_ORDER2D_arm (2 dimension)\n\
126 - PREFIX_ORDER1D_arm (1 dimension)\n\
127 - PREFIX_MERGE2D_arm (2 dimension)\n\
128 - PREFIX_MERGE1D_arm (1 dimension)\n\
129 - PREFIX_WAVE_MAP_arm, wave map image\n\
130 - PREFIX_SLIT_MAP_arm, slit map image\n\
131 - [If STD is in catal] Flux calibrated order-by-order 2D spectrum (Tag = PREFIX_FLUX_ORDER2D_arm)\n\
132 - [If STD is in catal] Flux calibrated order-by-order 1D spectrum (Tag = PREFIX_FLUX_ORDER1D_arm)\n\
133 - [If STD is in catal] Flux calibrated merged 2D spectrum (Tag = PREFIX_FLUX_MERGE2D_arm)\n\
134 - [If STD is in catal] Flux calibrated merged 1D spectrum (Tag = PREFIX_FLUX_MERGE1D_arm)\n\
135 - [If STD is in catal] The efficiency (Tag = EFFICIENCY_SLIT_arm)\n\
136 - where PREFIX is SCI, FLUX, TELL if input raw DPR.TYPE contains OBJECT or FLUX or TELLURIC";
153 cpl_recipe *recipe = NULL;
154 cpl_plugin *plugin = NULL;
156 recipe = cpl_calloc(1,
sizeof(*recipe));
157 if ( recipe == NULL ){
161 plugin = &recipe->interface ;
163 cpl_plugin_init(plugin,
166 CPL_PLUGIN_TYPE_RECIPE,
177 cpl_pluginlist_append(list, plugin);
179 return (cpl_error_get_code() != CPL_ERROR_NONE);
197 cpl_recipe *recipe = NULL;
199 cpl_msg_info(__func__,
"Set crh_single to %f, %f, %f, %d",
231 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin");
234 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
235 CPL_ERROR_TYPE_MISMATCH,
236 "Plugin is not a recipe");
238 recipe = (cpl_recipe *)plugin;
241 recipe->parameters = cpl_parameterlist_new();
242 assure( recipe->parameters != NULL,
243 CPL_ERROR_ILLEGAL_OUTPUT,
244 "Memory allocation failed!");
254 recipe->parameters, crh_single));
260 "rectify-fast", TRUE,
261 "Fast if TRUE (Rect[B-A] = -Rect[A-B]), in that case only entire pixel shifts are applied. "));
269 "localize-nod-throw", loc_obj.
nod_step,
270 "Step (arcsec) between A and B images in nodding mode."));
279 recipe->parameters,ipol_par)) ;
287 slit_limit_param )) ;
294 "correct-tellurics", TRUE,
295 "TRUE if during response computation we apply telluric correction"));
298 "correct-sky-by-median", TRUE,
299 "TRUE if the resampled spectrum at each wavelength is median subtracted to remove sky lines"));
308 "scale-combine-nod-method",1,
309 "frame scaling when nod frames are combined: 0 (no-scaling); 1 (scaling)"));
313 if ( cpl_error_get_code() != CPL_ERROR_NONE ){
331 cpl_recipe *recipe = NULL;
335 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
338 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
339 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
341 recipe = (cpl_recipe *)plugin;
347 if ( cpl_error_get_code() != CPL_ERROR_NONE ) {
366 cpl_recipe *recipe = NULL;
371 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
374 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
375 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
377 recipe = (cpl_recipe *)plugin;
382 if (cpl_error_get_code() != CPL_ERROR_NONE)
403 cpl_frameset* frameset)
406 int recipe_tags_size = 3;
409 cpl_frameset *raws = NULL;
410 cpl_frameset *raws_ord_set = NULL;
411 cpl_frameset *calib = NULL;
414 cpl_frame* bpmap = NULL;
415 cpl_frame *master_bias = NULL;
416 cpl_frame* master_flat = NULL;
417 cpl_frame* order_tab_edges = NULL;
418 cpl_frame * wave_tab = NULL ;
419 cpl_frame * model_config_frame = NULL;
420 cpl_frame * wavemap = NULL;
421 cpl_frame * spectral_format = NULL;
424 int rectify_fast = 0 ;
441 cpl_frameset* raws_avg=NULL;
442 cpl_frame* disp_tab_frame=NULL;
443 cpl_frame* slitmap=NULL;
444 cpl_frame *skymask_frame = NULL;
447 int do_flatfield = CPL_TRUE;
449 char *rec_prefix = NULL;
452 cpl_frameset *nod_set = NULL;
453 cpl_frameset *comb_set = NULL;
454 cpl_frameset *comb_eff_set = NULL;
455 cpl_frame *comb_frame = NULL;
456 cpl_frame *comb_eff_frame = NULL;
457 cpl_frame *combeso_frame = NULL;
458 cpl_frame *combeffeso_frame = NULL;
459 cpl_frame *res2D_frame = NULL;
460 cpl_frame *loc_table_frame = NULL;
461 cpl_frame *res1D_frame = NULL;
462 cpl_frame *res1D_eff_frame = NULL;
463 cpl_frame *res1Deso_frame = NULL;
464 cpl_frame *res1Deso_eff_frame = NULL;
465 cpl_frame *s1D_frame = NULL;
466 cpl_frame *frm_eff = NULL;
467 cpl_frame* response_ord_frame=NULL;
468 cpl_frame* response_frame=NULL;
469 cpl_frame * fluxcal_1D_frame = NULL ;
470 cpl_frame * fluxcal_2D_frame = NULL ;
471 cpl_frame * fluxcal_rect_1D_frame = NULL ;
472 cpl_frame * fluxcal_rect_2D_frame = NULL ;
473 cpl_frame* frm_atmext=NULL;
474 cpl_frame * nrm_1D_frame = NULL ;
475 cpl_frame * nrm_2D_frame = NULL ;
476 int pre_overscan_corr=0;
477 int generate_sdp_format=0;
478 cpl_frame* frm_std_cat=NULL;
479 cpl_frame* high_abs_win=NULL;
480 cpl_frame* tell_mod_cat=NULL;
481 cpl_frameset* crh_clean = NULL;
482 cpl_frame* resp_fit_points_cat_frame=NULL;
483 cpl_frame* sky_map_frm = NULL;
491 cpl_frame* frm_rejected=NULL;
492 cpl_propertylist* qclist = cpl_propertylist_new();
493 cpl_frame* reference_response = NULL;
498 recipe_tags, recipe_tags_size,
RECIPE_ID,
511 "Instrument NOT in Slit Mode");
525 check( nb_raw_frames = cpl_frameset_get_size( raws));
541 "pre-overscan-corr"));
572 &crh_single_par, &rectify_par,
573 &extract_par, &combine_nod_par,
574 &slit_limit_par, &loc_obj_par,
575 &rectify_fast, &pre_overscan_corr,
576 &generate_sdp_format,
581 "correct-tellurics"));
583 "correct-sky-by-median"));
585 "scale-combine-nod-method"));
592 &bpmap,&master_bias,&master_flat,
593 &order_tab_edges,&wave_tab,
594 &model_config_frame,&wavemap,&slitmap,
607 xsh_error_msg(
"Mode accurate can not be use with localize-method MANUAL");
612 if(resp_fit_points_cat_frame==NULL) {
620 if(frm_atmext==NULL) {
622 return CPL_ERROR_DATA_NOT_FOUND;
626 if(frm_std_cat==NULL) {
628 return CPL_ERROR_DATA_NOT_FOUND;
641 int recipe_use_model=FALSE;
642 cpl_frame* ref_pre_frame=NULL;
645 recipe_use_model=TRUE;
646 ref_pre_frame=cpl_frameset_get_frame(raws_ord_set,0);
649 ref_pre_frame = master_flat;
654 ref_pre_frame, model_config_frame, calib,
instrument,
655 do_computemap, recipe_use_model, rec_prefix,
656 &wavemap, &slitmap));
685 do_flatfield,corr_sky,1,
709 comb_eff_set=cpl_frameset_duplicate(comb_set);
716 sprintf( comb_tag,
"%s_%s",
719 comb_tag,
instrument,&combeso_frame,scale_nod));
724 merge_par,rec_prefix));
729 xsh_msg(
"Re-Localize before extraction" ) ;
731 loc_obj_par, slit_limit_par,
"LOCALIZE.fits"));
733 xsh_msg(
"Extract 1D order-by-order spectrum" ) ;
735 instrument, extract_par, ipol_bp,&res1Deso_frame, rec_prefix));
736 xsh_msg(
"Merge orders with 1D frame" ) ;
738 merge_par,rec_prefix));
744 cpl_propertylist * plist = NULL ;
745 plist=cpl_propertylist_load(cpl_frame_get_filename(comb_frame),0) ;
754 if(frm_std_cat!=NULL && frm_atmext!=NULL
755 && resp_fit_points_cat_frame!= NULL) {
756 xsh_msg(
"Calling xsh_compute_response" ) ;
763 xsh_msg_warning(
"Some error occurred during order by order response computation");
772 resp_fit_points_cat_frame,
776 corr_tell )) == NULL) {
777 xsh_msg_warning(
"Some error occurred during merged response computation");
787 if (response_frame != NULL && frm_atmext != NULL) {
789 response_frame,merge_par,
instrument,rec_prefix,
790 &fluxcal_rect_2D_frame,&fluxcal_rect_1D_frame,
791 &fluxcal_2D_frame,&fluxcal_1D_frame));
796 if(response_frame != NULL && frm_atmext != NULL &&
797 disp_tab_frame != NULL && comb_eff_set != NULL) {
800 &combeffeso_frame,scale_nod));
802 xsh_msg(
"Extract 1D order-by-order spectrum" ) ;
805 &res1Deso_eff_frame, rec_prefix));
808 frm_atmext,high_abs_win,
813 if(model_config_frame!=NULL && wavemap != NULL&& slitmap != NULL) {
826 if(fluxcal_rect_2D_frame != NULL) {
839 if(frm_rejected != NULL ) {
842 if(response_ord_frame!=NULL) {
846 if(response_frame!=NULL) {
850 if(reference_response != NULL){
853 cpl_table* ref_resp = cpl_table_load(cpl_frame_get_filename(reference_response),1,0);
854 cpl_table* master_resp = cpl_table_load(cpl_frame_get_filename(response_frame),1,0);
855 if(ref_resp != NULL && master_resp != NULL){
875 cpl_image* itmp = cpl_image_load(cpl_frame_get_filename(res2D_frame),CPL_TYPE_DOUBLE,0,0);
877 cpl_image_delete(itmp);
898 if(fluxcal_2D_frame != NULL) {
965 return cpl_error_get_code();
static xsh_instrument * instrument
cpl_frame * xsh_combine_nod(cpl_frameset *nod_frames, xsh_combine_nod_param *nod_par, const char *tag, xsh_instrument *instrument, cpl_frame **res_frame_ext, const int scale_nod)
cpl_error_code xsh_monitor_spectrum1D_extra_qc(cpl_frame *in_frm, xsh_instrument *instrument, cpl_propertylist *qclist)
cpl_error_code xsh_monitor_spectrum1D_flux(cpl_frame *in_frm, xsh_instrument *instrument)
void xsh_prepare(cpl_frameset *frames, cpl_frame *bpmap, cpl_frame *mbias, const char *prefix, xsh_instrument *instr, const int pre_overscan_corr, const bool flag_neg_and_thresh_pix)
This function transform RAW frames dataset in PRE frames dataset attaching the default bad pixel map ...
#define assure(CONDITION, ERROR_CODE,...)
#define xsh_error_dump(level)
#define xsh_error_reset()
#define xsh_error_msg(...)
cpl_error_code xsh_instrument_nir_corr_if_JH(cpl_frameset *raws, xsh_instrument *instr)
const char * xsh_instrument_arm_tostring(xsh_instrument *i)
Get the string associated with an arm.
void xsh_instrument_free(xsh_instrument **instrument)
free an instrument structure
cpl_frame * xsh_localize_obj(cpl_frame *sci_frame, cpl_frame *skymask_frame, xsh_instrument *instrument, xsh_localize_obj_param *loc_obj_par, xsh_slit_limit_param *slit_limit_param, const char *fname)
Build the localization table.
cpl_frame * xsh_merge_ord(cpl_frame *sci_frame, xsh_instrument *instrument, int merge, const char *rec_prefix)
Merge orders of the rectified frame using merge parameters.
#define xsh_msg_warning(...)
Print an warning message.
#define xsh_msg_dbg_medium(...)
#define xsh_msg_error(...)
Print an error message.
#define xsh_msg(...)
Print a message on info level.
#define xsh_msg_dbg_low(...)
double xsh_pfits_get_exptime(const cpl_propertylist *plist)
find out the exposure time
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.
static int xsh_respon_slit_nod_create(cpl_plugin *)
Setup the recipe options.
static char xsh_respon_slit_nod_description[]
static cpl_error_code xsh_respon_slit_nod(cpl_parameterlist *, cpl_frameset *)
Interpret the command line options and execute the data processing.
static char xsh_respon_slit_nod_description_short[]
static int xsh_respon_slit_nod_exec(cpl_plugin *)
Execute the plugin instance given by the interface.
static int xsh_respon_slit_nod_destroy(cpl_plugin *)
Destroy what has been created by the 'create' function.
cpl_frameset * xsh_subtract_sky_nod(cpl_frameset *raws, xsh_instrument *instrument, int mode_fast)
void xsh_free_parameterlist(cpl_parameterlist **p)
Deallocate a parameter list and set the pointer to NULL.
cpl_error_code get_average_qc_from_raws(cpl_frameset *fset, xsh_instrument *instrument, cpl_propertylist *qclist)
void xsh_free_frame(cpl_frame **f)
Deallocate a frame and set the pointer to NULL.
void xsh_free_frameset(cpl_frameset **f)
Deallocate a frame set and set the pointer to NULL.
char * xsh_set_recipe_file_prefix(cpl_frameset *raw, const char *recipe)
Set recipe frames prefix.
cpl_error_code calc_curve_qc(cpl_image *im, xsh_instrument *instrument, cpl_propertylist *qclist)
const char * xsh_get_license(void)
Get the pipeline copyright and license.
cpl_error_code get_chromatic_eff(cpl_frame *eff, cpl_propertylist *qclist)
void xsh_init(void)
Reset library state.
cpl_frameset * xsh_order_frameset_by_date(cpl_frameset *frameset)
Order frameset by date.
cpl_error_code xsh_frame_table_monitor_flux_qc(cpl_frame *frm, const char *colw, const char *colf, const char *prefix, xsh_instrument *instrument)
Computes statistics on spectrum for QC.
cpl_error_code xsh_begin(cpl_frameset *frames, const cpl_parameterlist *parameters, xsh_instrument **instrument, cpl_frameset **raws, cpl_frameset **calib, const char *tag_list[], int tag_list_size, const char *recipe_id, unsigned int binary_version, const char *short_descr)
Recipe initialization.
cpl_error_code calc_resp_qc(cpl_table *mtab, cpl_table *rtab, xsh_instrument *instrument, int lower, int upper, const char *label, cpl_propertylist *qclist)
void xsh_free_propertylist(cpl_propertylist **p)
Deallocate a property list and set the pointer to NULL.
cpl_error_code xsh_end(const char *recipe_id, cpl_frameset *frames, cpl_parameterlist *parameters)
Recipe termination.
enum localize_method method
cpl_frame * xsh_compute_response_ord(cpl_frame *spectrum_frame, cpl_frame *flux_std_star_cat_frame, cpl_frame *atmos_ext_frame, cpl_frame *high_abs_win_frame, xsh_instrument *instrument, double exptime)
cpl_frame * xsh_compute_response2(cpl_frame *obs_std_star, cpl_frame *flux_std_star_cat, cpl_frame *atmos_ext, cpl_frame *high_abs, cpl_frame *resp_fit_points, cpl_frame *tell_mod_cat, xsh_instrument *instrument, double exptime, const int tell_corr)
cpl_error_code xsh_calib_nir_respon_corr_if_JH(cpl_frameset *calib, xsh_instrument *instr)
void xsh_add_product_pre(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instr, cpl_propertylist *qclist)
Add DFS keywords to a product frame.
cpl_error_code xsh_frameset_uniform_bin(cpl_frameset **raws, cpl_frameset **calib, xsh_instrument *instrument)
int xsh_print_rec_status(const int val)
Check if an error has happened and returns error kind and location.
cpl_boolean xsh_mode_is_physmod(cpl_frameset *set, xsh_instrument *instrument)
void xsh_add_product_image(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instrument, const char *final_prefix)
void xsh_add_product_table(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instrument, const char *final_prefix)
Save Table product (input frame has several extensions, 1 table per extension)
void xsh_add_product_spectrum(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instr, cpl_frame **result_frame, cpl_propertylist *qclist)
void xsh_add_product_orders_spectrum(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instr, cpl_frame **result_frame)
cpl_error_code xsh_add_afc_info(cpl_frame *frm_m, cpl_frame *frm_o)
cpl_frame * xsh_ensure_raws_number_is_even(cpl_frameset *raws)
Make sure input frames is an even number (eventually removes the last from the input list)
cpl_frame * xsh_find_frame_with_tag(cpl_frameset *frames, const char *tag, xsh_instrument *instr)
Find frame with a given tag.
cpl_error_code xsh_frameset_check_uniform_exptime(cpl_frameset *raws, xsh_instrument *inst)
#define XSH_OBJECT_SLIT_NOD
#define XSH_STD_TELL_SLIT_NOD
#define XSH_GET_TAG_FROM_ARM(TAG, instr)
#define XSH_RESP_FIT_POINTS_CAT
#define XSH_STD_FLUX_SLIT_NOD
void xsh_check_get_map(cpl_frame *disp_tab_frame, cpl_frame *order_tab_edges, cpl_frame *crhm_frame, cpl_frame *model_config_frame, cpl_frameset *calib, xsh_instrument *instrument, int do_computemap, int recipe_use_model, const char *rec_prefix, cpl_frame **wavemap_frame, cpl_frame **slitmap_frame)
Check function to get wave and slit maps.
void xsh_parameters_pre_overscan(const char *recipe_id, cpl_parameterlist *plist)
void xsh_parameters_new_boolean(cpl_parameterlist *list, const char *recipe_id, const char *name, int value, const char *comment)
void xsh_parameters_stack_create(const char *recipe_id, cpl_parameterlist *list, xsh_stack_param sp)
create the RON determination parameters in a parameters list
int xsh_parameters_get_boolean(const cpl_parameterlist *list, const char *recipe_id, const char *name)
xsh_stack_param * xsh_stack_frames_get(const char *recipe_id, cpl_parameterlist *list)
get the detect arclines parameters in a parameters list
cpl_error_code xsh_parameters_decode_bp(const char *recipe_id, cpl_parameterlist *plist, const int ival)
void xsh_parameters_combine_nod_create(const char *recipe_id, cpl_parameterlist *list, xsh_combine_nod_param p)
create the crh clipping parameters in a parameters list
void xsh_parameters_new_double(cpl_parameterlist *list, const char *recipe_id, const char *name, double value, const char *comment)
void xsh_parameters_localize_obj_create(const char *recipe_id, cpl_parameterlist *plist, xsh_localize_obj_param p)
void xsh_parameters_slit_limit_create(const char *recipe_id, cpl_parameterlist *list, xsh_slit_limit_param p)
xsh_interpolate_bp_param * xsh_parameters_interpolate_bp_get(const char *recipe_id, cpl_parameterlist *list)
void xsh_parameters_rectify_create(const char *recipe_id, cpl_parameterlist *plist, xsh_rectify_param p)
void xsh_parameters_interpolate_bp_create(const char *recipe_id, cpl_parameterlist *plist, xsh_interpolate_bp_param p)
void xsh_parameters_extract_create(const char *recipe_id, cpl_parameterlist *plist, xsh_extract_param p, enum extract_method method)
void xsh_parameters_remove_crh_single_create(const char *recipe_id, cpl_parameterlist *plist, xsh_remove_crh_single_param p)
int xsh_parameters_get_int(const cpl_parameterlist *list, const char *recipe_id, const char *name)
void xsh_parameters_generic(const char *recipe_id, cpl_parameterlist *plist)
cpl_error_code xsh_recipe_params_check(cpl_parameterlist *parameters, xsh_instrument *instrument, const char *rec_id)
void xsh_parameters_new_int(cpl_parameterlist *list, const char *recipe_id, const char *name, int value, const char *comment)
#define DECODE_BP_FLAG_NOD
#define XSH_FREE(POINTER)
cpl_frameset * xsh_nod_group_by_reloff(cpl_frameset *ord_set, xsh_instrument *instrument, xsh_stack_param *stack_par)
cpl_frameset * xsh_scired_slit_nod_accurate(cpl_frameset *nod_set, cpl_frame *spectral_format, cpl_frame *master_flat, cpl_frame *order_tab_edges, cpl_frame *wave_tab, cpl_frame *model_config_frame, cpl_frame *disp_tab_frame, cpl_frame *wavemap, cpl_frame *skymask_frame, xsh_instrument *instrument, xsh_remove_crh_single_param *crh_single_par, xsh_rectify_param *rectify_par, xsh_localize_obj_param *loc_obj_par, const char *throw_name, const int do_flatfield, const char *rec_prefix)
cpl_error_code xsh_respon_slit_nod_get_calibs(cpl_frameset *calib, xsh_instrument *instrument, cpl_frame **bpmap, cpl_frame **master_bias, cpl_frame **master_flat, cpl_frame **order_tab_edges, cpl_frame **wave_tab, cpl_frame **model_config_frame, cpl_frame **wavemap, cpl_frame **slitmap, cpl_frame **disp_tab_frame, cpl_frame **spectral_format, cpl_frame **skymask_frame, cpl_frame **response_ord_frame, cpl_frame **frm_atmext, int do_computemap, int use_skymask, int pscan, const char *rec_prefix, const char *recipe_id)
cpl_frameset * xsh_frameset_crh_single(cpl_frameset *raws, xsh_remove_crh_single_param *crh_single_par, cpl_frame *sky_map_frm, xsh_instrument *instrument, const char *prefix, const char *spec)
Generates a new frameset with each frame CRH-single rejected from input frameset.
cpl_error_code xsh_flux_calibrate(cpl_frame *rect2D, cpl_frame *rect1D, cpl_frame *atmext, cpl_frame *response, int mpar, xsh_instrument *inst, const char *rec_prefix, cpl_frame **fcal_rect_2D, cpl_frame **fcal_rect_1D, cpl_frame **fcal_2D, cpl_frame **fcal_1D)
cpl_frame * xsh_compute_efficiency(cpl_frame *mer1D, cpl_frame *std_cat, cpl_frame *atm_ext, cpl_frame *high_abs_win, xsh_instrument *instr)
cpl_error_code xsh_compute_resampling_accuracy(cpl_frame *wavemap, cpl_frame *slitmap, cpl_frame *order_tab_edges, cpl_frame *model_config, cpl_frame *science, xsh_instrument *instrument)
cpl_error_code xsh_compute_wavelength_resampling_accuracy(cpl_frame *wavemap, cpl_frame *order_tab_edges, cpl_frame *model_config, cpl_frame *science, xsh_instrument *instrument)
cpl_frameset * xsh_scired_slit_nod_fast(cpl_frameset *nod_set, cpl_frame *spectral_format, cpl_frame *master_flat, cpl_frame *order_tab_edges, cpl_frame *wave_tab, cpl_frame *model_config_frame, cpl_frame *disp_tab_frame, cpl_frame *wavemap, xsh_instrument *instrument, xsh_remove_crh_single_param *crh_single_par, xsh_rectify_param *rectify_par, const int do_flatfield, const int corr_sky, const int compute_eff, const char *rec_prefix, cpl_frameset **comb_eff_set)
cpl_error_code xsh_scired_nod_get_parameters(cpl_parameterlist *parameters, xsh_instrument *instrument, xsh_remove_crh_single_param **crh_single_par, xsh_rectify_param **rectify_par, xsh_extract_param **extract_par, xsh_combine_nod_param **combine_nod_par, xsh_slit_limit_param **slit_limit_par, xsh_localize_obj_param **loc_obj_par, int *rectify_fast, int *pscan, int *generate_sdp_format, const char *rec_id)