46 #include <irplib_utils.h>
48 #include <sinfo_pro_types.h>
49 #include <sinfo_utilities.h>
50 #include <sinfo_general_config.h>
51 #include <sinfo_product_config.h>
52 #include <sinfo_bp_config.h>
53 #include <sinfo_bp_norm_config.h>
54 #include <sinfo_lamp_flats_config.h>
55 #include <sinfo_bp_norm.h>
56 #include <sinfo_new_lamp_flats.h>
57 #include <sinfo_functions.h>
58 #include <sinfo_new_add_bp_map.h>
59 #include <sinfo_tpl_utils.h>
60 #include <sinfo_tpl_dfs.h>
61 #include <sinfo_msg.h>
62 #include <sinfo_error.h>
63 #include <sinfo_utils_wrappers.h>
68 static int sinfo_rec_mflat_create(cpl_plugin *);
69 static int sinfo_rec_mflat_exec(cpl_plugin *);
70 static int sinfo_rec_mflat_destroy(cpl_plugin *);
71 static int sinfo_rec_mflat(cpl_parameterlist *, cpl_frameset *);
79 sinfo_rec_mflat_description[] =
80 "This recipe reduce normal raw flat fields.\n"
81 "The input files are a set of flat fields with tag FLAT_LAMP\n"
82 "optionally one may have in input also several bad pixel maps to be coadded.\n"
83 "The main products are a master flat field (PRO.CATG=MASTER_FLAT_LAMP) image\n"
84 "a bad pixel map (PRO.CATG=BP_MAP_NO), "
85 "a master bad pixel map (PRO.CATG=MASTER_BP_MAP) resulting by the coaddition\n"
86 "of all bad pixel maps.\n"
114 cpl_recipe *recipe = cpl_calloc(1,
sizeof *recipe);
115 cpl_plugin *plugin = &recipe->interface;
118 cpl_plugin_init(plugin,
120 SINFONI_BINARY_VERSION,
121 CPL_PLUGIN_TYPE_RECIPE,
123 "Master flat determination",
124 sinfo_rec_mflat_description,
126 "Andrea.Modigliani@eso.org",
128 sinfo_rec_mflat_create,
129 sinfo_rec_mflat_exec,
130 sinfo_rec_mflat_destroy);
132 cpl_pluginlist_append(list, plugin);
149 static int sinfo_rec_mflat_create(cpl_plugin *plugin)
152 cpl_recipe * recipe ;
155 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
156 recipe = (cpl_recipe *)plugin ;
160 recipe->parameters = cpl_parameterlist_new() ;
165 sinfo_general_config_add(recipe->parameters);
166 sinfo_product_config_add(recipe->parameters);
168 sinfo_lamp_flats_config_add(recipe->parameters);
180 static int sinfo_rec_mflat_exec(cpl_plugin *plugin)
182 cpl_recipe * recipe ;
183 cpl_errorstate initial_errorstate = cpl_errorstate_get();
185 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
186 recipe = (cpl_recipe *)plugin ;
191 if (!cpl_errorstate_is_equal(initial_errorstate)) {
194 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
196 return sinfo_rec_mflat(recipe->parameters, recipe->frames);
206 static int sinfo_rec_mflat_destroy(cpl_plugin *plugin)
209 cpl_recipe *recipe = (cpl_recipe *) plugin;
212 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
213 recipe = (cpl_recipe *)plugin ;
216 cpl_parameterlist_delete(recipe->parameters);
235 sinfo_rec_mflat(cpl_parameterlist *config, cpl_frameset *set)
239 cpl_frameset* ref_set=NULL;
243 check_nomsg(p=cpl_parameterlist_find(config,
"sinfoni.product.density"));
244 check_nomsg(pdensity=cpl_parameter_get_int(p));
246 sinfo_msg(
"Welcome to SINFONI Pipeline release %d.%d.%d",
247 SINFONI_MAJOR_VERSION,SINFONI_MINOR_VERSION,SINFONI_MICRO_VERSION);
248 ck0(sinfo_dfs_set_groups(set),
"Cannot indentify RAW and CALIB frames") ;
250 check_nomsg(p=cpl_parameterlist_find(config,
"sinfoni.general.lc_sw"));
251 check_nomsg(line_cor=cpl_parameter_get_bool(p));
253 check_nomsg(sinfo_ima_line_cor(config,set));
258 check_nomsg(ref_set=cpl_frameset_duplicate(set));
259 sinfo_bp_config_add(config);
260 check_nomsg(p = cpl_parameterlist_find(config,
"sinfoni.bp.method"));
261 check_nomsg(cpl_parameter_set_string(p,
"Normal"));
268 sinfo_msg(
"-------------------------------------------");
269 sinfo_msg(
"MASTER FLAT DETERMINATION ");
270 sinfo_msg(
"-------------------------------------------");
272 ck0(sinfo_new_lamp_flats(cpl_func,config,set,ref_set),
273 "MASTER FLAT DETERMINATION FAILED");
274 sinfo_msg(
"MASTER FLAT DETERMINATION SUCCESS") ;
276 sinfo_msg(
"-------------------------------------------");
277 sinfo_msg(
"BP_MAP_NO BAD PIXEL MAP DETERMINATION ");
278 sinfo_msg(
"-------------------------------------------");
285 check_nomsg(p = cpl_parameterlist_find(config,
"sinfoni.bp.method"));
286 check_nomsg(cpl_parameter_set_string(p,
"Normal"));
287 ck0(sinfo_new_bp_search_normal(cpl_func,config,set,ref_set,PRO_BP_MAP_NO),
288 "BP_MAP_NO BAD PIXEL MAP DETERMINATION FAILED") ;
290 sinfo_msg(
"------------------------------------------");
291 sinfo_msg(
"MASTER_BP_MAP BAD PIXEL MAP DETERMINATION ");
292 sinfo_msg(
"------------------------------------------");
293 ck0(sinfo_new_add_bp_map(cpl_func,config, set,ref_set),
294 "MASTER_BP_MAP BAD PIXEL MAP FAILED") ;
295 sinfo_msg(
"MASTER_BP_MAP BAD PIXEL MAP DETERMINATION SUCCESS");
299 check_nomsg(cpl_frameset_erase(set,PRO_BP_MAP_NO));
304 sinfo_free_frameset(&ref_set);
306 if (cpl_error_get_code() != CPL_ERROR_NONE) {
void irplib_reset(void)
Reset IRPLIB state.
void sinfo_bp_norm_config_add(cpl_parameterlist *list)
Adds parameters for the spectrum extraction.
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.