34 #include "sinfo_detlin_ini_by_cpl.h"
35 #include "sinfo_error.h"
36 #include "sinfo_hidden.h"
37 #include "sinfo_raw_types.h"
38 #include "sinfo_functions.h"
39 #include "sinfo_file_handling.h"
44 parse_section_frames(detlin_config *,
45 cpl_frameset* sof, cpl_frameset** raw,
int* status);
47 parse_section_response(detlin_config *, cpl_parameterlist* cpl_cfg);
69 sinfo_parse_cpl_input_detlin(cpl_parameterlist * cpl_cfg, cpl_frameset* sof,
80 cfg = sinfo_detlin_cfg_create();
88 parse_section_response(cfg, cpl_cfg);
89 parse_section_frames(cfg, sof, raw, &status);
92 sinfo_detlin_free(&cfg);
111 parse_section_frames(detlin_config * cfg,
121 cpl_frame* frame=NULL;
122 char spat_res[FILE_NAME_SZ];
123 char lamp_status[FILE_NAME_SZ];
124 char band[FILE_NAME_SZ];
127 sinfo_extract_raw_frames_type(sof,raw,RAW_LINEARITY_LAMP);
129 nraw=cpl_frameset_get_size(*raw);
133 "frameset!Aborting...",nraw, RAW_LINEARITY_LAMP);
142 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
145 for (i=0 ; i<nraw ; i++) {
147 frame = cpl_frameset_get_frame(*raw,i);
148 if(sinfo_file_exists((
char*)cpl_frame_get_filename(frame))==1)
150 tag = (
char*)cpl_frame_get_tag(frame) ;
151 if(sinfo_is_flat_lindet(tag) || sinfo_is_dark(tag)) {
153 cfg->framelist[i]=cpl_strdup(cpl_frame_get_filename(frame));
160 cfg->nframes = nraw_good ;
163 if (nraw_good < (cfg->order+1)) {
165 "frameset as we do a %d order polymnomial fit"
166 "!Aborting...",nraw_good,
167 RAW_LINEARITY_LAMP,cfg->order);
174 strcpy(cfg -> outName, BP_LIN_OUT_FILENAME);
176 check_nomsg(frame = cpl_frameset_get_frame(*raw,0));
177 sinfo_get_spatial_res(frame,spat_res);
179 switch(sinfo_frame_is_on(frame))
182 strcpy(lamp_status,
"on");
185 strcpy(lamp_status,
"off");
188 strcpy(lamp_status,
"undefined");
191 strcpy(lamp_status,
"undefined");
197 sinfo_get_band(frame,band);
198 sinfo_msg(
"Spatial resolution: %s lamp status: %s band: %s \n",
199 spat_res, lamp_status, band);
202 sinfo_get_ins_set(band,&ins_set);
218 parse_section_response(detlin_config * cfg,cpl_parameterlist * cpl_cfg)
222 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_lin.order");
223 cfg -> order = cpl_parameter_get_int(p);
225 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_lin.thresh_sigma_factor");
226 cfg->threshSigmaFactor = (float) cpl_parameter_get_double(p);
228 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_lin.low_rejection");
229 cfg -> loReject = (float) cpl_parameter_get_double(p);
231 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_lin.high_rejection");
232 cfg -> hiReject = (float) cpl_parameter_get_double(p);
234 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.bp_lin.nlin_threshold");
235 cfg->nonlinearThresh = (float) cpl_parameter_get_double(p);
238 strcpy(cfg->coeffsCubeName, BP_LIN_COEFFS_CUBE_OUT_FILENAME);
249 sinfo_detlin_free(detlin_config ** cfg)
253 for(i=0;i<(*cfg)->nframes; i++) {
254 if((*cfg)->framelist[i] != NULL) cpl_free((*cfg)->framelist[i]);
256 cpl_free((*cfg)->framelist);
257 sinfo_detlin_cfg_destroy((*cfg));