39 #include "sinfo_dfs.h"
42 #include <sinfo_rec_utils.h>
43 #include <sinfo_functions.h>
44 #include <sinfo_new_cubes_build.h>
45 #include <sinfo_error.h>
46 #include <sinfo_globals.h>
47 #include <sinfo_utils_wrappers.h>
57 static const char* sinfo_new_set_stk_procatg(
const char* tag);
75 sinfo_new_stack_frames(cpl_parameterlist* cfg,
80 const char* plugin_id)
83 sinfo_msg(
"------------------------------") ;
84 sinfo_msg(
"PREPARE STACKED SET %d",
id) ;
85 sinfo_msg(
"------------------------------") ;
86 ck0( ( ind = sinfo_new_prepare_stacked_frames(plugin_id,cfg, set, NULL,procatg,
87 id,fk) ),
" no: %d", ind) ;
88 sinfo_msg(
"------------------------------") ;
89 sinfo_msg(
"PREPARED STACKED SET %d",
id) ;
90 sinfo_msg(
"------------------------------") ;
99 sinfo_new_get_dummy_sky(cpl_frameset* obj_set)
102 cpl_imagelist* obj_list=NULL;
103 cpl_image* fake_sky=NULL;
104 cpl_frame* frame=NULL;
105 cpl_frame* sky_frame=NULL;
107 cpl_propertylist* plist=NULL;
108 char filename[FILE_NAME_SZ];
110 check_nomsg(obj_list=cpl_imagelist_load_frameset(obj_set,CPL_TYPE_FLOAT,0,0));
111 check_nomsg(fake_sky = cpl_imagelist_collapse_median_create(obj_list));
113 check_nomsg(frame = cpl_frameset_get_frame(obj_set,0));
114 strcpy(filename,cpl_frame_get_filename(frame));
116 check(plist = cpl_propertylist_load(filename, 0),
117 "getting header from reference ima frame %s",filename);
119 if (cpl_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
120 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE,
"SKY");
122 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,
"SKY") ;
125 check(cpl_image_save(fake_sky,
"out_fake_sky.fits", CPL_BPP_IEEE_FLOAT,
126 plist,CPL_IO_DEFAULT),
127 "Cannot save the product %s",
"out_fake_sky.fits");
129 sinfo_free_propertylist(&plist);
131 check_nomsg(sky_frame = cpl_frame_new()) ;
132 check_nomsg(cpl_frame_set_filename(sky_frame,
"out_fake_sky.fits")) ;
133 check_nomsg(cpl_frame_set_tag(sky_frame, PRO_SKY_DUMMY)) ;
134 check_nomsg(cpl_frame_set_type(sky_frame, CPL_FRAME_TYPE_IMAGE));
138 check_nomsg(cpl_frame_set_level(sky_frame, CPL_FRAME_LEVEL_FINAL));
139 sinfo_free_image(&fake_sky);
140 sinfo_free_imagelist(&obj_list);
146 sinfo_free_propertylist(&plist) ;
155 sinfo_new_get_dummy_obj_sky_stacked(cpl_frameset* obj_set,cpl_frameset** set,
156 cpl_parameterlist* config,fake* fk,
char* pro_ctg,
const char* plugin_id)
167 double mjd_sky_inf=0;
168 double mjd_sky_sup=0;
169 char sky_name[FILE_NAME_SZ];
170 char out_name[FILE_NAME_SZ];
172 char fake_sky_name[FILE_NAME_SZ];
174 cpl_frame* obj_frm=NULL;
175 cpl_frame* sky_frm=NULL;
176 cpl_frame* cdb_frm=NULL;
177 cpl_frame* wrk_frm=NULL;
178 cpl_frame* tot_frm=NULL;
179 cpl_frame* dup_frm=NULL;
181 cpl_frame* sky_frm_inf=NULL;
182 cpl_frame* sky_frm_sup=NULL;
184 cpl_propertylist* plist=NULL;
185 cpl_frameset* wrk_set=NULL;
186 cpl_frameset* cdb_set=NULL;
187 cpl_frameset* tot_set=NULL;
188 cpl_frameset* stk_set=NULL;
189 cpl_image* sky_ima=NULL;
193 double sky_sup_cumx=0;
194 double sky_sup_cumy=0;
196 double sky_inf_cumx=0;
197 double sky_inf_cumy=0;
198 double cum_thres=0.5;
200 check_nomsg(cdb_set=cpl_frameset_new());
201 ck0(sinfo_extract_mst_frames(*set,cdb_set),
"Error extracting CDB frames");
202 nobj=cpl_frameset_get_size(obj_set);
203 ncdb=cpl_frameset_get_size(cdb_set);
206 check_nomsg(tot_set=cpl_frameset_new());
208 for(i=0;i<nobj;i++) {
213 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
214 mjd_obj = sinfo_get_mjd_obs(obj_frm);
215 obj_cumx=sinfo_get_cumoffsetx(obj_frm);
216 obj_cumy=sinfo_get_cumoffsety(obj_frm);
219 check_nomsg(sky_frm_inf=cpl_frameset_get_frame(obj_set,i-1));
220 mjd_sky_inf = sinfo_get_mjd_obs(sky_frm_inf);
221 sky_inf_cumx=sinfo_get_cumoffsetx(sky_frm_inf);
222 sky_inf_cumy=sinfo_get_cumoffsety(sky_frm_inf);
226 check_nomsg(sky_frm_sup=cpl_frameset_get_frame(obj_set,i+1));
227 mjd_sky_sup = sinfo_get_mjd_obs(sky_frm_sup);
228 sky_sup_cumx=sinfo_get_cumoffsetx(sky_frm_sup);
229 sky_sup_cumy=sinfo_get_cumoffsety(sky_frm_sup);
235 sky_frm = sky_frm_sup;
237 else if(i==(nobj-1)) {
238 sky_frm = sky_frm_inf;
240 if( fabs( mjd_sky_inf - mjd_obj ) <
241 fabs( mjd_sky_sup - mjd_obj ) ) {
242 if((fabs(sky_inf_cumx-obj_cumx) > cum_thres) ||
243 (fabs(sky_inf_cumy-obj_cumy) > cum_thres)) {
244 sky_frm = sky_frm_inf;
246 sky_frm = sky_frm_sup;
249 if((fabs(sky_sup_cumx-obj_cumx) > cum_thres) ||
250 (fabs(sky_sup_cumy-obj_cumy) > cum_thres)) {
251 sky_frm = sky_frm_sup;
253 sky_frm = sky_frm_inf;
258 strcpy(sky_name,cpl_frame_get_filename(sky_frm));
260 sinfo_msg(
"obj: %s",cpl_frame_get_filename(obj_frm));
261 sinfo_msg(
"sky: %s",sky_name);
263 if (strstr(sky_name,
"." ) != NULL ) {
266 snprintf(fake_sky_name,MAX_NAME_SIZE-1,
"%s%d%s",
"out_fake_sky",i,
".fits");
268 snprintf(fake_sky_name, MAX_NAME_SIZE-1,
"%s", sky_name) ;
271 check_nomsg(sky_ima=cpl_image_load(sky_name,CPL_TYPE_FLOAT,0,0));
273 cknull(plist = cpl_propertylist_load(sky_name, 0),
274 "getting header from reference ima frame %s",sky_name);
276 if (cpl_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
277 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE,
"SKY");
279 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,
"SKY") ;
282 check(cpl_image_save(sky_ima, fake_sky_name, CPL_BPP_IEEE_FLOAT,
283 plist,CPL_IO_DEFAULT),
284 "Cannot save the product %s",fake_sky_name);
286 sinfo_free_propertylist(&plist);
287 sinfo_free_image(&sky_ima);
289 check_nomsg(cpl_frame_set_filename(sky_frm, fake_sky_name)) ;
293 check_nomsg(cpl_frame_set_type(sky_frm, CPL_FRAME_TYPE_IMAGE));
295 check_nomsg(cpl_frame_set_level(sky_frm, CPL_FRAME_LEVEL_FINAL));
298 check_nomsg(wrk_set=cpl_frameset_new());
300 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
301 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
303 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
304 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
307 for(k=0;k<ncdb;k++) {
308 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
309 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
310 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
312 snprintf(out_name,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
316 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg,i,fk,plugin_id),
317 "Error stacking frames");
319 check_nomsg(cpl_frame_set_filename(sky_frm, sky_name)) ;
323 check_nomsg(stk_set=cpl_frameset_new());
324 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
325 nstk=cpl_frameset_get_size(stk_set);
326 for(k=0;k<nstk;k++) {
327 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
328 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
329 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
331 sinfo_free_frameset(&stk_set);
332 sinfo_free_frameset(&wrk_set);
335 ntot=cpl_frameset_get_size(tot_set);
336 for(k=0;k<ntot;k++) {
337 check_nomsg(tot_frm=cpl_frameset_get_frame(tot_set,k));
338 check_nomsg(dup_frm=cpl_frame_duplicate(tot_frm));
339 check_nomsg(cpl_frameset_insert(*set,dup_frm));
342 sinfo_free_frameset(&cdb_set);
343 sinfo_free_frameset(&tot_set);
348 sinfo_free_propertylist(&plist) ;
349 sinfo_free_frameset(&cdb_set);
350 sinfo_free_frameset(&tot_set);
356 sinfo_get_dummy_obj_sky_stacked_and_cubes(cpl_frameset* obj_set,
358 cpl_parameterlist* config,
361 const char* plugin_id)
371 double mjd_sky_inf=0;
372 double mjd_sky_sup=0;
373 char sky_name[FILE_NAME_SZ];
374 char out_name[FILE_NAME_SZ];
376 char fake_sky_name[FILE_NAME_SZ];
378 cpl_frame* obj_frm=NULL;
379 cpl_frame* sky_frm=NULL;
380 cpl_frame* cdb_frm=NULL;
381 cpl_frame* dup_frm=NULL;
383 cpl_frame* sky_frm_inf=NULL;
384 cpl_frame* sky_frm_sup=NULL;
386 cpl_propertylist* plist=NULL;
387 cpl_frameset* wrk_set=NULL;
388 cpl_frameset* cdb_set=NULL;
389 cpl_frameset* tot_set=NULL;
390 cpl_frameset* pro_set=NULL;
391 cpl_image* sky_ima=NULL;
395 double sky_sup_cumx=0;
396 double sky_sup_cumy=0;
398 double sky_inf_cumx=0;
399 double sky_inf_cumy=0;
400 double cum_thres=0.5;
402 check_nomsg(cdb_set=cpl_frameset_new());
403 ck0(sinfo_extract_mst_frames(*set,cdb_set),
"Error extracting CDB frames");
404 nobj=cpl_frameset_get_size(obj_set);
405 ncdb=cpl_frameset_get_size(cdb_set);
408 check_nomsg(tot_set=cpl_frameset_new());
410 for(i=0;i<nobj;i++) {
412 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
413 mjd_obj = sinfo_get_mjd_obs(obj_frm);
414 obj_cumx=sinfo_get_cumoffsetx(obj_frm);
415 obj_cumy=sinfo_get_cumoffsety(obj_frm);
418 check_nomsg(sky_frm_inf=cpl_frameset_get_frame(obj_set,i-1));
419 mjd_sky_inf = sinfo_get_mjd_obs(sky_frm_inf);
420 sky_inf_cumx=sinfo_get_cumoffsetx(sky_frm_inf);
421 sky_inf_cumy=sinfo_get_cumoffsety(sky_frm_inf);
425 check_nomsg(sky_frm_sup=cpl_frameset_get_frame(obj_set,i+1));
426 mjd_sky_sup = sinfo_get_mjd_obs(sky_frm_sup);
427 sky_sup_cumx=sinfo_get_cumoffsetx(sky_frm_sup);
428 sky_sup_cumy=sinfo_get_cumoffsety(sky_frm_sup);
434 sky_frm = sky_frm_sup;
436 else if(i==(nobj-1)) {
437 sky_frm = sky_frm_inf;
439 if( fabs( mjd_sky_inf - mjd_obj ) <
440 fabs( mjd_sky_sup - mjd_obj ) ) {
441 if((fabs(sky_inf_cumx-obj_cumx) > cum_thres) ||
442 (fabs(sky_inf_cumy-obj_cumy) > cum_thres)) {
443 sky_frm = sky_frm_inf;
445 sky_frm = sky_frm_sup;
448 if((fabs(sky_sup_cumx-obj_cumx) > cum_thres) ||
449 (fabs(sky_sup_cumy-obj_cumy) > cum_thres)) {
450 sky_frm = sky_frm_sup;
452 sky_frm = sky_frm_inf;
458 strcpy(sky_name,cpl_frame_get_filename(sky_frm));
459 sinfo_msg(
"obj: %s",cpl_frame_get_filename(obj_frm));
460 sinfo_msg(
"sky: %s",sky_name);
461 if (strstr(sky_name,
"." ) != NULL ) {
464 snprintf(fake_sky_name,MAX_NAME_SIZE-1,
"%s%d%s",
"out_fake_sky",i,
".fits");
466 snprintf(fake_sky_name, MAX_NAME_SIZE-1,
"%s", sky_name) ;
469 check_nomsg(sky_ima=cpl_image_load(sky_name,CPL_TYPE_FLOAT,0,0));
471 cknull(plist = cpl_propertylist_load(sky_name, 0),
472 "getting header from reference ima frame %s",sky_name);
474 if (cpl_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
475 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE,
"SKY");
477 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,
"SKY") ;
479 check(cpl_image_save(sky_ima, fake_sky_name, CPL_BPP_IEEE_FLOAT,
480 plist,CPL_IO_DEFAULT),
481 "Cannot save the product %s",fake_sky_name);
483 sinfo_free_propertylist(&plist);
484 sinfo_free_image(&sky_ima);
486 check_nomsg(cpl_frame_set_filename(sky_frm, fake_sky_name)) ;
490 check_nomsg(cpl_frame_set_type(sky_frm, CPL_FRAME_TYPE_IMAGE));
492 check_nomsg(cpl_frame_set_level(sky_frm, CPL_FRAME_LEVEL_FINAL));
495 check_nomsg(wrk_set=cpl_frameset_new());
497 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
498 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
500 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
501 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
503 for(k=0;k<ncdb;k++) {
504 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
505 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
506 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
508 snprintf(out_name,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
512 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg,i,fk,plugin_id),
513 "Error stacking frames");
516 check_nomsg(cpl_frame_set_filename(sky_frm, sky_name)) ;
520 sinfo_msg(
"--------------------------------------");
521 sinfo_msg(
"BUILDING CUBE %d",i);
522 sinfo_msg(
"--------------------------------------");
525 ck0( (ind = sinfo_new_cubes_build(plugin_id,config,wrk_set,pro_ctg,i) ) ,
526 "GENERATING CUBE no. %d\n", ind) ;
527 sinfo_msg(
"--------------------------------------");
528 sinfo_msg(
"BUILT CUBE %d",i);
529 sinfo_msg(
"--------------------------------------");
532 check_nomsg(sinfo_extract_frames_group_type(wrk_set,&pro_set,
533 CPL_FRAME_GROUP_PRODUCT));
534 check_nomsg(cpl_frameset_join(tot_set,pro_set));
535 sinfo_free_frameset(&pro_set);
536 sinfo_free_frameset(&wrk_set);
540 check_nomsg(sinfo_extract_frames_group_type(tot_set,&pro_set,
541 CPL_FRAME_GROUP_PRODUCT));
542 check_nomsg(cpl_frameset_join(*set,pro_set));
543 sinfo_free_frameset(&pro_set);
544 sinfo_free_frameset(&tot_set);
545 sinfo_free_frameset(&cdb_set);
550 sinfo_free_image(&sky_ima);
551 sinfo_free_propertylist(&plist) ;
552 sinfo_free_frameset(&wrk_set);
553 sinfo_free_frameset(&pro_set);
554 sinfo_free_frameset(&cdb_set);
555 sinfo_free_frameset(&tot_set);
561 int sinfo_new_sci_stk_frames(cpl_parameterlist* config,
563 const char* recipe_id,
564 const char** pro_ctg_cube)
566 char tag[FILE_NAME_SZ];
567 char pro_ctg_stack[FILE_NAME_SZ];
568 char outname[FILE_NAME_SZ];
569 char filename[FILE_NAME_SZ];
572 cpl_frameset * obj_set=NULL;
573 cpl_frameset * sky_set=NULL;
574 cpl_frameset * cdb_set=NULL;
575 cpl_frameset * wrk_set=NULL;
576 cpl_frameset * stk_set=NULL;
577 cpl_frameset * tot_set=NULL;
578 cpl_frame * obj_frm=NULL;
579 cpl_frame * sky_frm=NULL;
580 cpl_frame * cdb_frm=NULL;
581 cpl_frame * wrk_frm=NULL;
582 cpl_frame * dup_frm=NULL;
598 double mjd_sky_frm=0;
599 cpl_parameter* p=NULL;
600 fake* fk=sinfo_fake_new();
602 check_nomsg(obj_set=cpl_frameset_new());
603 check_nomsg(sky_set=cpl_frameset_new());
604 check_nomsg(cdb_set=cpl_frameset_new());
606 sinfo_extract_obj_frames(*set,obj_set);
607 sinfo_extract_sky_frames(*set,sky_set);
608 sinfo_extract_mst_frames(*set,cdb_set);
611 cknull(obj_frm = cpl_frameset_get_frame(obj_set,0),
612 "No object frames in input set.");
614 strcpy(tag,cpl_frame_get_tag(obj_frm));
615 if(NULL!=sinfo_new_set_obj_procatg(tag)){
616 *pro_ctg_cube=sinfo_new_set_obj_procatg(tag);
623 if(NULL!=sinfo_new_set_stk_procatg(tag)){
624 strcpy(pro_ctg_stack,sinfo_new_set_stk_procatg(tag));
630 nobj=cpl_frameset_get_size(obj_set);
631 nsky=cpl_frameset_get_size(sky_set);
632 ncdb=cpl_frameset_get_size(cdb_set);
634 if ((nobj==0) && (nsky==0)) {
640 if ( (nobj != 0) && (nsky != 0) ) {
642 sinfo_msg(
"------------------------------") ;
643 sinfo_msg(
"Generates OBJ-SKY pairs");
644 sinfo_msg(
"------------------------------") ;
645 check_nomsg(tot_set=cpl_frameset_new());
646 check_nomsg(p=cpl_parameterlist_find(config,
647 "sinfoni.objnod.autojitter_method"));
648 check_nomsg(cpl_parameter_set_int(p,0));
649 cpl_msg_warning(cpl_func ,
"******** 1 *********");
652 for (i=0;i<nobj;i++) {
654 check_nomsg(wrk_set=cpl_frameset_new());
656 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
657 mjd_obj=sinfo_get_mjd_obs(obj_frm);
658 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,0));
659 mjd_sky=sinfo_get_mjd_obs(sky_frm);
660 strcpy(filename,cpl_frame_get_filename(obj_frm));
663 for (j=1;j<nsky;j++) {
664 check_nomsg(mjd_sky_frm=sinfo_get_mjd_obs(
665 cpl_frameset_get_frame(sky_set,j)));
666 if(1000.*(mjd_sky_frm-mjd_obj)*(mjd_sky_frm-mjd_obj) <
667 1000.*(mjd_sky- mjd_obj)*(mjd_sky- mjd_obj) ) {
669 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,j));
673 strcpy(filename,cpl_frame_get_filename(sky_frm));
678 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
679 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
680 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
681 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
684 for(k=0;k<ncdb;k++) {
685 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
686 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
687 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
692 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
693 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,i,fk,recipe_id),
694 "Cannot stack frames");
696 check_nomsg(stk_set=cpl_frameset_new());
697 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
698 nstk=cpl_frameset_get_size(stk_set);
700 for(k=0;k<nstk;k++) {
701 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
702 check_nomsg(dup_frm = cpl_frame_duplicate(wrk_frm));
703 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
705 sinfo_free_frameset(&stk_set);
706 sinfo_free_frameset(&wrk_set);
710 ntot=cpl_frameset_get_size(tot_set);
711 for(k=0;k<ntot;k++) {
712 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
713 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
714 check_nomsg(cpl_frameset_insert(*set,dup_frm));
716 sinfo_free_frameset(&tot_set);
720 if ( (nobj == 0) && (nsky != 0) ) {
727 sinfo_msg(
"------------------------------") ;
728 sinfo_msg(
"SKY ONLY FRAMES DATA REDUCTION NOT SUPPORTED") ;
729 sinfo_msg(
"------------------------------") ;
737 if ( (nobj != 0) && (nsky == 0) ) {
742 check_nomsg(p = cpl_parameterlist_find(config,
743 "sinfoni.objnod.autojitter_method"));
744 check_nomsg(aj_meth = cpl_parameter_get_int(p));
745 if(strcmp(pro_ctg_stack,PRO_PUPIL_LAMP_STACKED) == 0) {
753 sinfo_msg(
"Dummy sky case");
754 sinfo_msg(
"Fake sky is coming from median of all objects");
755 cknull(sky_frm = sinfo_new_get_dummy_sky(obj_set),
756 "Problem to get dummy frame");
758 sinfo_msg(
"------------------------------") ;
759 sinfo_msg(
"Generates OBJ-SKY pairs");
760 sinfo_msg(
"------------------------------") ;
761 check_nomsg(tot_set=cpl_frameset_new());
765 for (i=0;i<nobj;i++) {
767 check_nomsg(wrk_set=cpl_frameset_new());
768 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
769 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
770 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
771 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
772 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
773 for(k=0;k<ncdb;k++) {
774 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
775 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
776 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
779 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
780 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
782 "Error Stacking frame %d",i);
784 check_nomsg(stk_set=cpl_frameset_new());
785 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
786 nstk=cpl_frameset_get_size(stk_set);
787 for(k=0;k<nstk;k++) {
788 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
789 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
790 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
792 sinfo_free_frameset(&stk_set);
793 sinfo_free_frameset(&wrk_set);
796 check_nomsg(ntot=cpl_frameset_get_size(tot_set));
797 for(k=0;k<ntot;k++) {
798 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
799 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
800 check_nomsg(cpl_frameset_insert(*set,dup_frm));
802 sinfo_free_frameset(&tot_set);
803 sinfo_free_frame(&sky_frm);
805 }
else if(aj_meth == 1 ) {
807 sinfo_msg(
"Dummy obj-sky case");
808 sinfo_msg(
"Fake sky is coming from each next object");
812 ck0(sinfo_new_get_dummy_obj_sky_stacked(obj_set,&(*set),config,
813 fk,pro_ctg_stack,recipe_id),
814 "Found error to get obj-sky-stacked frame");
816 sinfo_msg(
"Only one object frame, no sky");
817 ck0(sinfo_new_stack_frames(config,*set,pro_ctg_stack,0,fk,recipe_id),
818 "Error stacking frame");
823 sinfo_msg(
"------------------------------") ;
824 sinfo_msg(
"staks each OBJECT ");
825 sinfo_msg(
"------------------------------") ;
826 tot_set=cpl_frameset_new();
828 for (i=0;i<nobj;i++) {
830 check_nomsg(wrk_set=cpl_frameset_new());
831 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
832 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
833 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
834 for(k=0;k<ncdb;k++) {
835 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
836 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
837 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
841 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
842 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
843 i,fk,recipe_id),
"Error stacking frame %d",i);
845 check_nomsg(stk_set=cpl_frameset_new());
846 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
847 check_nomsg(nstk=cpl_frameset_get_size(stk_set));
848 for(k=0;k<nstk;k++) {
849 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
850 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
851 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
853 sinfo_free_frameset(&stk_set);
854 sinfo_free_frameset(&wrk_set);
858 check_nomsg(ntot=cpl_frameset_get_size(tot_set));
859 for(k=0;k<ntot;k++) {
860 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
861 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
862 check_nomsg(cpl_frameset_insert(*set,dup_frm));
864 sinfo_free_frameset(&tot_set);
868 sinfo_free_frameset(&obj_set);
869 sinfo_free_frameset(&sky_set);
870 sinfo_free_frameset(&cdb_set);
871 sinfo_fake_delete(&fk);
879 sinfo_free_frame(&sky_frm);
880 sinfo_free_frameset(&wrk_set);
881 sinfo_free_frameset(&tot_set);
882 sinfo_free_frameset(&obj_set);
883 sinfo_free_frameset(&sky_set);
884 sinfo_free_frameset(&cdb_set);
885 sinfo_fake_delete(&fk);
891 int sinfo_cub_stk_frames(cpl_parameterlist* config,
893 const char* recipe_id,
894 const char** pro_ctg_cube)
896 cpl_frame * obj_frm=NULL;
897 char tag[FILE_NAME_SZ];
898 char pro_ctg_stack[FILE_NAME_SZ];
899 char outname[FILE_NAME_SZ];
900 char filename[FILE_NAME_SZ];
903 cpl_frameset * obj_set=NULL;
904 cpl_frameset * sky_set=NULL;
905 cpl_frameset * cdb_set=NULL;
906 cpl_frameset * wrk_set=NULL;
907 cpl_frameset * tot_set=NULL;
908 cpl_frameset * pro_set=NULL;
909 cpl_frame * sky_frm=NULL;
910 cpl_frame * cdb_frm=NULL;
911 cpl_frame * dup_frm=NULL;
925 double mjd_sky_frm=0;
926 cpl_parameter* p=NULL;
927 fake* fk=sinfo_fake_new();
929 obj_set=cpl_frameset_new();
930 sky_set=cpl_frameset_new();
931 cdb_set=cpl_frameset_new();
933 sinfo_extract_obj_frames(*set,obj_set);
934 sinfo_extract_sky_frames(*set,sky_set);
935 sinfo_extract_mst_frames(*set,cdb_set);
937 cknull(obj_frm = cpl_frameset_get_frame(obj_set,0),
938 "No object frames in input set.");
941 strcpy(tag,cpl_frame_get_tag(obj_frm));
942 if(NULL!=sinfo_new_set_obj_procatg(tag)){
943 *pro_ctg_cube=sinfo_new_set_obj_procatg(tag);
950 if(NULL!=sinfo_new_set_stk_procatg(tag)){
951 strcpy(pro_ctg_stack,sinfo_new_set_stk_procatg(tag));
957 nobj=cpl_frameset_get_size(obj_set);
958 nsky=cpl_frameset_get_size(sky_set);
959 ncdb=cpl_frameset_get_size(cdb_set);
961 if ((nobj==0) && (nsky==0)) {
967 if ( (nobj != 0) && (nsky != 0) ) {
969 sinfo_msg(
"------------------------------") ;
970 sinfo_msg(
"Generates OBJ-SKY pairs");
971 sinfo_msg(
"------------------------------") ;
973 check_nomsg(tot_set=cpl_frameset_new());
974 check_nomsg(p = cpl_parameterlist_find(config,
975 "sinfoni.objnod.autojitter_method"));
976 check_nomsg(cpl_parameter_set_int(p,0));
978 for (i=0;i<nobj;i++) {
980 cknull_nomsg(wrk_set=cpl_frameset_new());
981 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
982 mjd_obj=sinfo_get_mjd_obs(obj_frm);
983 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,0));
984 mjd_sky=sinfo_get_mjd_obs(sky_frm);
985 strcpy(filename,cpl_frame_get_filename(obj_frm));
988 for (j=1;j<nsky;j++) {
989 mjd_sky_frm = sinfo_get_mjd_obs(cpl_frameset_get_frame(sky_set,j));
990 if(1000.*(mjd_sky_frm-mjd_obj)*(mjd_sky_frm-mjd_obj) <
991 1000.*(mjd_sky- mjd_obj)*(mjd_sky- mjd_obj) ) {
993 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,j));
996 strcpy(filename,cpl_frame_get_filename(sky_frm));
1001 cknull_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
1002 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1003 cknull_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
1004 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1007 for(k=0;k<ncdb;k++) {
1008 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
1009 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
1010 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1015 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
1016 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,i,fk,recipe_id),
1017 "Cannot stack frames");
1020 ck0( ( ind=sinfo_new_cubes_build(recipe_id,config,wrk_set,
1021 *pro_ctg_cube,i) ) ,
1022 "GENERATING CUBE no. %d\n", ind) ;
1024 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
1026 CPL_FRAME_GROUP_PRODUCT));
1027 check_nomsg(cpl_frameset_join(tot_set,pro_set));
1028 sinfo_free_frameset(&pro_set);
1029 sinfo_free_frameset(&wrk_set);
1034 check_nomsg(sinfo_extract_frames_group_type(tot_set,
1036 CPL_FRAME_GROUP_PRODUCT));
1037 check_nomsg(cpl_frameset_join(*set,pro_set));
1038 sinfo_free_frameset(&pro_set);
1039 sinfo_free_frameset(&tot_set);
1044 if ( (nobj == 0) && (nsky != 0) ) {
1051 sinfo_msg(
"------------------------------") ;
1052 sinfo_msg(
"SKY ONLY FRAMES DATA REDUCTION NOT SUPPORTED") ;
1053 sinfo_msg(
"------------------------------") ;
1062 if ( (nobj != 0) && (nsky == 0) ) {
1067 check_nomsg(p=cpl_parameterlist_find(config,
1068 "sinfoni.objnod.autojitter_method"));
1069 check_nomsg(aj_meth = cpl_parameter_get_int(p));
1070 if(strcmp(pro_ctg_stack,PRO_PUPIL_LAMP_STACKED) == 0) {
1078 sinfo_msg(
"Dummy sky case");
1079 sinfo_msg(
"Fake sky is coming from median of all objects");
1080 if( (sky_frm = sinfo_new_get_dummy_sky(obj_set)) == NULL) {
1087 sinfo_msg(
"------------------------------") ;
1088 sinfo_msg(
"Generates OBJ-SKY pairs");
1089 sinfo_msg(
"------------------------------") ;
1091 check_nomsg(tot_set=cpl_frameset_new());
1094 for (i=0;i<nobj;i++) {
1096 check_nomsg(wrk_set=cpl_frameset_new());
1097 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
1098 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
1099 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1100 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
1101 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1102 for(k=0;k<ncdb;k++) {
1103 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
1104 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
1105 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1108 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
1109 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
1110 i,fk,recipe_id),
"Error Stacking frame %d",i);
1114 ck0( ( ind = sinfo_new_cubes_build(recipe_id,config,wrk_set,
1116 "Error GENERATING CUBE no. %d\n", ind) ;
1121 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
1123 CPL_FRAME_GROUP_PRODUCT));
1124 check_nomsg(cpl_frameset_join(tot_set,pro_set));
1125 sinfo_free_frameset(&pro_set);
1126 sinfo_free_frameset(&wrk_set);
1130 check_nomsg(sinfo_extract_frames_group_type(tot_set,
1132 CPL_FRAME_GROUP_PRODUCT));
1133 check_nomsg(cpl_frameset_join(*set,pro_set));
1134 sinfo_free_frameset(&pro_set);
1135 sinfo_free_frameset(&tot_set);
1136 sinfo_free_frame(&sky_frm);
1137 }
else if(aj_meth == 1 ) {
1140 sinfo_msg(
"Dummy obj-sky case");
1141 sinfo_msg(
"Fake sky is coming from each next object");
1145 ck0(sinfo_get_dummy_obj_sky_stacked_and_cubes(obj_set,&(*set),config,
1146 fk,pro_ctg_stack,recipe_id),
1147 "Found error to get obj-sky-stacked frame");
1150 sinfo_msg(
"Only one object frame, no sky");
1151 check_nomsg(p=cpl_parameterlist_find(config,
1152 "sinfoni.sinfo_utl_skycor.rot_cor"));
1153 check_nomsg(cpl_parameter_set_bool(p,FALSE));
1155 ck0(sinfo_new_stack_frames(config,*set,pro_ctg_stack,0,fk,recipe_id),
1156 "Error stacking frame");
1159 sinfo_msg(
"------------------------------") ;
1160 sinfo_msg(
"BUILDING CUBE %d",i);
1161 sinfo_msg(
"------------------------------") ;
1162 ck0(sinfo_new_cubes_build(recipe_id,config,*set,*pro_ctg_cube,i),
1163 "Error GENERATING CUBE %d", i) ;
1165 sinfo_msg(
"------------------------------") ;
1166 sinfo_msg(
"BUILT CUBE %d",i);
1167 sinfo_msg(
"------------------------------") ;
1173 sinfo_msg(
"------------------------------") ;
1174 sinfo_msg(
"staks each OBJECT ");
1175 sinfo_msg(
"------------------------------") ;
1176 check_nomsg(tot_set=cpl_frameset_new());
1178 for (i=0;i<nobj;i++) {
1180 check_nomsg(wrk_set=cpl_frameset_new());
1181 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
1182 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
1183 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1184 for(k=0;k<ncdb;k++) {
1185 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
1186 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
1187 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
1191 snprintf(outname,MAX_NAME_SIZE-1,
"%s%d%s",
"out_stack",i,
".fits");
1192 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
1193 i,fk,recipe_id),
"Error stacking frame %d",i);
1197 sinfo_msg(
"------------------------------") ;
1198 sinfo_msg(
"BUILDING CUBE %d",i);
1199 sinfo_msg(
"------------------------------") ;
1200 ck0( ( ind=sinfo_new_cubes_build(recipe_id,config,wrk_set,
1202 "Error GENERATING CUBE no. %d\n", ind) ;
1204 sinfo_msg(
"------------------------------") ;
1205 sinfo_msg(
"BUILT CUBE %d",i);
1206 sinfo_msg(
"------------------------------") ;
1207 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
1209 CPL_FRAME_GROUP_PRODUCT));
1210 check_nomsg(cpl_frameset_join(tot_set,pro_set));
1211 sinfo_free_frameset(&pro_set);
1212 sinfo_free_frameset(&wrk_set);
1218 check_nomsg(sinfo_extract_frames_group_type(tot_set,
1220 CPL_FRAME_GROUP_PRODUCT));
1221 check_nomsg(cpl_frameset_join(*set,pro_set));
1222 sinfo_free_frameset(&pro_set);
1223 sinfo_free_frameset(&tot_set);
1227 sinfo_free_frameset(&obj_set);
1228 sinfo_free_frameset(&sky_set);
1229 sinfo_free_frameset(&cdb_set);
1230 sinfo_fake_delete(&fk);
1236 sinfo_free_frameset(&wrk_set);
1237 sinfo_free_frameset(&tot_set);
1238 sinfo_free_frameset(&obj_set);
1239 sinfo_free_frameset(&sky_set);
1240 sinfo_free_frameset(&cdb_set);
1241 sinfo_fake_delete(&fk);
1249 static const char* sinfo_new_set_stk_procatg(
const char* tag)
1252 const char* pro_ctg_stack=NULL;
1254 if(strstr(tag,
"OBJ") != NULL) {
1255 pro_ctg_stack=PRO_OBJECT_NODDING_STACKED;
1256 }
else if(strstr(tag,
"PSF") != NULL) {
1257 pro_ctg_stack=PRO_PSF_CALIBRATOR_STACKED;
1258 }
else if(strstr(tag,
"STD") != NULL) {
1259 pro_ctg_stack=PRO_STD_NODDING_STACKED;
1260 }
else if(strstr(tag,
"PUPIL") != NULL) {
1261 pro_ctg_stack=PRO_PUPIL_LAMP_STACKED;
1267 return pro_ctg_stack;
1270 const char* sinfo_new_set_obj_procatg(
const char* tag)
1272 const char* pro_ctg_cube=NULL;
1274 if(strstr(tag,
"OBJ") != NULL) {
1275 pro_ctg_cube=PRO_COADD_OBJ;
1276 }
else if(strstr(tag,
"PSF") != NULL) {
1277 pro_ctg_cube=PRO_COADD_PSF;
1278 }
else if(strstr(tag,
"STD") != NULL) {
1279 pro_ctg_cube=PRO_COADD_STD;
1280 }
else if(strstr(tag,
"PUPIL") != NULL) {
1281 pro_ctg_cube=PRO_COADD_PUPIL;
1287 return pro_ctg_cube;
#define sinfo_msg_error(...)
Print an error message.