40 #include <irplib_utils.h>
42 #include <sinfo_tpl_utils.h>
43 #include <sinfo_pfits.h>
44 #include <sinfo_tpl_dfs.h>
45 #include <sinfo_msg.h>
46 #include <sinfo_utl_cube_combine.h>
52 static int sinfo_utl_cube_combine_create(cpl_plugin *) ;
53 static int sinfo_utl_cube_combine_exec(cpl_plugin *) ;
54 static int sinfo_utl_cube_combine_destroy(cpl_plugin *) ;
60 static char sinfo_utl_cube_combine_description[] =
61 "This recipe perform cubes combination.\n"
62 "The input files are several cubeses\n"
63 "their associated tags should be the same that is supported by the \n"
64 "recipe sinfo_rec_jitter: OBS_OBJ, OBS_STD, OBS_PSF.\n"
65 "The output is a cube PRO_CUBE resulting from the input cubes accurding \n"
66 "to the value of op, where op indicates\n"
67 "the operation to be performed specified by the parameter \n"
68 "sinfoni.sinfo_utl_cube_combine.op\n"
69 " having alias 'op'\n"
93 cpl_recipe * recipe = cpl_calloc(1,
sizeof *recipe ) ;
94 cpl_plugin * plugin = &recipe->interface ;
96 cpl_plugin_init(plugin,
98 SINFONI_BINARY_VERSION,
99 CPL_PLUGIN_TYPE_RECIPE,
100 "sinfo_utl_cube_combine",
101 "Coadd cubes in an output cube according "
102 "to user defined offsets",
103 sinfo_utl_cube_combine_description,
105 "Andrea.Modigliani@eso.org",
107 sinfo_utl_cube_combine_create,
108 sinfo_utl_cube_combine_exec,
109 sinfo_utl_cube_combine_destroy) ;
111 cpl_pluginlist_append(list, plugin) ;
126 static int sinfo_utl_cube_combine_create(cpl_plugin * plugin)
128 cpl_recipe * recipe ;
132 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
133 recipe = (cpl_recipe *)plugin ;
139 recipe->parameters = cpl_parameterlist_new() ;
143 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.name_i",
145 "Input filename. This must be provided and allow the user to set X "
146 "and Y cumulative offsets in a two column format",
147 "sinfoni.sinfo_utl_cube_combine",
"offset.list");
148 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"name_i") ;
149 cpl_parameterlist_append(recipe->parameters, p) ;
151 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.name_o",
152 CPL_TYPE_STRING,
"Output filename",
153 "sinfoni.sinfo_utl_cube_combine",
"out_coadd_cube.fits");
154 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"name_o") ;
155 cpl_parameterlist_append(recipe->parameters, p) ;
158 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.ks_clip",
159 CPL_TYPE_BOOL,
"Kappa sigma clipping",
160 "sinfoni.sinfo_utl_cube_combine",FALSE);
161 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"ks_clip") ;
162 cpl_parameterlist_append(recipe->parameters, p) ;
164 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.scale_sky",
165 CPL_TYPE_BOOL,
"Scale spatial mean",
166 "sinfoni.sinfo_utl_cube_combine",FALSE);
167 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"scale_sky") ;
168 cpl_parameterlist_append(recipe->parameters, p) ;
170 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.kappa",
171 CPL_TYPE_DOUBLE,
"Kappa value for sigma clip",
172 "sinfoni.sinfo_utl_cube_combine",2.);
173 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"kappa") ;
174 cpl_parameterlist_append(recipe->parameters, p) ;
178 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.xsize",
179 CPL_TYPE_INT,
"Output cube X size",
180 "sinfoni.sinfo_utl_cube_combine", 80) ;
181 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"xsize") ;
182 cpl_parameterlist_append(recipe->parameters, p) ;
185 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_combine.ysize",
186 CPL_TYPE_INT,
"Output cube Y size",
187 "sinfoni.sinfo_utl_cube_combine", 80) ;
188 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"ysize") ;
189 cpl_parameterlist_append(recipe->parameters, p) ;
203 static int sinfo_utl_cube_combine_exec(cpl_plugin * plugin)
205 cpl_recipe * recipe ;
207 cpl_errorstate initial_errorstate = cpl_errorstate_get();
210 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
211 recipe = (cpl_recipe *)plugin ;
213 sinfo_msg(
"Welcome to SINFONI Pipeline release %d.%d.%d",
214 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
216 result=sinfo_utl_cube_combine(recipe->parameters, recipe->frames) ;
217 if (!cpl_errorstate_is_equal(initial_errorstate)) {
220 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
232 static int sinfo_utl_cube_combine_destroy(cpl_plugin * plugin)
234 cpl_recipe * recipe ;
237 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
238 recipe = (cpl_recipe *)plugin ;
241 cpl_parameterlist_delete(recipe->parameters) ;
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.
void irplib_reset(void)
Reset IRPLIB state.