75#define RECIPE_ID "xsh_geom_ifu"
76#define RECIPE_AUTHOR "P.Goldoni, L.Guglielmi, R. Haigron, F. Royer"
77#define RECIPE_CONTACT "regis.haigron@obspm.fr"
79#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_UVB 0.16
80#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_VIS 0.16
81#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_NIR 0.2
82#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_UVB 0.04
83#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_VIS 0.04
84#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_NIR 0.1
103static void xsh_geom_ifu(cpl_parameterlist *, cpl_frameset *);
109"Produces the spatial geometry of the IFU pattern on the sky";
112"This recipe Produces the spatial geometry of the IFU pattern on the sky\n\
114 - A set of n science frames ( n == 1 or >=3, Tag = TRACE_arm)\n\
115 - [UVB,VIS] A master bias frame (Tag = MASTER_BIAS_arm)\n\
116 - [OPTIONAL] A master dark frame (Tag = MASTER_DARK_arm)\n\
117 - A master flat frame (Tag = MASTER_FLAT_IFU_arm)\n\
118 - An AFC corrected model order edges table for IFU frame (Tag = ORDER_TAB_AFC_IFU_arm)\n\
119 - [PHYSMOD] An AFC corrected model cfg frame (Tag = XSH_MOD_CFG_OPT_AFC_arm)\n\
120 - [POLY] An AFC corrected model wavesol frame (Tag = WAVE_TAB_AFC_arm)\n\
121 - An AFC corrected dispersion solution frame (Tag = DISP_TAB_AFC_arm)\n\
122 - [OPTIONAL] A badpixel map (Tag = BADPIXEL_MAP_arm)\n\
124 - A set of shift offset tables (Tag = OFFSET_TAB_slitlet_IFU_arm)\n" ;
141 cpl_recipe *recipe = NULL;
142 cpl_plugin *plugin = NULL;
144 recipe = cpl_calloc(1,
sizeof(*recipe));
145 if ( recipe == NULL ){
149 plugin = &recipe->interface ;
151 cpl_plugin_init(plugin,
154 CPL_PLUGIN_TYPE_RECIPE,
165 cpl_pluginlist_append(list, plugin);
167 return (cpl_error_get_code() != CPL_ERROR_NONE);
183 cpl_recipe *recipe = NULL;
184 cpl_parameter* p =NULL;
186 char recipename[256];
191 CPL_KERNEL_DEFAULT, 4,
196 { 3, 5, 2, 0.05, 0.95, 0.05, 0.95, 0.0, 0.0, 0, FALSE, 50};
204 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin");
207 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
208 CPL_ERROR_TYPE_MISMATCH,
209 "Plugin is not a recipe");
211 recipe = (cpl_recipe *)plugin;
214 recipe->parameters = cpl_parameterlist_new();
215 assure( recipe->parameters != NULL,
216 CPL_ERROR_ILLEGAL_OUTPUT,
217 "Memory allocation failed!");
244 "correctifu-niter", 3,
245 "Number of iterations in computing the localization shifts of the IFU slitlets"));
247 "correctifu-lambdaref", -1,
248 "Reference wavelength where the reference localization on the slit is chosen"));
250 "correctifu-lambdaref-hsize", 2.5,
251 "HAlf size in nm to estimate reference wavelength"));
255 "if TRUE creates a data cube"));
259 "if TRUE recompute (wave and slit) maps from the dispersion solution."));
263 "Input AFC corrected model/wave solution and science frame check."\
264 "If TRUE the recipe verify that the input mode/wave solution is AFC corrected,"\
265 " its INS.OPTIi.NAME is 'Pin_0.5 ', and its OBS.ID and OBS.TARG.NAME values"\
266 " matches with the corresponding values of the science frame."));
269 sprintf(paramname,
"%s.%s",recipename,
"flat-method");
270 check( p = cpl_parameter_new_enum( paramname,CPL_TYPE_STRING,
271 "method adopted for flat:",
273 2,
"master",
"blaze"));
275 check(cpl_parameter_set_alias( p,CPL_PARAMETER_MODE_CLI,
277 check(cpl_parameterlist_append( recipe->parameters, p));
280 if ( cpl_error_get_code() != CPL_ERROR_NONE ){
303 cpl_frame* frame=NULL;
304 const char* name=NULL;
305 cpl_propertylist* plist=NULL;
309 check(frame=cpl_frameset_get_frame(raws,0));
310 check(name=cpl_frame_get_filename(frame));
311 check(plist=cpl_propertylist_load(name,0));
361 return cpl_error_get_code();
374 cpl_recipe *recipe = NULL;
378 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
381 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
382 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
384 recipe = (cpl_recipe *)plugin;
390 if ( cpl_error_get_code() != CPL_ERROR_NONE ) {
409 cpl_recipe *recipe = NULL;
414 assure( plugin != NULL, CPL_ERROR_NULL_INPUT,
"Null plugin" );
417 assure( cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE,
418 CPL_ERROR_TYPE_MISMATCH,
"Plugin is not a recipe");
420 recipe = (cpl_recipe *)plugin;
425 if (cpl_error_get_code() != CPL_ERROR_NONE)
447 xsh_msg_dbg_low(
"rectify params: radius=%g bin_lambda=%g bin_space=%g",
451 return cpl_error_get_code();
461 cpl_parameter *p=NULL;
464 if(cpl_parameter_get_double(p) <= 0) {
476 cpl_parameter_set_double(p, *lambda_ref);
482 return cpl_error_get_code();
493 cpl_parameter* p=NULL;
496 if(cpl_parameter_get_double(p) <= 0) {
509 if(cpl_parameter_get_double(p) <= 0) {
524 return cpl_error_get_code();
538 cpl_frameset* frameset)
540 const char* recipe_tags[1] = {
XSH_TRACE};
541 int recipe_tags_size = 1;
544 cpl_frameset *raws = NULL;
545 cpl_frameset *calib = NULL;
549 cpl_frame *bpmap = NULL;
550 cpl_frame *master_bias = NULL;
551 cpl_frame *master_dark = NULL;
552 cpl_frame *masterflat_frame = NULL;
553 cpl_frame *order_tab_edges = NULL;
554 cpl_frameset *wave_tabs_ifu = NULL ;
555 cpl_frame *model_config_frame = NULL ;
556 cpl_frame *wavemap_frame = NULL ;
557 cpl_frame *spectralformat_frame = NULL ;
558 cpl_frame *slitmap_frame = NULL ;
559 cpl_frame *disp_tab_frame = NULL;
560 cpl_frame *skymask_frame = NULL;
570 char* flat_method = NULL;
571 int do_computemap = 0, do_cube=0;
572 int check_afc = TRUE;
573 int recipe_use_model = FALSE;
579 cpl_frameset * on = NULL, * off = NULL ;
581 cpl_frame * crhm_frame = NULL ;
582 cpl_frame * rmbias = NULL;
583 cpl_frame * rmdark = NULL;
584 cpl_frame * rmbkg = NULL ;
585 cpl_frame * blaze_frame = NULL;
586 cpl_frame *div_frame = NULL ;
587 cpl_frameset *rect_frameset = NULL ;
588 cpl_frame * clean_frame = NULL ;
591 cpl_frame* grid_backg=NULL;
592 cpl_frame* frame_backg=NULL;
593 cpl_frameset* rect_frameset_eso=NULL;
594 cpl_frameset* rect_frameset_tab=NULL;
595 cpl_frameset *shiftifu_frameset=NULL;
596 cpl_frameset *shiftifu_old_frameset = NULL;
597 cpl_frameset *merge_frameset=NULL;
598 cpl_frameset *locifu_frameset=NULL;
599 cpl_frame *data_cube = NULL ;
601 const char* ftag=NULL;
603 char *rec_prefix = NULL;
604 char geom_prefix[256];
606 int pre_overscan_corr=0;
607 int i, geom_niter = 1;
609 double lambdaref_hsize;
615 recipe_tags, recipe_tags_size,
RECIPE_ID, XSH_BINARY_VERSION,
619 "Instrument NOT in IFU Mode");
624 check( nb_raw_frames = cpl_frameset_get_size( raws));
644 xsh_msg(
"Calling xsh_dfs_split_nir" ) ;
646 xsh_msg(
" Nb ON: %d, OFF: %d", cpl_frameset_get_size(on),
647 cpl_frameset_get_size(off) ) ;
665 if( (model_config_frame!=NULL) && (wave_tabs_ifu != NULL) ) {
667 xsh_msg_error(
"You cannot provide both a %s and a %s frame. Decide if you are in poly or physical model mode. We exit",
672 if((model_config_frame==NULL) && ( wave_tabs_ifu == NULL) ) {
690 recipe_use_model = ( model_config_frame != NULL);
705 "correctifu-niter"));
707 "correctifu-lambdaref"));
709 "correctifu-lambdaref-hsize"));
719 if ( do_computemap && recipe_use_model==FALSE){
743 xsh_msg(
"---Prepare raws frames");
749 if ( nb_raw_frames >= 3 ) {
757 "Error in xsh_remove_crh" ) ;
761 check( crhm_frame = cpl_frame_duplicate(cpl_frameset_get_frame( raws,0 )));
763 xsh_msg(
"created %s", cpl_frame_get_filename( crhm_frame));
766 if (recipe_use_model){
767 char wave_map_tag[256];
768 char slit_map_tag[256];
777 wave_map_tag,slit_map_tag,
778 &wavemap_frame, &slitmap_frame,1));
781 xsh_msg(
"Compute the wave map and the slit map");
784 &wavemap_frame, &slitmap_frame,rec_prefix));
786 cpl_frameset_insert( calib, wavemap_frame);
787 cpl_frameset_insert( calib, slitmap_frame);
795 instrument, rec_prefix, pre_overscan_corr,0));
801 rmbias, wave_tabs_ifu, order_tab_edges, disp_tab_frame,
809 xsh_msg(
"---Subtract_background");
811 order_tab_edges, backg_par,
instrument,
"GEOM_IFU",&grid_backg,
812 &frame_backg,0,0,0 ));
816 sprintf( tag,
"GEOM_IFU_FF_%s",
822 xsh_msg(
"method %s", flat_method);
824 if ( strcmp( flat_method,
"master") == 0){
829 xsh_msg(
"---Create blaze image");
835 sprintf( geom_prefix,
"orig_%s", rec_prefix);
837 for( i=1; i<= geom_niter; i++){
844 xsh_msg(
"---Do rectify for ifu: iteration %d/%d", i, geom_niter);
846 rect_frameset_eso=cpl_frameset_new();
847 rect_frameset_tab=cpl_frameset_new();
850 wave_tabs_ifu, shiftifu_old_frameset, model_config_frame,
852 spectralformat_frame, slitmap_frame,
853 &rect_frameset_eso, &rect_frameset_tab, geom_prefix));
861 skymask_frame, loc_ifu_par,
instrument, geom_prefix));
866 locifu_frameset, shiftifu_old_frameset,
instrument, rec_prefix));
869 shiftifu_old_frameset = shiftifu_frameset;
870 sprintf( geom_prefix,
"%s", rec_prefix);
881 rect_frameset_eso=cpl_frameset_new();
882 rect_frameset_tab=cpl_frameset_new();
885 wave_tabs_ifu, shiftifu_frameset, model_config_frame,
887 spectralformat_frame, slitmap_frame,
888 &rect_frameset_eso, &rect_frameset_tab, rec_prefix));
900 for( i = 0 ; i<3 ; i++ ) {
901 cpl_frame *shiftifu_frame = NULL;
903 check( shiftifu_frame = cpl_frameset_get_frame( shiftifu_frameset, i));
910 const char* name=NULL;
911 cpl_propertylist* plist=NULL;
914 const int peack_search_hsize=5;
916 cpl_frame* qc_trace_frame=NULL;
921 name=cpl_frame_get_filename(data_cube);
922 plist=cpl_propertylist_load(name,0);
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_frameset * xsh_compute_shift_ifu(double lambda_ref, double lambdaref_hsize, cpl_frameset *objpos_frameset, cpl_frameset *shiftifu_frameset, xsh_instrument *instrument, const char *prefix)
Compute the shift in slit between reference wavelength and others for all the slitlets.
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 check_msg(COMMAND,...)
#define xsh_error_reset()
static cpl_error_code xsh_params_set_defaults(cpl_parameterlist *pars, xsh_instrument *inst, xsh_rectify_param *rectify_par, double *lambda_ref)
#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_NIR
static int xsh_geom_ifu_destroy(cpl_plugin *)
Destroy what has been created by the 'create' function.
static cpl_error_code xsh_rectify_params_set_defaults_drl(cpl_parameterlist *pars, const char *rec_id, xsh_instrument *inst, xsh_rectify_param *rectify_par)
static int xsh_geom_ifu_exec(cpl_plugin *)
Execute the plugin instance given by the interface.
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.
static cpl_error_code xsh_params_monitor(xsh_background_param *backg, xsh_rectify_param *rectify_par)
#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_VIS
static cpl_error_code xsh_params_bin_scale(cpl_frameset *raws, xsh_background_param *backg)
Scales input parameters for binning.
#define XSH_GEOM_SLIT_BIN_SIZE_PIPE_UVB
static char xsh_geom_ifu_description_short[]
#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_NIR
static int xsh_geom_ifu_create(cpl_plugin *)
Setup the recipe options.
#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_UVB
static char xsh_geom_ifu_description[]
static void xsh_geom_ifu(cpl_parameterlist *, cpl_frameset *)
Interpret the command line options and execute the data processing.
#define XSH_GEOM_WAVE_BIN_SIZE_PIPE_VIS
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_ifu(cpl_frameset *merge2d_frameset, cpl_frame *skymask_frame, xsh_localize_ifu_param *locifu_par, xsh_instrument *instrument, const char *resname)
Localize center of object on a merge 2D IFU slitlet.
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_error(...)
Print an error 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_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.
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.
void xsh_create_map(cpl_frame *dispsol_frame, cpl_frame *ordertab_frame, cpl_frame *pre_frame, xsh_instrument *instrument, cpl_frame **wavemap_frame, cpl_frame **slitmap_frame, const char *rec_prefix)
void xsh_create_model_map(cpl_frame *model_frame, xsh_instrument *instrument, const char *wtag, const char *stag, cpl_frame **wavemap_frame, cpl_frame **slitmap_frame, const int save_tmp)
cpl_frame * xsh_find_wavemap(cpl_frameset *frames, xsh_instrument *instr)
Find Wave Map frame. The frame returned should not be free by the caller.
cpl_frame * xsh_find_master_dark(cpl_frameset *frames, xsh_instrument *instr)
Find master dark frame.
cpl_frame * xsh_find_spectral_format(cpl_frameset *frames, xsh_instrument *instr)
Find spectral format frame.
cpl_frame * xsh_find_order_tab_edges(cpl_frameset *frames, xsh_instrument *instr)
Find an order tab EDGES.
cpl_frame * xsh_find_master_bias(cpl_frameset *frames, xsh_instrument *instr)
Find master bias frame.
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_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_dfs_split_nir(cpl_frameset *input, cpl_frameset **on, cpl_frameset **off)
split input RAW NIR sof in ON and OFF
cpl_frameset * xsh_find_wave_tab_ifu(cpl_frameset *frames, xsh_instrument *instrument)
Find wave tab ARC (for IFU 3 frames)
cpl_frame * xsh_find_slitmap(cpl_frameset *frames, xsh_instrument *instr)
Find a slit map.
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_SLIT_STARE_REMOVE_CRH
#define XSH_SLIT_MAP_MODEL
#define XSH_CORRECTIFU_LAMBDAREF_PIPE_NIR
#define XSH_OBJECT_IFU_STARE
#define XSH_WAVE_MAP_MODEL
#define XSH_GET_TAG_FROM_ARM(TAG, instr)
#define XSH_CORRECTIFU_LAMBDAREF_PIPE_UVB
#define XSH_SKY_LINE_LIST
#define XSH_CORRECTIFU_LAMBDAREF_PIPE_VIS
cpl_frame * xsh_check_remove_crh_multiple(cpl_frameset *raws, const char *ftag, xsh_stack_param *stack_par, xsh_clipping_param *crh_clipping_par, xsh_instrument *instr, cpl_imagelist **lista, cpl_image **listb)
Check function.
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.
cpl_frame * xsh_check_subtract_bias(cpl_frame *crhm_frame, cpl_frame *master_bias, xsh_instrument *instrument, const char *prefix, const int pre_overscan_corr, const int save_tmp)
Check function to subtract bias.
cpl_frame * xsh_check_subtract_dark(cpl_frame *rmbias_frame, cpl_frame *master_dark, xsh_instrument *instrument, const char *prefix)
Check function for dark subtraction.
cpl_error_code xsh_model_temperature_update_frame(cpl_frame **model_config_frame, cpl_frame *ref_frame, xsh_instrument *instrument, int *found_temp)
cpl_parameter * xsh_parameters_find(cpl_parameterlist *list, const char *recipe_id, const char *name)
find a parameter
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)
void xsh_parameters_new_double(cpl_parameterlist *list, const char *recipe_id, const char *name, double value, const char *comment)
void xsh_parameters_localize_ifu_create(const char *recipe_id, cpl_parameterlist *plist, xsh_localize_ifu_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
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
xsh_rectify_param * xsh_parameters_rectify_get(const char *recipe_id, cpl_parameterlist *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)
int xsh_parameters_get_int(const cpl_parameterlist *list, const char *recipe_id, const char *name)
xsh_localize_ifu_param * xsh_parameters_localize_ifu_get(const char *recipe_id, cpl_parameterlist *list)
xsh_clipping_param * xsh_parameters_clipping_crh_get(const char *recipe_id, cpl_parameterlist *list)
get the crh clipping parameters in a parameters 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)
void xsh_parameters_new_int(cpl_parameterlist *list, const char *recipe_id, const char *name, int value, const char *comment)
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_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.