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 <cpl.h>
00037
00038 #include "irplib_detmon_lg.h"
00039 #include "irplib_plugin.h"
00040
00041
00042 #define NACO_IMG_LINGAIN_ON_RAW "CAL_LINGAIN_LAMP"
00043 #define NACO_IMG_LINGAIN_OFF_RAW "CAL_LINGAIN_DARK"
00044
00045 #define RECIPE_NAME "naco_img_lingain"
00046
00047
00048 #define INSTREGEXP "ESO DET MODE NAME|ESO DET NCORRS NAME|" \
00049 "ESO INS OPTI7 NAME|ESO INS OPTI6 NAME|" \
00050 "ESO INS OPTI5 NAME|ESO INS OPTI4 NAME"
00051
00052 #define PAFREGEXP "^(" REGEXP "|" INSTREGEXP ")$"
00053
00054 #define NIR TRUE
00055
00056 #ifndef NACO_REF_LEVEL
00057
00058
00059
00060 #define NACO_REF_LEVEL 2000
00061 #endif
00062
00063
00064
00065
00066 static cpl_error_code naco_img_lingain_fill_parameterlist(cpl_parameterlist *);
00067
00068 CPL_RECIPE_DEFINE(naco_img_lingain, NACO_BINARY_VERSION,
00069 naco_img_lingain_fill_parameterlist(recipe->parameters),
00070 "Lars Lundin", PACKAGE_BUGREPORT, "2007",
00071 "Linearity/Gain recipe for the IR domain",
00072 irplib_detmon_lg_get_description(RECIPE_NAME, "NACO",
00073 NACO_IMG_LINGAIN_ON_RAW,
00074 NACO_IMG_LINGAIN_OFF_RAW));
00075
00076
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 static int naco_img_lingain(cpl_frameset * frameset,
00097 const cpl_parameterlist * parlist)
00098 {
00099
00100 cpl_propertylist * pro_lintbl = cpl_propertylist_new();
00101 cpl_propertylist * pro_gaintbl = cpl_propertylist_new();
00102 cpl_propertylist * pro_coeffscube = cpl_propertylist_new();
00103 cpl_propertylist * pro_bpm = cpl_propertylist_new();
00104 cpl_propertylist * pro_corr = cpl_propertylist_new();
00105 cpl_propertylist * pro_diff = cpl_propertylist_new();
00106 cpl_error_code error = CPL_ERROR_NONE;
00107
00108 error |= cpl_propertylist_append_string(pro_lintbl, "ESO PRO CATG",
00109 "DET_LIN_INFO");
00110 error |= cpl_propertylist_append_string(pro_gaintbl, "ESO PRO CATG",
00111 "GAIN_INFO");
00112 error |= cpl_propertylist_append_string(pro_coeffscube, "ESO PRO CATG",
00113 "COEFFS_CUBE");
00114 error |= cpl_propertylist_append_string(pro_bpm, "ESO PRO CATG",
00115 "BP_MAP_NL");
00116 error |= cpl_propertylist_append_string(pro_corr, "ESO PRO CATG",
00117 "AUTOCORR");
00118 error |= cpl_propertylist_append_string(pro_diff, "ESO PRO CATG",
00119 "DIFF_FLAT");
00120
00121 error |= irplib_detmon_lg(frameset,
00122 parlist,
00123 NACO_IMG_LINGAIN_ON_RAW,
00124 NACO_IMG_LINGAIN_OFF_RAW,
00125 RECIPE_NAME,
00126 PACKAGE,
00127 PAFREGEXP,
00128 pro_lintbl,
00129 pro_gaintbl,
00130 pro_coeffscube,
00131 pro_bpm,
00132 pro_corr,
00133 pro_diff,
00134 PACKAGE "/" PACKAGE_VERSION,
00135 NULL, NULL, NIR);
00136
00137 cpl_propertylist_delete(pro_lintbl);
00138 cpl_propertylist_delete(pro_gaintbl);
00139 cpl_propertylist_delete(pro_coeffscube);
00140 cpl_propertylist_delete(pro_bpm);
00141 cpl_propertylist_delete(pro_corr);
00142 cpl_propertylist_delete(pro_diff);
00143
00144
00145 cpl_ensure_code(!error, cpl_error_get_code());
00146
00147 return CPL_ERROR_NONE;
00148 }
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160 static
00161 cpl_error_code naco_img_lingain_fill_parameterlist(cpl_parameterlist * self)
00162 {
00163
00164 cpl_error_code error =
00165 irplib_detmon_lg_fill_parlist_nir_default(self, RECIPE_NAME, PACKAGE);
00166 cpl_parameter * p;
00167
00168 cpl_ensure_code(!error, error);
00169
00170
00171
00172 p = cpl_parameterlist_find(self, PACKAGE "." RECIPE_NAME ".ref_level");
00173
00174 cpl_ensure_code(p != NULL, CPL_ERROR_DATA_NOT_FOUND);
00175
00176 error = cpl_parameter_set_default_int(p, NACO_REF_LEVEL);
00177
00178 cpl_ensure_code(!error, error);
00179
00180 return CPL_ERROR_NONE;
00181 }