39 #include "isaac_physicalmodel.h"
40 #include "isaac_utils.h"
46 static int isaac_spc_wlmodel_create(cpl_plugin *);
47 static int isaac_spc_wlmodel_exec(cpl_plugin *);
48 static int isaac_spc_wlmodel_destroy(cpl_plugin *);
49 static int isaac_spc_wlmodel(cpl_parameterlist *);
55 static char isaac_spc_wlmodel_description[] =
56 "isaac_spc_wlmodel -- ISAAC spectro wavelength model\n";
71 int cpl_plugin_get_info(cpl_pluginlist * list)
73 cpl_recipe * recipe = cpl_calloc(1,
sizeof(*recipe));
74 cpl_plugin * plugin = &recipe->interface;
76 cpl_plugin_init(plugin,
79 CPL_PLUGIN_TYPE_RECIPE,
81 "Spectro wavelength model recipe",
82 isaac_spc_wlmodel_description,
86 isaac_spc_wlmodel_create,
87 isaac_spc_wlmodel_exec,
88 isaac_spc_wlmodel_destroy);
90 cpl_pluginlist_append(list, plugin);
105 static int isaac_spc_wlmodel_create(cpl_plugin * plugin)
111 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
112 recipe = (cpl_recipe *)plugin;
113 else return CPL_ERROR_UNSPECIFIED;
116 recipe->parameters = cpl_parameterlist_new();
120 p = cpl_parameter_new_value(
"isaac.isaac_spc_wlmodel.wcen",CPL_TYPE_DOUBLE,
121 "the central wavelength in angstroms",
"isaac.isaac_spc_wlmodel",
123 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"wcen");
124 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
125 cpl_parameterlist_append(recipe->parameters, p);
128 p = cpl_parameter_new_value(
"isaac.isaac_spc_wlmodel.obj",
129 CPL_TYPE_STRING,
"objective (S1/S2/L1/L2/L3)",
130 "isaac.isaac_spc_wlmodel",
"S2");
131 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"obj");
132 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
133 cpl_parameterlist_append(recipe->parameters, p);
136 p = cpl_parameter_new_value(
"isaac.isaac_spc_wlmodel.res",
137 CPL_TYPE_STRING,
"resolution (LR/MR)",
138 "isaac.isaac_spc_wlmodel",
"MR");
139 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"res");
140 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
141 cpl_parameterlist_append(recipe->parameters, p);
153 static int isaac_spc_wlmodel_exec(cpl_plugin * plugin)
158 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
159 recipe = (cpl_recipe *)plugin;
160 else return CPL_ERROR_UNSPECIFIED;
162 return isaac_spc_wlmodel(recipe->parameters);
172 static int isaac_spc_wlmodel_destroy(cpl_plugin * plugin)
177 if (cpl_plugin_get_type(plugin) == CPL_PLUGIN_TYPE_RECIPE)
178 recipe = (cpl_recipe *)plugin;
179 else return CPL_ERROR_UNSPECIFIED;
181 cpl_parameterlist_delete(recipe->parameters);
193 static int isaac_spc_wlmodel(cpl_parameterlist * parlist)
208 par = cpl_parameterlist_find(parlist,
"isaac.isaac_spc_wlmodel.wcen");
209 wcen = cpl_parameter_get_double(par);
212 par = cpl_parameterlist_find(parlist,
"isaac.isaac_spc_wlmodel.obj");
213 obj = cpl_parameter_get_string(par);
216 par = cpl_parameterlist_find(parlist,
"isaac.isaac_spc_wlmodel.res");
217 res = cpl_parameter_get_string(par);
222 cpl_msg_error(cpl_func,
"Cannot compute the physical model");
223 return CPL_ERROR_UNSPECIFIED;
227 if ((fp = fopen(
"wavecal.txt",
"w")) == NULL) {
228 cpl_msg_error(cpl_func,
"Cannot open the output file");
230 return CPL_ERROR_UNSPECIFIED;
232 for (i=0; i<1024; i++) fprintf(fp,
"%d\t\t%g\n", i+1, wlcal[i]);
double * isaac_physical_model(double lambda_c, const char *objective, const char *resolution, int nbpix)
ISAAC physical model.
const char * isaac_get_license(void)
Get the pipeline copyright and license.