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 #include <cxmessages.h>
00033 #include <cxmemory.h>
00034
00035 #include <cpl_recipe.h>
00036 #include <cpl_plugininfo.h>
00037 #include <cpl_parameterlist.h>
00038 #include <cpl_frameset.h>
00039 #include <cpl_msg.h>
00040
00041 #include "giframe.h"
00042 #include "gierror.h"
00043 #include "giutils.h"
00044
00045 #include "irplib_detmon.h"
00046 #include "irplib_detmon_lg.h"
00047
00048
00049 static cxint giccdlin(cpl_parameterlist* config, cpl_frameset* set);
00050
00051
00052
00053
00054
00055
00056
00057 static cxint
00058 giccdlin_create(cpl_plugin* plugin)
00059 {
00060
00061 cpl_recipe* recipe = (cpl_recipe*)plugin;
00062
00063
00064 giraffe_error_init();
00065
00066
00067
00068
00069
00070
00071
00072
00073 recipe->parameters = cpl_parameterlist_new();
00074 cx_assert(recipe->parameters != NULL);
00075
00076
00077
00078
00079
00080
00081
00082 irplib_detmon_lg_fill_parlist(recipe->parameters, "giccdlin", "giraffe",
00083 "PTC",
00084 3,
00085 3,
00086 25,
00087 -1,
00088 -1,
00089 -1,
00090 -1,
00091 10000,
00092 "CPL_FALSE",
00093 "CPL_FALSE",
00094 "CPL_TRUE",
00095 "CPL_TRUE",
00096 "CPL_FALSE",
00097 "CPL_FALSE",
00098 -1,
00099 26,
00100 26,
00101 0.1,
00102 "giccdlin",
00103 -1,
00104 -1,
00105 -1,
00106 -1,
00107 -1,
00108 -1,
00109 -1,
00110 -1,
00111 -1,
00112 -1,
00113 -1,
00114 -1,
00115 -1,
00116 -1,
00117 -1,
00118 -1,
00119 -1,
00120 -1,
00121 -1,
00122 -1,
00123 0,
00124 OPT);
00125
00126
00127 if (cpl_error_get_code() != CPL_ERROR_NONE) {
00128 return 1;
00129 }
00130
00131 return 0;
00132
00133 }
00134
00135
00136
00137
00138
00139
00140 static cxint
00141 giccdlin_exec(cpl_plugin* plugin)
00142 {
00143
00144 cpl_recipe* recipe = (cpl_recipe*)plugin;
00145
00146
00147 cx_assert(recipe->parameters != NULL);
00148 cx_assert(recipe->frames != NULL);
00149
00150 return giccdlin(recipe->parameters, recipe->frames);
00151
00152 }
00153
00154
00155 static cxint
00156 giccdlin_destroy(cpl_plugin* plugin)
00157 {
00158
00159 cpl_recipe* recipe = (cpl_recipe*)plugin;
00160
00161
00162
00163
00164
00165
00166
00167
00168 cpl_parameterlist_delete(recipe->parameters);
00169
00170 giraffe_error_clear();
00171
00172 return 0;
00173
00174 }
00175
00176
00177
00178
00179
00180
00181 static cxint
00182 giccdlin(cpl_parameterlist* config, cpl_frameset* set)
00183 {
00184
00185 cpl_propertylist* ltable_properties = NULL;
00186 cpl_propertylist* gtable_properties = NULL;
00187 cpl_propertylist* ccube_properties = NULL;
00188 cpl_propertylist* bpm_properties = NULL;
00189 cpl_propertylist* acorr_properties = NULL;
00190 cpl_propertylist* dflat_properties = NULL;
00191
00192 cpl_error_code status = CPL_ERROR_NONE;
00193
00194
00195 ltable_properties = irplib_detmon_fill_prolist("LINEAR_INFO",
00196 NULL, NULL, CPL_FALSE);
00197 gtable_properties = irplib_detmon_fill_prolist("GAIN_INFO",
00198 NULL, NULL, CPL_FALSE);
00199 ccube_properties = irplib_detmon_fill_prolist("COEFFS_CUBE",
00200 NULL, NULL, CPL_FALSE);
00201 bpm_properties = irplib_detmon_fill_prolist("BAD_PIXEL_MAP",
00202 NULL, NULL, CPL_FALSE);
00203 acorr_properties = irplib_detmon_fill_prolist("AUTOCORR",
00204 NULL, NULL, CPL_FALSE);
00205 dflat_properties = irplib_detmon_fill_prolist("DIFF_FLAT",
00206 NULL, NULL, CPL_FALSE);
00207
00208 status = irplib_detmon_lg(set,
00209 config,
00210 GIFRAME_LINEARITY_FLAT,
00211 GIFRAME_LINEARITY_BIAS,
00212 "giccdlin",
00213 "giraffe",
00214 REGEXP,
00215 ltable_properties,
00216 gtable_properties,
00217 ccube_properties,
00218 bpm_properties,
00219 acorr_properties,
00220 dflat_properties,
00221 PACKAGE "/" PACKAGE_VERSION,
00222 NULL, NULL, OPT);
00223
00224 cpl_propertylist_delete(ltable_properties);
00225 cpl_propertylist_delete(gtable_properties);
00226 cpl_propertylist_delete(ccube_properties);
00227 cpl_propertylist_delete(bpm_properties);
00228 cpl_propertylist_delete(acorr_properties);
00229 cpl_propertylist_delete(dflat_properties);
00230
00231 if (status != CPL_ERROR_NONE) {
00232 return 1;
00233 }
00234
00235 return 0;
00236
00237 }
00238
00239
00240
00241
00242
00243
00244
00245 int
00246 cpl_plugin_get_info(cpl_pluginlist* list)
00247 {
00248
00249 cpl_recipe* recipe = cx_calloc(1, sizeof *recipe);
00250 cpl_plugin* plugin = &recipe->interface;
00251
00252
00253 cpl_plugin_init(plugin,
00254 CPL_PLUGIN_API,
00255 GIRAFFE_BINARY_VERSION,
00256 CPL_PLUGIN_TYPE_RECIPE,
00257 "giccdlin",
00258 "Compute linearity and gain detector characteristics.",
00259 "For detailed information please refer to the "
00260 "GIRAFFE pipeline user manual.\nIt is available at "
00261 "http://www.eso.org/pipelines.",
00262 "Giraffe Pipeline",
00263 PACKAGE_BUGREPORT,
00264 giraffe_get_license(),
00265 giccdlin_create,
00266 giccdlin_exec,
00267 giccdlin_destroy);
00268
00269 cpl_pluginlist_append(list, plugin);
00270
00271 return 0;
00272
00273 }