58 #include <irplib_utils.h>
62 #include <sinfo_utilities.h>
63 #include <sinfo_general_config.h>
64 #include <sinfo_bp_lin_config.h>
65 #include <sinfo_bp_config.h>
66 #include <sinfo_bp_lin.h>
67 #include <sinfo_product_config.h>
69 #include <sinfo_bp_lin.h>
70 #include <sinfo_tpl_utils.h>
71 #include <sinfo_functions.h>
72 #include <sinfo_tpl_dfs.h>
73 #include <sinfo_msg.h>
74 #include <sinfo_error.h>
75 #include <sinfo_utils_wrappers.h>
82 static int sinfo_rec_detlin_create(cpl_plugin *plugin);
83 static int sinfo_rec_detlin_exec(cpl_plugin *plugin);
84 static int sinfo_rec_detlin_destroy(cpl_plugin *plugin);
85 static int sinfo_rec_detlin(cpl_parameterlist *, cpl_frameset *);
91 static char sinfo_rec_detlin_description[] =
92 "This recipe computes detector non linearities and a bad pixel map.\n"
93 "The input files are increasing intensity raw flats\n"
94 "their associated tags should be LINEARITY_LAMP.\n"
96 "A table (PRO.CATG=LIN_DET_INFO) with information \n"
97 "on the detector non linearities\n"
98 "A table (PRO.CATG=GAIN_INFO) with information on the detector gain\n"
99 "A cube (PRO.CATG=BP_COEFF) with the polynomial fit parameters \n"
100 "of the detector non linearities\n"
101 "A bad pixel map (PRO.CATG=BP_MAP_NL)\n"
121 cpl_recipe *recipe = cpl_calloc(1,
sizeof *recipe);
122 cpl_plugin *plugin = &recipe->interface;
125 cpl_plugin_init(plugin,
127 SINFONI_BINARY_VERSION,
128 CPL_PLUGIN_TYPE_RECIPE,
130 "Detector's linearity & non linear bad pixels determination.",
131 sinfo_rec_detlin_description,
133 "Andrea.Modigliani@eso.org",
135 sinfo_rec_detlin_create,
136 sinfo_rec_detlin_exec,
137 sinfo_rec_detlin_destroy);
139 cpl_pluginlist_append(list, plugin);
154 static int sinfo_rec_detlin_create(cpl_plugin *plugin)
164 cpl_recipe * recipe ;
167 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
168 recipe = (cpl_recipe *)plugin ;
174 recipe->parameters = cpl_parameterlist_new() ;
176 sinfo_general_config_add(recipe->parameters);
177 sinfo_product_config_add(recipe->parameters);
178 sinfo_bp_lin_config_add(recipe->parameters);
192 static int sinfo_rec_detlin_exec(cpl_plugin *plugin)
194 cpl_recipe * recipe ;
197 cpl_errorstate initial_errorstate = cpl_errorstate_get();
199 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
200 recipe = (cpl_recipe *)plugin ;
203 if (!cpl_errorstate_is_equal(initial_errorstate)) {
206 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
209 return sinfo_rec_detlin(recipe->parameters, recipe->frames);
220 static int sinfo_rec_detlin_destroy(cpl_plugin *plugin)
222 cpl_recipe * recipe ;
225 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
226 recipe = (cpl_recipe *)plugin ;
229 cpl_parameterlist_delete(recipe->parameters) ;
261 static int sinfo_rec_detlin(cpl_parameterlist *config, cpl_frameset *set)
263 cpl_parameter *p=NULL;
266 sinfo_msg(
"Welcome to SINFONI Pipeline release %d.%d.%d",
267 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
270 sinfo_bp_config_add(config);
271 check_nomsg(p = cpl_parameterlist_find(config,
"sinfoni.bp.method"));
272 check_nomsg(cpl_parameter_set_string(p,
"Linear"));
274 ck0(sinfo_dfs_set_groups(set),
"Cannot indentify RAW and CALIB frames") ;
276 check_nomsg(p=cpl_parameterlist_find(config,
"sinfoni.general.lc_sw"));
277 check_nomsg(line_cor=cpl_parameter_get_bool(p));
279 check_nomsg(sinfo_ima_line_cor(config,set));
283 sinfo_msg(
"---------------------------------------");
284 sinfo_msg(
"BP_MAP_NL BAD PIXEL MAP DETERMINATION ");
285 sinfo_msg(
"---------------------------------------");
286 ck0(sinfo_new_bp_search_lin(cpl_func,config,set),
287 "BP_MAP_NL BAD PIXEL MAP DETERMINATION FAILED") ;
288 sinfo_msg(
"BP_MAP_NL BAD PIXEL MAP DETERMINATION SUCCESS") ;
292 if (cpl_error_get_code() != CPL_ERROR_NONE) {
void irplib_reset(void)
Reset IRPLIB state.
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.