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
00040 #include <strings.h>
00041 #include <string.h>
00042 #include <stdio.h>
00043 #include <math.h>
00044 #include <libgen.h>
00045
00046
00047 #include <cxmacros.h>
00048 #include <cxtypes.h>
00049 #include <cxmessages.h>
00050 #include <cpl_memory.h>
00051
00052
00053 #include <cpl.h>
00054
00055
00056 #include <xmemory.h>
00057
00058
00059 #include <sinfoni_pro_types.h>
00060 #include <sinfoni_prepare_stacked_frames_config.h>
00061 #include <sinfoni_objnod_config.h>
00062 #include <sinfoni_standard_star_config.h>
00063 #include <objnod.h>
00064 #include <objnod_rel.h>
00065 #include <stdstar.h>
00066 #include <psf.h>
00067 #include <prepare_stacked_frames.h>
00068 #include <sinfoni_key_names.h>
00069 #include <sinfoni_raw_types.h>
00070 #include <sinfoni_functions.h>
00071 #include <sinfoni_tpl_utils.h>
00072 #include <sinfoni_tpl_dfs.h>
00073 #include <sinfoni_hidden.h>
00074 #include <sinfoni_globals.h>
00075 #include "si_rec_utils.h"
00076 #include <sinfoni_memory.h>
00077
00078
00079
00080
00081
00082 #define EPSILON 1.e-6
00083
00084
00085
00086 static cxint
00087 si_rec_jitter(cpl_parameterlist *config, cpl_frameset *set);
00088
00089
00090
00091
00092 static char si_rec_jitter_description1[] =
00093 "This recipe performs science data reduction.\n"
00094 "The input files are:\n"
00095 "science object and sky frames with tags OBJECT_NODDING and SKY_NODDING or\n"
00096 "Telluric standard star frames and sky frames with tags STD and SKY_STD or\n"
00097 "PSF standard star and sky frames with tags PSF_CALIBRATOR and SKY_PSF_CALIBRATOR\n"
00098 "and Master calibration frames:\n";
00099
00100
00101 static char si_rec_jitter_description2[] =
00102 "A corresponding (band,preoptics) wavelength map image with tag WAVE_MAP\n"
00103 "A corresponding (band,preoptics) master flat field with tag MASTER_FLAT_LAMP\n"
00104 "A corresponding (band,preoptics) master bad pixel map with tag MASTER_BP_MAP\n"
00105 "A corresponding (band,preoptics) slitlets position frame with tag SLIT_POS\n"
00106 "A corresponding (band) distortion table with tag DISTORTION\n"
00107 "A corresponding (band) slitlet distance table with tag SLITLETS_DISTANCE\n";
00108
00109
00110 static char si_rec_jitter_description3[] =
00111 "The output is an image resulting from the IMA1 op IMA2 where op indicates\n"
00112 "A reference table with the position of the first column with tag FIRST_COLUMN\n"
00113 "Relevant outputs are:\n"
00114 "combined cubes (PRO.CATG=x_OBS x=STD,OBJ,PSF)\n"
00115 "reconstructed cube (PRO.CATG=COADD_x_OBS x=STD,OBJ,PSF)\n"
00116 "An average along Z of the reconstructed cube (PRO.CATG=MED_x_OBS x=STD,OBJ,PSF)\n"
00117 "The bad pixel map associated to the cube (PRO.CATG=BP_MAP_COADD_x_OBS x=STD,OBJ,PSF)\n";
00118
00119
00120 static char si_rec_jitter_description4[] =
00121 "Information on relevant parameters can be found with\n"
00122 "esorex --params si_rec_jitter\n"
00123 "esorex --help si_rec_jitter\n"
00124 "\n";
00125
00126 static char si_rec_jitter_description[1300];
00127
00128
00129
00130
00131
00132
00133 cxint
00134 si_rec_jitter_create(cpl_plugin *plugin)
00135 {
00136
00137
00138
00139
00140
00141
00142 cpl_recipe *recipe = (cpl_recipe *)plugin;
00143 recipe->parameters = cpl_parameterlist_new();
00144 if(recipe->parameters == NULL) {
00145 return 1;
00146 }
00147
00148
00149
00150
00151
00152 sinfoni_prepare_stacked_frames_config_add(recipe->parameters);
00153 sinfoni_objnod_config_add(recipe->parameters);
00154 sinfoni_standard_star_config_add(recipe->parameters);
00155
00156 return 0;
00157
00158 }
00159
00160 cxint
00161 si_rec_jitter_exec(cpl_plugin *plugin)
00162 {
00163
00164 cpl_recipe *recipe = (cpl_recipe *) plugin;
00165 if(recipe->parameters == NULL) {
00166 return 1;
00167 }
00168 if(recipe->frames == NULL) {
00169 return 1;
00170 }
00171 cpl_error_reset();
00172 return si_rec_jitter(recipe->parameters, recipe->frames);
00173
00174 }
00175
00176 cxint
00177 si_rec_jitter_destroy(cpl_plugin *plugin)
00178 {
00179 cpl_recipe *recipe = (cpl_recipe *) plugin;
00180
00181
00182
00183
00184
00185
00186 cpl_parameterlist_delete(recipe->parameters);
00187
00188 return 0;
00189
00190 }
00191
00192
00193 int
00194 cpl_plugin_get_info(cpl_pluginlist *list)
00195 {
00196
00197 cpl_recipe *recipe = cpl_calloc(1, sizeof *recipe);
00198 cpl_plugin *plugin = &recipe->interface;
00199
00200 strcpy(si_rec_jitter_description,si_rec_jitter_description1);
00201 strcat(si_rec_jitter_description,si_rec_jitter_description2);
00202 strcat(si_rec_jitter_description,si_rec_jitter_description3);
00203 strcat(si_rec_jitter_description,si_rec_jitter_description4);
00204
00205 cpl_plugin_init(plugin,
00206 CPL_PLUGIN_API,
00207 SINFONI_BINARY_VERSION,
00208 CPL_PLUGIN_TYPE_RECIPE,
00209 "si_rec_jitter",
00210 "Object or STD star or PSF star data reduction",
00211 si_rec_jitter_description,
00212 "Andrea Modigliani",
00213 "Andrea.Mdigliani@eso.org",
00214 sinfoni_get_license(),
00215 si_rec_jitter_create,
00216 si_rec_jitter_exec,
00217 si_rec_jitter_destroy);
00218
00219 cpl_pluginlist_append(list, plugin);
00220
00221 return 0;
00222
00223 }
00224
00225
00226
00227
00228 static cxint
00229 si_rec_jitter(cpl_parameterlist *config, cpl_frameset *set)
00230 {
00231 const char *_id = "si_rec_jitter";
00232 char filename[FILE_NAME_SZ];
00233 char outname[FILE_NAME_SZ];
00234 char tag[FILE_NAME_SZ];
00235 char pro_ctg_cube[FILE_NAME_SZ];
00236 char pro_ctg_stack[FILE_NAME_SZ];
00237
00238 int i=0;
00239 int j=0;
00240 int k=0;
00241
00242 int ind=0;
00243 int nsky=0;
00244 int nobj=0;
00245 int ncdb=0;
00246 int nstk=0;
00247 int ntot=0;
00248
00249 int aj_meth=0;
00250
00251 double mjd_obj=0;
00252 double mjd_sky=0;
00253 double mjd_sky_frm=0;
00254
00255 cpl_frameset * obj_set=NULL;
00256 cpl_frameset * sky_set=NULL;
00257 cpl_frameset * cdb_set=NULL;
00258 cpl_frameset * wrk_set=NULL;
00259 cpl_frameset * stk_set=NULL;
00260 cpl_frameset * tot_set=NULL;
00261 cpl_frame * sky_frm=NULL;
00262
00263 cpl_frame * dup_frm=NULL;
00264 cpl_frame * obj_frm=NULL;
00265 cpl_frame * cdb_frm=NULL;
00266 cpl_frame * wrk_frm=NULL;
00267 cpl_frameset* ref_set=NULL;
00268
00269
00270 cpl_parameter * p=NULL;
00271 fake* fk=fake_new();
00272
00273
00274
00275
00276 if(sinfoni_dfs_set_groups(set)) {
00277 cpl_msg_error(_id, "Cannot indentify RAW and CALIB frames") ;
00278 return -1;
00279 }
00280 ref_set=cpl_frameset_duplicate(set);
00281
00282
00283
00284 obj_set=cpl_frameset_new();
00285 sky_set=cpl_frameset_new();
00286 cdb_set=cpl_frameset_new();
00287
00288 sinfoni_extract_obj_frames(set,obj_set);
00289 sinfoni_extract_sky_frames(set,sky_set);
00290 sinfoni_extract_mst_frames(set,cdb_set);
00291
00292 if(NULL == (obj_frm = cpl_frameset_get_frame(obj_set,0))) {
00293 cpl_msg_error(_id,"No object frames in input set.");
00294 cpl_frameset_delete(ref_set);
00295 cpl_frameset_delete(obj_set);
00296 cpl_frameset_delete(sky_set);
00297 cpl_frameset_delete(cdb_set);
00298 fake_delete(fk);
00299 sinfoni_memory_status();
00300 return -1;
00301
00302 }
00303 strcpy(tag,cpl_frame_get_tag(obj_frm));
00304
00305 if(strstr(tag,"OBJ") != NULL) {
00306 strcpy(pro_ctg_cube,PRO_COADD_OBJ);
00307 strcpy(pro_ctg_stack,PRO_OBJECT_NODDING_STACKED);
00308 } else if(strstr(tag,"PSF") != NULL) {
00309 strcpy(pro_ctg_cube,PRO_COADD_PSF);
00310 strcpy(pro_ctg_stack,PRO_PSF_CALIBRATOR_STACKED);
00311
00312 } else if(strstr(tag,"STD") != NULL) {
00313 strcpy(pro_ctg_cube,PRO_COADD_STD);
00314 strcpy(pro_ctg_stack,PRO_STD_NODDING_STACKED);
00315 } else {
00316 cpl_msg_error(_id,"frame tag %s not supported",tag);
00317 cpl_frameset_delete(obj_set);
00318 cpl_frameset_delete(sky_set);
00319 cpl_frameset_delete(cdb_set);
00320 cpl_frameset_delete(ref_set);
00321 fake_delete(fk);
00322 sinfoni_memory_status();
00323 return -1;
00324 }
00325
00326
00327
00328 nobj=cpl_frameset_get_size(obj_set);
00329 nsky=cpl_frameset_get_size(sky_set);
00330 ncdb=cpl_frameset_get_size(cdb_set);
00331
00332 if ((nobj==0) && (nsky==0)) {
00333 cpl_msg_error(_id,"Empty input set");
00334 cpl_frameset_delete(obj_set);
00335 cpl_frameset_delete(sky_set);
00336 cpl_frameset_delete(cdb_set);
00337 cpl_frameset_delete(ref_set);
00338 fake_delete(fk);
00339 sinfoni_memory_status();
00340 return -1;
00341 }
00342
00343
00344
00345 if ( (nobj != 0) && (nsky != 0) ) {
00346
00347 cpl_msg_info (_id,"------------------------------") ;
00348 cpl_msg_info(_id,"generates OBJ-SKY pairs");
00349 cpl_msg_info (_id,"------------------------------") ;
00350 tot_set=cpl_frameset_new();
00351 p = cpl_parameterlist_find(config,"sinfoni.objnod.autojitter_method");
00352 cpl_parameter_set_int(p,0);
00353
00354
00355
00356 for (i=0;i<nobj;i++) {
00357
00358 wrk_set=cpl_frameset_new();
00359 obj_frm=cpl_frameset_get_frame(obj_set,i);
00360 mjd_obj=sinfoni_get_mjd_obs(obj_frm);
00361 sky_frm=cpl_frameset_get_frame(sky_set,0);
00362 mjd_sky=sinfoni_get_mjd_obs(sky_frm);
00363 strcpy(filename,cpl_frame_get_filename(obj_frm));
00364
00365
00366 for (j=1;j<nsky;j++) {
00367 mjd_sky_frm = sinfoni_get_mjd_obs(cpl_frameset_get_frame(sky_set,j));
00368 if(1000.*(mjd_sky_frm-mjd_obj)*(mjd_sky_frm-mjd_obj) <
00369 1000.*(mjd_sky- mjd_obj)*(mjd_sky- mjd_obj) ) {
00370 mjd_sky=mjd_sky_frm;
00371 sky_frm=cpl_frameset_get_frame(sky_set,j);
00372 }
00373 }
00374 strcpy(filename,cpl_frame_get_filename(sky_frm));
00375
00376
00377
00378
00379 dup_frm=cpl_frame_duplicate(obj_frm);
00380 cpl_frameset_insert(wrk_set,dup_frm);
00381 dup_frm=cpl_frame_duplicate(sky_frm);
00382 cpl_frameset_insert(wrk_set,dup_frm);
00383
00384
00385 for(k=0;k<ncdb;k++) {
00386 cdb_frm=cpl_frameset_get_frame(cdb_set,k);
00387 dup_frm=cpl_frame_duplicate(cdb_frm);
00388 cpl_frameset_insert(wrk_set,dup_frm);
00389 }
00390
00391
00392
00393 sprintf(outname,"%s%d%s","out_stack",i,".fits");
00394 if (-1==stack_frames(config,wrk_set,pro_ctg_stack,i,fk,_id)){
00395
00396 cpl_msg_error(_id,"Cannot stack frames");
00397 cpl_frameset_delete(wrk_set);
00398 cpl_frameset_delete(tot_set);
00399
00400
00401 cpl_frameset_delete(obj_set);
00402 cpl_frameset_delete(sky_set);
00403 cpl_frameset_delete(cdb_set);
00404 cpl_frameset_delete(ref_set);
00405
00406 fake_delete(fk);
00407 sinfoni_memory_status();
00408 return -1;
00409
00410 }
00411
00412 stk_set=cpl_frameset_new();
00413 sinfoni_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00414 nstk=cpl_frameset_get_size(stk_set);
00415
00416 for(k=0;k<nstk;k++) {
00417 wrk_frm=cpl_frameset_get_frame(stk_set,k);
00418 dup_frm = cpl_frame_duplicate(wrk_frm);
00419 cpl_frameset_insert(tot_set,dup_frm);
00420 }
00421 cpl_frameset_delete(stk_set);
00422 cpl_frameset_delete(wrk_set);
00423
00424
00425
00426
00427 }
00428
00429
00430 ntot=cpl_frameset_get_size(tot_set);
00431 for(k=0;k<ntot;k++) {
00432 wrk_frm=cpl_frameset_get_frame(tot_set,k);
00433 dup_frm = cpl_frame_duplicate(wrk_frm);
00434 cpl_frameset_insert(set,dup_frm);
00435 }
00436 cpl_frameset_delete(tot_set);
00437 }
00438
00439 if ( (nobj == 0) && (nsky != 0) ) {
00440
00441
00442
00443
00444
00445 {
00446 cpl_msg_info (_id,"------------------------------") ;
00447 cpl_msg_info (_id,"SKY ONLY FRAMES DATA REDUCTION NOT SUPPORTED") ;
00448 cpl_msg_info (_id,"------------------------------") ;
00449 cpl_frameset_delete(obj_set);
00450 cpl_frameset_delete(sky_set);
00451 cpl_frameset_delete(cdb_set);
00452 cpl_frameset_delete(ref_set);
00453 fake_delete(fk);
00454 return 0;
00455 }
00456
00457
00458 }
00459
00460
00461 if ( (nobj != 0) && (nsky == 0) ) {
00462
00463
00464
00465
00466 p = cpl_parameterlist_find(config,"sinfoni.objnod.autojitter_method");
00467 aj_meth = cpl_parameter_get_int(p);
00468 if(aj_meth == 2) {
00469
00470 cpl_msg_info(_id,"Dummy sky case");
00471 cpl_msg_info(_id,"fake sky is coming from median of all objects");
00472 if( (sky_frm = get_dummy_sky(obj_set)) == NULL) {
00473
00474 cpl_msg_error(_id,"Problem to get dummy frame");
00475 sinfoni_memory_status();
00476
00477 return -1;
00478
00479 }
00480 cpl_msg_info (_id,"------------------------------") ;
00481 cpl_msg_info(_id,"generates OBJ-SKY pairs");
00482 cpl_msg_info (_id,"------------------------------") ;
00483 tot_set=cpl_frameset_new();
00484
00485
00486 for (i=0;i<nobj;i++) {
00487
00488 wrk_set=cpl_frameset_new();
00489 obj_frm=cpl_frameset_get_frame(obj_set,i);
00490 dup_frm=cpl_frame_duplicate(obj_frm);
00491 cpl_frameset_insert(wrk_set,dup_frm);
00492 dup_frm=cpl_frame_duplicate(sky_frm);
00493 cpl_frameset_insert(wrk_set,dup_frm);
00494 for(k=0;k<ncdb;k++) {
00495 cdb_frm=cpl_frameset_get_frame(cdb_set,k);
00496 dup_frm=cpl_frame_duplicate(cdb_frm);
00497 cpl_frameset_insert(wrk_set,dup_frm);
00498 }
00499
00500 sprintf(outname,"%s%d%s","out_stack",i,".fits");
00501 if(-1==stack_frames(config,wrk_set,pro_ctg_stack,i,fk,_id)) {
00502 cpl_frame_delete(sky_frm);
00503 cpl_frameset_delete(wrk_set);
00504 cpl_frameset_delete(tot_set);
00505
00506
00507 cpl_frameset_delete(obj_set);
00508 cpl_frameset_delete(sky_set);
00509 cpl_frameset_delete(cdb_set);
00510 cpl_frameset_delete(ref_set);
00511
00512 fake_delete(fk);
00513 sinfoni_memory_status();
00514 return -1;
00515
00516
00517 }
00518
00519 stk_set=cpl_frameset_new();
00520 sinfoni_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00521 nstk=cpl_frameset_get_size(stk_set);
00522 for(k=0;k<nstk;k++) {
00523 wrk_frm=cpl_frameset_get_frame(stk_set,k);
00524 dup_frm=cpl_frame_duplicate(wrk_frm);
00525 cpl_frameset_insert(tot_set,dup_frm);
00526 }
00527 cpl_frameset_delete(stk_set);
00528 cpl_frameset_delete(wrk_set);
00529
00530 }
00531 ntot=cpl_frameset_get_size(tot_set);
00532 for(k=0;k<ntot;k++) {
00533 wrk_frm=cpl_frameset_get_frame(tot_set,k);
00534 dup_frm=cpl_frame_duplicate(wrk_frm);
00535 cpl_frameset_insert(set,dup_frm);
00536 }
00537 cpl_frameset_delete(tot_set);
00538 cpl_frame_delete(sky_frm);
00539 } else if(aj_meth == 1 ) {
00540
00541
00542 cpl_msg_info(_id,"Dummy obj-sky case");
00543 cpl_msg_info(_id,"fake sky is coming from each next object");
00544
00545 if(nobj > 1) {
00546
00547 if( get_dummy_obj_sky_stacked(obj_set,&set,config,fk,pro_ctg_stack,_id) == -1 ) {
00548 cpl_msg_error(_id,"Found error to get obj-sky-stacked frame");
00549 cpl_frameset_delete(obj_set);
00550 cpl_frameset_delete(sky_set);
00551 cpl_frameset_delete(cdb_set);
00552 cpl_frameset_delete(ref_set);
00553 fake_delete(fk);
00554 sinfoni_memory_status();
00555 return -1;
00556 }
00557
00558 } else {
00559 cpl_msg_info (_id,"Only one object frame, no sky");
00560 if(-1==stack_frames(config,set,pro_ctg_stack,0,fk,_id)) {
00561 cpl_frameset_delete(obj_set);
00562 cpl_frameset_delete(sky_set);
00563 cpl_frameset_delete(cdb_set);
00564 cpl_frameset_delete(ref_set);
00565 fake_delete(fk);
00566 sinfoni_memory_status();
00567 return -1;
00568
00569 }
00570 }
00571
00572 } else {
00573
00574 cpl_msg_info (_id,"------------------------------") ;
00575 cpl_msg_info (_id,"staks each OBJECT ");
00576 cpl_msg_info (_id,"------------------------------") ;
00577 tot_set=cpl_frameset_new();
00578
00579 for (i=0;i<nobj;i++) {
00580
00581 wrk_set=cpl_frameset_new();
00582 obj_frm=cpl_frameset_get_frame(obj_set,i);
00583 dup_frm=cpl_frame_duplicate(obj_frm);
00584 cpl_frameset_insert(wrk_set,dup_frm);
00585 for(k=0;k<ncdb;k++) {
00586 cdb_frm=cpl_frameset_get_frame(cdb_set,k);
00587 dup_frm=cpl_frame_duplicate(cdb_frm);
00588 cpl_frameset_insert(wrk_set,dup_frm);
00589 }
00590
00591
00592 sprintf(outname,"%s%d%s","out_stack",i,".fits");
00593 if(-1==stack_frames(config,wrk_set,pro_ctg_stack,i,fk,_id)) {
00594 cpl_frameset_delete(wrk_set);
00595 cpl_frameset_delete(obj_set);
00596 cpl_frameset_delete(sky_set);
00597 cpl_frameset_delete(cdb_set);
00598 cpl_frameset_delete(ref_set);
00599 cpl_frameset_delete(tot_set);
00600 fake_delete(fk);
00601 sinfoni_memory_status();
00602
00603 return -1;
00604
00605 }
00606
00607 stk_set=cpl_frameset_new();
00608 sinfoni_contains_frames_kind(wrk_set,stk_set,PRO_STACKED);
00609 nstk=cpl_frameset_get_size(stk_set);
00610 for(k=0;k<nstk;k++) {
00611 wrk_frm=cpl_frameset_get_frame(stk_set,k);
00612 dup_frm=cpl_frame_duplicate(wrk_frm);
00613 cpl_frameset_insert(tot_set,dup_frm);
00614 }
00615 cpl_frameset_delete(stk_set);
00616 cpl_frameset_delete(wrk_set);
00617
00618 }
00619
00620 ntot=cpl_frameset_get_size(tot_set);
00621 for(k=0;k<ntot;k++) {
00622 wrk_frm=cpl_frameset_get_frame(tot_set,k);
00623 dup_frm=cpl_frame_duplicate(wrk_frm);
00624 cpl_frameset_insert(set,dup_frm);
00625 }
00626 cpl_frameset_delete(tot_set);
00627 }
00628 }
00629
00630
00631
00632
00633
00634
00635 {
00636
00637
00638
00639
00640
00641 cpl_msg_info (_id,"------------------------------") ;
00642 cpl_msg_info(_id,"NODDING SCIENCE FRAMES");
00643 cpl_msg_info (_id,"------------------------------") ;
00644
00645
00646 if ( -1 == (ind = objnod(_id,config, set, pro_ctg_cube ) ) )
00647 {
00648 cpl_msg_error(_id,"NODDING SCIENCE FRAMES no. %d\n", ind) ;
00649 cpl_frameset_delete(obj_set);
00650 cpl_frameset_delete(sky_set);
00651 cpl_frameset_delete(cdb_set);
00652 cpl_frameset_delete(ref_set);
00653 fake_delete(fk);
00654 sinfoni_memory_status();
00655
00656 return -1 ;
00657 }
00658 cpl_msg_info (_id,"------------------------------") ;
00659 cpl_msg_info(_id,"NODDED SCIENCE FRAMES");
00660 cpl_msg_info (_id,"------------------------------") ;
00661
00662 }
00663
00664
00665
00666
00667
00668
00669 if(strcmp(pro_ctg_cube,PRO_COADD_PSF) == 0) {
00670 cpl_msg_info (_id,"------------------------------") ;
00671 cpl_msg_info(_id,"REDUCE PSF STD STAR FRAMES");
00672 cpl_msg_info (_id,"------------------------------") ;
00673 if ( -1 == (ind = psf(_id,config,set) ) )
00674 {
00675 cpl_msg_info(_id,"no: %d\n", ind) ;
00676 fake_delete(fk);
00677 sinfoni_memory_status();
00678 return -1 ;
00679 }
00680 cpl_msg_info (_id,"SUCCESS REDUCE PSF STD STAR FRAMES") ;
00681 }
00682
00683
00684
00685
00686
00687
00688 if(strcmp(pro_ctg_cube,PRO_COADD_STD) == 0) {
00689 cpl_msg_info (_id,"------------------------------") ;
00690 cpl_msg_info(_id,"STD STAR DATA REDUCTION");
00691 cpl_msg_info (_id,"------------------------------") ;
00692
00693
00694 if ( -1 == (ind = stdstar(_id,config, set ) ) )
00695 {
00696 cpl_msg_info(_id,"REDUCING STD STAR DATA No: %d",ind) ;
00697 fake_delete(fk);
00698 sinfoni_memory_status();
00699 return -1 ;
00700 }
00701 cpl_msg_info (_id,"STD STAR DATA REDUCTION SUCCESS") ;
00702 }
00703
00704
00705
00706
00707 cpl_frameset_delete(obj_set);
00708 cpl_frameset_delete(sky_set);
00709 cpl_frameset_delete(cdb_set);
00710 cpl_frameset_delete(ref_set);
00711
00712 fake_delete(fk);
00713 sinfoni_memory_status();
00714 return 0 ;
00715 }
00716
00717