39 #include "sinfo_ns_ini_by_cpl.h"
40 #include "sinfo_pro_types.h"
41 #include "sinfo_hidden.h"
42 #include "sinfo_functions.h"
43 #include "sinfo_file_handling.h"
48 void sinfo_ns_free_alloc(ns_config * cfg);
50 parse_section_frames (ns_config *,cpl_parameterlist* cpl_cfg,cpl_frameset* sof,
51 cpl_frameset** raw,
int* status);
53 parse_section_cleanmean (ns_config *,cpl_parameterlist* cpl_cfg);
55 parse_section_gaussconvolution (ns_config *,cpl_parameterlist* cpl_cfg);
57 parse_section_northsouthtest(ns_config *,cpl_parameterlist* cpl_cfg);
85 sinfo_parse_cpl_input_ns(cpl_parameterlist * cpl_cfg, cpl_frameset* sof,
88 ns_config * cfg = sinfo_ns_cfg_create();
95 parse_section_cleanmean (cfg,cpl_cfg);
96 parse_section_gaussconvolution (cfg,cpl_cfg);
97 parse_section_northsouthtest (cfg,cpl_cfg);
98 parse_section_frames (cfg,cpl_cfg,sof,raw,&status);
102 sinfo_ns_cfg_destroy(cfg);
113 parse_section_frames(ns_config * cfg,
114 cpl_parameterlist * cpl_cfg,
124 cpl_frame* frame = NULL;
126 char spat_res[FILE_NAME_SZ];
127 char lamp_status[FILE_NAME_SZ];
128 char band[FILE_NAME_SZ];
130 nstpar* nstp=sinfo_nstpar_new();
132 sinfo_extract_raw_frames_type(sof,raw,PRO_FIBRE_NS_STACKED_DIST);
134 nraw = cpl_frameset_get_size(*raw);
138 sinfo_nstpar_delete(nstp);
144 cfg->framelist = cpl_malloc(nraw *
sizeof(
char*));
145 cfg->frametype = cpl_malloc(nraw *
sizeof(
int));
154 for (i=0 ; i<nraw ; i++) {
155 frame = cpl_frameset_get_frame(*raw,i);
156 if(sinfo_file_exists((
char*) cpl_frame_get_filename(frame))==1)
159 tag=(
char*) cpl_frame_get_tag(frame);
160 if(cpl_frame_get_tag(frame) != NULL) {
162 if((sinfo_frame_is_on(frame) == 0))
164 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
165 cfg->frametype[i] = FRAME_OFF ;
168 else if(sinfo_is_sky_flat(tag))
170 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
171 cfg->frametype[i] = FRAME_OFF ;
174 else if((sinfo_frame_is_on(frame) == 1))
176 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
177 cfg->frametype[i] = FRAME_ON ;
183 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
184 cfg->frametype[i] = FRAME_ON ;
191 cfg->framelist[i]=(
char*) cpl_frame_get_filename(frame);
192 cfg->frametype[i] = FRAME_ON ;
199 cpl_frame_get_filename(frame));
205 if((noff == 0) && (nobj == 0)) {
207 sinfo_nstpar_delete(nstp);
208 sinfo_ns_free_alloc(cfg);
213 cfg->nframes = nraw ;
217 strcpy(cfg -> outName, NS_TEST_DISTANCES_OUT_FILENAME);
220 frame = cpl_frameset_get_frame(*raw,0);
221 sinfo_get_spatial_res(frame,spat_res);
223 switch(sinfo_frame_is_on(frame))
226 strcpy(lamp_status,
"on");
229 strcpy(lamp_status,
"off");
232 strcpy(lamp_status,
"undefined");
235 strcpy(lamp_status,
"undefined");
241 sinfo_get_band(frame,band);
242 sinfo_msg(
"Spatial resolution: %s lamp_status: %s band: %s \n",
243 spat_res, lamp_status, band);
246 sinfo_get_ins_set(band,&ins_set);
249 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.fwhm");
250 if(cpl_parameter_get_double(p) != cpl_parameter_get_default_double(p)) {
251 cfg -> fwhm = cpl_parameter_get_double(p);
253 cfg -> fwhm = nstp->fwhm[ins_set];
256 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.min_diff");
257 if(cpl_parameter_get_double(p) != cpl_parameter_get_default_double(p)) {
258 cfg -> minDiff = cpl_parameter_get_double(p);
260 cfg -> minDiff = nstp->min_dif[ins_set];
262 sinfo_nstpar_delete(nstp);
266 if(NULL != cpl_frameset_find(sof,PRO_BP_MAP_DI)) {
267 frame = cpl_frameset_find(sof,PRO_BP_MAP_DI);
268 strcpy(cfg -> mask,cpl_frame_get_filename(frame));
271 sinfo_ns_free_alloc(cfg);
282 parse_section_cleanmean(ns_config * cfg,cpl_parameterlist * cpl_cfg)
286 p = cpl_parameterlist_find(cpl_cfg,
287 "sinfoni.north_south_test.low_rejection");
288 cfg -> loReject = cpl_parameter_get_double(p);
290 p = cpl_parameterlist_find(cpl_cfg,
291 "sinfoni.north_south_test.high_rejection");
292 cfg -> hiReject = cpl_parameter_get_double(p);
294 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.mask_ind");
295 cfg -> maskInd = cpl_parameter_get_bool(p);
301 parse_section_gaussconvolution(ns_config * cfg,cpl_parameterlist * cpl_cfg)
304 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.gauss_ind");
305 cfg -> gaussInd = cpl_parameter_get_bool(p);
307 p = cpl_parameterlist_find(cpl_cfg,
308 "sinfoni.north_south_test.kernel_half_width");
309 cfg -> hw = cpl_parameter_get_int(p);
314 parse_section_northsouthtest(ns_config * cfg,cpl_parameterlist * cpl_cfg)
318 strcat(cfg -> fitsname, NS_TEST_OUT_FILENAME);
319 cfg -> nslits = NSLITLETS;
321 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.half_width");
322 cfg -> halfWidth = cpl_parameter_get_int(p);
324 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.fwhm");
325 cfg -> fwhm = cpl_parameter_get_double(p);
327 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.min_diff");
328 cfg -> minDiff = cpl_parameter_get_double(p);
330 cfg -> estimated_dist = ESTIMATED_SLITLETS_DISTANCE;
332 p = cpl_parameterlist_find(cpl_cfg,
"sinfoni.north_south_test.dev_tol");
333 cfg -> devtol = cpl_parameter_get_double(p);
339 sinfo_ns_free(ns_config ** cfg)
342 sinfo_ns_free_alloc(*cfg);
343 sinfo_ns_cfg_destroy(*cfg);
350 sinfo_ns_free_alloc(ns_config * cfg)
352 if(cfg->framelist != NULL) {
353 cpl_free(cfg->framelist);
356 if(cfg->frametype != NULL) {
357 cpl_free(cfg->frametype);
#define sinfo_msg_error(...)
Print an error message.
#define sinfo_msg_warning(...)
Print an warning message.