39 #include "irplib_utils.h"
40 #include "irplib_stdstar.h"
42 #include "sinfo_raw_types.h"
43 #include "sinfo_pro_types.h"
44 #include "sinfo_tpl_utils.h"
45 #include "sinfo_tpl_dfs.h"
57 static int sinfo_utl_stdstars_create(cpl_plugin *) ;
58 static int sinfo_utl_stdstars_exec(cpl_plugin *) ;
59 static int sinfo_utl_stdstars_destroy(cpl_plugin *) ;
60 static int sinfo_utl_stdstars(cpl_frameset *) ;
61 static cpl_table * sinfo_utl_stdstars_convert(
const char *) ;
67 static char sinfo_utl_stdstars_description[] =
68 "sinfo_utl_stdstars -- SINFONI standard stars catalog creation.\n"
69 "The files listed in the Set Of Frames (sof-file) must be tagged:\n"
70 "raw-file.fits "SINFO_UTL_STDSTARS_RAW
"\n" ;
94 cpl_recipe * recipe = cpl_calloc(1,
sizeof(*recipe)) ;
95 cpl_plugin * plugin = &recipe->interface ;
97 cpl_plugin_init(plugin,
99 SINFONI_BINARY_VERSION,
100 CPL_PLUGIN_TYPE_RECIPE,
101 "sinfo_utl_stdstars",
102 "Standard stars catalog creation",
103 sinfo_utl_stdstars_description,
107 sinfo_utl_stdstars_create,
108 sinfo_utl_stdstars_exec,
109 sinfo_utl_stdstars_destroy) ;
111 cpl_pluginlist_append(list, plugin) ;
126 static int sinfo_utl_stdstars_create(cpl_plugin * plugin)
128 cpl_recipe * recipe ;
131 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
132 recipe = (cpl_recipe *)plugin ;
136 recipe->parameters = cpl_parameterlist_new() ;
149 static int sinfo_utl_stdstars_exec(cpl_plugin * plugin)
151 cpl_recipe * recipe ;
154 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
155 recipe = (cpl_recipe *)plugin ;
158 return sinfo_utl_stdstars(recipe->frames) ;
168 static int sinfo_utl_stdstars_destroy(cpl_plugin * plugin)
170 cpl_recipe * recipe ;
173 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
174 recipe = (cpl_recipe *)plugin ;
177 cpl_parameterlist_delete(recipe->parameters) ;
188 static int sinfo_utl_stdstars(
189 cpl_frameset * framelist)
191 cpl_frameset * rawframes ;
194 if (sinfo_dfs_set_groups(framelist)) {
195 cpl_msg_error(__func__,
"Cannot identify RAW and CALIB frames") ;
200 if ((rawframes = sinfo_extract_frameset(framelist,
201 SINFO_UTL_STDSTARS_RAW)) == NULL) {
202 cpl_msg_error(__func__,
"Cannot find raw frames in the input list") ;
209 "sinfo_utl_stdstars",
210 SINFO_UTL_STDSTARS_RES, NULL,
211 PACKAGE
"/" PACKAGE_VERSION,
213 sinfo_utl_stdstars_convert) == -1) {
214 cpl_msg_error(__func__,
"Cannot write the catalogs") ;
215 cpl_frameset_delete(rawframes) ;
218 cpl_frameset_delete(rawframes) ;
244 static cpl_table * sinfo_utl_stdstars_convert(
const char * filename)
248 const char * filters[8];
259 if (filename == NULL)
return NULL ;
274 if ((in = fopen(filename,
"r")) == NULL) {
277 while (fgets(line, 1024, in) != NULL) {
278 if (line[0] !=
'#') nbentries ++ ;
283 out = cpl_table_new(nbentries);
284 cpl_table_new_column(out, IRPLIB_STDSTAR_STAR_COL, CPL_TYPE_STRING);
285 cpl_table_new_column(out, IRPLIB_STDSTAR_TYPE_COL, CPL_TYPE_STRING);
286 cpl_table_new_column(out, IRPLIB_STDSTAR_RA_COL, CPL_TYPE_DOUBLE);
287 cpl_table_new_column(out, IRPLIB_STDSTAR_DEC_COL, CPL_TYPE_DOUBLE);
288 for (i=0 ; i<nfilters ; i++)
289 cpl_table_new_column(out, filters[i], CPL_TYPE_DOUBLE);
292 if ((in = fopen(filename,
"r")) == NULL) {
293 cpl_table_delete(out) ;
297 while (fgets(line, 1024, in) != NULL) {
298 if (line[0] !=
'#') {
299 if (sscanf(line,
"%s %lg %lg %s %lg %lg %lg %lg %lg %lg %lg %lg",
300 sname, &ra, &dec, stype, &(mags[0]), &(mags[1]),
301 &(mags[2]), &(mags[3]), &(mags[4]), &(mags[5]),
302 &(mags[6]), &(mags[7])) != 12) {
303 cpl_table_delete(out) ;
307 cpl_table_set_string(out, IRPLIB_STDSTAR_STAR_COL,nbentries, sname);
308 cpl_table_set_string(out, IRPLIB_STDSTAR_TYPE_COL,nbentries, stype);
309 cpl_table_set_double(out, IRPLIB_STDSTAR_RA_COL, nbentries, ra);
310 cpl_table_set_double(out, IRPLIB_STDSTAR_DEC_COL, nbentries, dec);
311 for (i=0 ; i<nfilters ; i++)
312 cpl_table_set_double(out, filters[i], nbentries, mags[i]);
cpl_error_code irplib_stdstar_write_catalogs(cpl_frameset *set_in, const cpl_frameset *set_raw, const char *recipe_name, const char *pro_cat, const char *pro_type, const char *package_name, const char *ins_name, cpl_table *(*convert_ascii_table)(const char *))
Write the ASCII catalogs as FITS files.
int cpl_plugin_get_info(cpl_pluginlist *list)
Build the list of available plugins, for this module.