36 #include "sinfo_wcal_functions.h"
37 #include "sinfo_globals.h"
38 #include "sinfo_error.h"
39 #include "sinfo_utils_wrappers.h"
49 qc_wcal* sinfo_qc_wcal_new(
void)
53 qc= cpl_malloc(
sizeof(qc_wcal));
72 void sinfo_qc_wcal_delete(qc_wcal** qc)
78 int sinfo_dumpTblToFitParams ( FitParams ** params,
char * filename )
93 if ( NULL == filename )
100 fp=cpl_table_load(filename,1,0);
101 if(cpl_error_get_code() != CPL_ERROR_NONE) {
102 sinfo_msg(
"cannot load table %s",filename);
107 col = (
char*) cpl_calloc(MAX_NAME_SIZE,
sizeof(
char*));
108 for ( i = 0 ; i < params[0]->n_params ; i++ )
110 params[i]->n_params=cpl_table_get_int(fp,
"n_params",i,&status);
111 params[i]->column =cpl_table_get_int(fp,
"column",i,&status);
112 params[i]->line =cpl_table_get_int(fp,
"line",i,&status);
113 for (j=0 ; j < 4; j++) {
114 snprintf(col,MAX_NAME_SIZE-1,
"%s%d",
"fpar",j);
115 params[i]->fit_par[j]=cpl_table_get_double(fp,col,i,&status);
116 snprintf(col,MAX_NAME_SIZE-1,
"%s%d",
"dpar",j);
117 params[i]->derv_par[j]=cpl_table_get_double(fp,col,i,&status);
121 cpl_table_delete(fp) ;
128 int sinfo_det_ncounts(cpl_frameset* raw,
int thresh_max, qc_wcal* qc)
145 char name[FILE_NAME_SZ];
146 char filename[FILE_NAME_SZ];
149 cpl_vector* avg_on=NULL;
150 cpl_vector* avg_of=NULL;
151 cpl_vector* avg_di=NULL;
154 cpl_vector* max_on=NULL;
155 cpl_vector* max_of=NULL;
156 cpl_vector* max_di=NULL;
158 cpl_vector* vec_nsat=NULL;
161 cpl_frame* frm_dup=NULL;
162 cpl_frame* on_frm=NULL;
163 cpl_frame* of_frm=NULL;
164 cpl_frame* tmp_of_frm=NULL;
166 cpl_image* dif_ima=NULL;
167 cpl_image* on_ima=NULL;
168 cpl_image* of_ima=NULL;
169 cpl_image* tmp_ima=NULL;
171 cpl_frameset* on_set=NULL;
172 cpl_frameset* of_set=NULL;
174 on_set=cpl_frameset_new();
175 of_set=cpl_frameset_new();
176 nraw = cpl_frameset_get_size(raw);
179 for (i=0; i< nraw; i++) {
180 check_nomsg(frm = cpl_frameset_get_frame(raw,i));
181 check_nomsg(frm_dup = cpl_frame_duplicate(frm));
182 if(sinfo_frame_is_on(frm) == 1) {
183 cpl_frameset_insert(on_set,frm_dup);
186 cpl_frameset_insert(of_set,frm_dup);
193 sinfo_msg(
"Monitor counts: case Non==Noff");
196 avg_on = cpl_vector_new(non);
197 avg_of = cpl_vector_new(non);
198 avg_di = cpl_vector_new(non);
200 max_on = cpl_vector_new(non);
201 max_of = cpl_vector_new(non);
202 max_di = cpl_vector_new(non);
206 vec_nsat = cpl_vector_new(non);
207 for (i=0; i< non; i++) {
208 check_nomsg(on_frm = cpl_frameset_get_frame(on_set,i));
209 strcpy(name,cpl_frame_get_filename(on_frm));
210 check_nomsg(on_ima = cpl_image_load(name,CPL_TYPE_FLOAT,0,0));
212 check_nomsg(mean= cpl_image_get_mean(on_ima));
213 check_nomsg(cpl_vector_set(avg_on,i,mean));
214 check_nomsg(max= cpl_image_get_max(on_ima));
215 check_nomsg(cpl_vector_set(max_on,i,max));
216 check_nomsg(tmp_ima = cpl_image_duplicate(on_ima));
217 check_nomsg(cpl_image_threshold(tmp_ima,thresh_max,thresh_max,0,1));
218 check_nomsg(nsat=cpl_image_get_flux(tmp_ima));
219 check_nomsg(cpl_vector_set(vec_nsat,i,nsat));
222 check_nomsg(of_frm = cpl_frameset_get_frame(of_set,i));
223 strcpy(name,cpl_frame_get_filename(of_frm));
224 check_nomsg(of_ima = cpl_image_load(name,CPL_TYPE_FLOAT,0,0));
225 check_nomsg(mean= cpl_image_get_mean(of_ima));
226 check_nomsg(cpl_vector_set(avg_of,i,mean));
227 check_nomsg(max= cpl_image_get_max(of_ima));
228 check_nomsg(cpl_vector_set(max_of,i,max));
230 check_nomsg(dif_ima = cpl_image_subtract_create(on_ima,of_ima));
231 check_nomsg(mean= cpl_image_get_mean(dif_ima));
232 check_nomsg(cpl_vector_set(avg_di,i,mean));
233 check_nomsg(max= cpl_image_get_max(dif_ima));
234 check_nomsg(cpl_vector_set(max_di,i,max));
236 sinfo_free_image(&on_ima);
237 sinfo_free_image(&of_ima);
238 sinfo_free_image(&dif_ima);
239 sinfo_free_image(&tmp_ima);
243 check_nomsg(qc->avg_on=cpl_vector_get_mean(avg_on));
244 check_nomsg(qc->avg_of=cpl_vector_get_mean(avg_of));
245 check_nomsg(qc->avg_di=cpl_vector_get_mean(avg_di));
247 check_nomsg(qc->max_on=cpl_vector_get_max(max_on));
248 check_nomsg(qc->max_of=cpl_vector_get_max(max_of));
249 check_nomsg(qc->max_di=cpl_vector_get_max(max_di));
251 check_nomsg(qc->nsat=cpl_vector_get_mean(vec_nsat));
254 check_nomsg(qc->std_on=cpl_vector_get_stdev(avg_on));
255 check_nomsg(qc->std_of=cpl_vector_get_stdev(avg_of));
256 check_nomsg(qc->std_di=cpl_vector_get_stdev(avg_di));
259 sinfo_free_my_vector(&avg_on);
260 sinfo_free_my_vector(&avg_of);
261 sinfo_free_my_vector(&avg_di);
263 sinfo_free_my_vector(&max_on);
264 sinfo_free_my_vector(&max_of);
265 sinfo_free_my_vector(&max_di);
267 sinfo_free_my_vector(&vec_nsat);
270 }
else if ( ((non ==0) | (noff == 0)) && (nraw > 0 ) ) {
271 sinfo_msg(
"Monitor counts: case Nraw == 1");
272 check_nomsg(avg_di = cpl_vector_new(nraw));
273 check_nomsg(max_di = cpl_vector_new(nraw));
274 check_nomsg(vec_nsat = cpl_vector_new(nraw));
276 for (i=0; i< nraw; i++) {
277 check_nomsg(frm = cpl_frameset_get_frame(raw,i));
278 strcpy(name,cpl_frame_get_filename(frm));
279 check_nomsg(dif_ima = cpl_image_load(name,CPL_TYPE_FLOAT,0,0));
281 check_nomsg(mean= cpl_image_get_mean(dif_ima));
282 check_nomsg(tmp_ima=cpl_image_duplicate(dif_ima));
283 sinfo_clean_nan(&tmp_ima);
284 check_nomsg(mean= cpl_image_get_mean(tmp_ima));
285 check_nomsg(cpl_vector_set(avg_di,i,mean));
286 check_nomsg(max= cpl_image_get_max(tmp_ima));
287 check_nomsg(cpl_vector_set(max_di,i,max));
288 check_nomsg(cpl_image_threshold(tmp_ima,thresh_max,thresh_max,0,1));
289 check_nomsg(nsat=cpl_image_get_flux(tmp_ima));
290 check_nomsg(cpl_vector_set(vec_nsat,i,nsat));
292 sinfo_free_image(&tmp_ima);
293 sinfo_free_image(&dif_ima);
297 qc->avg_di=cpl_vector_get_mean(avg_di);
299 check_nomsg(qc->std_di=cpl_vector_get_stdev(avg_di));
301 check_nomsg(qc->max_di=cpl_vector_get_max(max_di));
302 check_nomsg(qc->nsat=cpl_vector_get_mean(vec_nsat));
304 sinfo_free_my_vector(&avg_di);
305 sinfo_free_my_vector(&max_di);
306 sinfo_free_my_vector(&vec_nsat);
309 sinfo_msg(
"Monitor counts: else case");
311 avg_on = cpl_vector_new(non);
312 avg_of = cpl_vector_new(non);
313 avg_di = cpl_vector_new(non);
315 max_on = cpl_vector_new(non);
316 max_of = cpl_vector_new(non);
317 max_di = cpl_vector_new(non);
319 vec_nsat = cpl_vector_new(non);
321 for (i=0;i<non;i++) {
322 check_nomsg(on_frm=cpl_frameset_get_frame(on_set,i));
323 check_nomsg(mjd_on=sinfo_get_mjd_obs(on_frm));
324 check_nomsg(of_frm=cpl_frameset_get_frame(of_set,0));
325 check_nomsg(mjd_of=sinfo_get_mjd_obs(of_frm));
326 strcpy(filename,cpl_frame_get_filename(of_frm));
328 for (j=1;j<noff;j++) {
329 check_nomsg(tmp_of_frm = cpl_frameset_get_frame(of_set,j));
330 check_nomsg(mjd_of_frm = sinfo_get_mjd_obs(tmp_of_frm));
332 if(1000.*(mjd_of_frm-mjd_on)*(mjd_of_frm-mjd_on) <
333 1000.*(mjd_of- mjd_on)*(mjd_of- mjd_on) ) {
339 strcpy(filename,cpl_frame_get_filename(of_frm));
340 check_nomsg(of_ima = cpl_image_load(filename,CPL_TYPE_FLOAT,0,0));
341 check_nomsg(mean= cpl_image_get_mean(of_ima));
342 check_nomsg(cpl_vector_set(avg_of,i,mean));
343 check_nomsg(max= cpl_image_get_max(of_ima));
344 check_nomsg(cpl_vector_set(max_of,i,max));
346 strcpy(filename,cpl_frame_get_filename(on_frm));
347 check_nomsg(on_ima = cpl_image_load(filename,CPL_TYPE_FLOAT,0,0));
348 check_nomsg(mean= cpl_image_get_mean(on_ima));
349 check_nomsg(cpl_vector_set(avg_on,i,mean));
350 check_nomsg(max= cpl_image_get_mean(on_ima));
351 check_nomsg(cpl_vector_set(max_on,i,max));
353 check_nomsg(tmp_ima = cpl_image_duplicate(on_ima));
354 check_nomsg(cpl_image_threshold(tmp_ima,thresh_max,thresh_max,0,1));
355 check_nomsg(nsat=cpl_image_get_flux(tmp_ima));
356 check_nomsg(cpl_vector_set(vec_nsat,i,nsat));
358 check_nomsg(dif_ima = cpl_image_subtract_create(on_ima,of_ima));
359 check_nomsg(mean= cpl_image_get_mean(dif_ima));
360 check_nomsg(cpl_vector_set(avg_di,i,mean));
361 check_nomsg(max= cpl_image_get_max(dif_ima));
362 check_nomsg(cpl_vector_set(max_di,i,max));
364 sinfo_free_image(&on_ima);
365 sinfo_free_image(&of_ima);
366 sinfo_free_image(&dif_ima);
367 sinfo_free_image(&tmp_ima);
371 sinfo_free_my_vector(&avg_on);
372 sinfo_free_my_vector(&avg_of);
373 sinfo_free_my_vector(&avg_di);
375 sinfo_free_my_vector(&max_on);
376 sinfo_free_my_vector(&max_of);
377 sinfo_free_my_vector(&max_di);
379 sinfo_free_my_vector(&vec_nsat);
391 sinfo_free_image(&on_ima);
392 sinfo_free_image(&of_ima);
393 sinfo_free_image(&dif_ima);
394 sinfo_free_image(&tmp_ima);
396 sinfo_free_my_vector(&avg_on);
397 sinfo_free_my_vector(&avg_of);
398 sinfo_free_my_vector(&avg_di);
400 sinfo_free_my_vector(&max_on);
401 sinfo_free_my_vector(&max_of);
402 sinfo_free_my_vector(&max_di);
404 sinfo_free_my_vector(&vec_nsat);
406 sinfo_free_frameset(&on_set);
407 sinfo_free_frameset(&of_set);
#define sinfo_msg_error(...)
Print an error message.