194 cpl_errorstate initial_errorstate = cpl_errorstate_get();
197 if (cpl_error_get_code() != CPL_ERROR_NONE) {
198 cpl_msg_error(cpl_func,
"%s():%d: An error is already set: %s",
199 cpl_func, __LINE__, cpl_error_get_where());
200 return (
int)cpl_error_get_code();
203 if (plugin == NULL) {
204 cpl_msg_error(cpl_func,
"Null plugin");
205 cpl_ensure_code(0, (
int)CPL_ERROR_NULL_INPUT);
209 if (cpl_plugin_get_type(plugin) != CPL_PLUGIN_TYPE_RECIPE) {
210 cpl_msg_error(cpl_func,
"Plugin is not a recipe");
211 cpl_ensure_code(0, (
int)CPL_ERROR_TYPE_MISMATCH);
215 recipe = (cpl_recipe *)plugin;
218 if (recipe->parameters == NULL) {
219 cpl_msg_error(cpl_func,
"Recipe invoked with NULL parameter list");
220 cpl_ensure_code(0, (
int)CPL_ERROR_NULL_INPUT);
222 if (recipe->frames == NULL) {
223 cpl_msg_error(cpl_func,
"Recipe invoked with NULL frame set");
224 cpl_ensure_code(0, (
int)CPL_ERROR_NULL_INPUT);
232 if (cpl_dfs_update_product_header(recipe->frames)) {
234 recipe_status = (int)cpl_error_get_code();
238 if (!cpl_errorstate_is_equal(initial_errorstate)) {
241 cpl_errorstate_dump(initial_errorstate, CPL_FALSE, NULL);
244 return recipe_status;
288 const cpl_parameterlist * parlist)
290 cpl_frameset * wavecalib_frameset = NULL,
291 * badcalib_frameset = NULL, * flatcalib_frameset = NULL,
292 * p2vmcalib_frameset = NULL, * dark_frameset = NULL,
293 * wavelamp_frameset = NULL, * used_frameset = NULL,
294 * darkcalib_frameset = NULL, *wave_param_frameset= NULL;
298 gravi_data * data = NULL, * dark_map = NULL, * wave_map = NULL,
299 * profile_map = NULL, * badpix_map = NULL, * preproc_data = NULL, * p2vm_map = NULL,
307 cpl_error_get_code()) ;
321 if ( (cpl_frameset_is_empty (dark_frameset) &&
322 cpl_frameset_is_empty (darkcalib_frameset)) ||
323 cpl_frameset_is_empty (wavelamp_frameset) ||
324 cpl_frameset_is_empty (p2vmcalib_frameset) ||
325 cpl_frameset_is_empty (wavecalib_frameset) ||
326 cpl_frameset_is_empty (flatcalib_frameset) ||
327 cpl_frameset_is_empty (badcalib_frameset) ) {
329 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
330 "Mising DARK, WAVELAMP, P2VM, WAVE, FLAT or BAD") ;
335 used_frameset = cpl_frameset_new();
341 if (!cpl_frameset_is_empty (dark_frameset)) {
343 frame = cpl_frameset_get_position (dark_frameset, 0);
355 NULL, frame,
"gravity_wavelamp",
360 else if (!cpl_frameset_is_empty (darkcalib_frameset)) {
362 frame = cpl_frameset_get_position (darkcalib_frameset, 0);
368 cpl_msg_info (cpl_func,
"There is no DARK in the frame set");
372 frame = cpl_frameset_get_position (badcalib_frameset, 0);
376 frame = cpl_frameset_get_position (flatcalib_frameset, 0);
380 frame = cpl_frameset_get_position (wavecalib_frameset, 0);
384 frame = cpl_frameset_get_position (p2vmcalib_frameset, 0);
393 frame = cpl_frameset_get_position (wavelamp_frameset, 0);
410 cpl_image * img_median = cpl_imagelist_collapse_median_create (imglist);
413 cpl_imagelist_empty (imglist);
414 cpl_imagelist_set (imglist, img_median, 0);
418 badpix_map, NULL, parlist,
440 if (!cpl_frameset_is_empty (wave_param_frameset)) {
441 frame2 = cpl_frameset_get_position (wave_param_frameset, 0);
446 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
447 "Missing is no WAVE_PARAM in the frameset") ;
461 cpl_vector * wave_diff_all = cpl_vector_new(cpl_table_get_nrow(pos_argon));
462 for(
unsigned short row = 0 ; row < (
unsigned short)cpl_table_get_nrow(pos_argon) ; ++row)
467 snprintf(keyname, 39,
"ESO QC WAVE%hu", row+1);
469 1e6 * cpl_table_get_double(pos_argon,
"WAVE", row, &null));
471 snprintf(keyname, 39,
"ESO QC WAVE TH%hu", row+1);
473 1e6 * cpl_table_get_double(pos_argon,
"WAVE_TH", row, &null));
475 snprintf(keyname, 39,
"ESO QC WAVE DIFF%hu", row+1);
476 double wave_diff = 1e6 * cpl_table_get_double(pos_argon,
"DIFF", row, &null);
477 cpl_vector_set(wave_diff_all, row, wave_diff);
481 "ESO QC WAVE DIFF RMS", cpl_vector_get_stdev(wave_diff_all));
485 used_frameset, frame,
"gravity_wavelamp",
495 FREE (cpl_frameset_delete, wavelamp_frameset);
496 FREE (cpl_frameset_delete, wavecalib_frameset);
497 FREE (cpl_frameset_delete, badcalib_frameset);
498 FREE (cpl_frameset_delete, flatcalib_frameset);
499 FREE (cpl_frameset_delete, p2vmcalib_frameset);
500 FREE (cpl_frameset_delete, used_frameset);
501 FREE (cpl_frameset_delete, dark_frameset);
502 FREE (cpl_frameset_delete, darkcalib_frameset);
503 FREE (cpl_frameset_delete, wave_param_frameset);
514 return (
int)cpl_error_get_code();
cpl_error_code gravi_data_save_new(gravi_data *self, cpl_frameset *allframes, const char *filename, const char *suffix, const cpl_parameterlist *parlist, cpl_frameset *usedframes, cpl_frame *frame, const char *recipe, cpl_propertylist *applist, const char *proCatg)
Save a gravi data in a CPL-complian FITS file.