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_frame * cur_frame=NULL ;
136 char spat_res[FILE_NAME_SZ];
137 char lamp_status[FILE_NAME_SZ];
138 char band[FILE_NAME_SZ];
145 labels = cpl_frameset_labelise(sof, sinfo_compare_tags,&nlabels );
146 if (labels == NULL) {
154 cur_frame = cpl_frameset_get_frame(sof, 0) ;
155 tag = (
char*)cpl_frame_get_tag(cur_frame) ;
156 if (sinfo_is_stack(tag)) {
157 *stk = cpl_frameset_duplicate(sof) ;
162 for (i=0 ; i<nlabels ; i++) {
163 cpl_frameset* cur_set = cpl_frameset_extract(sof, labels, i) ;
164 cur_frame = cpl_frameset_get_frame(cur_set, 0) ;
165 tag = (
char*)cpl_frame_get_tag(cur_frame) ;
166 if (sinfo_is_stack(tag) == 1) {
168 *stk = cpl_frameset_duplicate(cur_set) ;
170 }
else if (sinfo_is_wavemap(tag)) {
172 strcpy(cfg -> wavemap,cpl_strdup(cpl_frame_get_filename(cur_frame)));
174 }
else if (sinfo_is_distlist(tag)) {
176 strcpy(cfg -> poslist,cpl_strdup(cpl_frame_get_filename(cur_frame)));
178 }
else if (sinfo_is_firstcol(tag)) {
180 strcpy(cfg -> firstCol,cpl_strdup(cpl_frame_get_filename(cur_frame)));
182 }
else if (sinfo_is_halosp(tag)) {
184 strcpy(cfg->halospectrum,cpl_strdup(cpl_frame_get_filename(cur_frame)));
187 cpl_frameset_delete(cur_set) ;
207 if (first_col == 0) {
215 nraw = cpl_frameset_get_size(*stk);
218 sinfo_msg_error(
"Cannot find input stacked frames in the input list") ;
223 nraw = cpl_frameset_get_size(*stk);
230 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
233 for (i=0 ; i<nraw ; i++) {
234 frame = cpl_frameset_get_frame(*stk,i);
235 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1) {
236 cfg->framelist[i]=cpl_strdup(cpl_frame_get_filename(frame));
247 cfg->nframes = nraw ;
249 strcpy(cfg -> outName, SKYSPIDER_OUT_FILENAME);
250 strcpy(cfg -> maskname, SKYSPIDER_MASK_OUT_FILENAME);
253 frame = cpl_frameset_get_frame(*stk,0);
255 sinfo_get_spatial_res(frame,spat_res);
256 switch(sinfo_frame_is_on(frame)) {
259 strcpy(lamp_status,
"on");
262 strcpy(lamp_status,
"off");
265 strcpy(lamp_status,
"undefined");
268 strcpy(lamp_status,
"undefined");
271 sinfo_get_band(frame,band);
272 sinfo_msg(
"Spatial resolution: %s lamp_status: %s band: %s ",
273 spat_res, lamp_status, band);
276 sinfo_get_ins_set(band,&ins_set);
285 parse_section_jittering(object_config * cfg,cpl_parameterlist * cpl_cfg)
289 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.jitter_index");
290 cfg -> jitterind = cpl_parameter_get_bool(p);
292 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.size_x");
293 cfg -> size_x = cpl_parameter_get_int(p);
295 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.size_y");
296 cfg -> size_y = cpl_parameter_get_int(p);
298 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.kernel_type");
299 strcpy(cfg -> kernel_type, cpl_parameter_get_string(p));
309 parse_section_resampling(object_config * cfg,cpl_parameterlist* cpl_cfg)
313 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.n_coeffs");
314 cfg -> ncoeffs = cpl_parameter_get_int(p);
315 cfg -> nrows=SINFO_RESAMP_NROWS;
322 parse_section_calibration(object_config * cfg)
329 cfg -> halocorrectInd=0;
339 parse_section_cubecreation(object_config * cfg,cpl_parameterlist* cpl_cfg)
342 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.nord_south_index");
343 cfg -> northsouthInd = cpl_parameter_get_bool(p);
350 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.nslits");
351 cfg -> nslits = cpl_parameter_get_int(p);
362 parse_section_finetuning(object_config * cfg,cpl_parameterlist* cpl_cfg)
366 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.fine_tuning_method");
367 strcpy(cfg -> method, cpl_parameter_get_string(p));
369 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.order");
370 cfg -> order = cpl_parameter_get_int(p);
375 parse_section_skyextraction(object_config * cfg,cpl_parameterlist* cpl_cfg)
379 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.lower_rejection");
380 cfg -> loReject = (float) cpl_parameter_get_double(p);
382 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.higher_rejection");
383 cfg -> hiReject = (float) cpl_parameter_get_double(p);
385 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.objspider.tolerance");
386 cfg -> tolerance = cpl_parameter_get_int(p);
392 sinfo_objspider_free(object_config * cfg) {
393 cpl_free(cfg->framelist);
394 sinfo_object_cfg_destroy (cfg);
#define sinfo_msg_error(...)
Print an error message.