39 #include <irplib_utils.h>
41 #include <sinfo_tpl_utils.h>
42 #include <sinfo_pfits.h>
43 #include <sinfo_tpl_dfs.h>
44 #include <sinfo_utl_cube2spectrum.h>
45 #include <sinfo_msg.h>
50 static int sinfo_utl_cube2spectrum_create(cpl_plugin *) ;
51 static int sinfo_utl_cube2spectrum_exec(cpl_plugin *) ;
52 static int sinfo_utl_cube2spectrum_destroy(cpl_plugin *) ;
58 static char sinfo_utl_cube2spectrum_description[] =
59 "This recipe performs cube to 1D spectrum image conversion.\n"
60 "The input files is a cube\n"
61 "Its associated tag should be CUBE.\n"
62 "The output is an image resulting from the cube manipulated \n"
63 "according to the value of op\n"
64 "Over an aperture as specified by the parameter \n"
65 "sinfoni.sinfo_utl_cube2spectrum.aperture having alias 'op', 'ap'"
89 cpl_recipe * recipe = cpl_calloc(1,
sizeof *recipe ) ;
90 cpl_plugin * plugin = &recipe->interface ;
92 cpl_plugin_init(plugin,
94 SINFONI_BINARY_VERSION,
95 CPL_PLUGIN_TYPE_RECIPE,
96 "sinfo_utl_cube2spectrum",
97 "Collapse a cube to an image over an aperture",
98 sinfo_utl_cube2spectrum_description,
100 "Andrea.Modigliani@eso.org",
102 sinfo_utl_cube2spectrum_create,
103 sinfo_utl_cube2spectrum_exec,
104 sinfo_utl_cube2spectrum_destroy) ;
106 cpl_pluginlist_append(list, plugin) ;
121 static int sinfo_utl_cube2spectrum_create(cpl_plugin * plugin)
123 cpl_recipe * recipe ;
127 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
128 recipe = (cpl_recipe *)plugin ;
134 recipe->parameters = cpl_parameterlist_new() ;
138 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.op",
139 CPL_TYPE_STRING,
"A possible operation:"
140 " average, clean_mean, median, sum",
141 "sinfoni.sinfo_utl_cube2spectrum",
"average");
142 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"op") ;
143 cpl_parameterlist_append(recipe->parameters, p) ;
147 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.ap",
148 CPL_TYPE_STRING,
"A possible aperture: rectangle, circle",
149 "sinfoni.sinfo_utl_cube2spectrum",
"rectangle");
150 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"ap") ;
151 cpl_parameterlist_append(recipe->parameters, p) ;
155 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.llx",
157 "Lower left X rectangle coordinate",
158 "sinfoni.sinfo_utl_cube2spectrum", 2) ;
159 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"llx") ;
160 cpl_parameterlist_append(recipe->parameters, p) ;
163 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.lly",
165 "Lower left Y rectangle coordinate",
166 "sinfoni.sinfo_utl_cube2spectrum", 2) ;
167 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"lly") ;
168 cpl_parameterlist_append(recipe->parameters, p) ;
171 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.urx",
172 CPL_TYPE_INT,
"Upper right X rectangle coordinate",
173 "sinfoni.sinfo_utl_cube2spectrum", 28) ;
174 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"urx") ;
175 cpl_parameterlist_append(recipe->parameters, p) ;
178 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.ury",
180 "Upper right Y rectangle coordinate",
181 "sinfoni.sinfo_utl_cube2spectrum", 28) ;
182 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"ury") ;
183 cpl_parameterlist_append(recipe->parameters, p) ;
187 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.lo_rej",
189 "Clean mean low rejection",
190 "sinfoni.sinfo_utl_cube2spectrum", 10) ;
191 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"lo_rej") ;
192 cpl_parameterlist_append(recipe->parameters, p) ;
195 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.hi_rej",
197 "Clean mean low rejection",
198 "sinfoni.sinfo_utl_cube2spectrum", 10) ;
199 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"hi_rej") ;
200 cpl_parameterlist_append(recipe->parameters, p) ;
204 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.centerx",
206 "Circle center X coordinate",
207 "sinfoni.sinfo_utl_cube2spectrum", 16) ;
208 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"centerx") ;
209 cpl_parameterlist_append(recipe->parameters, p) ;
212 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.centery",
214 "Circle center Y coordinate",
215 "sinfoni.sinfo_utl_cube2spectrum", 16) ;
216 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"centery") ;
217 cpl_parameterlist_append(recipe->parameters, p) ;
220 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube2spectrum.radius",
221 CPL_TYPE_INT,
"Circle radii",
222 "sinfoni.sinfo_utl_cube2spectrum", 5) ;
223 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"radius") ;
224 cpl_parameterlist_append(recipe->parameters, p) ;
238 static int sinfo_utl_cube2spectrum_exec(cpl_plugin * plugin)
240 cpl_recipe * recipe ;
242 cpl_errorstate initial_errorstate = cpl_errorstate_get();
245 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
246 recipe = (cpl_recipe *)plugin ;
249 if(sinfo_dfs_set_groups(recipe->frames)) {
253 sinfo_msg(
"Welcome to SINFONI Pipeline release %d.%d.%d",
254 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
256 result = sinfo_utl_cube2spectrum(recipe->parameters, recipe->frames,NULL);
257 if (!cpl_errorstate_is_equal(initial_errorstate)) {
260 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
273 static int sinfo_utl_cube2spectrum_destroy(cpl_plugin * plugin)
275 cpl_recipe * recipe ;
278 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
279 recipe = (cpl_recipe *)plugin ;
282 cpl_parameterlist_delete(recipe->parameters) ;