00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifdef HAVE_CONFIG_H
00032 #include <config.h>
00033 #endif
00034
00035
00036
00037
00038
00039 #include "sinfo_dfs.h"
00040
00041 #include <stdio.h>
00042 #include <sinfo_rec_utils.h>
00043 #include <sinfo_functions.h>
00044 #include <sinfo_new_cubes_build.h>
00045 #include <sinfo_error.h>
00046 #include <sinfo_globals.h>
00047 #include <sinfo_utils_wrappers.h>
00048
00049
00050
00052
00056
00057 static const char* sinfo_new_set_stk_procatg(const char* tag);
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 int
00075 sinfo_new_stack_frames(cpl_parameterlist* cfg,
00076 cpl_frameset* set,
00077 const char* procatg,
00078 const int id,
00079 fake* fk,
00080 const char* plugin_id)
00081 {
00082 int ind=0;
00083 sinfo_msg("------------------------------") ;
00084 sinfo_msg("PREPARE STACKED SET %d",id) ;
00085 sinfo_msg("------------------------------") ;
00086 ck0(ind=sinfo_new_prepare_stacked_frames(plugin_id,cfg, set, NULL,procatg,
00087 id,fk)," no: %d", ind) ;
00088 sinfo_msg("------------------------------") ;
00089 sinfo_msg("PREPARED STACKED SET %d",id) ;
00090 sinfo_msg("------------------------------") ;
00091 return 0;
00092
00093 cleanup:
00094 return -1;
00095
00096 }
00097
00098 cpl_frame*
00099 sinfo_new_get_dummy_sky(cpl_frameset* obj_set)
00100 {
00101
00102 cpl_imagelist* obj_list=NULL;
00103 cpl_image* fake_sky=NULL;
00104 cpl_frame* frame=NULL;
00105 cpl_frame* sky_frame=NULL;
00106
00107 cpl_propertylist* plist=NULL;
00108 char filename[FILE_NAME_SZ];
00109
00110 check_nomsg(obj_list=cpl_imagelist_load_frameset(obj_set,CPL_TYPE_FLOAT,0,0));
00111 check_nomsg(fake_sky = cpl_imagelist_collapse_median_create(obj_list));
00112
00113 check_nomsg(frame = cpl_frameset_get_frame(obj_set,0));
00114 strcpy(filename,cpl_frame_get_filename(frame));
00115
00116 check(plist = cpl_propertylist_load(filename, 0),
00117 "getting header from reference ima frame %s",filename);
00118
00119 if (sinfo_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
00120 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE, "SKY");
00121 } else {
00122 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,"SKY") ;
00123 }
00124
00125 check(cpl_image_save(fake_sky, "out_fake_sky.fits", CPL_BPP_IEEE_FLOAT,
00126 plist,CPL_IO_DEFAULT),
00127 "Cannot save the product %s","out_fake_sky.fits");
00128
00129 sinfo_free_propertylist(&plist);
00130
00131 check_nomsg(sky_frame = cpl_frame_new()) ;
00132 check_nomsg(cpl_frame_set_filename(sky_frame, "out_fake_sky.fits")) ;
00133 check_nomsg(cpl_frame_set_tag(sky_frame, PRO_SKY_DUMMY)) ;
00134 check_nomsg(cpl_frame_set_type(sky_frame, CPL_FRAME_TYPE_IMAGE));
00135
00136
00137
00138 check_nomsg(cpl_frame_set_level(sky_frame, CPL_FRAME_LEVEL_FINAL));
00139 sinfo_free_image(&fake_sky);
00140 sinfo_free_imagelist(&obj_list);
00141
00142 return sky_frame;
00143
00144 cleanup:
00145
00146 sinfo_free_propertylist(&plist) ;
00147
00148 return NULL;
00149
00150 }
00151
00152
00153
00154 int
00155 sinfo_new_get_dummy_obj_sky_stacked(cpl_frameset* obj_set,cpl_frameset** set,
00156 cpl_parameterlist* config,fake* fk, char* pro_ctg, const char* plugin_id)
00157 {
00158 int nobj=0;
00159 int ncdb=0;
00160 int ntot=0;
00161 int nstk=0;
00162 int nwrk=0;
00163 int i=0;
00164 int k=0;
00165
00166 double mjd_obj=0;
00167 double mjd_sky_inf=0;
00168 double mjd_sky_sup=0;
00169 char sky_name[FILE_NAME_SZ];
00170 char out_name[FILE_NAME_SZ];
00171
00172 char fake_sky_name[FILE_NAME_SZ];
00173
00174 cpl_frame* obj_frm=NULL;
00175 cpl_frame* sky_frm=NULL;
00176 cpl_frame* cdb_frm=NULL;
00177 cpl_frame* wrk_frm=NULL;
00178 cpl_frame* tot_frm=NULL;
00179 cpl_frame* dup_frm=NULL;
00180
00181 cpl_frame* sky_frm_inf=NULL;
00182 cpl_frame* sky_frm_sup=NULL;
00183
00184 cpl_propertylist* plist=NULL;
00185 cpl_frameset* wrk_set=NULL;
00186 cpl_frameset* cdb_set=NULL;
00187 cpl_frameset* tot_set=NULL;
00188 cpl_frameset* stk_set=NULL;
00189 cpl_image* sky_ima=NULL;
00190 double obj_cumx=0;
00191 double obj_cumy=0;
00192
00193 double sky_sup_cumx=0;
00194 double sky_sup_cumy=0;
00195
00196 double sky_inf_cumx=0;
00197 double sky_inf_cumy=0;
00198 double cum_thres=0.5;
00199
00200 check_nomsg(cdb_set=cpl_frameset_new());
00201 ck0(sinfo_extract_mst_frames(*set,cdb_set),"Error extracting CDB frames");
00202 nobj=cpl_frameset_get_size(obj_set);
00203 ncdb=cpl_frameset_get_size(cdb_set);
00204
00205
00206 check_nomsg(tot_set=cpl_frameset_new());
00207
00208 for(i=0;i<nobj;i++) {
00209
00210
00211
00212
00213 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00214 mjd_obj = sinfo_get_mjd_obs(obj_frm);
00215 obj_cumx=sinfo_get_cumoffsetx(obj_frm);
00216 obj_cumy=sinfo_get_cumoffsety(obj_frm);
00217
00218 if(i>0) {
00219 check_nomsg(sky_frm_inf=cpl_frameset_get_frame(obj_set,i-1));
00220 mjd_sky_inf = sinfo_get_mjd_obs(sky_frm_inf);
00221 sky_inf_cumx=sinfo_get_cumoffsetx(sky_frm_inf);
00222 sky_inf_cumy=sinfo_get_cumoffsety(sky_frm_inf);
00223 }
00224
00225 if(i<nobj-1) {
00226 check_nomsg(sky_frm_sup=cpl_frameset_get_frame(obj_set,i+1));
00227 mjd_sky_sup = sinfo_get_mjd_obs(sky_frm_sup);
00228 sky_sup_cumx=sinfo_get_cumoffsetx(sky_frm_sup);
00229 sky_sup_cumy=sinfo_get_cumoffsety(sky_frm_sup);
00230 }
00231
00232
00233
00234 if(i==0) {
00235 sky_frm = sky_frm_sup;
00236 }
00237 else if(i==(nobj-1)) {
00238 sky_frm = sky_frm_inf;
00239 } else {
00240 if( fabs( mjd_sky_inf - mjd_obj ) <
00241 fabs( mjd_sky_sup - mjd_obj ) ) {
00242 if((fabs(sky_inf_cumx-obj_cumx) > cum_thres) ||
00243 (fabs(sky_inf_cumy-obj_cumy) > cum_thres)) {
00244 sky_frm = sky_frm_inf;
00245 } else {
00246 sky_frm = sky_frm_sup;
00247 }
00248 } else {
00249 if((fabs(sky_sup_cumx-obj_cumx) > cum_thres) ||
00250 (fabs(sky_sup_cumy-obj_cumy) > cum_thres)) {
00251 sky_frm = sky_frm_sup;
00252 } else {
00253 sky_frm = sky_frm_inf;
00254 }
00255 }
00256 }
00257
00258 strcpy(sky_name,cpl_frame_get_filename(sky_frm));
00259
00260 sinfo_msg("obj: %s",cpl_frame_get_filename(obj_frm));
00261 sinfo_msg("sky: %s",sky_name);
00262
00263 if (strstr(sky_name, "." ) != NULL ) {
00264
00265
00266 snprintf(fake_sky_name,MAX_NAME_SIZE-1,"%s%d%s","out_fake_sky",i,".fits");
00267 } else {
00268 snprintf(fake_sky_name, MAX_NAME_SIZE-1,sky_name) ;
00269 }
00270
00271 check_nomsg(sky_ima=cpl_image_load(sky_name,CPL_TYPE_FLOAT,0,0));
00272
00273 cknull(plist = cpl_propertylist_load(sky_name, 0),
00274 "getting header from reference ima frame %s",sky_name);
00275
00276 if (sinfo_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
00277 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE, "SKY");
00278 } else {
00279 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,"SKY") ;
00280 }
00281
00282 check(cpl_image_save(sky_ima, fake_sky_name, CPL_BPP_IEEE_FLOAT,
00283 plist,CPL_IO_DEFAULT),
00284 "Cannot save the product %s",fake_sky_name);
00285
00286 sinfo_free_propertylist(&plist);
00287 sinfo_free_image(&sky_ima);
00288
00289 check_nomsg(cpl_frame_set_filename(sky_frm, fake_sky_name)) ;
00290
00291
00292
00293 check_nomsg(cpl_frame_set_type(sky_frm, CPL_FRAME_TYPE_IMAGE));
00294
00295 check_nomsg(cpl_frame_set_level(sky_frm, CPL_FRAME_LEVEL_FINAL));
00296
00297
00298 check_nomsg(wrk_set=cpl_frameset_new());
00299
00300 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
00301 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00302
00303 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
00304 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00305
00306
00307 for(k=0;k<ncdb;k++) {
00308 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
00309 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
00310 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00311 }
00312 snprintf(out_name,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
00313 nwrk=cpl_frameset_get_size(wrk_set);
00314
00315
00316 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg,i,fk,plugin_id),
00317 "Error stacking frames");
00318
00319 check_nomsg(cpl_frame_set_filename(sky_frm, sky_name)) ;
00320
00321
00322
00323 check_nomsg(stk_set=cpl_frameset_new());
00324 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00325 nstk=cpl_frameset_get_size(stk_set);
00326 for(k=0;k<nstk;k++) {
00327 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
00328 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00329 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
00330 }
00331 sinfo_free_frameset(&stk_set);
00332 sinfo_free_frameset(&wrk_set);
00333
00334 }
00335 ntot=cpl_frameset_get_size(tot_set);
00336 for(k=0;k<ntot;k++) {
00337 check_nomsg(tot_frm=cpl_frameset_get_frame(tot_set,k));
00338 check_nomsg(dup_frm=cpl_frame_duplicate(tot_frm));
00339 check_nomsg(cpl_frameset_insert(*set,dup_frm));
00340 }
00341
00342 sinfo_free_frameset(&cdb_set);
00343 sinfo_free_frameset(&tot_set);
00344
00345 return 0;
00346
00347 cleanup:
00348 sinfo_free_propertylist(&plist) ;
00349 sinfo_free_frameset(&cdb_set);
00350 sinfo_free_frameset(&tot_set);
00351 return -1;
00352
00353 }
00354
00355 int
00356 sinfo_get_dummy_obj_sky_stacked_and_cubes(cpl_frameset* obj_set,
00357 cpl_frameset** set,
00358 cpl_parameterlist* config,
00359 fake* fk,
00360 char* pro_ctg,
00361 const char* plugin_id)
00362 {
00363 int nobj=0;
00364 int ncdb=0;
00365 int nwrk=0;
00366 int i=0;
00367 int k=0;
00368 int ind=0;
00369
00370 double mjd_obj=0;
00371 double mjd_sky_inf=0;
00372 double mjd_sky_sup=0;
00373 char sky_name[FILE_NAME_SZ];
00374 char out_name[FILE_NAME_SZ];
00375
00376 char fake_sky_name[FILE_NAME_SZ];
00377
00378 cpl_frame* obj_frm=NULL;
00379 cpl_frame* sky_frm=NULL;
00380 cpl_frame* cdb_frm=NULL;
00381 cpl_frame* dup_frm=NULL;
00382
00383 cpl_frame* sky_frm_inf=NULL;
00384 cpl_frame* sky_frm_sup=NULL;
00385
00386 cpl_propertylist* plist=NULL;
00387 cpl_frameset* wrk_set=NULL;
00388 cpl_frameset* cdb_set=NULL;
00389 cpl_frameset* tot_set=NULL;
00390 cpl_frameset* pro_set=NULL;
00391 cpl_image* sky_ima=NULL;
00392 double obj_cumx=0;
00393 double obj_cumy=0;
00394
00395 double sky_sup_cumx=0;
00396 double sky_sup_cumy=0;
00397
00398 double sky_inf_cumx=0;
00399 double sky_inf_cumy=0;
00400 double cum_thres=0.5;
00401
00402 check_nomsg(cdb_set=cpl_frameset_new());
00403 ck0(sinfo_extract_mst_frames(*set,cdb_set),"Error extracting CDB frames");
00404 nobj=cpl_frameset_get_size(obj_set);
00405 ncdb=cpl_frameset_get_size(cdb_set);
00406
00407
00408 check_nomsg(tot_set=cpl_frameset_new());
00409
00410 for(i=0;i<nobj;i++) {
00411
00412 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00413 mjd_obj = sinfo_get_mjd_obs(obj_frm);
00414 obj_cumx=sinfo_get_cumoffsetx(obj_frm);
00415 obj_cumy=sinfo_get_cumoffsety(obj_frm);
00416
00417 if(i>0) {
00418 check_nomsg(sky_frm_inf=cpl_frameset_get_frame(obj_set,i-1));
00419 mjd_sky_inf = sinfo_get_mjd_obs(sky_frm_inf);
00420 sky_inf_cumx=sinfo_get_cumoffsetx(sky_frm_inf);
00421 sky_inf_cumy=sinfo_get_cumoffsety(sky_frm_inf);
00422 }
00423
00424 if(i<nobj-1) {
00425 check_nomsg(sky_frm_sup=cpl_frameset_get_frame(obj_set,i+1));
00426 mjd_sky_sup = sinfo_get_mjd_obs(sky_frm_sup);
00427 sky_sup_cumx=sinfo_get_cumoffsetx(sky_frm_sup);
00428 sky_sup_cumy=sinfo_get_cumoffsety(sky_frm_sup);
00429 }
00430
00431
00432
00433 if(i==0) {
00434 sky_frm = sky_frm_sup;
00435 }
00436 else if(i==(nobj-1)) {
00437 sky_frm = sky_frm_inf;
00438 } else {
00439 if( fabs( mjd_sky_inf - mjd_obj ) <
00440 fabs( mjd_sky_sup - mjd_obj ) ) {
00441 if((fabs(sky_inf_cumx-obj_cumx) > cum_thres) ||
00442 (fabs(sky_inf_cumy-obj_cumy) > cum_thres)) {
00443 sky_frm = sky_frm_inf;
00444 } else {
00445 sky_frm = sky_frm_sup;
00446 }
00447 } else {
00448 if((fabs(sky_sup_cumx-obj_cumx) > cum_thres) ||
00449 (fabs(sky_sup_cumy-obj_cumy) > cum_thres)) {
00450 sky_frm = sky_frm_sup;
00451 } else {
00452 sky_frm = sky_frm_inf;
00453 }
00454 }
00455 }
00456
00457
00458 strcpy(sky_name,cpl_frame_get_filename(sky_frm));
00459 sinfo_msg("obj: %s",cpl_frame_get_filename(obj_frm));
00460 sinfo_msg("sky: %s",sky_name);
00461 if (strstr(sky_name, "." ) != NULL ) {
00462
00463
00464 snprintf(fake_sky_name,MAX_NAME_SIZE-1,"%s%d%s","out_fake_sky",i,".fits");
00465 } else {
00466 snprintf(fake_sky_name, MAX_NAME_SIZE-1,sky_name) ;
00467 }
00468
00469 check_nomsg(sky_ima=cpl_image_load(sky_name,CPL_TYPE_FLOAT,0,0));
00470
00471 cknull(plist = cpl_propertylist_load(sky_name, 0),
00472 "getting header from reference ima frame %s",sky_name);
00473
00474 if (sinfo_propertylist_has(plist, KEY_NAME_DPR_TYPE)) {
00475 cpl_propertylist_set_string(plist, KEY_NAME_DPR_TYPE, "SKY");
00476 } else {
00477 cpl_propertylist_append_string(plist, KEY_NAME_DPR_TYPE,"SKY") ;
00478 }
00479 check(cpl_image_save(sky_ima, fake_sky_name, CPL_BPP_IEEE_FLOAT,
00480 plist,CPL_IO_DEFAULT),
00481 "Cannot save the product %s",fake_sky_name);
00482
00483 sinfo_free_propertylist(&plist);
00484 sinfo_free_image(&sky_ima);
00485
00486 check_nomsg(cpl_frame_set_filename(sky_frm, fake_sky_name)) ;
00487
00488
00489
00490 check_nomsg(cpl_frame_set_type(sky_frm, CPL_FRAME_TYPE_IMAGE));
00491
00492 check_nomsg(cpl_frame_set_level(sky_frm, CPL_FRAME_LEVEL_FINAL));
00493
00494
00495 check_nomsg(wrk_set=cpl_frameset_new());
00496
00497 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
00498 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00499
00500 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
00501 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00502
00503 for(k=0;k<ncdb;k++) {
00504 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
00505 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
00506 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00507 }
00508 snprintf(out_name,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
00509 nwrk=cpl_frameset_get_size(wrk_set);
00510
00511
00512 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg,i,fk,plugin_id),
00513 "Error stacking frames");
00514
00515
00516 check_nomsg(cpl_frame_set_filename(sky_frm, sky_name)) ;
00517
00518
00519
00520 sinfo_msg("--------------------------------------");
00521 sinfo_msg("BUILDING CUBE %d",i);
00522 sinfo_msg("--------------------------------------");
00523
00524
00525 ck0(ind=sinfo_new_cubes_build(plugin_id,config,wrk_set,pro_ctg,i),
00526 "GENERATING CUBE no. %d\n", ind) ;
00527 sinfo_msg("--------------------------------------");
00528 sinfo_msg("BUILT CUBE %d",i);
00529 sinfo_msg("--------------------------------------");
00530
00531
00532 check_nomsg(sinfo_extract_frames_group_type(wrk_set,&pro_set,
00533 CPL_FRAME_GROUP_PRODUCT));
00534 check_nomsg(sinfo_frameset_merge(tot_set,pro_set));
00535 sinfo_free_frameset(&pro_set);
00536 sinfo_free_frameset(&wrk_set);
00537
00538 }
00539
00540 check_nomsg(sinfo_extract_frames_group_type(tot_set,&pro_set,
00541 CPL_FRAME_GROUP_PRODUCT));
00542 check_nomsg(sinfo_frameset_merge(*set,pro_set));
00543 sinfo_free_frameset(&pro_set);
00544 sinfo_free_frameset(&tot_set);
00545 sinfo_free_frameset(&cdb_set);
00546
00547 return 0;
00548
00549 cleanup:
00550 sinfo_free_image(&sky_ima);
00551 sinfo_free_propertylist(&plist) ;
00552 sinfo_free_frameset(&wrk_set);
00553 sinfo_free_frameset(&pro_set);
00554 sinfo_free_frameset(&cdb_set);
00555 sinfo_free_frameset(&tot_set);
00556 return -1;
00557
00558 }
00559
00560
00561 int sinfo_new_sci_stk_frames(cpl_parameterlist* config,
00562 cpl_frameset** set,
00563 const char* recipe_id,
00564 const char** pro_ctg_cube)
00565 {
00566 char tag[FILE_NAME_SZ];
00567 char pro_ctg_stack[FILE_NAME_SZ];
00568 char outname[FILE_NAME_SZ];
00569 char filename[FILE_NAME_SZ];
00570
00571
00572 cpl_frameset * obj_set=NULL;
00573 cpl_frameset * sky_set=NULL;
00574 cpl_frameset * cdb_set=NULL;
00575 cpl_frameset * wrk_set=NULL;
00576 cpl_frameset * stk_set=NULL;
00577 cpl_frameset * tot_set=NULL;
00578 cpl_frame * obj_frm=NULL;
00579 cpl_frame * sky_frm=NULL;
00580 cpl_frame * cdb_frm=NULL;
00581 cpl_frame * wrk_frm=NULL;
00582 cpl_frame * dup_frm=NULL;
00583
00584 int nsky=0;
00585 int nobj=0;
00586 int ncdb=0;
00587 int ntot=0;
00588 int nstk=0;
00589
00590 int i=0;
00591 int j=0;
00592 int k=0;
00593 int aj_meth=0;
00594
00595
00596 double mjd_obj=0;
00597 double mjd_sky=0;
00598 double mjd_sky_frm=0;
00599 cpl_parameter* p=NULL;
00600 fake* fk=sinfo_fake_new();
00601
00602 check_nomsg(obj_set=cpl_frameset_new());
00603 check_nomsg(sky_set=cpl_frameset_new());
00604 check_nomsg(cdb_set=cpl_frameset_new());
00605
00606 sinfo_extract_obj_frames(*set,obj_set);
00607 sinfo_extract_sky_frames(*set,sky_set);
00608 sinfo_extract_mst_frames(*set,cdb_set);
00609
00610
00611 cknull(obj_frm = cpl_frameset_get_frame(obj_set,0),
00612 "No object frames in input set.");
00613
00614 strcpy(tag,cpl_frame_get_tag(obj_frm));
00615 if(NULL!=sinfo_new_set_obj_procatg(tag)){
00616 *pro_ctg_cube=sinfo_new_set_obj_procatg(tag);
00617 } else {
00618 sinfo_msg_error("Frame tag %s not supported.",tag);
00619 goto cleanup;
00620 }
00621
00622
00623 if(NULL!=sinfo_new_set_stk_procatg(tag)){
00624 strcpy(pro_ctg_stack,sinfo_new_set_stk_procatg(tag));
00625 } else {
00626 sinfo_msg_error("Frame tag %s not supported.",tag);
00627 goto cleanup;
00628 }
00629
00630 nobj=cpl_frameset_get_size(obj_set);
00631 nsky=cpl_frameset_get_size(sky_set);
00632 ncdb=cpl_frameset_get_size(cdb_set);
00633
00634 if ((nobj==0) && (nsky==0)) {
00635 sinfo_msg_error("Empty input set");
00636 goto cleanup;
00637 }
00638
00639
00640 if ( (nobj != 0) && (nsky != 0) ) {
00641
00642 sinfo_msg("------------------------------") ;
00643 sinfo_msg("Generates OBJ-SKY pairs");
00644 sinfo_msg("------------------------------") ;
00645 check_nomsg(tot_set=cpl_frameset_new());
00646 check_nomsg(p=cpl_parameterlist_find(config,
00647 "sinfoni.objnod.autojitter_method"));
00648 check_nomsg(cpl_parameter_set_int(p,0));
00649 cpl_msg_warning(cpl_func , "******** 1 *********");
00650
00651
00652 for (i=0;i<nobj;i++) {
00653
00654 check_nomsg(wrk_set=cpl_frameset_new());
00655
00656 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00657 mjd_obj=sinfo_get_mjd_obs(obj_frm);
00658 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,0));
00659 mjd_sky=sinfo_get_mjd_obs(sky_frm);
00660 strcpy(filename,cpl_frame_get_filename(obj_frm));
00661
00662
00663 for (j=1;j<nsky;j++) {
00664 check_nomsg(mjd_sky_frm=sinfo_get_mjd_obs(
00665 cpl_frameset_get_frame(sky_set,j)));
00666 if(1000.*(mjd_sky_frm-mjd_obj)*(mjd_sky_frm-mjd_obj) <
00667 1000.*(mjd_sky- mjd_obj)*(mjd_sky- mjd_obj) ) {
00668 mjd_sky=mjd_sky_frm;
00669 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,j));
00670 }
00671 }
00672
00673 strcpy(filename,cpl_frame_get_filename(sky_frm));
00674
00675
00676
00677
00678 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
00679 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00680 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
00681 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00682
00683
00684 for(k=0;k<ncdb;k++) {
00685 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
00686 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
00687 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00688 }
00689
00690
00691
00692 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
00693 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,i,fk,recipe_id),
00694 "Cannot stack frames");
00695
00696 check_nomsg(stk_set=cpl_frameset_new());
00697 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00698 nstk=cpl_frameset_get_size(stk_set);
00699
00700 for(k=0;k<nstk;k++) {
00701 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
00702 check_nomsg(dup_frm = cpl_frame_duplicate(wrk_frm));
00703 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
00704 }
00705 sinfo_free_frameset(&stk_set);
00706 sinfo_free_frameset(&wrk_set);
00707
00708 }
00709
00710 ntot=cpl_frameset_get_size(tot_set);
00711 for(k=0;k<ntot;k++) {
00712 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
00713 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00714 check_nomsg(cpl_frameset_insert(*set,dup_frm));
00715 }
00716 sinfo_free_frameset(&tot_set);
00717
00718 }
00719
00720 if ( (nobj == 0) && (nsky != 0) ) {
00721
00722
00723
00724
00725
00726 {
00727 sinfo_msg("------------------------------") ;
00728 sinfo_msg("SKY ONLY FRAMES DATA REDUCTION NOT SUPPORTED") ;
00729 sinfo_msg("------------------------------") ;
00730 goto cleanup;
00731 }
00732
00733 }
00734
00735
00736
00737 if ( (nobj != 0) && (nsky == 0) ) {
00738
00739
00740
00741
00742 check_nomsg(p = cpl_parameterlist_find(config,
00743 "sinfoni.objnod.autojitter_method"));
00744 check_nomsg(aj_meth = cpl_parameter_get_int(p));
00745 if(strcmp(pro_ctg_stack,PRO_PUPIL_LAMP_STACKED) == 0) {
00746
00747 aj_meth = 0;
00748
00749 }
00750
00751 if(aj_meth == 2) {
00752
00753 sinfo_msg("Dummy sky case");
00754 sinfo_msg("Fake sky is coming from median of all objects");
00755 cknull(sky_frm = sinfo_new_get_dummy_sky(obj_set),
00756 "Problem to get dummy frame");
00757
00758 sinfo_msg("------------------------------") ;
00759 sinfo_msg("Generates OBJ-SKY pairs");
00760 sinfo_msg("------------------------------") ;
00761 check_nomsg(tot_set=cpl_frameset_new());
00762
00763
00764
00765 for (i=0;i<nobj;i++) {
00766
00767 check_nomsg(wrk_set=cpl_frameset_new());
00768 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00769 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
00770 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00771 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
00772 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00773 for(k=0;k<ncdb;k++) {
00774 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
00775 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
00776 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00777 }
00778
00779 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
00780 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
00781 i,fk,recipe_id),
00782 "Error Stacking frame %d",i);
00783
00784 check_nomsg(stk_set=cpl_frameset_new());
00785 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00786 nstk=cpl_frameset_get_size(stk_set);
00787 for(k=0;k<nstk;k++) {
00788 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
00789 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00790 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
00791 }
00792 sinfo_free_frameset(&stk_set);
00793 sinfo_free_frameset(&wrk_set);
00794
00795 }
00796 check_nomsg(ntot=cpl_frameset_get_size(tot_set));
00797 for(k=0;k<ntot;k++) {
00798 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
00799 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00800 check_nomsg(cpl_frameset_insert(*set,dup_frm));
00801 }
00802 sinfo_free_frameset(&tot_set);
00803 sinfo_free_frame(&sky_frm);
00804
00805 } else if(aj_meth == 1 ) {
00806
00807 sinfo_msg("Dummy obj-sky case");
00808 sinfo_msg("Fake sky is coming from each next object");
00809
00810 if(nobj > 1) {
00811 fk->is_fake_sky=1;
00812 ck0(sinfo_new_get_dummy_obj_sky_stacked(obj_set,&(*set),config,
00813 fk,pro_ctg_stack,recipe_id),
00814 "Found error to get obj-sky-stacked frame");
00815 } else {
00816 sinfo_msg("Only one object frame, no sky");
00817 ck0(sinfo_new_stack_frames(config,*set,pro_ctg_stack,0,fk,recipe_id),
00818 "Error stacking frame");
00819 }
00820
00821 } else {
00822
00823 sinfo_msg("------------------------------") ;
00824 sinfo_msg("staks each OBJECT ");
00825 sinfo_msg("------------------------------") ;
00826 tot_set=cpl_frameset_new();
00827
00828 for (i=0;i<nobj;i++) {
00829
00830 check_nomsg(wrk_set=cpl_frameset_new());
00831 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00832 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
00833 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00834 for(k=0;k<ncdb;k++) {
00835 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
00836 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
00837 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
00838 }
00839
00840
00841 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
00842 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
00843 i,fk,recipe_id),"Error stacking frame %d",i);
00844
00845 check_nomsg(stk_set=cpl_frameset_new());
00846 sinfo_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00847 check_nomsg(nstk=cpl_frameset_get_size(stk_set));
00848 for(k=0;k<nstk;k++) {
00849 check_nomsg(wrk_frm=cpl_frameset_get_frame(stk_set,k));
00850 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00851 check_nomsg(cpl_frameset_insert(tot_set,dup_frm));
00852 }
00853 sinfo_free_frameset(&stk_set);
00854 sinfo_free_frameset(&wrk_set);
00855
00856 }
00857
00858 check_nomsg(ntot=cpl_frameset_get_size(tot_set));
00859 for(k=0;k<ntot;k++) {
00860 check_nomsg(wrk_frm=cpl_frameset_get_frame(tot_set,k));
00861 check_nomsg(dup_frm=cpl_frame_duplicate(wrk_frm));
00862 check_nomsg(cpl_frameset_insert(*set,dup_frm));
00863 }
00864 sinfo_free_frameset(&tot_set);
00865 }
00866 }
00867
00868 sinfo_free_frameset(&obj_set);
00869 sinfo_free_frameset(&sky_set);
00870 sinfo_free_frameset(&cdb_set);
00871 sinfo_fake_delete(&fk);
00872
00873 return 0;
00874
00875
00876
00877 cleanup:
00878
00879 sinfo_free_frame(&sky_frm);
00880 sinfo_free_frameset(&wrk_set);
00881 sinfo_free_frameset(&tot_set);
00882 sinfo_free_frameset(&obj_set);
00883 sinfo_free_frameset(&sky_set);
00884 sinfo_free_frameset(&cdb_set);
00885 sinfo_fake_delete(&fk);
00886 return -1;
00887
00888 }
00889
00890
00891
00892
00893
00894
00895
00896 int sinfo_cub_stk_frames(cpl_parameterlist* config,
00897 cpl_frameset** set,
00898 const char* recipe_id,
00899 const char** pro_ctg_cube)
00900 {
00901 cpl_frame * obj_frm=NULL;
00902 char tag[FILE_NAME_SZ];
00903 char pro_ctg_stack[FILE_NAME_SZ];
00904 char outname[FILE_NAME_SZ];
00905 char filename[FILE_NAME_SZ];
00906
00907
00908 cpl_frameset * obj_set=NULL;
00909 cpl_frameset * sky_set=NULL;
00910 cpl_frameset * cdb_set=NULL;
00911 cpl_frameset * wrk_set=NULL;
00912 cpl_frameset * tot_set=NULL;
00913 cpl_frameset * pro_set=NULL;
00914 cpl_frame * sky_frm=NULL;
00915 cpl_frame * cdb_frm=NULL;
00916 cpl_frame * dup_frm=NULL;
00917
00918 int nsky=0;
00919 int nobj=0;
00920 int ncdb=0;
00921
00922 int i=0;
00923 int j=0;
00924 int k=0;
00925 int aj_meth=0;
00926 int ind=0;
00927
00928 double mjd_obj=0;
00929 double mjd_sky=0;
00930 double mjd_sky_frm=0;
00931 cpl_parameter* p=NULL;
00932 fake* fk=sinfo_fake_new();
00933
00934 obj_set=cpl_frameset_new();
00935 sky_set=cpl_frameset_new();
00936 cdb_set=cpl_frameset_new();
00937
00938 sinfo_extract_obj_frames(*set,obj_set);
00939 sinfo_extract_sky_frames(*set,sky_set);
00940 sinfo_extract_mst_frames(*set,cdb_set);
00941
00942 cknull(obj_frm = cpl_frameset_get_frame(obj_set,0),
00943 "No object frames in input set.");
00944
00945
00946 strcpy(tag,cpl_frame_get_tag(obj_frm));
00947 if(NULL!=sinfo_new_set_obj_procatg(tag)){
00948 *pro_ctg_cube=sinfo_new_set_obj_procatg(tag);
00949 } else {
00950 sinfo_msg_error("Frame tag %s not supported.",tag);
00951 goto cleanup;
00952 }
00953
00954
00955 if(NULL!=sinfo_new_set_stk_procatg(tag)){
00956 strcpy(pro_ctg_stack,sinfo_new_set_stk_procatg(tag));
00957 } else {
00958 sinfo_msg_error("Frame tag %s not supported.",tag);
00959 goto cleanup;
00960 }
00961
00962 nobj=cpl_frameset_get_size(obj_set);
00963 nsky=cpl_frameset_get_size(sky_set);
00964 ncdb=cpl_frameset_get_size(cdb_set);
00965
00966 if ((nobj==0) && (nsky==0)) {
00967 sinfo_msg_error("Empty input set");
00968 goto cleanup;
00969 }
00970
00971
00972 if ( (nobj != 0) && (nsky != 0) ) {
00973
00974 sinfo_msg("------------------------------") ;
00975 sinfo_msg("Generates OBJ-SKY pairs");
00976 sinfo_msg("------------------------------") ;
00977
00978 check_nomsg(tot_set=cpl_frameset_new());
00979 check_nomsg(p = cpl_parameterlist_find(config,
00980 "sinfoni.objnod.autojitter_method"));
00981 check_nomsg(cpl_parameter_set_int(p,0));
00982
00983 for (i=0;i<nobj;i++) {
00984
00985 cknull_nomsg(wrk_set=cpl_frameset_new());
00986 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
00987 mjd_obj=sinfo_get_mjd_obs(obj_frm);
00988 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,0));
00989 mjd_sky=sinfo_get_mjd_obs(sky_frm);
00990 strcpy(filename,cpl_frame_get_filename(obj_frm));
00991
00992
00993 for (j=1;j<nsky;j++) {
00994 mjd_sky_frm = sinfo_get_mjd_obs(cpl_frameset_get_frame(sky_set,j));
00995 if(1000.*(mjd_sky_frm-mjd_obj)*(mjd_sky_frm-mjd_obj) <
00996 1000.*(mjd_sky- mjd_obj)*(mjd_sky- mjd_obj) ) {
00997 mjd_sky=mjd_sky_frm;
00998 check_nomsg(sky_frm=cpl_frameset_get_frame(sky_set,j));
00999 }
01000 }
01001 strcpy(filename,cpl_frame_get_filename(sky_frm));
01002
01003
01004
01005
01006 cknull_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
01007 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01008 cknull_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
01009 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01010
01011
01012 for(k=0;k<ncdb;k++) {
01013 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
01014 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
01015 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01016 }
01017
01018
01019
01020 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
01021 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,i,fk,recipe_id),
01022 "Cannot stack frames");
01023
01024
01025 ck0(ind=sinfo_new_cubes_build(recipe_id,config,wrk_set,
01026 *pro_ctg_cube,i),
01027 "GENERATING CUBE no. %d\n", ind) ;
01028
01029 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
01030 &pro_set,
01031 CPL_FRAME_GROUP_PRODUCT));
01032 check_nomsg(sinfo_frameset_merge(tot_set,pro_set));
01033 sinfo_free_frameset(&pro_set);
01034 sinfo_free_frameset(&wrk_set);
01035
01036
01037 }
01038
01039 check_nomsg(sinfo_extract_frames_group_type(tot_set,
01040 &pro_set,
01041 CPL_FRAME_GROUP_PRODUCT));
01042 check_nomsg(sinfo_frameset_merge(*set,pro_set));
01043 sinfo_free_frameset(&pro_set);
01044 sinfo_free_frameset(&tot_set);
01045
01046 }
01047
01048
01049 if ( (nobj == 0) && (nsky != 0) ) {
01050
01051
01052
01053
01054
01055 {
01056 sinfo_msg("------------------------------") ;
01057 sinfo_msg("SKY ONLY FRAMES DATA REDUCTION NOT SUPPORTED") ;
01058 sinfo_msg("------------------------------") ;
01059 goto cleanup;
01060 }
01061
01062
01063 }
01064
01065
01066
01067 if ( (nobj != 0) && (nsky == 0) ) {
01068
01069
01070
01071
01072 check_nomsg(p=cpl_parameterlist_find(config,
01073 "sinfoni.objnod.autojitter_method"));
01074 check_nomsg(aj_meth = cpl_parameter_get_int(p));
01075 if(strcmp(pro_ctg_stack,PRO_PUPIL_LAMP_STACKED) == 0) {
01076
01077 aj_meth = 0;
01078
01079 }
01080
01081 if(aj_meth == 2) {
01082
01083 sinfo_msg("Dummy sky case");
01084 sinfo_msg("Fake sky is coming from median of all objects");
01085 if( (sky_frm = sinfo_new_get_dummy_sky(obj_set)) == NULL) {
01086
01087 sinfo_msg_error("Problem to get dummy frame");
01088
01089 return -1;
01090
01091 }
01092 sinfo_msg("------------------------------") ;
01093 sinfo_msg("Generates OBJ-SKY pairs");
01094 sinfo_msg("------------------------------") ;
01095
01096 check_nomsg(tot_set=cpl_frameset_new());
01097
01098
01099 for (i=0;i<nobj;i++) {
01100
01101 check_nomsg(wrk_set=cpl_frameset_new());
01102 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
01103 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
01104 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01105 check_nomsg(dup_frm=cpl_frame_duplicate(sky_frm));
01106 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01107 for(k=0;k<ncdb;k++) {
01108 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
01109 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
01110 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01111 }
01112
01113 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
01114 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
01115 i,fk,recipe_id),"Error Stacking frame %d",i);
01116
01117
01118
01119 ck0(ind=sinfo_new_cubes_build(recipe_id,config,wrk_set,
01120 *pro_ctg_cube,i),
01121 "Error GENERATING CUBE no. %d\n", ind) ;
01122
01123
01124
01125
01126 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
01127 &pro_set,
01128 CPL_FRAME_GROUP_PRODUCT));
01129 check_nomsg(sinfo_frameset_merge(tot_set,pro_set));
01130 sinfo_free_frameset(&pro_set);
01131 sinfo_free_frameset(&wrk_set);
01132
01133
01134 }
01135 check_nomsg(sinfo_extract_frames_group_type(tot_set,
01136 &pro_set,
01137 CPL_FRAME_GROUP_PRODUCT));
01138 check_nomsg(sinfo_frameset_merge(*set,pro_set));
01139 sinfo_free_frameset(&pro_set);
01140 sinfo_free_frameset(&tot_set);
01141 sinfo_free_frame(&sky_frm);
01142 } else if(aj_meth == 1 ) {
01143
01144
01145 sinfo_msg("Dummy obj-sky case");
01146 sinfo_msg("Fake sky is coming from each next object");
01147
01148 if(nobj > 1) {
01149 fk->is_fake_sky=1;
01150 ck0(sinfo_get_dummy_obj_sky_stacked_and_cubes(obj_set,&(*set),config,
01151 fk,pro_ctg_stack,recipe_id),
01152 "Found error to get obj-sky-stacked frame");
01153
01154 } else {
01155 sinfo_msg("Only one object frame, no sky");
01156 check_nomsg(p=cpl_parameterlist_find(config,
01157 "sinfoni.sinfo_utl_skycor.rot_cor"));
01158 check_nomsg(cpl_parameter_set_bool(p,FALSE));
01159
01160 ck0(sinfo_new_stack_frames(config,*set,pro_ctg_stack,0,fk,recipe_id),
01161 "Error stacking frame");
01162
01163
01164 sinfo_msg("------------------------------") ;
01165 sinfo_msg("BUILDING CUBE %d",i);
01166 sinfo_msg("------------------------------") ;
01167 ck0(sinfo_new_cubes_build(recipe_id,config,*set,*pro_ctg_cube,i),
01168 "Error GENERATING CUBE %d", i) ;
01169
01170 sinfo_msg("------------------------------") ;
01171 sinfo_msg("BUILT CUBE %d",i);
01172 sinfo_msg("------------------------------") ;
01173
01174 }
01175
01176 } else {
01177
01178 sinfo_msg("------------------------------") ;
01179 sinfo_msg("staks each OBJECT ");
01180 sinfo_msg("------------------------------") ;
01181 check_nomsg(tot_set=cpl_frameset_new());
01182
01183 for (i=0;i<nobj;i++) {
01184
01185 check_nomsg(wrk_set=cpl_frameset_new());
01186 check_nomsg(obj_frm=cpl_frameset_get_frame(obj_set,i));
01187 check_nomsg(dup_frm=cpl_frame_duplicate(obj_frm));
01188 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01189 for(k=0;k<ncdb;k++) {
01190 check_nomsg(cdb_frm=cpl_frameset_get_frame(cdb_set,k));
01191 check_nomsg(dup_frm=cpl_frame_duplicate(cdb_frm));
01192 check_nomsg(cpl_frameset_insert(wrk_set,dup_frm));
01193 }
01194
01195
01196 snprintf(outname,MAX_NAME_SIZE-1,"%s%d%s","out_stack",i,".fits");
01197 ck0(sinfo_new_stack_frames(config,wrk_set,pro_ctg_stack,
01198 i,fk,recipe_id),"Error stacking frame %d",i);
01199
01200
01201
01202 sinfo_msg("------------------------------") ;
01203 sinfo_msg("BUILDING CUBE %d",i);
01204 sinfo_msg("------------------------------") ;
01205 ck0(ind=sinfo_new_cubes_build(recipe_id,config,wrk_set,
01206 *pro_ctg_cube,i),
01207 "Error GENERATING CUBE no. %d\n", ind) ;
01208
01209 sinfo_msg("------------------------------") ;
01210 sinfo_msg("BUILT CUBE %d",i);
01211 sinfo_msg("------------------------------") ;
01212 check_nomsg(sinfo_extract_frames_group_type(wrk_set,
01213 &pro_set,
01214 CPL_FRAME_GROUP_PRODUCT));
01215 check_nomsg(sinfo_frameset_merge(tot_set,pro_set));
01216 sinfo_free_frameset(&pro_set);
01217 sinfo_free_frameset(&wrk_set);
01218
01219
01220 }
01221
01222
01223 check_nomsg(sinfo_extract_frames_group_type(tot_set,
01224 &pro_set,
01225 CPL_FRAME_GROUP_PRODUCT));
01226 check_nomsg(sinfo_frameset_merge(*set,pro_set));
01227 sinfo_free_frameset(&pro_set);
01228 sinfo_free_frameset(&tot_set);
01229
01230 }
01231 }
01232 sinfo_free_frameset(&obj_set);
01233 sinfo_free_frameset(&sky_set);
01234 sinfo_free_frameset(&cdb_set);
01235 sinfo_fake_delete(&fk);
01236
01237 return 0;
01238
01239 cleanup:
01240
01241 sinfo_free_frameset(&wrk_set);
01242 sinfo_free_frameset(&tot_set);
01243 sinfo_free_frameset(&obj_set);
01244 sinfo_free_frameset(&sky_set);
01245 sinfo_free_frameset(&cdb_set);
01246 sinfo_fake_delete(&fk);
01247 return -1;
01248
01249
01250 }
01251
01252
01253
01254 static const char* sinfo_new_set_stk_procatg(const char* tag)
01255 {
01256
01257 const char* pro_ctg_stack=NULL;
01258
01259 if(strstr(tag,"OBJ") != NULL) {
01260 pro_ctg_stack=PRO_OBJECT_NODDING_STACKED;
01261 } else if(strstr(tag,"PSF") != NULL) {
01262 pro_ctg_stack=PRO_PSF_CALIBRATOR_STACKED;
01263 } else if(strstr(tag,"STD") != NULL) {
01264 pro_ctg_stack=PRO_STD_NODDING_STACKED;
01265 } else if(strstr(tag,"PUPIL") != NULL) {
01266 pro_ctg_stack=PRO_PUPIL_LAMP_STACKED;
01267 } else {
01268 sinfo_msg_error("frame tag %s not supported",tag);
01269 return NULL;
01270 }
01271
01272 return pro_ctg_stack;
01273
01274 }
01275 const char* sinfo_new_set_obj_procatg(const char* tag)
01276 {
01277 const char* pro_ctg_cube=NULL;
01278
01279 if(strstr(tag,"OBJ") != NULL) {
01280 pro_ctg_cube=PRO_COADD_OBJ;
01281 } else if(strstr(tag,"PSF") != NULL) {
01282 pro_ctg_cube=PRO_COADD_PSF;
01283 } else if(strstr(tag,"STD") != NULL) {
01284 pro_ctg_cube=PRO_COADD_STD;
01285 } else if(strstr(tag,"PUPIL") != NULL) {
01286 pro_ctg_cube=PRO_COADD_PUPIL;
01287 } else {
01288 sinfo_msg_error("frame tag %s not supported",tag);
01289 return NULL;
01290 }
01291
01292 return pro_ctg_cube;
01293
01294 }
01295
01296
01297
01298
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308
01309
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337
01338
01339
01340
01341
01342
01343
01344
01345
01346
01347
01348
01349
01350
01351
01352
01353
01354
01355
01356
01357
01358
01359
01360
01361
01362
01363
01364
01365
01366
01367
01368
01369