00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef HAVE_CONFIG_H
00029 #include <config.h>
00030 #endif
00031
00032
00033
00034
00035
00036 #include "irplib_utils.h"
00037 #include "visir_utils.h"
00038 #include "visir_pfits.h"
00039 #include "visir_dfs.h"
00040 #include <cpl.h>
00041
00042 #include <stdarg.h>
00043 #include <stdio.h>
00044 #include <string.h>
00045 #include <math.h>
00046
00047
00048
00049
00050
00051
00052 static const char * visir_dfs_find_tag_from_dpr(const char *, const char *,
00053 const char *);
00054
00055
00061
00062
00065
00071
00072 int visir_dfs_set_groups(cpl_frameset * set)
00073 {
00074 int i = 0;
00075
00076
00077 skip_if (0);
00078
00079
00080 FOR_EACH_FRAMESET(frame, set) {
00081 const char * tag = cpl_frame_get_tag(frame);
00082
00083 skip_if (0);
00084
00085
00086 if (tag == NULL) cpl_msg_warning(cpl_func,
00087 "Frame %d has no tag", i);
00088 else if (!strcmp(tag, VISIR_IMG_ACHRO_RAW) ||
00089 !strcmp(tag, VISIR_IMG_COMBINE_CN) ||
00090 !strcmp(tag, VISIR_IMG_COMBINE_CN_BURST) ||
00091 !strcmp(tag, VISIR_IMG_COMBINE_CNJ) ||
00092 !strcmp(tag, VISIR_IMG_COMBINE_CNJ_BURST) ||
00093 !strcmp(tag, VISIR_IMG_COMBINE_CJ) ||
00094 !strcmp(tag, VISIR_IMG_COMBINE_NJ) ||
00095 !strcmp(tag, VISIR_IMG_COMBINE_DJ) ||
00096 !strcmp(tag, VISIR_IMG_CAL_PHOT) ||
00097 !strcmp(tag, VISIR_IMG_CAL_PHOT_PP) ||
00098 !strcmp(tag, VISIR_IMG_CAL_PHOT_BURST) ||
00099 !strcmp(tag, VISIR_IMG_CAL_OBJ) ||
00100 !strcmp(tag, VISIR_IMG_CAL_OBJ_BURST) ||
00101 !strcmp(tag, VISIR_IMG_FF_RAW) ||
00102 !strcmp(tag, VISIR_IMG_TECH_FF_RAW) ||
00103 !strcmp(tag, VISIR_IMG_FOCFWHM_RAW) ||
00104 !strcmp(tag, VISIR_IMG_ILLU_RAW) ||
00105 !strcmp(tag, VISIR_IMG_PFOV_BIN) ||
00106 !strcmp(tag, VISIR_IMG_PFOV_TEL) ||
00107 !strcmp(tag, VISIR_IMG_PHOT_RAW) ||
00108 !strcmp(tag, VISIR_IMG_PHOT_COMBINED_PROCATG) ||
00109 !strcmp(tag, VISIR_IMG_COADDED_IMG) ||
00110 !strcmp(tag, VISIR_IMG_PSF_RAW) ||
00111 !strcmp(tag, VISIR_IMG_TRANS_RAW) ||
00112 !strcmp(tag, VISIR_IMG_DARK_RAW) ||
00113 !strcmp(tag, VISIR_ACQ_CNJ) ||
00114 !strcmp(tag, VISIR_SPC_OBS_ECH_RAW) ||
00115 !strcmp(tag, VISIR_SPC_OBS_RAW) ||
00116 !strcmp(tag, VISIR_SPC_OBS_PP) ||
00117 !strcmp(tag, VISIR_SPC_OBS_HR_RAW) ||
00118 !strcmp(tag, VISIR_SPC_PHOT_RAW) ||
00119 !strcmp(tag, VISIR_SPC_PHOT_PP) ||
00120 !strcmp(tag, VISIR_SPC_PHOT_ECH_RAW) ||
00121 !strcmp(tag, VISIR_SPC_PHOT_ECH_PP) ||
00122 !strcmp(tag, VISIR_SPC_OBS_ECH_PP) ||
00123 !strcmp(tag, VISIR_SPC_WCAL_ECH_RAW) ||
00124 !strcmp(tag, VISIR_SPC_WCAL_RAW) ||
00125 !strcmp(tag, VISIR_SPC_FF_RAW) ||
00126 !strcmp(tag, VISIR_SPC_TECH_FF_RAW) ||
00127 !strcmp(tag, VISIR_SPC_DARK_RAW) ||
00128 !strcmp(tag, VISIR_IMG_LINES_ASCII) ||
00129 !strcmp(tag, VISIR_SPC_LINES_ASCII) ||
00130 !strcmp(tag, VISIR_SPC_QEFF_ASCII) ||
00131 !strcmp(tag, VISIR_SAM_CAL_N_RAW) ||
00132 !strcmp(tag, VISIR_SAM_CAL_CN_RAW) ||
00133 !strcmp(tag, VISIR_SAM_CAL_NJ_RAW) ||
00134 !strcmp(tag, VISIR_SAM_CAL_CNJ_RAW) ||
00135 !strcmp(tag, VISIR_CORO_CAL_CNJ_RAW) ||
00136 !strcmp(tag, VISIR_SAM_OBS_N_RAW) ||
00137 !strcmp(tag, VISIR_SAM_OBS_CN_RAW) ||
00138 !strcmp(tag, VISIR_SAM_OBS_NJ_RAW) ||
00139 !strcmp(tag, VISIR_SAM_OBS_CNJ_RAW) ||
00140 !strcmp(tag, VISIR_CORO_OBS_CNJ_RAW) ||
00141 !strcmp(tag, VISIR_UTIL_QC_PROCATG) ||
00142 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_PROCATG) ||
00143 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_A_PROCATG) ||
00144 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_B_PROCATG) ||
00145 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_A_ON_PROCATG) ||
00146 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_A_OFF_PROCATG) ||
00147 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_B_ON_PROCATG) ||
00148 !strcmp(tag, VISIR_UTIL_REPACK_MEAN_B_OFF_PROCATG) ||
00149 !strcmp(tag, VISIR_UTIL_REPACK_A_ON_PROCATG) ||
00150 !strcmp(tag, VISIR_UTIL_REPACK_A_OFF_PROCATG) ||
00151 !strcmp(tag, VISIR_UTIL_REPACK_B_ON_PROCATG) ||
00152 !strcmp(tag, VISIR_UTIL_REPACK_B_OFF_PROCATG) ||
00153 !strcmp(tag, VISIR_UTIL_DETECT_SHIFT_PROCATG) ||
00154 !strcmp(tag, VISIR_UTIL_DETECT_SHIFT_TEMPLATE_PROCATG) ||
00155 !strcmp(tag, VISIR_UTIL_INPUTS_RAW) ||
00156 !strcmp(tag, VISIR_UTIL_CORRECTED) ||
00157 !strcmp(tag, VISIR_UTIL_NODDED) ||
00158 !strcmp(tag, VISIR_UTIL_CONVERT_RAW) ||
00159 !strcmp(tag, VISIR_UTIL_CONVERT_TAB) ||
00160 !strcmp(tag, VISIR_UTIL_CONVERT_INV) ||
00161 !strcmp(tag, VISIR_UTIL_CONVERT_POS_AUX) ||
00162 !strcmp(tag, VISIR_UTIL_CONVERT_INV_AUX) ||
00163 !strcmp(tag, VISIR_UTIL_WEIGHT2ERROR) ||
00164 !strcmp(tag, VISIR_IMG_BURST) ||
00165 !strcmp(tag, VISIR_UTIL_DATA) ||
00166 !strcmp(tag, VISIR_UTIL_UNDISTORT_RAW) ||
00167 !strcmp(tag, VISIR_UTIL_REPACK_RAW))
00168 cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW);
00169
00170 else if (!strcmp(tag, VISIR_CALIB_FLAT) ||
00171 !strcmp(tag, VISIR_CALIB_BPM) ||
00172 !strcmp(tag, VISIR_CALIB_STATIC_MASK) ||
00173 !strcmp(tag, VISIR_CALIB_STDSTAR_IMG) ||
00174 !strcmp(tag, VISIR_CALIB_STDSTAR_SPC) ||
00175 !strcmp(tag, VISIR_CALIB_LINES_SPC) ||
00176 !strcmp(tag, VISIR_CALIB_LIN) ||
00177 !strcmp(tag, VISIR_SPC_OBS_SKYFRAME) ||
00178 !strcmp(tag, VISIR_UTIL_WEIGHT2ERROR_PROCATG) ||
00179 !strcmp(tag, VISIR_IMG_CLIPPED_MAP_PROCATG) ||
00180 !strcmp(tag, VISIR_UTIL_WEIGHT2ERROR) ||
00181 !strcmp(tag, VISIR_UTIL_WEIGHT_MAP) ||
00182 !strcmp(tag, VISIR_UTIL_ERROR_MAP) ||
00183 !strcmp(tag, VISIR_UTIL_VARIANCE_MAP) ||
00184 !strcmp(tag, VISIR_SPC_CAT_ASCII) ||
00185 !strcmp(tag, VISIR_CALIB_QEFF_SPC))
00186 cpl_frame_set_group(frame, CPL_FRAME_GROUP_CALIB);
00187 else cpl_msg_warning(cpl_func,
00188 "Frame %d has unknown tag: %s", i, tag);
00189 }
00190
00191 end_skip;
00192
00193 if (cpl_error_get_code())
00194 cpl_msg_error(cpl_func, "Could not identify RAW and CALIB frames "
00195 "(after processing %d frames)", i);
00196
00197 return cpl_error_get_code();
00198 }
00199
00200 const char *
00201 visir_dfs_output_catg(const char * inpcatg, const char * pipecatg)
00202 {
00203 int phot = 0;
00204 if (!strcmp(pipecatg, VISIR_IMG_PHOT_ONEBEAM_PROCATG) ||
00205 !strcmp(pipecatg, VISIR_IMG_PHOT_COMBINED_PROCATG)) {
00206 phot = 1;
00207 }
00208 if (!strcmp(inpcatg, VISIR_ACQ_CNJ)) {
00209 if (phot) {
00210 return "ACQ_IMG_PHOT_COMBINED";
00211 }
00212 else {
00213 return "ACQ_IMG_OBJ_COMBINED";
00214 }
00215 }
00216 else if (!strcmp(inpcatg, VISIR_IMG_CAL_PHOT_BURST)) {
00217 return VISIR_IMG_PHOT_COMBINED_PROCATG"_BURST";
00218 }
00219 else if (!strcmp(inpcatg, VISIR_IMG_CAL_OBJ_BURST) ||
00220 !strcmp(inpcatg, VISIR_IMG_COMBINE_CN_BURST) ||
00221 !strcmp(inpcatg, VISIR_IMG_COMBINE_CNJ_BURST)) {
00222 return VISIR_IMG_OBJ_COMBINED_PROCATG"_BURST";
00223 }
00224 return pipecatg;
00225 }
00226
00227
00233
00234 cpl_error_code visir_dfs_check_framelist_tag(const irplib_framelist * self)
00235 {
00236
00237 if (cpl_error_get_code()) return cpl_error_get_code();
00238
00239 cpl_ensure_code(self != NULL, CPL_ERROR_NULL_INPUT);
00240
00241 return irplib_dfs_check_framelist_tag(self, visir_dfs_find_tag_from_dpr);
00242
00243 }
00244
00247
00256
00257 static const char * visir_dfs_find_tag_from_dpr(const char * catg,
00258 const char * type,
00259 const char * tech)
00260 {
00261 const char * docatg = NULL;
00262
00263
00264 if (cpl_error_get_code()) return NULL;
00265
00266 cpl_ensure(catg != NULL, CPL_ERROR_NULL_INPUT, NULL);
00267 cpl_ensure(type != NULL, CPL_ERROR_NULL_INPUT, NULL);
00268 cpl_ensure(tech != NULL, CPL_ERROR_NULL_INPUT, NULL);
00269
00270 #include "visir_dfs_dpr.h"
00271
00272 return docatg;
00273
00274 }
00275
00276