39 #include "irplib_utils.h"
40 #include "irplib_stdstar.h"
42 #include "hawki_utils.h"
43 #include "hawki_load.h"
44 #include "hawki_pfits.h"
45 #include "hawki_dfs.h"
51 static int hawki_util_stdstars_create(cpl_plugin *) ;
52 static int hawki_util_stdstars_exec(cpl_plugin *) ;
53 static int hawki_util_stdstars_destroy(cpl_plugin *) ;
54 static int hawki_util_stdstars(cpl_frameset *) ;
55 static cpl_table * hawki_util_stdstars_convert(
const char *) ;
61 static char hawki_util_stdstars_description[] =
62 "hawki_util_stdstars -- HAWK-I standard stars catalog creation.\n"
63 "The files listed in the Set Of Frames (sof-file) must be tagged:\n"
64 "raw-file.txt "HAWKI_UTIL_STDSTARS_RAW
"\n" ;
79 int cpl_plugin_get_info(cpl_pluginlist * list)
81 cpl_recipe * recipe = cpl_calloc(1,
sizeof(*recipe)) ;
82 cpl_plugin * plugin = &recipe->interface ;
84 cpl_plugin_init(plugin,
87 CPL_PLUGIN_TYPE_RECIPE,
88 "hawki_util_stdstars",
89 "Standard stars catalog creation",
90 hawki_util_stdstars_description,
91 "Cesar Enrique Garcia Dabo",
94 hawki_util_stdstars_create,
95 hawki_util_stdstars_exec,
96 hawki_util_stdstars_destroy) ;
98 cpl_pluginlist_append(list, plugin) ;
113 static int hawki_util_stdstars_create(cpl_plugin * plugin)
115 cpl_recipe * recipe ;
118 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
119 recipe = (cpl_recipe *)plugin ;
123 recipe->parameters = cpl_parameterlist_new() ;
136 static int hawki_util_stdstars_exec(cpl_plugin * plugin)
138 cpl_recipe * recipe ;
141 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
142 recipe = (cpl_recipe *)plugin ;
148 return hawki_util_stdstars(recipe->frames) ;
158 static int hawki_util_stdstars_destroy(cpl_plugin * plugin)
160 cpl_recipe * recipe ;
163 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
164 recipe = (cpl_recipe *)plugin ;
167 cpl_parameterlist_delete(recipe->parameters) ;
178 static int hawki_util_stdstars(
179 cpl_frameset * framelist)
181 cpl_frameset * rawframes ;
182 const char * recipe_name =
"hawki_util_stdstars" ;
187 cpl_msg_error(__func__,
"Cannot identify RAW and CALIB frames") ;
193 HAWKI_UTIL_STDSTARS_RAW)) == NULL) {
194 cpl_msg_error(__func__,
"Cannot find raw frames in the input list") ;
199 if (irplib_stdstar_write_catalogs(framelist,
202 HAWKI_CALPRO_STDSTARS,
203 HAWKI_PROTYPE_STDSTARS,
204 PACKAGE
"/" PACKAGE_VERSION,
206 hawki_util_stdstars_convert) == -1) {
207 cpl_msg_error(__func__,
"Cannot write the catalogs") ;
208 cpl_frameset_delete(rawframes) ;
211 cpl_frameset_delete(rawframes) ;
214 if (cpl_error_get_code())
216 cpl_msg_error(__func__,
217 "HAWK-I pipeline could not recover from previous errors");
245 static cpl_table * hawki_util_stdstars_convert(
const char * filename)
249 const char * filters[4];
260 if (filename == NULL)
return NULL ;
271 if ((in = fopen(filename,
"r")) == NULL) {
274 while (fgets(line, 1024, in) != NULL) {
275 if (line[0] !=
'#') nbentries ++ ;
280 out = cpl_table_new(nbentries);
281 cpl_table_new_column(out, IRPLIB_STDSTAR_STAR_COL, CPL_TYPE_STRING);
282 cpl_table_new_column(out, IRPLIB_STDSTAR_TYPE_COL, CPL_TYPE_STRING);
283 cpl_table_new_column(out, IRPLIB_STDSTAR_RA_COL, CPL_TYPE_DOUBLE);
284 cpl_table_new_column(out, IRPLIB_STDSTAR_DEC_COL, CPL_TYPE_DOUBLE);
285 for (i=0 ; i<nfilters ; i++)
286 cpl_table_new_column(out, filters[i], CPL_TYPE_DOUBLE);
289 if ((in = fopen(filename,
"r")) == NULL) {
290 cpl_table_delete(out) ;
294 while (fgets(line, 1024, in) != NULL) {
295 if (line[0] !=
'#') {
296 if (sscanf(line,
"%s %lg %lg %s %lg %lg %lg %lg",
297 sname, &ra, &dec, stype, &(mags[0]), &(mags[1]),
298 &(mags[2]), &(mags[3])) != 8) {
299 cpl_table_delete(out) ;
302 cpl_table_set_string(out, IRPLIB_STDSTAR_STAR_COL,nbentries, sname);
303 cpl_table_set_string(out, IRPLIB_STDSTAR_TYPE_COL,nbentries, stype);
304 cpl_table_set_double(out, IRPLIB_STDSTAR_RA_COL, nbentries, ra);
305 cpl_table_set_double(out, IRPLIB_STDSTAR_DEC_COL, nbentries, dec);
306 for (i=0 ; i<nfilters ; i++)
307 cpl_table_set_double(out, filters[i], nbentries, mags[i]);