28 #ifndef IRPLIB_DETMON_LG_H
29 #define IRPLIB_DETMON_LG_H
36 #include <detmon_cpl_size.h>
42 #define DETMON_LG_ON_RAW_OLD "ON_RAW"
43 #define DETMON_LG_OFF_RAW_OLD "OFF_RAW"
44 #define DETMON_LG_ON_RAW_NEW "DETMON_LAMP_ON"
45 #define DETMON_LG_OFF_RAW_NEW "DETMON_LAMP_OFF"
51 #define DETMON_QC_COUNTS_MIN "ESO QC COUNTS MIN"
52 #define DETMON_QC_COUNTS_MIN_C "Minimum median value used in linearity test (in a user defined region) [ADU]"
54 #define DETMON_QC_COUNTS_MAX "ESO QC COUNTS MAX"
55 #define DETMON_QC_COUNTS_MAX_C "Maximum median value used in linearity test (in a user defined region) [ADU]"
57 #define DETMON_QC_CONAD "ESO QC CONAD"
58 #define DETMON_QC_CONAD_C "CONAD value [el/ADU]"
60 #define DETMON_QC_CONAD_CORR "ESO QC CONAD CORR"
61 #define DETMON_QC_CONAD_CORR_C "CONAD value taken QC.AUTOCORR into account [el/ADU]"
63 #define DETMON_QC_GAIN "ESO QC GAIN"
64 #define DETMON_QC_GAIN_C "GAIN (see QC.METHOD) [ADU/el]"
66 #define DETMON_QC_GAIN_MSE "ESO QC GAIN MSE"
67 #define DETMON_QC_GAIN_MSE_C "Measured Squared error in GAIN computation"
69 #define DETMON_QC_RON "ESO QC RON"
70 #define DETMON_QC_RON_C "RON obtained as independent term (PTC method)"
72 #define DETMON_QC_AUTOCORR "ESO QC AUTOCORR"
73 #define DETMON_QC_AUTOCORR_C "Autocorrelation factor computed as sum of " \
74 "all pixels in autocorrelation image"
75 #define DETMON_QC_GAIN_CORR "ESO QC GAIN CORR"
76 #define DETMON_QC_GAIN_CORR_C "GAIN taken QC.AUTOCORR into account [el/ADU]"
78 #define DETMON_QC_LAMP_FLUX "ESO QC LAMP FLUX"
79 #define DETMON_QC_LAMP_FLUX_C "Lamp flux"
81 #define DETMON_QC_NUM_BPM "ESO QC NUM BPM"
82 #define DETMON_QC_NUM_BPM_C "Number of bad pixels detected according to "\
83 "polynomial information"
85 #define DETMON_QC_LAMP_STAB "ESO QC LAMP STAB"
86 #define DETMON_QC_LAMP_STAB_C "Lamp stability"
88 #define DETMON_QC_METHOD "ESO QC METHOD"
89 #define DETMON_QC_METHOD_C "Method applied to compute GAIN"
91 #define DETMON_QC_LIN_EFF "ESO QC LIN EFF"
92 #define DETMON_QC_LIN_EFF_C "Effective non-linearity correction"
94 #define DETMON_QC_LIN_EFF_FLUX "ESO QC LIN EFF FLUX"
95 #define DETMON_QC_LIN_EFF_FLUX_C "FLux level at which effective non-linearity correction is computed"
97 #define DETMON_QC_LIN_COEF "ESO QC LIN COEF"
98 #define DETMON_QC_LIN_COEF_C "Linearity coefficient value"
101 #define DETMON_QC_LIN_COEF_ERR "ESO QC LIN EFF ERR"
102 #define DETMON_QC_LIN_COEF_ERR_C "Linearity coefficient error value"
103 #define DETMON_QC_LIN_COEF_MSE_ERR_C "Linearity coefficient measured square error value"
106 #define DETMON_QC_ERRFIT "ESO QC ERRFIT"
107 #define DETMON_QC_ERRFIT_C "Error of fit"
108 #define DETMON_QC_ERRFIT_MSE_C "Measured square error of fit"
111 #define DETMON_QC_CONTAM "ESO QC CONTAM"
112 #define DETMON_QC_CONTAM_C "Detector contamination in a region"
114 #define DETMON_QC_FPN "ESO QC FPN"
115 #define DETMON_QC_FPN_C "Flat pattern noise"
118 #define detmon_lg_get_description(RECIPE_NAME, PIPE_NAME, \
119 DETMON_LG_ON_RAW_NEW, \
120 DETMON_LG_OFF_RAW_NEW, \
121 DETMON_LG_ON_RAW_OLD, \
122 DETMON_LG_OFF_RAW_OLD) \
123 RECIPE_NAME " -- " PIPE_NAME " linearity/gain recipe for OPT/IR.\n" \
124 "The files listed in the Set Of Frames must be tagged:\n" \
125 "the raw-on-file.fits "DETMON_LG_ON_RAW_NEW" and\n" \
126 "the raw-off-file.fits "DETMON_LG_OFF_RAW_NEW"\n" \
127 "For backward compatibility are alternatively still supported the following tags:\n" \
128 "the raw-on-file.fits "DETMON_LG_ON_RAW_OLD" and\n" \
129 "the raw-off-file.fits "DETMON_LG_OFF_RAW_OLD"\n" \
130 "The recipe requires at least order+1 valid pairs of ON frames\n" \
131 "and order+1 valid pairs of OFF frames, \n" \
132 "where order is the value of the 'order' parameter.\n" \
133 "There is no requirement for pairs of OFF frames if collapse parameter" \
134 "is set to true.\n" \
135 "Frames with median flux over --filter will be excluded from the" \
137 "To perform a stability check you need frames with at least 2 DIT" \
139 "NOTE for multiextension cases: it is mandatory to modify the --exts" \
140 "parameter, either to -1 (all extensions) or to any valid extension nb.\n"
142 #define REGEXP "ARCFILE|MJD-OBS|ESO TPL ID|DATE-OBS|ESO DET DIT|ESO DET NDIT"
144 typedef unsigned long irplib_gain_flag;
146 #define IRPLIB_GAIN_PTC ((irplib_gain_flag) 1 << 1)
147 #define IRPLIB_GAIN_MEDIAN ((irplib_gain_flag) 1 << 2)
148 #define IRPLIB_GAIN_NO_COLLAPSE ((irplib_gain_flag) 1 << 3)
149 #define IRPLIB_GAIN_COLLAPSE ((irplib_gain_flag) 1 << 4)
150 #define IRPLIB_GAIN_WITH_AUTOCORR ((irplib_gain_flag) 1 << 5)
151 #define IRPLIB_GAIN_WITH_RESCALE ((irplib_gain_flag) 1 << 6)
152 #define IRPLIB_GAIN_OPT ((irplib_gain_flag) 1 << 7)
153 #define IRPLIB_GAIN_NIR ((irplib_gain_flag) 1 << 8)
155 typedef unsigned long irplib_lin_flag;
157 #define IRPLIB_LIN_NO_COLLAPSE ((irplib_lin_flag) 1 << 10)
158 #define IRPLIB_LIN_COLLAPSE ((irplib_lin_flag) 1 << 11)
159 #define IRPLIB_LIN_PIX2PIX ((irplib_lin_flag) 1 << 12)
160 #define IRPLIB_LIN_WITH_RESCALE ((irplib_lin_flag) 1 << 13)
161 #define IRPLIB_LIN_OPT ((irplib_lin_flag) 1 << 14)
162 #define IRPLIB_LIN_NIR ((irplib_lin_flag) 1 << 15)
165 detmon_lg(cpl_frameset * frameset,
166 const cpl_parameterlist * parlist,
168 const char * tag_off,
169 const char * recipe_name,
170 const char * pipeline_name,
171 const char * pafregexp,
172 const cpl_propertylist * pro_lintbl,
173 const cpl_propertylist * pro_gaintbl,
174 const cpl_propertylist * pro_coeffscube,
175 const cpl_propertylist * pro_bpm,
176 const cpl_propertylist * pro_corr,
177 const cpl_propertylist * pro_diff,
178 const char * package,
179 int (* compare) (
const cpl_frame *,
181 int (* load_fset) (
const cpl_frameset *,
184 const cpl_boolean opt_nir);
187 cpl_image * detmon_image_correlate(
const cpl_image *,
193 detmon_lg_fill_parlist_nir_default(cpl_parameterlist *,
198 detmon_lg_fill_parlist_nir_default_mr(cpl_parameterlist * parlist,
199 const char *recipe_name,
200 const char *pipeline_name);
203 detmon_lg_fill_parlist_opt_default(cpl_parameterlist *,
208 detmon_lg_fill_parlist_opt_default_mr(cpl_parameterlist * parlist,
209 const char *recipe_name,
210 const char *pipeline_name);
213 detmon_lg_fill_parlist(cpl_parameterlist * parlist,
214 const char *recipe_name,
const char *pipeline_name,
224 const char * intermediate,
225 const char * autocorr,
226 const char * collapse,
227 const char * rescale,
228 const char * pix2pix,
235 const char * pafname,
257 cpl_boolean opt_nir);
260 detmon_autocorrelate(
const cpl_image *,
261 const int,
const int);
264 detmon_gain(
const cpl_imagelist *,
265 const cpl_imagelist *,
283 detmon_lin(
const cpl_imagelist *,
284 const cpl_imagelist *,
301 detmon_lg_set_tag(cpl_frameset*
set,
const char** tag_on,
const char** tag_off);