36 #include "sinfo_objspider_ini_by_cpl.h"
37 #include "sinfo_functions.h"
38 #include "sinfo_pro_types.h"
39 #include "sinfo_hidden.h"
40 #include "sinfo_cpl_size.h"
42 #include "sinfo_file_handling.h"
48 parse_section_frames(object_config *,
49 cpl_frameset* sof, cpl_frameset**stk,
int* status);
51 parse_section_jittering(object_config *, cpl_parameterlist * cpl_cfg);
53 parse_section_resampling(object_config *, cpl_parameterlist * cpl_cfg);
55 parse_section_calibration(object_config *);
57 parse_section_cubecreation(object_config *, cpl_parameterlist * cpl_cfg);
59 parse_section_finetuning(object_config *, cpl_parameterlist * cpl_cfg);
61 parse_section_skyextraction(object_config *, cpl_parameterlist * cpl_cfg);
85 sinfo_parse_cpl_input_objspider(cpl_parameterlist * cpl_cfg,cpl_frameset* sof,
88 object_config * cfg = sinfo_object_cfg_create();
96 parse_section_resampling (cfg, cpl_cfg);
97 parse_section_calibration (cfg);
98 parse_section_cubecreation (cfg, cpl_cfg);
99 parse_section_finetuning (cfg, cpl_cfg);
100 parse_section_skyextraction(cfg, cpl_cfg);
101 parse_section_jittering (cfg, cpl_cfg);
102 parse_section_frames (cfg, sof,stk,&status);
105 sinfo_object_cfg_destroy(cfg);
114 parse_section_frames(object_config * cfg,
125 cpl_frame* frame = NULL;
127 cpl_size * labels=NULL ;
129 cpl_frameset * cur_set=NULL ;
130 cpl_frame * cur_frame=NULL ;
137 char spat_res[FILE_NAME_SZ];
138 char lamp_status[FILE_NAME_SZ];
139 char band[FILE_NAME_SZ];
146 labels = cpl_frameset_labelise(sof, sinfo_compare_tags,&nlabels );
147 if (labels == NULL) {
155 cur_frame = cpl_frameset_get_frame(sof, 0) ;
156 tag = (
char*)cpl_frame_get_tag(cur_frame) ;
157 if (sinfo_is_stack(tag)) {
158 *stk = cpl_frameset_duplicate(sof) ;
163 for (i=0 ; i<nlabels ; i++) {
164 cur_set = cpl_frameset_extract(sof, labels, i) ;
165 cur_frame = cpl_frameset_get_frame(cur_set, 0) ;
166 tag = (
char*)cpl_frame_get_tag(cur_frame) ;
167 if (sinfo_is_stack(tag) == 1) {
169 *stk = cpl_frameset_duplicate(cur_set) ;
171 }
else if (sinfo_is_wavemap(tag)) {
173 strcpy(cfg -> wavemap,cpl_strdup(cpl_frame_get_filename(cur_frame)));
175 }
else if (sinfo_is_distlist(tag)) {
177 strcpy(cfg -> poslist,cpl_strdup(cpl_frame_get_filename(cur_frame)));
179 }
else if (sinfo_is_firstcol(tag)) {
181 strcpy(cfg -> firstCol,cpl_strdup(cpl_frame_get_filename(cur_frame)));
183 }
else if (sinfo_is_halosp(tag)) {
185 strcpy(cfg->halospectrum,cpl_strdup(cpl_frame_get_filename(cur_frame)));
188 cpl_frameset_delete(cur_set) ;
208 if (first_col == 0) {
216 nraw = cpl_frameset_get_size(*stk);
219 sinfo_msg_error(
"Cannot find input stacked frames in the input list") ;
224 nraw = cpl_frameset_get_size(*stk);
231 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
234 for (i=0 ; i<nraw ; i++) {
235 frame = cpl_frameset_get_frame(*stk,i);
236 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1) {
237 cfg->framelist[i]=cpl_strdup(cpl_frame_get_filename(frame));
248 cfg->nframes = nraw ;
250 strcpy(cfg -> outName, SKYSPIDER_OUT_FILENAME);
251 strcpy(cfg -> maskname, SKYSPIDER_MASK_OUT_FILENAME);
254 frame = cpl_frameset_get_frame(*stk,0);
256 sinfo_get_spatial_res(frame,spat_res);
257 switch(sinfo_frame_is_on(frame)) {
260 strcpy(lamp_status,
"on");
263 strcpy(lamp_status,
"off");
266 strcpy(lamp_status,
"undefined");
269 strcpy(lamp_status,
"undefined");
272 sinfo_get_band(frame,band);
273 sinfo_msg(
"Spatial resolution: %s lamp_status: %s band: %s ",
274 spat_res, lamp_status, band);
277 sinfo_get_ins_set(band,&ins_set);
286 parse_section_jittering(object_config * cfg,cpl_parameterlist * cpl_cfg)
290 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.jitter_index");
291 cfg -> jitterind = cpl_parameter_get_bool(p);
293 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.size_x");
294 cfg -> size_x = cpl_parameter_get_int(p);
296 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.size_y");
297 cfg -> size_y = cpl_parameter_get_int(p);
299 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.kernel_type");
300 strcpy(cfg -> kernel_type, cpl_parameter_get_string(p));
310 parse_section_resampling(object_config * cfg,cpl_parameterlist* cpl_cfg)
314 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.n_coeffs");
315 cfg -> ncoeffs = cpl_parameter_get_int(p);
316 cfg -> nrows=SINFO_RESAMP_NROWS;
323 parse_section_calibration(object_config * cfg)
330 cfg -> halocorrectInd=0;
340 parse_section_cubecreation(object_config * cfg,cpl_parameterlist* cpl_cfg)
343 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.nord_south_index");
344 cfg -> northsouthInd = cpl_parameter_get_bool(p);
351 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.nslits");
352 cfg -> nslits = cpl_parameter_get_int(p);
363 parse_section_finetuning(object_config * cfg,cpl_parameterlist* cpl_cfg)
367 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.fine_tuning_method");
368 strcpy(cfg -> method, cpl_parameter_get_string(p));
370 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.order");
371 cfg -> order = cpl_parameter_get_int(p);
376 parse_section_skyextraction(object_config * cfg,cpl_parameterlist* cpl_cfg)
380 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.lower_rejection");
381 cfg -> loReject = (float) cpl_parameter_get_double(p);
383 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.higher_rejection");
384 cfg -> hiReject = (float) cpl_parameter_get_double(p);
386 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.tolerance");
387 cfg -> tolerance = cpl_parameter_get_int(p);
393 sinfo_objspider_free(object_config * cfg) {
394 cpl_free(cfg->framelist);
395 sinfo_object_cfg_destroy (cfg);