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