36 #include "crires_recipe.h"
38 #include "crires_model_kernel.h"
44 #define RECIPE_STRING "crires_model_wlmap"
50 static int crires_model_wlmap_save(
const cpl_imagelist *,
51 const cpl_parameterlist *, cpl_frameset *) ;
53 static char crires_model_wlmap_description[] =
54 "crires_model_wlmap -- Wavelength map creation using the model\n"
55 "The files listed in the Set Of Frames (sof-file) must be tagged:\n"
56 "raw-file.fits "CRIRES_MODEL_WLMAP_RAW
" or\n"
57 "config-file.fits "CRIRES_CALPRO_MODEL_CONFIG
" or\n"
58 "config-file.fits "CRIRES_CALPRO_MODEL_REFINE_CONF
".\n" ;
60 CRIRES_RECIPE_DEFINE(crires_model_wlmap,
62 "Model wavelength map recipe",
63 crires_model_wlmap_description) ;
73 crires_illum_period period ;
74 } crires_model_wlmap_config ;
88 static int crires_model_wlmap(
89 cpl_frameset * frameset,
90 const cpl_parameterlist * parlist)
92 cpl_frameset * rawframes ;
94 cpl_frame * ref_frame ;
95 cpl_imagelist * wlmap ;
99 if (crires_model_off()) {
107 crires_model_wlmap_config.order = crires_parameterlist_get_int(parlist,
108 RECIPE_STRING, CRIRES_PARAM_ORDER) ;
111 if (crires_dfs_set_groups(frameset,
"crires_model_wlmap")) {
112 cpl_msg_error(__func__,
"Cannot identify RAW and CALIB frames") ;
117 config = crires_extract_filename(frameset, CRIRES_CALPRO_MODEL_CONFIG) ;
118 if (config == NULL) {
119 config = crires_extract_filename(frameset,
120 CRIRES_CALPRO_MODEL_REFINE_CONF) ;
122 if (config == NULL) {
123 cpl_msg_error(__func__,
"No config file in input") ;
128 if ((rawframes = crires_extract_frameset(frameset,
129 CRIRES_MODEL_WLMAP_RAW)) == NULL) {
130 cpl_msg_error(__func__,
"No raw frame in input") ;
133 ref_frame = cpl_frameset_get_position(rawframes, 0) ;
136 if (crires_model_config_check(config,
137 cpl_frame_get_filename(ref_frame)) != 0) {
138 cpl_msg_error(__func__,
139 "The model configuration file version is wrong") ;
140 cpl_frameset_delete(rawframes) ;
145 crires_model_wlmap_config.period =
146 crires_get_detector_illum_period(cpl_frame_get_filename(ref_frame)) ;
147 if (crires_model_wlmap_config.period == CRIRES_ILLUM_UNKNOWN) {
148 cpl_msg_error(__func__,
149 "Cannot determine the detector illumination period") ;
150 cpl_frameset_delete(rawframes) ;
153 crires_display_detector_illum(crires_model_wlmap_config.period) ;
180 if ((wlmap = crires_model_wavpix(cpl_frame_get_filename(ref_frame),
181 config, crires_model_wlmap_config.order)) == NULL) {
182 cpl_msg_error(__func__,
"Cannot compute the WL map") ;
183 cpl_frameset_delete(rawframes) ;
186 cpl_frameset_delete(rawframes) ;
189 if (crires_model_wlmap_save(wlmap, parlist, frameset) == -1) {
190 cpl_msg_error(__func__,
"Cannot save products") ;
191 cpl_imagelist_delete(wlmap) ;
194 cpl_imagelist_delete(wlmap) ;
197 if (cpl_error_get_code())
return -1 ;
210 static int crires_model_wlmap_save(
211 const cpl_imagelist * wlmap,
212 const cpl_parameterlist * parlist,
215 const char * recipe_name =
"crires_model_wlmap" ;
218 crires_image_save(set,
223 CRIRES_WL_MAP_MODEL_IMA,
224 CRIRES_PROTYPE_WL_MAP,
225 crires_model_wlmap_config.period,
228 PACKAGE
"/" PACKAGE_VERSION,
229 "crires_model_wlmap.fits") ;