70#define RECIPE_ID "xsh_scired_ifu_offset_drl"
71#define RECIPE_AUTHOR "P.Goldoni, L.Guglielmi, R. Haigron, F. Royer"
72#define RECIPE_CONTACT "amodigli@eso.org"
93"Reduce science exposure in IFU configuration and on/off mode";
96"This recipe reduces science exposure in IFU configuration and on/off mode\n\
98 - A set of 2xn Science frames, \
99 Tag = OBJECT_IFU_OFFSET_arm, SKY_IFU_arm\n\
100 - A spectral format table (Tag = SPECTRAL_FORMAT_TAB_arm)\n\
101 - A master flat frame (Tag = MASTER_FLAT_IFU_arm)\n\
102 - An order table frame(Tag = ORDER_TABLE_EDGES_IFU_arm)\n\
103 - 3 wave solution frames, one per slitlet (Tag = WAVE_TAB_ARC_IFU_slitlet_arm)\n\
104 where 'slitlet' is DOWN, CEN or UP\n\
105 - [OPTIONAL] A dispersion table (Tag = DISP_TAB_IFU_arm)\n\
106 - [OPTIONAL] A badpixel map (Tag = BADPIXEL_MAP_arm)\n\
108 - 3 Spectrum order tables 2D (1 per slitlet), PRO.CATG=ORDER2D_slitlet_IFU_arm\n\
109 - 3 Spectrum order tables 1D (1 per slitlet), PRO.CATG=ORDER1D_slitlet_IFU_arm\n\
110 - 3 Spectrum merge tables 2D (1 per slitlet), PRO.CATG=MERGE2D_slitlet_IFU_arm\n\
111 - 3 Spectrum merge tables 1D (1 per slitlet), PRO.CATG=MERGE1D_slitlet_IFU_arm\n\
112 - 1 Spectrum merge 3D, PRO.CATG=MERGE3D_IFU_arm\n" ;
129 cpl_recipe *recipe = NULL;
130 cpl_plugin *plugin = NULL;
132 recipe = cpl_calloc(1,
sizeof(*recipe));
133 if ( recipe == NULL ){
137 plugin = &recipe->interface ;
139 cpl_plugin_init(plugin,
142 CPL_PLUGIN_TYPE_RECIPE,
153 cpl_pluginlist_append(list, plugin);
155 return (cpl_error_get_code() != CPL_ERROR_NONE);
171 cpl_recipe *recipe = NULL;
172 cpl_parameter* p=NULL;
174 char recipename[256];
197 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin");
199 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
200 CPL_ERROR_TYPE_MISMATCH,
201 "Plugin is not a recipe");
203 recipe = (cpl_recipe *)plugin;
206 recipe->parameters = cpl_parameterlist_new();
207 assure( recipe->parameters != NULL,
208 CPL_ERROR_ILLEGAL_OUTPUT,
209 "Memory allocation failed!");
238 recipe->parameters,ipol_par)) ;
245 "shift-offsettab-low", 0.0,
246 "Global shift of the lower slitlet slit positions, relative to the central one[arcsec]."));
248 "shift-offsettab-up", 0.0,
249 "Global shift of the upper slitlet slit positions, relative to the central one[arcsec]."));
253 "if TRUE recompute (wave and slit) maps from the dispersion solution. If sky-subtract is set to TRUE this must be set to TRUE."));
257 "Input AFC corrected model/wave solution and science frame check."\
258 "If TRUE the recipe verify that the input mode/wave solution is AFC corrected,"\
259 " its INS.OPTIi.NAME is 'Pin_0.5 ', and its OBS.ID and OBS.TARG.NAME values"\
260 " matches with the corresponding values of the science frame."));
263 sprintf(paramname,
"%s.%s",recipename,
"flat-method");
264 check( p = cpl_parameter_new_enum( paramname,CPL_TYPE_STRING,
265 "method adopted for flat:",
267 2,
"master",
"blaze"));
269 check(cpl_parameter_set_alias( p,CPL_PARAMETER_MODE_CLI,
271 check(cpl_parameterlist_append( recipe->parameters, p));
274 if ( cpl_error_get_code() != CPL_ERROR_NONE ){
292 cpl_recipe *recipe = NULL;
296 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin");
299 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
300 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
302 recipe = (cpl_recipe *)plugin;
308 if ( cpl_error_get_code() != CPL_ERROR_NONE ) {
332 xsh_msg_dbg_low(
"rectify params: radius=%g bin_lambda=%g bin_space=%g",
339 return cpl_error_get_code();
357 cpl_frame* frame=NULL;
358 const char* name=NULL;
359 cpl_propertylist* plist=NULL;
363 check(frame=cpl_frameset_get_frame(raws,0));
364 check(name=cpl_frame_get_filename(frame));
365 check(plist=cpl_propertylist_load(name,0));
418 return cpl_error_get_code();
432 cpl_recipe *recipe = NULL;
437 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
440 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
441 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
443 recipe = (cpl_recipe *)plugin;
448 if (cpl_error_get_code() != CPL_ERROR_NONE)
468 cpl_frameset* frameset)
471 int recipe_tags_size = 4;
474 cpl_frameset* raws = NULL;
475 cpl_frameset* calib = NULL;
478 cpl_frame* bpmap = NULL;
479 cpl_frame * master_bias = NULL ;
480 cpl_frame * master_dark = NULL ;
481 cpl_frame* master_flat = NULL;
482 cpl_frame* order_tab_edges = NULL;
483 cpl_frameset *wavetab_frameset = NULL ;
484 cpl_frameset *shiftifu_frameset = NULL;
485 cpl_frameset *nshiftifu_frameset = NULL;
486 cpl_frame * model_config_frame = NULL ;
487 cpl_frame * wavemap_frame = NULL ;
488 cpl_frame * slitmap_frame = NULL;
489 cpl_frame * spectral_format = NULL ;
490 cpl_frame *disp_tab_frame = NULL;
491 cpl_frameset * object_frameset = NULL, * sky_frameset = NULL ;
500 double offset_low =0.0;
501 double offset_up =0.0;
503 int recipe_use_model = FALSE;
504 int do_computemap = 0;
505 int check_afc = TRUE;
513 cpl_frameset * sub_frameset = NULL ;
514 cpl_frameset * rmbkg_frameset = NULL ;
516 cpl_frameset * nocrh_frameset = NULL;
517 cpl_frameset * clean_frameset = NULL ;
519 cpl_frame * first_frame = NULL;
520 cpl_frame * comb_frame = NULL ;
521 cpl_frameset * rect2_frameset = NULL ;
525 cpl_frameset * res_1D_frameset = NULL ;
526 cpl_frameset * res_2D_frameset = NULL ;
527 cpl_frame * data_cube = NULL ;
528 cpl_frameset * ext_frameset = NULL ;
529 cpl_frameset * ext_frameset_tables = NULL ;
532 char file_name[256], arm_str[16] ;
534 cpl_frame* grid_back=NULL;
535 cpl_frame* frame_backg=NULL;
536 cpl_frameset * ext_frameset_images = NULL ;
537 cpl_frameset * rect2_frameset_tables = NULL ;
538 cpl_frameset * rect2_frameset_tab=NULL;
539 cpl_frameset * rect2_frameset_eso=NULL;
540 char *rec_prefix = NULL;
541 int pre_overscan_corr=0;
543 char* flat_method = NULL;
544 cpl_frame * blaze_frame = NULL;
545 cpl_propertylist* plist=NULL;
546 const char* name=NULL;
549 cpl_frame* qc_trace_frame=NULL;
551 const int peack_search_hsize=5;
560 recipe_tags, recipe_tags_size,
565 "Instrument NOT in Ifu Mode" ) ;
570 check( nb_raw_frames = cpl_frameset_get_size( raws ) ) ;
574 int even_nb = nb_raw_frames % 2 ;
631 if ( model_config_frame == NULL){
632 xsh_msg(
"RECIPE USE WAVE SOLUTION");
633 recipe_use_model = FALSE;
637 recipe_use_model = TRUE;
641 (model_config_frame == NULL && wavetab_frameset != NULL ) );
678 if ( do_computemap && recipe_use_model==FALSE){
691 "shift-offsettab-low"));
694 "shift-offsettab-up"));
697 if ( shiftifu_frameset != NULL){
698 xsh_msg(
"offset low %f up %f", offset_low, offset_up);
700 offset_low, offset_up));
713 check( first_frame = cpl_frameset_get_frame( raws, 0));
717 first_frame, model_config_frame, calib,
instrument,
718 do_computemap, recipe_use_model, rec_prefix,
719 &wavemap_frame, &slitmap_frame));
729 for( i = 0 ; i<nb_sub_frames ; i++ ) {
730 cpl_frame *frame = NULL;
732 frame = cpl_frameset_get_frame( object_frameset, i );
734 frame, wavetab_frameset, order_tab_edges, disp_tab_frame,
740 for( i = 0 ; i<nb_sub_frames ; i++ ) {
741 cpl_frame *frame = NULL;
743 frame = cpl_frameset_get_frame( sky_frameset, i );
745 frame, wavetab_frameset, order_tab_edges, disp_tab_frame,
753 check( rmbkg_frameset = cpl_frameset_new() ) ;
754 check( nocrh_frameset = cpl_frameset_new() ) ;
755 check( clean_frameset = cpl_frameset_new() ) ;
761 for( i = 0 ; i<nb_sub_frames ; i++ ) {
762 cpl_frame * a_b = NULL ;
763 cpl_frame * rm_bkg = NULL ;
766 sprintf( str,
"%d", i ) ;
767 a_b = cpl_frameset_get_frame( sub_frameset, i ) ;
770 xsh_msg(
"Subtract inter-order background %d", i );
771 sprintf(file_name,
"%s%s",rec_prefix, str) ;
776 file_name,&grid_back,
777 &frame_backg,0,0,0));
779 check( cpl_frameset_insert( rmbkg_frameset, rm_bkg ) ) ;
785 if ( strcmp( flat_method,
"master") != 0){
786 xsh_msg(
"---Create blaze image");
791 if ( nb_sub_frames < 3 && crh_single_par->nb_iter > 0 ) {
792 xsh_msg(
"Less than 3 frames AND crh_single_niter > 0" ) ;
793 for ( i = 0 ; i < nb_sub_frames ; i++ ) {
794 cpl_frame * divided = NULL ;
795 cpl_frame * rm_crh = NULL ;
796 cpl_frame * a_b = NULL ;
798 check( a_b = cpl_frameset_get_frame( rmbkg_frameset, i ) ) ;
799 sprintf( file_tag,
"NO_CRH_IFU_OFFSET_%s%d", arm_str,i);
800 xsh_msg(
"Remove crh (single frame)" );
804 check( cpl_frameset_insert( nocrh_frameset, rm_crh));
807 sprintf( file_tag,
"FF_IFU_OFFSET_%s%d", arm_str, i);
808 if ( strcmp( flat_method,
"master") == 0){
817 check( cpl_frameset_insert( clean_frameset, divided));
820 else for( i = 0 ; i < nb_sub_frames ; i++ ) {
821 cpl_frame * divided = NULL ;
822 cpl_frame * a_b = NULL ;
825 a_b = cpl_frameset_get_frame( rmbkg_frameset, i ) ;
829 sprintf( file_tag,
"FF_IFU_OFFSET_%s%d", arm_str, i);
831 if ( strcmp( flat_method,
"master") == 0){
839 check( cpl_frameset_insert( clean_frameset, divided ) ) ;
844 xsh_msg(
"Combining all frames" );
845 sprintf( file_tag,
"COMBINED_IFU_OFFSET_%s_ALL", arm_str);
854 xsh_msg(
"Rectify combined frame" ) ;
855 rect2_frameset_eso=cpl_frameset_new();
856 rect2_frameset_tab=cpl_frameset_new();
863 slitmap_frame, &rect2_frameset_eso,
864 &rect2_frameset_tab,rec_prefix));
869 loc_table_frameset == NULL ) {
870 xsh_msg(
"Localize obj ifu frame" ) ;
873 loc_obj_par, NULL) ) ;
876 xsh_msg(
"Extract ifu frame" ) ;
881 xsh_msg(
"Merge orders with 1D frame" ) ;
885 merge_par,rec_prefix ));
891 xsh_msg(
"Merge orders with 2D frame" ) ;
893 merge_par,rec_prefix ));
897 xsh_msg(
"Saving Products for IFU" ) ;
901 name=cpl_frame_get_filename(data_cube);
902 plist=cpl_propertylist_load(name,0);
919 xsh_msg(
"Saving Products for IFU" ) ;
921 for( i = 0 ; i<3 ; i++ ) {
922 cpl_frame * rec_frame = NULL ;
923 cpl_frame * ext_frame = NULL ;
924 cpl_frame * res1d_frame = NULL ;
925 cpl_frame * res2d_frame = NULL ;
927 check( rec_frame = cpl_frameset_get_frame( rect_frameset_eso, i ) ) ;
928 xsh_msg(
"Product from '%s' [%s]",
929 cpl_frame_get_filename( rec_frame ),
930 cpl_frame_get_tag( rec_frame ) ) ;
934 check( ext_frame = cpl_frameset_get_frame( ext_frameset_images, i ) ) ;
935 xsh_msg(
"Product from '%s' [%s]",
936 cpl_frame_get_filename( ext_frame ),
937 cpl_frame_get_tag( ext_frame ) ) ;
941 check( res2d_frame = cpl_frameset_get_frame( res_2D_frameset, i ) ) ;
942 xsh_msg(
"Product from '%s' [%s]",
943 cpl_frame_get_filename( res2d_frame ),
944 cpl_frame_get_tag( res2d_frame ) ) ;
949 check( res1d_frame = cpl_frameset_get_frame( res_1D_frameset, i ) ) ;
953 xsh_msg(
"Product from '%s' [%s]",
954 cpl_frame_get_filename( res1d_frame ),
955 cpl_frame_get_tag( res1d_frame ) ) ;
963 xsh_msg(
"Product from '%s' [%s]",
964 cpl_frame_get_filename( data_cube ),
965 cpl_frame_get_tag( data_cube ) ) ;
static xsh_instrument * instrument
cpl_frame * xsh_divide_by_blaze(cpl_frame *pre_frame, cpl_frame *blaze_frame, xsh_instrument *instrument)
Divide a pre image by the blaze image.
cpl_frame * xsh_blaze_image(cpl_frame *masterflat_frame, cpl_frame *order_frame, xsh_instrument *instrument)
Normalize a master flat frame order by order.
cpl_error_code xsh_monitor_spectrum1D_flux(cpl_frame *in_frm, xsh_instrument *instrument)
cpl_frame * xsh_divide_flat(cpl_frame *frame, cpl_frame *flat, const char *tag, xsh_instrument *instr)
divide PRE frame with the master FLAT frame
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_ILLEGAL(cond)
#define assure(CONDITION, ERROR_CODE,...)
#define xsh_error_dump(level)
#define xsh_error_reset()
const char * xsh_instrument_arm_tostring(xsh_instrument *i)
Get the string associated with an arm.
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_frameset * xsh_localize_obj_ifu(cpl_frameset *sci_frame, cpl_frame *skymask_frame, xsh_instrument *instrument, xsh_localize_obj_param *loc_obj_par, xsh_slit_limit_param *slit_limit_param)
cpl_frameset * xsh_merge_ord_ifu(cpl_frameset *rec_frameset, xsh_instrument *instrument, int merge_par, const char *rec_prefix)
Merge orders of the rectified frame using merge parameters.
#define xsh_msg_warning(...)
Print an warning message.
#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
int xsh_pfits_get_naxis2(const cpl_propertylist *plist)
find out the NAXIS2 value
cpl_frameset * xsh_rectify_ifu(cpl_frame *sci_frame, cpl_frame *order_table_frame, cpl_frameset *wavesol_frame_set, cpl_frameset *shiftifu_frameset, cpl_frame *model_config_frame, xsh_instrument *instrument, xsh_rectify_param *rectify_par, cpl_frame *spectral_format, cpl_frame *slitmap_frame, cpl_frameset **rec_frameset_ext, cpl_frameset **rec_frameset_tab, const char *rec_prefix)
cpl_frame * xsh_combine_offset(cpl_frameset *rawFrames, const char *result_name, xsh_stack_param *stack_par, xsh_instrument *instr, cpl_imagelist **list, cpl_image **crh_ima, const int save_tmp)
cpl_frame * xsh_remove_crh_single(cpl_frame *sci_frame, xsh_instrument *instrument, cpl_mask *sky_map, xsh_remove_crh_single_param *single_par, const char *name)
Remove cosmic rays from a single frame.
static cpl_error_code xsh_params_monitor(xsh_background_param *backg, xsh_rectify_param *rectify_par, xsh_localize_obj_param *loc_obj_par)
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.
static char xsh_scired_ifu_offset_description[]
static int xsh_scired_ifu_offset_exec(cpl_plugin *)
Execute the plugin instance given by the interface.
static cpl_error_code xsh_params_bin_scale(cpl_frameset *raws, xsh_background_param *backg)
scale relevant input parameters for binning
static char xsh_scired_ifu_offset_description_short[]
static int xsh_scired_ifu_offset_destroy(cpl_plugin *)
Destroy what has been created by the 'create' function.
static void xsh_scired_ifu_offset(cpl_parameterlist *, cpl_frameset *)
Interpret the command line options and execute the data processing.
static int xsh_scired_ifu_offset_create(cpl_plugin *)
Setup the recipe options.
cpl_frameset * xsh_subtract_sky_offset(cpl_frameset *object_raws, cpl_frameset *sky_raws, int nraws, xsh_instrument *instrument)
cpl_frame * xsh_subtract_background(cpl_frame *frame, cpl_frame *ordertable, xsh_background_param *bckg, xsh_instrument *instr, const char *prefix, cpl_frame **grid_frame, cpl_frame **frame_backg, const int save_bkg, const int save_grid, const int save_sub_bkg)
Subtract the inter-order background from PRE frame.
void xsh_free_parameterlist(cpl_parameterlist **p)
Deallocate a parameter list and set the pointer to NULL.
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.
const char * xsh_get_license(void)
Get the pipeline copyright and license.
void xsh_init(void)
Reset library state.
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 xsh_rectify_params_set_defaults(cpl_parameterlist *pars, const char *rec_id, xsh_instrument *inst, xsh_rectify_param *rectify_par)
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.
cpl_frame * xsh_find_spectral_format(cpl_frameset *frames, xsh_instrument *instr)
Find spectral format frame.
int xsh_dfs_split_offset(cpl_frameset *input, const char *object_tag, const char *sky_tag, cpl_frameset **object, cpl_frameset **sky)
split input RAW offset sof in OBJECT_... and SKY_... framesets
cpl_frame * xsh_find_disp_tab(cpl_frameset *frames, xsh_instrument *instr)
Find Dispersol tab frame. The frame returned should not be free by the caller.
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_frameset * xsh_frameset_ext_table_frames(cpl_frameset *set)
Extract frameset sub set containing only table frames.
cpl_frame * xsh_find_order_tab_edges(cpl_frameset *frames, xsh_instrument *instr)
Find an order tab EDGES.
void xsh_add_product_pre_3d(cpl_frame *frame, cpl_frameset *frameset, const cpl_parameterlist *parameters, const char *recipe_id, xsh_instrument *instr)
Add 3d 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_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)
cpl_frameset * xsh_find_wave_tab_ifu(cpl_frameset *frames, xsh_instrument *instrument)
Find wave tab ARC (for IFU 3 frames)
cpl_frameset * xsh_find_offset_tab_ifu(cpl_frameset *frames, xsh_instrument *instr)
Find offset tab (One for each slitlet)
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)
cpl_frameset * xsh_frameset_ext_image_frames(cpl_frameset *set)
Extract frameset sub set containing only table frames.
cpl_error_code xsh_ensure_raws_input_offset_recipe_is_proper(cpl_frameset **raws, xsh_instrument *instrument)
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_frame * xsh_find_master_flat(cpl_frameset *frames, xsh_instrument *instr)
Find master flat frame.
cpl_frame * xsh_find_master_bpmap(cpl_frameset *set)
find the master bad pixel map in a set of files
#define XSH_MOD_CFG_OPT_AFC
#define XSH_STD_FLUX_IFU_OFFSET
#define XSH_STD_TELL_IFU_OFFSET
#define XSH_SLIT_BIN_SIZE_PIPE_NIR
#define XSH_WAVE_BIN_SIZE_PIPE_NIR
#define XSH_OBJECT_IFU_OFFSET
void xsh_check_afc(int check_flag, cpl_frame *model_frame, cpl_frame *sci_frame, cpl_frameset *wave_frameset, cpl_frame *order_tab_frame, cpl_frame *disp_tab_frame, xsh_instrument *instrument)
Check AFC frame.
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
double xsh_parameters_get_double(const cpl_parameterlist *list, const char *recipe_id, const char *name)
cpl_error_code xsh_parameters_decode_bp(const char *recipe_id, cpl_parameterlist *plist, const int ival)
xsh_localize_obj_param * xsh_parameters_localize_obj_get(const char *recipe_id, cpl_parameterlist *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_clipping_crh_create(const char *recipe_id, cpl_parameterlist *list, xsh_clipping_param p)
create the crh clipping parameters in a parameters list
xsh_extract_param * xsh_parameters_extract_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_background_create(const char *recipe_id, cpl_parameterlist *list)
create the subtract background parameters in a parameters list
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
xsh_rectify_param * xsh_parameters_rectify_get(const char *recipe_id, cpl_parameterlist *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)
xsh_remove_crh_single_param * xsh_parameters_remove_crh_single_get(const char *recipe_id, cpl_parameterlist *list)
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)
xsh_background_param * xsh_parameters_background_get(const char *recipe_id, cpl_parameterlist *list)
get the background parameters in a parameters list
char * xsh_parameters_get_string(const cpl_parameterlist *list, const char *recipe_id, const char *name)
#define XSH_FREE(POINTER)
cpl_frameset * xsh_shift_offsettab(cpl_frameset *shiftifu_frameset, double offset_low, double offset_up)
Do a wavelet decomposition using atrous from IDL.
cpl_frame * xsh_cube_qc_trace_window(cpl_frame *frm_cube, xsh_instrument *instrument, const char *suffix, const char *rec_prefix, const int win_min, const int win_max, const int hsize, const int method, const int compute_qc)
Trace object position in a cube.