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_utl_cube_arith.h>
46 #include <sinfo_msg.h>
52 static int sinfo_utl_cube_arith_create(cpl_plugin *) ;
53 static int sinfo_utl_cube_arith_exec(cpl_plugin *) ;
54 static int sinfo_utl_cube_arith_destroy(cpl_plugin *) ;
60 static char sinfo_utl_cube_arith_description1[] =
61 "This recipe perform cube arithmetics.\n"
62 "If parameter value is specified the input frame is a cube \n"
63 "in a sof file with tag CUBE\n"
64 "Else the input files are a cube and an images or a spectrum\n"
65 "their associated tags should be respectively CUBE, IMA or SPECTRUM.\n"
66 "The output is a cube with tag PRO_CUBE resulting from the operation \n"
68 "CUBE op SPECTRUM or\n"
69 "CUBE op value where op indicates\n"
70 "the operation to be performed\n"
74 static char sinfo_utl_cube_arith_description[600];
98 cpl_recipe * recipe = cpl_calloc(1,
sizeof *recipe ) ;
99 cpl_plugin * plugin = &recipe->interface ;
101 strcpy(sinfo_utl_cube_arith_description,sinfo_utl_cube_arith_description1);
103 cpl_plugin_init(plugin,
105 SINFONI_BINARY_VERSION,
106 CPL_PLUGIN_TYPE_RECIPE,
107 "sinfo_utl_cube_arith",
109 sinfo_utl_cube_arith_description,
111 "Andrea.Modigliani@eso.org",
113 sinfo_utl_cube_arith_create,
114 sinfo_utl_cube_arith_exec,
115 sinfo_utl_cube_arith_destroy) ;
117 cpl_pluginlist_append(list, plugin) ;
132 static int sinfo_utl_cube_arith_create(cpl_plugin * plugin)
134 cpl_recipe * recipe ;
138 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
139 recipe = (cpl_recipe *)plugin ;
144 recipe->parameters = cpl_parameterlist_new() ;
148 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_arith.op",
150 "A possible operation: "
151 "`/','*','+' or `-'",
152 "sinfoni.sinfo_utl_cube_arith",
"/");
153 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"op") ;
154 cpl_parameterlist_append(recipe->parameters, p) ;
166 p = cpl_parameter_new_value(
"sinfoni.sinfo_utl_cube_arith.value",
167 CPL_TYPE_DOUBLE,
"A constant to add",
168 "sinfoni.sinfo_utl_cube_arith", 99999.0) ;
169 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"value") ;
170 cpl_parameterlist_append(recipe->parameters, p) ;
183 static int sinfo_utl_cube_arith_exec(cpl_plugin * plugin)
185 cpl_recipe * recipe ;
187 cpl_errorstate initial_errorstate = cpl_errorstate_get();
190 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
191 recipe = (cpl_recipe *)plugin ;
193 sinfo_msg(
"Welcome to SINFONI Pipeline release %d.%d.%d",
194 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
196 code = sinfo_utl_cube_arith(recipe->parameters, recipe->frames) ;
198 if (!cpl_errorstate_is_equal(initial_errorstate)) {
201 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
213 static int sinfo_utl_cube_arith_destroy(cpl_plugin * plugin)
215 cpl_recipe * recipe ;
218 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
219 recipe = (cpl_recipe *)plugin ;
222 cpl_parameterlist_delete(recipe->parameters) ;