77#define RECIPE_ID "xsh_scired_slit_nod"
78#define RECIPE_AUTHOR "P.Goldoni, L.Guglielmi, R. Haigron, F. Royer, D. Bramich A. Modigliani"
79#define RECIPE_CONTACT "amodigli@eso.org"
100"Reduce science frames in SLIT configuration and nod mode";
103"This recipe reduces science exposure in SLIT configuration and NOD mode\n\
105 - A set of n Science frames ( n even ), \
106Tag = OBJECT_SLIT_NOD_arm\n\
107 - Spectral format table (Tag = SPECTRAL_FORMAT_TAB_arm)\n\
108 - [UVB,VIS] A master bias frame (Tag = MASTER_BIAS_arm)\n\
109 - A master flat frame (Tag = MASTER_FLAT_SLIT_arm)\n\
110 - An order table frame(Tag = ORDER_TABLE_EDGES_SLIT_arm)\n\
111 - [poly mode] A wave solution frame(Tag = WAVE_TAB_2D_arm)\n\
112 - [poly mode] A wave map frame(Tag = WAVE_MAP_arm)\n\
113 - [poly mode] A disp table frame(Tag = DISP_TAB_arm)\n\
114 - [physical model mode]A model cfg table (Format = TABLE, Tag = XSH_MOD_CFG_TAB_arm)\n\
115 - [OPTIONAL] A non-linear badpixel map (Tag = BP_MAP_NL_arm)\n\
116 - [OPTIONAL] A reference badpixel map (Tag = BP_MAP_RP_arm)\n\
117 - [OPTIONAL] The instrument response table (Tag = RESPONSE_MERGE1D_SLIT_arm)\n\
118 - [OPTIONAL] An atmospheric extinction table (Tag = ATMOS_EXT_arm)\n\
119 - [OPTIONAL] A telluric mask (Tag = TELL_MASK_arm)\n\
120 - [OPTIONAL] The instrument master response table (Tag = MRESPONSE_MERGE1D_SLIT_arm).\n\
121 If both master and individual response are provided the individual response is preferred.\n\
123 - PREFIX_ORDER2D_arm (2 dimension)\n\
124 - PREFIX_ORDER1D_arm (1 dimension)\n\
125 - PREFIX_MERGE2D_arm (2 dimension)\n\
126 - PREFIX_MERGE1D_arm (1 dimension)\n\
127 - PREFIX_WAVE_MAP_arm, wave map image\n\
128 - PREFIX_SLIT_MAP_arm, slit map image\n\
129 - [OPTIONAL, if response and atm ext are provided] PREFIX_FLUX_ORDER2D_arm (2 dimension)\n\
130 - [OPTIONAL, if response and atm ext are provided] PREFIX_FLUX_ORDER1D_arm (1 dimension)\n\
131 - [OPTIONAL, if response and atm ext are provided] PREFIX_FLUX_MERGE2D_arm (2 dimension)\n\
132 - [OPTIONAL, if response and atm ext are provided] PREFIX_FLUX_MERGE1D_arm (1 dimension)\n\
133 - where PREFIX is SCI, FLUX, TELL if input raw DPR.TYPE contains OBJECT or FLUX or TELLURIC";
149 cpl_recipe *recipe = NULL;
150 cpl_plugin *plugin = NULL;
152 recipe = cpl_calloc(1,
sizeof(*recipe));
153 if ( recipe == NULL ){
157 plugin = &recipe->interface ;
159 cpl_plugin_init(plugin,
162 CPL_PLUGIN_TYPE_RECIPE,
173 cpl_pluginlist_append(list, plugin);
175 return (cpl_error_get_code() != CPL_ERROR_NONE);
195 cpl_recipe *recipe = NULL;
226 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin");
229 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
230 CPL_ERROR_TYPE_MISMATCH,
231 "Plugin is not a recipe");
233 recipe = (cpl_recipe *)plugin;
236 recipe->parameters = cpl_parameterlist_new();
237 assure( recipe->parameters != NULL,
238 CPL_ERROR_ILLEGAL_OUTPUT,
239 "Memory allocation failed!");
249 recipe->parameters, crh_single));
255 "rectify-fast", TRUE,
256 "Fast if TRUE (Rect[B-A] = -Rect[A-B]), in that case only entire pixel shifts are applied. "));
268 "localize-nod-throw", loc_obj.
nod_step,
269 "Step (arcsec) between A and B images in nodding mode."));
278 recipe->parameters,ipol_par)) ;
286 slit_limit_param )) ;
288 "correct-sky-by-median", TRUE,
289 "TRUE if the resampled spectrum at each wavelength is median subtracted to remove sky lines"));
292 "cut-uvb-spectrum", TRUE,
293 "TRUE if recipe cuts the UVB spectrum at 556 nm (dichroich)"));
302 "generate-SDP-format", FALSE,
303 "TRUE if additional files should be generated in Science Data Product"
308 "dummy-association-keys", 0,
309 "Sets the number of dummy (empty) ASSONi, ASSOCi and ASSOMi keywords to"
318 "scale-combine-nod-method",1,
319 "frame scaling when nod frames are combined: 0 (no-scaling); 1 (scaling)"));
323 if ( cpl_error_get_code() != CPL_ERROR_NONE ){
341 cpl_recipe *recipe = NULL;
345 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
348 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
349 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
351 recipe = (cpl_recipe *)plugin;
357 if ( cpl_error_get_code() != CPL_ERROR_NONE ) {
376 cpl_recipe *recipe = NULL;
381 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
384 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
385 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
387 recipe = (cpl_recipe *)plugin;
392 if (cpl_error_get_code() != CPL_ERROR_NONE)
402static void change_file_name( cpl_frame * frame,
const char * name )
404 const char * old_name ;
407 old_name = cpl_frame_get_filename( frame ) ;
409 cpl_frame_set_filename( frame, name ) ;
427 cpl_frame* frame=NULL;
428 const char* name=NULL;
429 cpl_propertylist* plist=NULL;
433 nraw=cpl_frameset_get_size(raws);
437 check(frame=cpl_frameset_get_frame(raws,0));
438 check(name=cpl_frame_get_filename(frame));
439 check(plist=cpl_propertylist_load(name,0));
508 cpl_frameset* frameset)
511 int recipe_tags_size = 3;
514 cpl_frameset *raws = NULL;
515 cpl_frameset *raws_ord_set = NULL;
516 cpl_frameset *calib = NULL;
517 cpl_frameset *usedframes = NULL;
520 cpl_frame* bpmap = NULL;
521 cpl_frame *master_bias = NULL;
522 cpl_frame* master_flat = NULL;
523 cpl_frame* order_tab_edges = NULL;
524 cpl_frame * wave_tab = NULL ;
525 cpl_frame * model_config_frame = NULL;
526 cpl_frame * wavemap = NULL;
527 cpl_frame * spectral_format = NULL;
528 cpl_frame *tellmask_frame = NULL;
531 int rectify_fast = 0 ;
554 cpl_frameset* raws_avg=NULL;
555 cpl_frame* disp_tab_frame=NULL;
556 cpl_frame* slitmap=NULL;
557 cpl_frame *skymask_frame = NULL;
560 int do_flatfield = CPL_TRUE;
562 char *rec_prefix = NULL;
564 cpl_frameset *nod_set = NULL;
565 cpl_frameset *comb_set = NULL;
566 cpl_frameset *comb_eff_set = NULL;
567 cpl_frame *comb_frame = NULL;
568 cpl_frame *combeso_frame = NULL;
569 cpl_frame *res2D_frame = NULL;
570 cpl_frame *loc_table_frame = NULL;
571 cpl_frame *res1D_frame = NULL;
572 cpl_frame *res1Deso_frame = NULL;
573 cpl_frame *s1D_frame = NULL;
574 cpl_frame* response_ord_frame=NULL;
575 cpl_frame * fluxcal_1D_frame = NULL ;
576 cpl_frame * fluxcal_2D_frame = NULL ;
577 cpl_frame * fluxcal_rect_1D_frame = NULL ;
578 cpl_frame * fluxcal_rect_2D_frame = NULL ;
579 cpl_frame * fluxframe = NULL;
580 cpl_frame * uncalframe = NULL;
581 cpl_frame* sky_map_frm = NULL;
582 cpl_frame* frm_atmext=NULL;
583 int pre_overscan_corr=0;
584 int generate_sdp_format=0;
587 int cut_uvb_spectrum=0;
590 cpl_frame* frm_rejected=NULL;
591 cpl_propertylist* qclist = cpl_propertylist_new();
597 recipe_tags, recipe_tags_size,
RECIPE_ID,
603 "Instrument NOT in Slit Mode");
619 check( nb_raw_frames = cpl_frameset_get_size( raws));
643 &crh_single_par, &rectify_par,
646 &slit_limit_par, &loc_obj_par,
647 &rectify_fast, &pre_overscan_corr,
648 &generate_sdp_format,
653 "correct-sky-by-median"));
655 "scale-combine-nod-method"));
661 cpl_msg_info(__func__,
" Now have crh_single to %f, %f, %f, %d",
671 &bpmap,&master_bias,&master_flat,
672 &order_tab_edges,&wave_tab,
673 &model_config_frame,&wavemap,&slitmap,
687 xsh_error_msg(
"Mode accurate can not be use with localize-method MANUAL");
703 cpl_frameset* crh_clean=NULL;
729 do_flatfield,corr_sky,1,
760 sprintf( comb_tag,
"%s_%s",
763 comb_tag,
instrument,&combeso_frame,scale_nod));
767 merge_par,rec_prefix));
772 xsh_msg(
"Re-Localize before extraction" ) ;
774 loc_obj_par, slit_limit_par,
"LOCALIZE.fits"));
777 xsh_msg(
"Extract 1D order-by-order spectrum" ) ;
779 instrument, extract_par, ipol_bp, &res1Deso_frame, rec_prefix));
780 xsh_msg(
"Merge orders with 1D frame" ) ;
782 merge_par,rec_prefix));
787 if(response_ord_frame != NULL && frm_atmext != NULL) {
789 response_ord_frame,merge_par,
instrument,rec_prefix,
790 &fluxcal_rect_2D_frame,&fluxcal_rect_1D_frame,
791 &fluxcal_2D_frame,&fluxcal_1D_frame));
796 if(model_config_frame!=NULL && wavemap != NULL&& slitmap != NULL) {
809 if(fluxcal_rect_2D_frame != NULL) {
821 if(cut_uvb_spectrum) {
827 if(fluxcal_rect_2D_frame != NULL) {
838 usedframes = cpl_frameset_duplicate(frameset);
847 cpl_image* itmp = cpl_image_load(cpl_frame_get_filename(res2D_frame),CPL_TYPE_DOUBLE,0,0);
849 cpl_image_delete(itmp);
856 if(fluxcal_2D_frame != NULL) {
876 if(fluxcal_2D_frame != NULL) {
887 if (generate_sdp_format) {
888 cpl_frame * fluxframe_copy = fluxframe;
889 cpl_frame * uncalframe_copy = uncalframe;
890 if (fluxframe != NULL) {
891 check( cpl_frameset_insert(usedframes, fluxframe) );
895 if (uncalframe != NULL) {
896 check( cpl_frameset_insert(usedframes, uncalframe) );
903 if (fluxframe_copy != NULL) {
904 check( cpl_frameset_erase_frame(usedframes, fluxframe_copy) );
906 if (uncalframe_copy != NULL) {
907 check( cpl_frameset_erase_frame(usedframes, uncalframe_copy) );
958 cpl_propertylist_delete(qclist);
static xsh_instrument * instrument
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.
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)
void xsh_mark_tell(cpl_frame *s1d_frame, cpl_frame *tellmask_frame)
Mark telluric in spectrum.
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)
cpl_error_code xsh_spectrum_cut_dichroic_uvb(cpl_frame *frame1d)
cpl_error_code xsh_spectrum_orders_cut_dichroic_uvb(cpl_frame *frame1d, xsh_instrument *instr)
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 XSH_ASSURE_NOT_NULL_MSG(pointer, msg)
#define assure(CONDITION, ERROR_CODE,...)
#define xsh_error_dump(level)
#define xsh_error_reset()
#define XSH_ASSURE_NOT_ILLEGAL_MSG(cond, msg)
#define xsh_error_msg(...)
cpl_error_code xsh_instrument_nir_corr_if_JH(cpl_frameset *raws, xsh_instrument *instr)
XSH_ARM xsh_instrument_get_arm(xsh_instrument *i)
Get an arm on instrument structure.
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(...)
Print a message on info level.
#define xsh_msg_dbg_low(...)
int xsh_pfits_get_binx(const cpl_propertylist *plist)
find out the BINX value
int xsh_pfits_get_biny(const cpl_propertylist *plist)
find out the BINY value
static int xsh_scired_slit_nod_exec(cpl_plugin *)
Execute the plugin instance given by the interface.
static char xsh_scired_slit_nod_description[]
static void xsh_scired_slit_nod(cpl_parameterlist *, cpl_frameset *)
Corrects input parameters for binning.
static int xsh_scired_slit_nod_destroy(cpl_plugin *)
Destroy what has been created by the 'create' function.
static char xsh_scired_slit_nod_description_short[]
static int xsh_scired_slit_nod_create(cpl_plugin *)
Setup the recipe options.
static void xsh_get_binning(cpl_frameset *raws, int *binx, int *biny)
set binning
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.
char * xsh_stringcat_any(const char *s,...)
Concatenate an arbitrary number of strings.
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_remove_crh_single_params_set_defaults(cpl_parameterlist *pars, const char *rec_id, xsh_instrument *inst, xsh_remove_crh_single_param *crh_single_par)
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.
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
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.
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_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)
void xsh_add_sdp_product_spectrum(const cpl_frame *flux_cal_frame, const cpl_frame *uncal_frame, cpl_frameset *frameset, const cpl_frameset *usedframes, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instrument, cpl_propertylist *qclist)
Creates a 1D spectrum product in the Science Data Product format.
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_STD_FLUX_SLIT_NOD
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)
xsh_bary_corr_param * xsh_parameters_bary_corr_get(const char *recipe_id, cpl_parameterlist *list)
get the barycentric correction parameters in a parameters list
void xsh_parameters_bary_corr_create(const char *recipe_id, cpl_parameterlist *list, xsh_bary_corr_param p)
create the barycentric correction parameters in a parameters list
void xsh_parameters_remove_crh_single_create(const char *recipe_id, cpl_parameterlist *plist, xsh_remove_crh_single_param p)
int xsh_parameters_cut_uvb_spectrum_get(const char *recipe_id, const cpl_parameterlist *list)
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_error_code xsh_image_cut_dichroic_uvb(cpl_frame *frame1d)
cpl_error_code xsh_scired_slit_nod_get_calibs(cpl_frameset *raws, 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_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_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_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)