00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef HAVE_CONFIG_H
00029 #include <config.h>
00030 #endif
00031
00032
00033
00034
00035
00036
00037 #include <cpl.h>
00038
00039
00040 #include <irplib_utils.h>
00041
00042 #include <sinfo_tpl_utils.h>
00043 #include <sinfo_pfits.h>
00044 #include <sinfo_tpl_dfs.h>
00045 #include <sinfo_msg.h>
00046 #include <sinfo_utl_cube_combine.h>
00047
00048
00049
00050
00051
00052 static int sinfo_utl_cube_combine_create(cpl_plugin *) ;
00053 static int sinfo_utl_cube_combine_exec(cpl_plugin *) ;
00054 static int sinfo_utl_cube_combine_destroy(cpl_plugin *) ;
00055
00056
00057
00058
00059
00060 static char sinfo_utl_cube_combine_description[] =
00061 "This recipe perform cubes combination.\n"
00062 "The input files are several cubeses\n"
00063 "their associated tags should be the same that is supported by the \n"
00064 "recipe sinfo_rec_jitter: OBS_OBJ, OBS_STD, OBS_PSF.\n"
00065 "The output is a cube PRO_CUBE resulting from the input cubes accurding \n"
00066 "to the value of op, where op indicates\n"
00067 "the operation to be performed specified by the parameter \n"
00068 "sinfoni.sinfo_utl_cube_combine.op\n"
00069 " having alias 'op'\n"
00070 "Information on relevant parameters can be found with\n"
00071 "esorex --params sinfo_utl_cube_combine\n"
00072 "esorex --help sinfo_utl_cube_combine\n"
00073 "\n";
00074
00075
00076
00077
00078
00082
00083
00085
00093
00094 int cpl_plugin_get_info(cpl_pluginlist * list)
00095 {
00096 cpl_recipe * recipe = cpl_calloc(1, sizeof *recipe ) ;
00097 cpl_plugin * plugin = &recipe->interface ;
00098
00099 cpl_plugin_init(plugin,
00100 CPL_PLUGIN_API,
00101 SINFONI_BINARY_VERSION,
00102 CPL_PLUGIN_TYPE_RECIPE,
00103 "sinfo_utl_cube_combine",
00104 "Coadd cubes in an output cube according "
00105 "to user defined offsets",
00106 sinfo_utl_cube_combine_description,
00107 "Andrea Modigliani",
00108 "Andrea.Modigliani@eso.org",
00109 sinfo_get_license(),
00110 sinfo_utl_cube_combine_create,
00111 sinfo_utl_cube_combine_exec,
00112 sinfo_utl_cube_combine_destroy) ;
00113
00114 cpl_pluginlist_append(list, plugin) ;
00115
00116 return 0;
00117 }
00118
00119
00128
00129 static int sinfo_utl_cube_combine_create(cpl_plugin * plugin)
00130 {
00131 cpl_recipe * recipe ;
00132 cpl_parameter * p ;
00133
00134
00135 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
00136 recipe = (cpl_recipe *)plugin ;
00137 else return -1 ;
00138 cpl_error_reset();
00139 irplib_reset();
00140
00141
00142 recipe->parameters = cpl_parameterlist_new() ;
00143
00144
00145
00146 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.name_i",
00147 CPL_TYPE_STRING,
00148 "Input filename. This must be provided and allow the user to set X "
00149 "and Y cumulative offsets in a two column format",
00150 "sinfoni.sinfo_utl_cube_combine","offset.list");
00151 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "name_i") ;
00152 cpl_parameterlist_append(recipe->parameters, p) ;
00153
00154 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.name_o",
00155 CPL_TYPE_STRING, "Output filename",
00156 "sinfoni.sinfo_utl_cube_combine","out_coadd_cube.fits");
00157 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "name_o") ;
00158 cpl_parameterlist_append(recipe->parameters, p) ;
00159
00160
00161 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.ks_clip",
00162 CPL_TYPE_BOOL, "Kappa sigma clipping",
00163 "sinfoni.sinfo_utl_cube_combine",FALSE);
00164 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "ks_clip") ;
00165 cpl_parameterlist_append(recipe->parameters, p) ;
00166
00167 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.scale_sky",
00168 CPL_TYPE_BOOL, "Scale spatial mean",
00169 "sinfoni.sinfo_utl_cube_combine",FALSE);
00170 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "scale_sky") ;
00171 cpl_parameterlist_append(recipe->parameters, p) ;
00172
00173 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.kappa",
00174 CPL_TYPE_DOUBLE, "Kappa value for sigma clip",
00175 "sinfoni.sinfo_utl_cube_combine",2.);
00176 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "kappa") ;
00177 cpl_parameterlist_append(recipe->parameters, p) ;
00178
00179
00180
00181 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.xsize",
00182 CPL_TYPE_INT, "Output cube X size",
00183 "sinfoni.sinfo_utl_cube_combine", 80) ;
00184 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "xsize") ;
00185 cpl_parameterlist_append(recipe->parameters, p) ;
00186
00187
00188 p = cpl_parameter_new_value("sinfoni.sinfo_utl_cube_combine.ysize",
00189 CPL_TYPE_INT, "Output cube Y size",
00190 "sinfoni.sinfo_utl_cube_combine", 80) ;
00191 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "ysize") ;
00192 cpl_parameterlist_append(recipe->parameters, p) ;
00193
00194
00195
00196 return 0;
00197 }
00198
00199
00205
00206 static int sinfo_utl_cube_combine_exec(cpl_plugin * plugin)
00207 {
00208 cpl_recipe * recipe ;
00209 int result=0;
00210 cpl_errorstate initial_errorstate = cpl_errorstate_get();
00211
00212
00213 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
00214 recipe = (cpl_recipe *)plugin ;
00215 else return -1 ;
00216 sinfo_msg("Welcome to SINFONI Pipeline release %d.%d.%d",
00217 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
00218
00219 result=sinfo_utl_cube_combine(recipe->parameters, recipe->frames) ;
00220 if (!cpl_errorstate_is_equal(initial_errorstate)) {
00221
00222
00223 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
00224 }
00225 return result;
00226 }
00227
00228
00234
00235 static int sinfo_utl_cube_combine_destroy(cpl_plugin * plugin)
00236 {
00237 cpl_recipe * recipe ;
00238
00239
00240 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
00241 recipe = (cpl_recipe *)plugin ;
00242 else return -1 ;
00243
00244 cpl_parameterlist_delete(recipe->parameters) ;
00245 return 0 ;
00246 }
00247