Changeset 38986 for trunk/Ohana/src/addstar
- Timestamp:
- Oct 27, 2015, 4:49:06 PM (11 years ago)
- Location:
- trunk/Ohana
- Files:
-
- 58 edited
- 1 copied
-
. (modified) (1 prop)
-
src/addstar/Makefile (modified) (10 diffs)
-
src/addstar/include/2mass.h (modified) (2 diffs)
-
src/addstar/include/WISE.h (modified) (1 diff)
-
src/addstar/include/addstar.h (modified) (4 diffs)
-
src/addstar/include/loadstarpar.h (modified) (3 diffs)
-
src/addstar/include/supercos.h (modified) (1 diff)
-
src/addstar/src/LoadFilenames.c (modified) (1 prop)
-
src/addstar/src/SkyListForStars.c (modified) (5 diffs)
-
src/addstar/src/UpdateDatabase_Image.c (modified) (1 diff)
-
src/addstar/src/UpdateDatabase_Refcat.c (modified) (1 diff)
-
src/addstar/src/UpdateDatabase_Reflist.c (modified) (1 diff)
-
src/addstar/src/addstar.c (modified) (6 diffs)
-
src/addstar/src/addstar_client.c (modified) (1 diff)
-
src/addstar/src/addstarc.c (modified) (1 diff)
-
src/addstar/src/addstard.c (modified) (1 diff)
-
src/addstar/src/addstart.c (modified) (1 diff)
-
src/addstar/src/args_loadstarpar.c (modified) (8 diffs)
-
src/addstar/src/find_matches.c (modified) (13 diffs)
-
src/addstar/src/find_matches_closest.c (modified) (8 diffs)
-
src/addstar/src/find_matches_closest_refstars.c (modified) (11 diffs)
-
src/addstar/src/find_matches_refstars.c (modified) (9 diffs)
-
src/addstar/src/find_matches_starpar.c (modified) (1 diff)
-
src/addstar/src/get2mass_full.c (modified) (10 diffs)
-
src/addstar/src/get2mass_ops.c (modified) (2 diffs)
-
src/addstar/src/getgsc.c (modified) (3 diffs)
-
src/addstar/src/getusno.c (modified) (5 diffs)
-
src/addstar/src/getusnob.c (modified) (7 diffs)
-
src/addstar/src/greference.c (modified) (4 diffs)
-
src/addstar/src/grefstars.c (modified) (2 diffs)
-
src/addstar/src/load2mass.c (modified) (1 diff)
-
src/addstar/src/load2mass_as_rawdata.c (modified) (5 diffs)
-
src/addstar/src/loadICRF.c (modified) (1 diff)
-
src/addstar/src/loadICRF_catalog.c (modified) (1 diff)
-
src/addstar/src/loadICRF_client.c (modified) (1 diff)
-
src/addstar/src/loadgalphot.c (modified) (1 diff)
-
src/addstar/src/loadgalphot_catalog.c (modified) (1 diff)
-
src/addstar/src/loadstarpar.c (modified) (2 diffs)
-
src/addstar/src/loadstarpar_catalog.c (modified) (1 diff)
-
src/addstar/src/loadstarpar_client.c (modified) (2 diffs)
-
src/addstar/src/loadstarpar_extras.c (copied) (copied from branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadstarpar_extras.c )
-
src/addstar/src/loadstarpar_io.c (modified) (3 diffs)
-
src/addstar/src/loadstarpar_readstars.c (modified) (1 diff)
-
src/addstar/src/loadstarpar_save_remote.c (modified) (2 diffs)
-
src/addstar/src/loadsupercos.c (modified) (3 diffs)
-
src/addstar/src/loadsupercos_ops.c (modified) (1 diff)
-
src/addstar/src/loadsupercos_rawdata.c (modified) (9 diffs)
-
src/addstar/src/loadtycho.c (modified) (1 diff)
-
src/addstar/src/loadtycho_rawdata.c (modified) (4 diffs)
-
src/addstar/src/loadwise.c (modified) (1 diff)
-
src/addstar/src/loadwise_prelim_rawdata.c (modified) (1 diff)
-
src/addstar/src/loadwise_rawdata.c (modified) (6 diffs)
-
src/addstar/src/loadwise_star_full.c (modified) (29 diffs)
-
src/addstar/src/replace_match.c (modified) (2 diffs)
-
src/addstar/src/resort_catalog.c (modified) (2 diffs)
-
src/addstar/src/resort_threaded.c (modified) (1 diff)
-
src/addstar/src/resort_unthreaded.c (modified) (1 diff)
-
src/addstar/src/sedstar.c (modified) (2 diffs)
-
src/addstar/test (modified) (1 prop)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana
-
Property svn:mergeinfo
set to
/branches/eam_branches/ipp-20150625/Ohana merged eligible
-
Property svn:mergeinfo
set to
-
trunk/Ohana/src/addstar/Makefile
r38636 r38986 37 37 mkcmf : $(BIN)/mkcmf.$(ARCH) 38 38 39 # programs in 'OTHERS' have not been updated since moving from Stars to Catalog as an internal carrier40 39 # programs in 'SERVER' use the client-server concept and are out of date 41 40 42 INSTALL = addstar sedstar loadgalphot loadstarpar loadstarpar_client loadICRF loadICRF_client skycells mkcmf dumpskycells findskycell 43 OTHERS = load2mass loadwise loadtycho loadsupercos 41 INSTALL = addstar sedstar loadgalphot loadstarpar loadstarpar_client loadICRF loadICRF_client skycells mkcmf dumpskycells findskycell load2mass loadwise loadtycho loadsupercos 44 42 SERVER = addstar_client addstarc addstard addstart 45 43 46 old: $(OTHERS)47 44 all: $(INSTALL) 48 45 49 46 # I need to fix the client/server version of addstar now that I have dropped Stars 50 47 # as an autocode type and have converted to carrying average and measure 51 # all: addstar sedstar load2mass skycells52 53 # $(SRC)/find_matches.$(ARCH).o \54 # $(SRC)/find_matches_closest.$(ARCH).o \55 # $(SRC)/find_matches_refstars.$(ARCH).o \56 # $(SRC)/find_matches_closest_refstars.$(ARCH).o \57 # $(SRC)/find_subset.$(ARCH).o \58 # $(SRC)/getgsc.$(ARCH).o \59 # $(SRC)/getusno.$(ARCH).o \60 # $(SRC)/getusnob.$(ARCH).o \61 # $(SRC)/greference.$(ARCH).o \62 # $(SRC)/grefstars.$(ARCH).o \63 # $(SRC)/dump.$(ARCH).o \64 # $(SRC)/ReadStarsTEXT.$(ARCH).o \65 # $(SRC)/StarOps.$(ARCH).o \66 # $(SRC)/replace_match.$(ARCH).o \67 #68 48 69 49 ADDSTAR = \ … … 104 84 $(SRC)/ReadStarsUKIRT.$(ARCH).o \ 105 85 $(SRC)/ReadXradFITS.$(ARCH).o \ 86 $(SRC)/find_matches.$(ARCH).o \ 87 $(SRC)/find_matches_closest.$(ARCH).o \ 88 $(SRC)/find_matches_refstars.$(ARCH).o \ 89 $(SRC)/find_matches_closest_refstars.$(ARCH).o \ 90 $(SRC)/getgsc.$(ARCH).o \ 91 $(SRC)/getusno.$(ARCH).o \ 92 $(SRC)/getusnob.$(ARCH).o \ 93 $(SRC)/greference.$(ARCH).o \ 94 $(SRC)/grefstars.$(ARCH).o \ 95 $(SRC)/replace_match.$(ARCH).o \ 106 96 $(SRC)/FilterStars.$(ARCH).o \ 107 97 $(SRC)/ImageOptions.$(ARCH).o \ … … 112 102 $(SRC)/update_coords.$(ARCH).o \ 113 103 $(SRC)/psps_ids.$(ARCH).o 114 115 ##116 104 117 105 # this is the client for parallel operations … … 243 231 $(SRC)/load2mass.$(ARCH).o \ 244 232 $(SRC)/load2mass_as_rawdata.$(ARCH).o \ 245 $(SRC)/load2mass_catalog.$(ARCH).o \246 233 $(SRC)/get2mass_ops.$(ARCH).o \ 247 234 $(SRC)/get2mass_full.$(ARCH).o \ … … 252 239 $(SRC)/update_coords.$(ARCH).o \ 253 240 $(SRC)/SkyRegionUtils.$(ARCH).o \ 254 $(SRC)/StarOps.$(ARCH).o \ 255 $(SRC)/ConfigInit.$(ARCH).o \ 256 $(SRC)/Shutdown.$(ARCH).o \ 257 $(SRC)/SetSignals.$(ARCH).o \ 258 $(SRC)/psps_ids.$(ARCH).o 241 $(SRC)/ConfigInit.$(ARCH).o \ 242 $(SRC)/Shutdown.$(ARCH).o \ 243 $(SRC)/SetSignals.$(ARCH).o \ 244 $(SRC)/psps_ids.$(ARCH).o 245 246 # $(SRC)/load2mass_catalog.$(ARCH).o 259 247 260 248 LOAD-GALPHOT = \ … … 296 284 $(SRC)/loadstarpar_save_remote.$(ARCH).o \ 297 285 $(SRC)/loadstarpar_table.$(ARCH).o \ 286 $(SRC)/loadstarpar_extras.$(ARCH).o \ 298 287 $(SRC)/resort_catalog.$(ARCH).o \ 299 288 $(SRC)/psps_ids.$(ARCH).o … … 314 303 $(SRC)/loadstarpar_save_remote.$(ARCH).o \ 315 304 $(SRC)/loadstarpar_table.$(ARCH).o \ 305 $(SRC)/loadstarpar_extras.$(ARCH).o \ 316 306 $(SRC)/resort_catalog.$(ARCH).o \ 317 307 $(SRC)/psps_ids.$(ARCH).o 308 309 # drop resort_catalog? 318 310 319 311 LOAD-ICRF = \ … … 359 351 $(SRC)/ConfigInit.$(ARCH).o \ 360 352 $(SRC)/Shutdown.$(ARCH).o \ 361 $(SRC)/StarOps.$(ARCH).o \362 353 $(SRC)/find_matches_refstars.$(ARCH).o \ 363 354 $(SRC)/build_links.$(ARCH).o \ … … 376 367 $(SRC)/Shutdown.$(ARCH).o \ 377 368 $(SRC)/find_matches_closest_refstars.$(ARCH).o \ 369 $(SRC)/replace_match.$(ARCH).o \ 378 370 $(SRC)/build_links.$(ARCH).o \ 379 371 $(SRC)/SetSignals.$(ARCH).o \ … … 391 383 $(SRC)/ConfigInit.$(ARCH).o \ 392 384 $(SRC)/Shutdown.$(ARCH).o \ 393 $(SRC)/S tarOps.$(ARCH).o \385 $(SRC)/SkyListForStars.$(ARCH).o \ 394 386 $(SRC)/find_matches_refstars.$(ARCH).o \ 395 387 $(SRC)/build_links.$(ARCH).o \ -
trunk/Ohana/src/addstar/include/2mass.h
r24977 r38986 22 22 23 23 SkyTable *get2mass_acc (SkyRegion *patch, char *path, char *accel); 24 Stars *get2mass_2DR_data (SkyRegion *region, char *filename, SkyRegion *patch, int photcode, int *nstars); 25 Stars *get2mass_AS_data (SkyRegion *region, char *filename, SkyRegion *patch, int phocode, int *nstars); 26 Stars *get2mass_AS_rawdata (SkyRegion *region, char *filename, SkyRegion *patch, int phocode, int *nstars); 24 25 // Stars *get2mass_2DR_data (SkyRegion *region, char *filename, SkyRegion *patch, int photcode, int *nstars); 26 // Stars *get2mass_AS_data (SkyRegion *region, char *filename, SkyRegion *patch, int phocode, int *nstars); 27 // Stars *get2mass_AS_rawdata (SkyRegion *region, char *filename, SkyRegion *patch, int phocode, int *nstars); 27 28 28 29 SkyTable *scan2mass_acc (char *path, char *accel); … … 35 36 int load2mass_as_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options); 36 37 SkyTable *load2mass_acc (char *path, char *accel); 37 int get2mass_3star (Stars *star, char *line, int Nmax); 38 int load2mass_catalog (Catalog *catalog, Stars *stars, int Nstars); 38 39 // int get2mass_3star (Stars *star, char *line, int Nmax); 40 // int load2mass_catalog (Catalog *catalog, Stars *stars, int Nstars); 39 41 40 42 int get2mass_setup (int photcode); 41 43 int get2mass_coords (char *line, double *R, double *D, int Nmax); 42 int get2mass_star (Stars *star, char *line, int Nmax);43 int get2mass_3star (Stars *star, char *line, int Nmax);44 44 45 int get2mass_3star_full (Stars **star, char *line, int Nmax); 45 // int get2mass_star (Stars *star, char *line, int Nmax); 46 // int get2mass_3star (Stars *star, char *line, int Nmax); 47 48 int get2mass_3star_full (Measure *measure, char *line, int Nmax); 46 49 char *next2MASSfield (char *line); 47 int set2MASS_ph_qual ( Stars *star, char qual);48 int set2MASS_rd_flag ( Stars *star, char qual);49 int set2MASS_cc_flag ( Stars *star, char qual);50 int set2MASS_bl_flag ( Stars *star, char qual);51 int set2MASS_gal_flag ( Stars *star, char qual);52 int set2MASS_mp_flag ( Stars *star, char qual);53 int set2MASS_dup_flag ( Stars *star, char qual);54 int set2MASS_use_flag ( Stars *star, char qual);50 int set2MASS_ph_qual (Measure *measure, char qual); 51 int set2MASS_rd_flag (Measure *measure, char qual); 52 int set2MASS_cc_flag (Measure *measure, char qual); 53 int set2MASS_bl_flag (Measure *measure, char qual); 54 int set2MASS_gal_flag (Measure *measure, char qual); 55 int set2MASS_mp_flag (Measure *measure, char qual); 56 int set2MASS_dup_flag (Measure *measure, char qual); 57 int set2MASS_use_flag (Measure *measure, char qual); 55 58 int get2mass_sortStars (TMStars *tstars, int Ntstars); -
trunk/Ohana/src/addstar/include/WISE.h
r38062 r38986 35 35 int getWISE_sortStars (WISE_Stars *tstars, int Ntstars); 36 36 37 int loadwise_star_prelim (Stars **star, char *line, int Nmax);38 int loadwise_star_allsky (Stars **star, char *line, int Nmax);39 int loadwise_star_allwise ( Stars **star, char *line, int Nmax);37 int loadwise_star_prelim (Measure *measure, char *line, int Nmax); 38 int loadwise_star_allsky (Measure *measure, char *line, int Nmax); 39 int loadwise_star_allwise (Measure *measure, char *line, int Nmax); 40 40 41 41 42 42 char *nextWISEfield (char *line); 43 int setWISE_cc_flag (Stars *star, char qual);44 int setWISE_ph_qual (Stars *star, char qual);45 int setWISE_rd_flag (Stars *star, char qual);46 int setWISE_bl_flag (Stars *star, char qual);47 int setWISE_gal_flag ( Stars *star, char qual);48 int setWISE_mp_flag (Stars *star, char qual);49 int setWISE_dup_flag ( Stars *star, char qual);50 int setWISE_use_flag ( Stars *star, char qual);43 int setWISE_cc_flag (Measure *measure, char qual); 44 int setWISE_ph_qual (Measure *measure, char qual); 45 int setWISE_rd_flag (Measure *measure, char qual); 46 int setWISE_bl_flag (Measure *measure, char qual); 47 int setWISE_gal_flag (Measure *measure, char qual); 48 int setWISE_mp_flag (Measure *measure, char qual); 49 int setWISE_dup_flag (Measure *measure, char qual); 50 int setWISE_use_flag (Measure *measure, char qual); 51 51 52 52 char *skipNbounds (char *line, char bound, int Nbound, int Nbyte); -
trunk/Ohana/src/addstar/include/addstar.h
r38636 r38986 49 49 int extnum_xrad; 50 50 } HeaderSet; 51 52 # if (0)53 typedef struct {54 Average average;55 Measure measure;56 Lensing *lensing; // optionally carry out the lensing measurements57 int found;58 } Stars;59 60 typedef struct {61 unsigned int Nstars;62 Stars *stars;63 off_t Nimages;64 Image *images;65 Coords *mosaic;66 SkyRegion *patch;67 AddstarClientOptions *options;68 char *refcat;69 } DVO_DATA;70 # endif71 51 72 52 # define IDTYPE int … … 222 202 int find_matches PROTO((SkyRegion *region, Catalog *newcat, Catalog *catalog, AddstarClientOptions options)); 223 203 224 # if (0) 225 int find_matches_refstars PROTO((SkyRegion *region, Stars **stars, unsigned int Nstars, Catalog *catalog, AddstarClientOptions options)); 226 int find_matches_closest_refstars PROTO((SkyRegion *region, Stars **stars, unsigned int Nstars, Catalog *catalog, AddstarClientOptions options)); 227 228 int dump_rawstars PROTO((Stars *stars, unsigned int Nstars)); 229 230 Stars **find_subset PROTO((SkyRegion *region, Stars *stars, unsigned int Nstars, unsigned int *NSTARS)); 204 int find_matches_refstars PROTO((SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options)); 205 int find_matches_closest_refstars PROTO((SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options)); 206 207 Catalog *greference PROTO((char *Refcat, SkyRegion *catstats, int photcode)); 208 231 209 int gcatalog PROTO((Catalog *catalog)); 232 Stars *get2mass PROTO((SkyRegion *patch, int photcode, int mode, unsigned int *NSTARS)); 233 234 Stars *greference PROTO((char *Refcat, SkyRegion *catstats, int photcode, unsigned int *nstars)); 235 Stars *getgsc PROTO((SkyRegion *patch, unsigned int *NSTARS)); 236 Stars *getusno PROTO((SkyRegion *catstats, int photcode, unsigned int *Nstars)); 237 Stars *getusnob PROTO((SkyRegion *catstats, int photcode, unsigned int *Nstars)); 210 Catalog *getgsc PROTO((SkyRegion *patch)); 211 Catalog *getusno PROTO((SkyRegion *catstats)); 212 Catalog *getusnob PROTO((SkyRegion *catstats)); 238 213 239 214 // load text-based stars (REF only in the sense of REF photcodes) 240 Stars *grefstars PROTO((char *file, int photcode, unsigned int *Nstars)); 241 242 Stars *rd_gsc PROTO((char *filename, unsigned int *nstars)); 243 244 int replace_match PROTO((Average *average, Measure *measure, Stars *star)); 245 # endif 215 Catalog *grefstars PROTO((char *file, int photcode)); 216 217 Catalog *rd_gsc PROTO((char *filename)); 218 219 int replace_match PROTO((Average *average, Measure *measure, Measure *newmeas, off_t *found)); 246 220 247 221 Catalog *LoadStars PROTO((char *file, Image **images, off_t *Nimages, AddstarClientOptions *options)); … … 297 271 298 272 SkyList *SkyListExistingSubset PROTO((SkyList *input, char *path)); 273 SkyList *SkyListForStars PROTO((SkyTable *table, int depth, Catalog *catalog)); 299 274 300 275 // these are all for the addstar client/server which has not been maintained … … 311 286 int UpdateDatabase_Reflist PROTO((AddstarClientOptions *options, Stars *stars, unsigned int Nstars)); 312 287 int UpdateDatabase_Refcat PROTO((AddstarClientOptions *options, SkyRegion *UserPatch, char *refcat)); 313 SkyList *SkyListForStars PROTO((SkyTable *table, int depth, Stars *stars, unsigned int Nstars));314 288 int SkyListSetPath PROTO((SkyList *list, char *path)); 315 289 int InitDataset PROTO((void)); -
trunk/Ohana/src/addstar/include/loadstarpar.h
r37807 r38986 12 12 char *INPUT; 13 13 14 AddstarClientOptions args_loadstarpar (int argc, char **argv, AddstarClientOptions options);15 AddstarClientOptions args_loadstarpar_client (int argc, char **argv, AddstarClientOptions options);14 AddstarClientOptions args_loadstarpar (int *argc, char **argv, AddstarClientOptions options); 15 AddstarClientOptions args_loadstarpar_client (int *argc, char **argv, AddstarClientOptions options); 16 16 17 17 int loadstarpar_table (SkyList *skylistInput, HostTable *hosts, char *filename, AddstarClientOptions *options); … … 23 23 int save_remote_host (HostInfo *host); 24 24 25 int init_remote_hosts ( );26 int find_empty_slot ( );27 int harvest_all ( );28 int harvest_host ( );25 int init_remote_hosts (void); 26 int find_empty_slot (void); 27 int harvest_all (void); 28 int harvest_host (void); 29 29 30 30 int loadstarpar_catalog (StarPar_Stars *stars, int Nstars, SkyRegion *region, char *filename, AddstarClientOptions *options); … … 40 40 41 41 int loadstarpar_sortStars (StarPar_Stars *stars, int Nstars); 42 43 int loadstarpar_tmpdir (void); -
trunk/Ohana/src/addstar/include/supercos.h
r33653 r38986 80 80 Image *loadsupercos_plates (Survey *survey, int Nsurvey, char *filename, int *nimage); 81 81 int loadsupercos_getFilterInfo (char *line, char *emulsion, char *filterID); 82 int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyList *skytable, char *filename, AddstarClientOptions options); 83 int loadsupercos_sortStars (Stars *tstars, int Ntstars); 82 int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyTable *skytable, char *filename, AddstarClientOptions options); 84 83 int *loadsupercos_image_index (Image *image, int Nimage); 85 84 int loadsupercos_getST (char *line, double *st); -
trunk/Ohana/src/addstar/src/LoadFilenames.c
- Property svn:mergeinfo deleted
-
trunk/Ohana/src/addstar/src/SkyListForStars.c
r38553 r38986 1 1 # include "addstar.h" 2 2 3 # if (0) 4 void sort_stars_ra (Stars *stars, int N) { 3 void sort_stars_ra (Catalog *catalog) { 5 4 6 # define SWAPFUNC(A,B){ Stars tmp; tmp = stars[A]; stars[A] = stars[B]; stars[B] = tmp; }7 # define COMPARE(A,B)( stars[A].average.R < stars[B].average.R)5 # define SWAPFUNC(A,B){ Average tmp; tmp = catalog->average[A]; catalog->average[A] = catalog->average[B]; catalog->average[B] = tmp; } 6 # define COMPARE(A,B)(catalog->average[A].R < catalog->average[B].R) 8 7 9 OHANA_SORT ( N, COMPARE, SWAPFUNC);8 OHANA_SORT (catalog->Naverage, COMPARE, SWAPFUNC); 10 9 11 10 # undef SWAPFUNC … … 14 13 } 15 14 16 SkyList *SkyListForStars (SkyTable *table, int depth, Stars *stars, unsigned int Nstars) {15 SkyList *SkyListForStars (SkyTable *table, int depth, Catalog *catalog) { 17 16 18 17 int i, j, Nr, NR; … … 28 27 list[0].ownElements = FALSE; // free these elements when freeing the list 29 28 30 sort_stars_ra (stars, Nstars); /* sort by RA */ 31 for (i = 0; i < Nstars; i++) { 32 if (stars[i].found == -2) continue; 33 here = SkyRegionByPoint (table, depth, stars[i].average.R, stars[i].average.D); 34 stars[i].found = -2; 29 sort_stars_ra (catalog); /* sort by RA */ 30 31 ALLOCATE (catalog->found_t, off_t, catalog->Naverage); 32 for (i = 0; i < catalog->Naverage; i++) { 33 catalog->found_t[i] = 0; 34 } 35 36 for (i = 0; i < catalog->Naverage; i++) { 37 if (catalog->found_t[i] == -2) continue; 38 here = SkyRegionByPoint (table, depth, catalog->average[i].R, catalog->average[i].D); 39 catalog->found_t[i] = -2; 35 40 /* search forward for all contained stars */ 36 for (j = i; j < Nstars; j++) {37 if ( stars[j].average.R >= here[0].regions[0][0].Rmax) break;38 if ( stars[j].average.R < here[0].regions[0][0].Rmin) break;39 if ( stars[j].average.D < here[0].regions[0][0].Dmin) continue;40 if ( stars[j].average.D >= here[0].regions[0][0].Dmax) continue;41 stars[j].found= -2;41 for (j = i; j < catalog->Naverage; j++) { 42 if (catalog->average[j].R >= here[0].regions[0][0].Rmax) break; 43 if (catalog->average[j].R < here[0].regions[0][0].Rmin) break; 44 if (catalog->average[j].D < here[0].regions[0][0].Dmin) continue; 45 if (catalog->average[j].D >= here[0].regions[0][0].Dmax) continue; 46 catalog->found_t[j] = -2; 42 47 } 43 48 list[0].regions[Nr] = here[0].regions[0]; … … 54 59 55 60 /* reset to -1 for all stars: required start for find_match_refstars */ 56 for (i = 0; i < Nstars; i++) stars[i].found = -1; 61 free (catalog->found_t); 62 catalog->found_t = NULL; 57 63 return (list); 58 64 } … … 70 76 71 77 */ 72 # endif -
trunk/Ohana/src/addstar/src/UpdateDatabase_Image.c
r38471 r38986 79 79 dvo_catalog_save (&catalog, VERBOSE); 80 80 } 81 SetProtect (FALSE);82 81 } 83 82 dvo_catalog_unlock (&catalog); 83 SetProtect (FALSE); 84 84 85 dvo_catalog_free (&catalog); 85 86 } -
trunk/Ohana/src/addstar/src/UpdateDatabase_Refcat.c
r38471 r38986 69 69 dvo_catalog_save (&catalog, VERBOSE); 70 70 } 71 SetProtect (FALSE);72 71 } 73 72 dvo_catalog_unlock (&catalog); 73 SetProtect (FALSE); 74 74 75 dvo_catalog_free (&catalog); 75 76 free (stars); -
trunk/Ohana/src/addstar/src/UpdateDatabase_Reflist.c
r38471 r38986 65 65 dvo_catalog_save (&catalog, VERBOSE); 66 66 } 67 SetProtect (FALSE);68 67 } 69 68 dvo_catalog_unlock (&catalog); 69 SetProtect (FALSE); 70 70 71 dvo_catalog_free (&catalog); 71 72 } -
trunk/Ohana/src/addstar/src/addstar.c
r38553 r38986 57 57 UpdateImageIDs (newcat, images, Nimages); 58 58 59 // if ((DUMP != NULL) && !strcmp (DUMP, "rawstars")) dump_rawstars (stars, Nstars);60 59 for (i = 0; i < Nimages; i++) { 61 60 newlist = SkyListByImage (sky, -1, &images[i]); … … 66 65 ImageOptions (&options, images, Nimages); 67 66 break; 68 # if (0)69 67 case ADDSTAR_MODE_REFLIST: 70 stars = grefstars (argv[1], options.photcode, &Nstars);71 skylist = SkyListForStars (sky, -1, stars, Nstars);68 newcat = grefstars (argv[1], options.photcode); 69 skylist = SkyListForStars (sky, -1, newcat); 72 70 break; 73 71 case ADDSTAR_MODE_REFCAT: … … 80 78 skylist[0].ownElements = FALSE; 81 79 break; 82 # endif83 80 84 81 default: … … 146 143 switch (options.mode) { 147 144 case ADDSTAR_MODE_IMAGE: 148 // Nsubset = Nstars;149 145 if (options.closest) { 150 146 Nmatch += find_matches_closest (skylist[0].regions[i], newcat, &catalog, options); … … 153 149 } 154 150 break; 155 # if (0) 151 156 152 case ADDSTAR_MODE_REFCAT: 157 stars = greference (argv[1], skylist[0].regions[i], options.photcode, &Nstars);153 newcat = greference (argv[1], skylist[0].regions[i], options.photcode); 158 154 case ADDSTAR_MODE_REFLIST: { 159 Stars **subset = find_subset (skylist[0].regions[i], stars, Nstars, &Nsubset);160 155 if (options.closest) { 161 Nmatch += find_matches_closest_refstars (skylist[0].regions[i], subset, Nsubset, &catalog, options);156 Nmatch += find_matches_closest_refstars (skylist[0].regions[i], newcat, &catalog, options); 162 157 } else { 163 Nmatch += find_matches_refstars (skylist[0].regions[i], subset, Nsubset, &catalog, options);158 Nmatch += find_matches_refstars (skylist[0].regions[i], newcat, &catalog, options); 164 159 } 165 if (Nsubset) free (subset);166 160 break; 167 161 } 168 # endif169 162 default: 170 163 abort(); … … 186 179 dvo_catalog_save (&catalog, VERBOSE); 187 180 } 188 SetProtect (FALSE);189 181 } 190 182 dvo_catalog_unlock (&catalog); 183 SetProtect (FALSE); 191 184 dvo_catalog_free (&catalog); 192 185 if (VERBOSE) MARKTIME ("save cpt: %f sec\n", dtime); RESETTIME; -
trunk/Ohana/src/addstar/src/addstar_client.c
r37116 r38986 13 13 14 14 // get configuration info, args, lockfile (set CATDIR, HOST_ID, HOSTDIR, etc) 15 SetSignals (); 15 16 options = ConfigInit (&argc, argv); 16 17 options = args_parallel_client (argc, argv, options); -
trunk/Ohana/src/addstar/src/addstarc.c
r33963 r38986 11 11 12 12 /* load config and options */ 13 SetSignals (); 13 14 options = ConfigInit (&argc, argv); 14 15 options = args_client (argc, argv, options); -
trunk/Ohana/src/addstar/src/addstard.c
r27435 r38986 8 8 AddstarClientOptions options; 9 9 10 SetSignals (); 10 11 options = ConfigInit (&argc, argv); 11 12 args_server (argc, argv); -
trunk/Ohana/src/addstar/src/addstart.c
r33963 r38986 8 8 DVO_DATA *dataset; 9 9 10 SetSignals (); 10 11 options = ConfigInit (&argc, argv); 11 12 args_server (argc, argv); -
trunk/Ohana/src/addstar/src/args_loadstarpar.c
r37807 r38986 5 5 static void help_client (void); 6 6 7 AddstarClientOptions args_loadstarpar (int argc, char **argv, AddstarClientOptions options) {7 AddstarClientOptions args_loadstarpar (int *argc, char **argv, AddstarClientOptions options) { 8 8 9 9 int N; 10 10 11 11 /* check for help request */ 12 if (get_argument ( argc, argv, "-help") ||13 get_argument ( argc, argv, "-h")) {12 if (get_argument (*argc, argv, "-help") || 13 get_argument (*argc, argv, "-h")) { 14 14 help (); 15 15 } … … 28 28 HOST_ID = 0; 29 29 PARALLEL = FALSE; 30 if ((N = get_argument ( argc, argv, "-parallel"))) {30 if ((N = get_argument (*argc, argv, "-parallel"))) { 31 31 PARALLEL = TRUE; 32 remove_argument (N, &argc, argv);32 remove_argument (N, argc, argv); 33 33 } 34 34 // this is a test mode : rather than launching the remote jobs and waiting for completion, 35 35 // relphot will simply list the remote command and wait for the user to signal completion 36 36 PARALLEL_MANUAL = FALSE; 37 if ((N = get_argument ( argc, argv, "-parallel-manual"))) {37 if ((N = get_argument (*argc, argv, "-parallel-manual"))) { 38 38 PARALLEL = TRUE; // -parallel-manual implies -parallel 39 39 PARALLEL_MANUAL = TRUE; 40 remove_argument (N, &argc, argv);40 remove_argument (N, argc, argv); 41 41 } 42 42 // this is a test mode : rather than launching the relphot_client jobs remotely, they are 43 43 // run in serial via 'system' 44 44 PARALLEL_SERIAL = FALSE; 45 if ((N = get_argument ( argc, argv, "-parallel-serial"))) {45 if ((N = get_argument (*argc, argv, "-parallel-serial"))) { 46 46 if (PARALLEL_MANUAL) { 47 47 fprintf (stderr, "ERROR: cannot mix -parallel-manual and -parallel-serial\n"); … … 50 50 PARALLEL = TRUE; // -parallel-serial implies -parallel 51 51 PARALLEL_SERIAL = TRUE; 52 remove_argument (N, &argc, argv);53 } 54 55 /* only add to existing regions */52 remove_argument (N, argc, argv); 53 } 54 55 /* only add to existing regions */ 56 56 options.existing_regions = FALSE; 57 if ((N = get_argument (argc, argv, "-existing-regions"))) { 58 options.existing_regions = TRUE; 59 remove_argument (N, &argc, argv); 60 } 57 // XXX NOT USED if ((N = get_argument (*argc, argv, "-existing-regions"))) { 58 // XXX NOT USED options.existing_regions = TRUE; 59 // XXX NOT USED remove_argument (N, argc, argv); 60 // XXX NOT USED } 61 61 62 /* only add to existing objects */ 62 63 options.only_match = FALSE; 63 if ((N = get_argument ( argc, argv, "-only-match"))) {64 if ((N = get_argument (*argc, argv, "-only-match"))) { 64 65 options.only_match = TRUE; 65 remove_argument (N, &argc, argv); 66 } 66 remove_argument (N, argc, argv); 67 } 68 67 69 /* replace measurement, don't duplicate (ref/cat only) */ 68 70 options.replace = FALSE; 69 if ((N = get_argument ( argc, argv, "-replace"))) {71 if ((N = get_argument (*argc, argv, "-replace"))) { 70 72 options.replace = TRUE; 71 remove_argument (N, &argc, argv);73 remove_argument (N, argc, argv); 72 74 } 73 75 74 76 /* extra error messages */ 75 77 VERBOSE = FALSE; 76 if ((N = get_argument ( argc, argv, "-v"))) {78 if ((N = get_argument (*argc, argv, "-v"))) { 77 79 VERBOSE = TRUE; 78 remove_argument (N, &argc, argv);80 remove_argument (N, argc, argv); 79 81 } 80 82 … … 96 98 DUMP = NULL; 97 99 98 if ( argc < 2) {100 if (*argc < 2) { 99 101 fprintf (stderr, "USAGE: loadstarpar [options] (fitsfile) [..more files]\n"); 100 102 exit (2); … … 103 105 } 104 106 105 AddstarClientOptions args_loadstarpar_client (int argc, char **argv, AddstarClientOptions options) {107 AddstarClientOptions args_loadstarpar_client (int *argc, char **argv, AddstarClientOptions options) { 106 108 107 109 int N; 108 110 109 111 /* check for help request */ 110 if (get_argument ( argc, argv, "-help") ||111 get_argument ( argc, argv, "-h")) {112 if (get_argument (*argc, argv, "-help") || 113 get_argument (*argc, argv, "-h")) { 112 114 help (); 113 115 } … … 118 120 119 121 HOST_ID = 0; 120 if ((N = get_argument ( argc, argv, "-hostID"))) {121 remove_argument (N, &argc, argv);122 if ((N = get_argument (*argc, argv, "-hostID"))) { 123 remove_argument (N, argc, argv); 122 124 HOST_ID = atoi (argv[N]); 123 remove_argument (N, &argc, argv);125 remove_argument (N, argc, argv); 124 126 } 125 127 if (!HOST_ID) help_client(); 126 128 127 129 HOSTDIR = NULL; 128 if ((N = get_argument ( argc, argv, "-hostdir"))) {129 remove_argument (N, &argc, argv);130 if ((N = get_argument (*argc, argv, "-hostdir"))) { 131 remove_argument (N, argc, argv); 130 132 HOSTDIR = strcreate (argv[N]); 131 remove_argument (N, &argc, argv);133 remove_argument (N, argc, argv); 132 134 } 133 135 if (!HOSTDIR) help_client(); 134 136 135 137 CPT_FILE = NULL; 136 if ((N = get_argument ( argc, argv, "-cpt"))) {137 remove_argument (N, &argc, argv);138 if ((N = get_argument (*argc, argv, "-cpt"))) { 139 remove_argument (N, argc, argv); 138 140 CPT_FILE = strcreate (argv[N]); 139 remove_argument (N, &argc, argv);141 remove_argument (N, argc, argv); 140 142 } 141 143 if (!CPT_FILE) help_client(); 142 144 143 145 INPUT = NULL; 144 if ((N = get_argument ( argc, argv, "-input"))) {145 remove_argument (N, &argc, argv);146 if ((N = get_argument (*argc, argv, "-input"))) { 147 remove_argument (N, argc, argv); 146 148 INPUT = strcreate (argv[N]); 147 remove_argument (N, &argc, argv);149 remove_argument (N, argc, argv); 148 150 } 149 151 if (!INPUT) help_client(); … … 157 159 /* only add to existing objects */ 158 160 options.only_match = FALSE; 159 if ((N = get_argument ( argc, argv, "-only-match"))) {161 if ((N = get_argument (*argc, argv, "-only-match"))) { 160 162 options.only_match = TRUE; 161 remove_argument (N, &argc, argv);163 remove_argument (N, argc, argv); 162 164 } 163 165 /* replace measurement, don't duplicate (ref/cat only) */ 164 166 options.replace = FALSE; 165 if ((N = get_argument ( argc, argv, "-replace"))) {167 if ((N = get_argument (*argc, argv, "-replace"))) { 166 168 options.replace = TRUE; 167 remove_argument (N, &argc, argv);169 remove_argument (N, argc, argv); 168 170 } 169 171 170 172 /* extra error messages */ 171 173 VERBOSE = FALSE; 172 if ((N = get_argument ( argc, argv, "-v"))) {174 if ((N = get_argument (*argc, argv, "-v"))) { 173 175 VERBOSE = TRUE; 174 remove_argument (N, &argc, argv);176 remove_argument (N, argc, argv); 175 177 } 176 178 … … 192 194 DUMP = NULL; 193 195 194 if ( argc != 1) {196 if (*argc != 1) { 195 197 fprintf (stderr, "USAGE: loadstarpar_client -cpt (file) -input (file)\n"); 196 198 exit (2); -
trunk/Ohana/src/addstar/src/find_matches.c
r38553 r38986 3 3 int find_matches (SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options) { 4 4 5 off_t i, j, n, N,J, Nstars, mSrc;5 off_t i, j, J, Nstars, mSrc; 6 6 double RADIUS, RADIUS2; 7 7 double *X1, *Y1, *X2, *Y2; … … 9 9 off_t *N1, *N2; 10 10 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch; 11 int Nsecfilt, Nsec, status;12 11 unsigned int objID, catID; 13 12 Coords tcoords; 13 int Nsecfilt, Nsec; 14 14 15 15 /* photcode data - must by of type DEP; options.photcode is equiv photcode for all input … … 58 58 catID = tgtcat[0].catID; 59 59 60 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ZEA projection has the61 * advantage that every point in R,D has a mapping to a unique X,Y. However, note that not all62 * possible X,Y points map back to R,D and the local plate scale changes substantially far from63 * the projection pole. a better mapping might be ARC, not yet implemented (see64 * coordops.update.c). We use the center of the region (tgtcat) for crval1,2.60 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ARC projection has 61 * the advantage that every point in R,D has a mapping to a unique X,Y. However, note 62 * that not all possible X,Y points map back to R,D and the local plate scale changes 63 * substantially far from the projection pole. We use the center of the region (tgtcat) 64 * for crval1,2. 65 65 */ 66 66 InitCoords (&tcoords, "DEC--ARC"); 67 67 tcoords.crval1 = 0.5*(region[0].Rmin + region[0].Rmax); 68 if ( region[0].Dmax < 90) {68 if ((region[0].Dmax < 90) && (region[0].Dmin > -90)) { 69 69 tcoords.crval2 = 0.5*(region[0].Dmin + region[0].Dmax); 70 70 } else { 71 tcoords.crval2 = 90.0;71 tcoords.crval2 = (region[0].Dmax >= 90) ? 90.0 : -90.0; 72 72 } 73 73 tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0; … … 76 76 Nstars = 0; 77 77 for (i = 0; i < srccat->Naverage; i++) { 78 status = RD_to_XY (&X1[Nstars], &Y1[Nstars], srccat->average[i].R, srccat->average[i].D, &tcoords);78 int status = RD_to_XY (&X1[Nstars], &Y1[Nstars], srccat->average[i].R, srccat->average[i].D, &tcoords); 79 79 if (!status) continue; 80 80 N1[Nstars] = i; … … 101 101 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 102 102 103 /* set up pointers for linked list of measure */103 /* set up pointers for linked list of measurements */ 104 104 if (tgtcat[0].sorted && (tgtcat[0].Nmeasure == tgtcat[0].Nmeasure_disk)) { 105 // this version is only valid if we have done a full catalog load, and if the catalog 106 // is sorted while processed 105 107 next_meas = init_measure_links (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas); 106 108 } else { … … 109 111 110 112 /* choose a radius for matches (defined in args.c or ImageOptions.c) */ 111 RADIUS = options.radius; 113 if (options.radius == 0) { 114 RADIUS = 2.0; /* hardwired default for refstars */ 115 } else { 116 RADIUS = options.radius; /* provided by config */ 117 } 112 118 RADIUS2 = RADIUS*RADIUS; 113 119 114 /** find matched stars **/ 120 /****************** find matched stars ********************/ 121 115 122 for (i = j = 0; (i < Nstars) && (j < Nave); ) { 116 123 if (!finite(X1[i]) || !finite(Y1[i])) { … … 144 151 /*** a match is found, add to average, measure ***/ 145 152 Nmatch ++; 146 n = N2[J];147 N = N1[i];153 off_t n = N2[J]; 154 off_t N = N1[i]; 148 155 149 156 /* make sure there is space for next entry */ … … 161 168 162 169 /** add measurements for this star **/ 163 170 164 171 // set the new measurements 165 172 tgtcat[0].measure[Nmeas] = srccat->measure[mSrc + mOff]; … … 231 238 tgtcat[0].found_t[n] = Nmeas; 232 239 } 233 /* Nm is updated, but not written out in -update mode (for existing entries)234 Nm is recalculated in build_meas_links if loaded table is not sorted */235 240 tgtcat[0].average[n].Nmeasure ++; 236 241 Nmeas ++; … … 245 250 } 246 251 247 /* incorporate unmatched image stars, if this star is in field of this tgtcat */248 /* these new entries are all written out in UPDATE mode */249 for (i = 0; (i < Nstars) && !options.only_match; i ++) {252 /* incorporate unmatched image stars, if this star is in field of this tgtcat */ 253 /* these new entries are all written out in UPDATE mode */ 254 for (i = 0; (i < Nstars) && !options.only_match; i++) { 250 255 /* make sure there is space for next entry */ 251 256 if (Nmeas >= NMEAS - srccat->average[i].Nmeasure) { … … 324 329 } 325 330 326 /* note stars which have been found in this tgtcat */331 /* note stars which have been found in this tgtcat */ 327 332 for (i = 0; i < srccat->Nmeasure; i++) { 328 333 if (srccat->found_t[i] > -1) { … … 331 336 } 332 337 333 /* check if the tgtcat has changed? if no change, no need to write */338 /* check if the tgtcat has changed? if no change, no need to write */ 334 339 tgtcat[0].objID = objID; // new max value, save on tgtcat close 335 340 tgtcat[0].Naverage = Nave; … … 341 346 free (Y1); 342 347 free (N1); 343 free (N2);344 348 free (X2); 345 349 free (Y2); 350 free (N2); 346 351 free (next_meas); 347 352 -
trunk/Ohana/src/addstar/src/find_matches_closest.c
r38553 r38986 3 3 int find_matches_closest (SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options) { 4 4 5 off_t i, j, n, N,J, Jmin, status, Nstars, mSrc;5 off_t i, j, J, Jmin, status, Nstars, mSrc; 6 6 double RADIUS, RADIUS2, Rmin; 7 7 double *X1, *Y1, *X2, *Y2; … … 9 9 off_t *N1, *N2; 10 10 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch, Nlens, NLENS; 11 int Nsecfilt, Nsec;12 11 unsigned int objID, catID; 13 12 Coords tcoords; 13 int Nsecfilt, Nsec; 14 14 15 15 /* photcode data - must by of type DEP; options.photcode is equiv photcode for all input … … 62 62 * the advantage that every point in R,D has a mapping to a unique X,Y. However, note 63 63 * that not all possible X,Y points map back to R,D and the local plate scale changes 64 * far from the projection pole. We use the center of the region (tgtcat) for crval1,2. 64 * substantially far from the projection pole. We use the center of the region (tgtcat) 65 * for crval1,2. 65 66 */ 66 67 InitCoords (&tcoords, "DEC--ARC"); 67 68 tcoords.crval1 = 0.5*(region[0].Rmin + region[0].Rmax); 68 if ( region[0].Dmax < 90) {69 if ((region[0].Dmax < 90) && (region[0].Dmin > -90)) { 69 70 tcoords.crval2 = 0.5*(region[0].Dmin + region[0].Dmax); 70 71 } else { 71 tcoords.crval2 = 90.0;72 tcoords.crval2 = (region[0].Dmax >= 90) ? 90.0 : -90.0; 72 73 } 73 74 tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0; … … 114 115 115 116 /* choose a radius for matches */ 116 RADIUS = options.radius; /* provided by config */ 117 if (options.radius == 0) { 118 RADIUS = 2.0; /* hardwired default for refstars */ 119 } else { 120 RADIUS = options.radius; /* provided by config */ 121 } 117 122 RADIUS2 = RADIUS*RADIUS; 118 123 … … 178 183 /*** a match is found, add to average, measure ***/ 179 184 Nmatch ++; 180 n = N2[Jmin];181 N = N1[i];185 off_t n = N2[Jmin]; 186 off_t N = N1[i]; 182 187 183 188 /* make sure there is space for next entry */ … … 355 360 next_meas[Nmeas-1] = (mSrc < srccat->average[i].Nmeasure - 1) ? Nmeas : -1; 356 361 } 357 srccat->found_t[i] = Nave;358 359 362 // if we have lensing data, insert that as well 360 363 if (srccat->lensing) { … … 374 377 } 375 378 } 379 srccat->found_t[i] = Nave; 376 380 Nave ++; 377 381 } … … 407 411 free (Y1); 408 412 free (N1); 409 free (N2);410 413 free (X2); 411 414 free (Y2); 415 free (N2); 412 416 free (next_meas); 413 417 free (next_lens); -
trunk/Ohana/src/addstar/src/find_matches_closest_refstars.c
r38467 r38986 1 1 # include "addstar.h" 2 2 3 /* differences with find_matches_closest(): 4 * accepts Stars **stars (vs Stars *stars) 5 * NREFSTAR_GROUP vs NSTAR_GROUP 6 * does not update lensing fields 7 * allows option to replace existing entries 8 * allows multiple photcodes 9 10 */ 11 12 int find_matches_closest_refstars (SkyRegion *region, Stars **stars, unsigned int NstarsIn, Catalog *catalog, AddstarClientOptions options) { 13 14 off_t i, j, n, N, J, Jmin, status; 3 int find_matches_closest_refstars (SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options) { 4 5 off_t i, j, J, Jmin, status, mSrc; 15 6 double RADIUS, RADIUS2, Rmin; 16 7 double *X1, *Y1, *X2, *Y2; 17 8 double dX, dY, dR; 18 off_t *N1, *N2 , *next_meas;9 off_t *N1, *N2; 19 10 off_t Nave, NAVE, Nmeas, NMEAS, Nstars, Nmatch; 20 11 unsigned int objID, catID; … … 22 13 int Nsecfilt; 23 14 24 switch (NREFSTAR_GROUP) {25 case 1:26 case 3:27 case 4:28 case 6:29 break;30 default:31 fprintf (stderr, "ERROR: NREFSTAR_GROUP NOT SET!\n");32 exit (1);33 }34 35 15 /* photcode data -- should not have to modify secfilt / average */ 36 16 Nsecfilt = GetPhotcodeNsecfilt (); 37 17 38 /** allocate local arrays (stars) **/ 39 ALLOCATE (X1, double, NstarsIn); 40 ALLOCATE (Y1, double, NstarsIn); 41 ALLOCATE (N1, off_t, NstarsIn); 42 43 /** allocate local arrays (catalog) **/ 44 NAVE = Nave = catalog[0].Naverage; 18 /** allocate local arrays (srccat) **/ 19 ALLOCATE (X1, double, srccat->Naverage); 20 ALLOCATE (Y1, double, srccat->Naverage); 21 ALLOCATE (N1, off_t, srccat->Naverage); 22 23 if (!srccat->found_t) { 24 ALLOCATE (srccat->found_t, off_t, srccat->Naverage); 25 for (i = 0; i < srccat->Naverage; i++) { 26 srccat->found_t[i] = -1; 27 } 28 } 29 30 /** allocate local arrays (tgtcat) **/ 31 NAVE = Nave = tgtcat[0].Naverage; 45 32 ALLOCATE (X2, double, NAVE); 46 33 ALLOCATE (Y2, double, NAVE); 47 34 ALLOCATE (N2, off_t, NAVE); 48 ALLOCATE (catalog[0].found_t, off_t, NAVE); 35 36 if (!tgtcat->found_t) { 37 ALLOCATE (tgtcat[0].found_t, off_t, NAVE); 38 for (i = 0; i < NAVE; i++) { 39 tgtcat->found_t[i] = -1; 40 } 41 } 49 42 /* for secfilt j and star i, secfilt[i*Nsecfilt+j] */ 50 43 51 44 /* internal counters */ 52 45 Nmatch = 0; 53 NMEAS = Nmeas = catalog[0].Nmeasure;46 NMEAS = Nmeas = tgtcat[0].Nmeasure; 54 47 55 // current max obj ID for this catalog 56 objID = catalog[0].objID; 57 catID = catalog[0].catID; 48 off_t *next_meas = NULL; 49 50 // current max obj ID for this tgtcat 51 objID = tgtcat[0].objID; 52 catID = tgtcat[0].catID; 58 53 59 54 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ARC projection has 60 55 * the advantage that every point in R,D has a mapping to a unique X,Y. However, note 61 56 * that not all possible X,Y points map back to R,D and the local plate scale changes 62 * far from the projection pole. We use the center of the region (catalog) for crval1,2. 57 * substantially far from the projection pole. We use the center of the region (tgtcat) 58 * for crval1,2. 63 59 */ 64 60 InitCoords (&tcoords, "DEC--ARC"); 65 61 tcoords.crval1 = 0.5*(region[0].Rmin + region[0].Rmax); 66 if ( region[0].Dmax < 90) {62 if ((region[0].Dmax < 90) && (region[0].Dmin > -90)) { 67 63 tcoords.crval2 = 0.5*(region[0].Dmin + region[0].Dmax); 68 64 } else { 69 tcoords.crval2 = 90.0;65 tcoords.crval2 = (region[0].Dmax >= 90) ? 90.0 : -90.0; 70 66 } 71 67 tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0; … … 73 69 /* build spatial index (RA sort) referencing input array sequence */ 74 70 Nstars = 0; 75 for (i = 0; i < NstarsIn; i++) {76 status = RD_to_XY (&X1[Nstars], &Y1[Nstars], s tars[i][0].average.R, stars[i][0].average.D, &tcoords);71 for (i = 0; i < srccat->Naverage; i++) { 72 status = RD_to_XY (&X1[Nstars], &Y1[Nstars], srccat->average[i].R, srccat->average[i].D, &tcoords); 77 73 if (!status) continue; 78 74 N1[Nstars] = i; … … 80 76 } 81 77 if (Nstars < 1) { 82 if (VERBOSE) fprintf (stderr, "skipping %s, no overlapping stars\n", catalog[0].filename);78 if (VERBOSE) fprintf (stderr, "skipping %s, no overlapping stars\n", tgtcat[0].filename); 83 79 free (X1); 84 80 free (Y1); … … 93 89 /* build spatial index (RA sort) */ 94 90 for (i = 0; i < Nave; i++) { 95 RD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);91 RD_to_XY (&X2[i], &Y2[i], tgtcat[0].average[i].R, tgtcat[0].average[i].D, &tcoords); 96 92 N2[i] = i; 97 catalog[0].found_t[N2[i]] = -1;93 tgtcat[0].found_t[N2[i]] = -1; 98 94 } 99 95 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 100 96 101 97 /* set up pointers for linked list of measure */ 102 if ( catalog[0].sorted && (catalog[0].Nmeasure == catalog[0].Nmeasure_disk)) {103 // this version is only valid if we have done a full catalog load, and if the catalog98 if (tgtcat[0].sorted && (tgtcat[0].Nmeasure == tgtcat[0].Nmeasure_disk)) { 99 // this version is only valid if we have done a full tgtcat load, and if the tgtcat 104 100 // is sorted while processed 105 next_meas = init_measure_links ( catalog[0].average, Nave, catalog[0].measure, Nmeas);101 next_meas = init_measure_links (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas); 106 102 } else { 107 next_meas = build_measure_links ( catalog[0].average, Nave, catalog[0].measure, Nmeas);103 next_meas = build_measure_links (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas); 108 104 } 109 105 … … 116 112 RADIUS2 = RADIUS*RADIUS; 117 113 118 /** find matched stars**/119 // XXX could use NREFSTAR_GROUP to do this match more quicky 114 /****************** find matched stars ********************/ 115 120 116 for (i = j = 0; (i < Nstars) && (j < Nave); ) { 121 117 if (!finite(X1[i]) || !finite(Y1[i])) { … … 140 136 } 141 137 142 if (stars[N1[i]][0].found != -1) { 143 /* this star has already been assigned to an object in this or another catalog */ 138 // XXX check that this is allocated 139 if (srccat->found_t[N1[i]] != -1) { 140 /* this star has already been assigned to an object in this or another tgtcat */ 144 141 i++; 145 142 continue; … … 169 166 /*** a match is found, add to average, measure ***/ 170 167 Nmatch ++; 171 n = N2[Jmin]; 172 N = N1[i]; 173 174 /** in replace mode, search for entry and replace values M, dM, R, D */ 175 // XXX this fails for unsorted catalogs, right? 176 if (options.replace && replace_match (&catalog[0].average[n], catalog[0].measure, stars[N])) { 177 i++; 178 continue; 179 } 168 off_t n = N2[Jmin]; 169 off_t N = N1[i]; 180 170 181 171 /* make sure there is space for next entry */ 182 if (Nmeas >= NMEAS ) {183 NMEAS = Nmeas + 1000 ;172 if (Nmeas >= NMEAS - srccat->average[N].Nmeasure) { 173 NMEAS = Nmeas + 1000 + srccat->average[N].Nmeasure; 184 174 REALLOCATE (next_meas, off_t, NMEAS); 185 REALLOCATE (catalog[0].measure, Measure, NMEAS); 186 } 187 188 /* add to end of measurement list */ 189 add_meas_link (&catalog[0].average[n], next_meas, Nmeas, NMEAS); 190 175 REALLOCATE (tgtcat[0].measure, Measure, NMEAS); 176 } 177 191 178 /** add measurements for this star **/ 192 193 // set the new measurements 194 catalog[0].measure[Nmeas] = stars[N][0].measure; 195 196 catalog[0].measure[Nmeas].dbFlags = 0; 197 catalog[0].measure[Nmeas].averef = n; 198 catalog[0].measure[Nmeas].objID = catalog[0].average[n].objID; 199 catalog[0].measure[Nmeas].catID = catalog[0].catID; 200 201 float dRoff = dvoOffsetR(&catalog[0].measure[Nmeas], &catalog[0].average[n]); 202 203 // rationalize dR: 204 if (dRoff > +180.0*3600.0) { 205 // average on high end of boundary, move star up 206 catalog[0].measure[Nmeas].R += 360.0; 207 dRoff -= 360.0*3600.0; 208 } 209 if (dRoff < -180.0*3600.0) { 210 // average on low end of boundary, move star down 211 catalog[0].measure[Nmeas].R -= 360.0; 212 dRoff += 360.0*3600.0; 213 } 214 215 // the reference data may not have per-object time specified 216 catalog[0].measure[Nmeas].t = (TIMEREF == 0) ? stars[N][0].measure.t : TIMEREF; /** careful : time_t vs e_time **/ 217 catalog[0].measure[Nmeas].t_msec = (TIMEREF == 0) ? stars[N][0].measure.t_msec : TIMEREF; /** careful : time_t vs e_time **/ 218 219 // we can choose to accept the proper-motion and parallax from the reference catalog 220 if (ACCEPT_MOTION) { 221 catalog[0].average[n].dR = stars[N][0].average.dR; 222 catalog[0].average[n].dD = stars[N][0].average.dD; 223 catalog[0].average[n].uR = stars[N][0].average.uR; 224 catalog[0].average[n].uD = stars[N][0].average.uD; 225 catalog[0].average[n].duR = stars[N][0].average.duR; 226 catalog[0].average[n].duD = stars[N][0].average.duD; 227 catalog[0].average[n].P = stars[N][0].average.P; 228 catalog[0].average[n].dP = stars[N][0].average.dP; 229 catalog[0].average[n].Tmean = stars[N][0].average.Tmean; 230 } 179 off_t mOff = srccat->average[N].measureOffset; 180 for (mSrc = 0; mSrc < srccat->average[N].Nmeasure; mSrc++) { 181 /** in replace mode, search for entry and replace values M, dM, R, D */ 182 // XXX this fails for unsorted tgtcats, right? 183 if (options.replace && replace_match (&tgtcat[0].average[n], tgtcat[0].measure, &srccat->measure[mSrc + mOff], &srccat->found_t[N])) continue; 184 185 /* add to end of measurement list */ 186 add_meas_link (&tgtcat[0].average[n], next_meas, Nmeas, NMEAS); 187 188 // set the new measurements 189 tgtcat[0].measure[Nmeas] = srccat->measure[mSrc + mOff]; 190 191 // measure now carries R,D (not dR,dD) 192 tgtcat[0].measure[Nmeas].dbFlags = 0; 193 tgtcat[0].measure[Nmeas].averef = n; 194 tgtcat[0].measure[Nmeas].objID = tgtcat[0].average[n].objID; 195 tgtcat[0].measure[Nmeas].catID = tgtcat[0].catID; 196 197 float dRoff = dvoOffsetR(&tgtcat[0].measure[Nmeas], &tgtcat[0].average[n]); 198 199 // rationalize dR: 200 if (dRoff > +180.0*3600.0) { 201 // average on high end of boundary, move star up 202 tgtcat[0].measure[Nmeas].R += 360.0; 203 dRoff -= 360.0*3600.0; 204 } 205 if (dRoff < -180.0*3600.0) { 206 // average on low end of boundary, move star down 207 tgtcat[0].measure[Nmeas].R -= 360.0; 208 dRoff += 360.0*3600.0; 209 } 210 if (fabs(dRoff) > 10*RADIUS) { 211 // take declination into account and check again. 212 double cosD = cos(RAD_DEG*tgtcat[0].average[n].D); 213 if (fabs(dRoff*cosD) > 10*RADIUS) { 214 fprintf (stderr, "error: %10.6f,%10.6f vs %10.6f,%10.6f (%f,%f vs %f,%f)\n", 215 tgtcat[0].average[n].R, tgtcat[0].average[n].D, 216 srccat->average[N].R, srccat->average[N].D, 217 X1[i], X2[Jmin], 218 Y1[i], Y2[Jmin]); 219 // XXX abort on this? -- this is a bad failure... 220 } 221 } 222 223 // the reference data may not have per-object time specified 224 if (TIMEREF) { 225 tgtcat[0].measure[Nmeas].t = TIMEREF; 226 tgtcat[0].measure[Nmeas].t_msec = 0; 227 } 228 229 // we can choose to accept the proper-motion and parallax from the reference tgtcat 230 if (ACCEPT_MOTION) { 231 tgtcat[0].average[n].dR = srccat->average[N].dR; 232 tgtcat[0].average[n].dD = srccat->average[N].dD; 233 tgtcat[0].average[n].uR = srccat->average[N].uR; 234 tgtcat[0].average[n].uD = srccat->average[N].uD; 235 tgtcat[0].average[n].duR = srccat->average[N].duR; 236 tgtcat[0].average[n].duD = srccat->average[N].duD; 237 tgtcat[0].average[n].P = srccat->average[N].P; 238 tgtcat[0].average[n].dP = srccat->average[N].dP; 239 tgtcat[0].average[n].Tmean = srccat->average[N].Tmean; 240 } 231 241 232 242 /** don't update average / secfilt values for REF photcodes **/ 233 243 234 /*** handle multiple stars */ 235 /* this catalog star matches more than one image star */ 236 // XXX should this be an average flag? 237 if (catalog[0].found_t[n] > -1) { 238 catalog[0].measure[catalog[0].found_t[n]].dbFlags |= ID_MEAS_BLEND_OBJ; 239 catalog[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_OBJ; 240 } else { 241 catalog[0].found_t[n] = Nmeas; 242 } 243 244 stars[N][0].found = Nmeas; 245 catalog[0].average[n].Nmeasure ++; 246 Nmeas ++; 247 248 // make this optional: 249 // update_coords (&catalog[0].average[n], &catalog[0].measure[0], next_meas); 244 tgtcat[0].average[n].Nmeasure ++; 245 Nmeas ++; 246 } 247 248 srccat->found_t[N] = n; 249 tgtcat[0].found_t[n] = -1; 250 250 i++; 251 251 } 252 253 /*************** add unmatched stars *************************/ 252 254 253 255 /* Incorporate unmatched refcat stars. Skip this step if we want to … … 255 257 reference up-to-date with known stars only */ 256 258 257 for (i = 0; (i < Nstars) && !options.only_match; i+ =NREFSTAR_GROUP) {259 for (i = 0; (i < Nstars) && !options.only_match; i++) { 258 260 /* make sure there is space for next entry */ 259 if (Nmeas >= NMEAS - NREFSTAR_GROUP) {260 NMEAS = Nmeas + 1000 ;261 if (Nmeas >= NMEAS - srccat->average[i].Nmeasure) { 262 NMEAS = Nmeas + 1000 + srccat->average[i].Nmeasure; 261 263 REALLOCATE (next_meas, off_t, NMEAS); 262 REALLOCATE ( catalog[0].measure, Measure, NMEAS);264 REALLOCATE (tgtcat[0].measure, Measure, NMEAS); 263 265 } 264 266 if (Nave >= NAVE) { 265 267 NAVE = Nave + 1000; 266 REALLOCATE (catalog[0].average, Average, NAVE); 267 REALLOCATE (catalog[0].secfilt, SecFilt, NAVE*catalog[0].Nsecfilt); 268 } 269 270 N = N1[i]; 271 if (stars[N][0].found >= 0) continue; 272 if (!IN_REGION (stars[N][0].average.R, stars[N][0].average.D)) continue; 273 274 dvo_average_init (&catalog[0].average[Nave]); 275 catalog[0].average[Nave].R = stars[N][0].average.R; 276 catalog[0].average[Nave].D = stars[N][0].average.D; 277 278 catalog[0].average[Nave].Nmeasure = NREFSTAR_GROUP; 279 catalog[0].average[Nave].measureOffset = Nmeas; 280 catalog[0].average[Nave].objID = objID; 281 catalog[0].average[Nave].catID = catID; 268 REALLOCATE (tgtcat[0].average, Average, NAVE); 269 REALLOCATE (tgtcat[0].found_t, off_t, NAVE); 270 if (tgtcat[0].secfilt) { 271 // we only update the secfilt table if it has been allocated for output 272 REALLOCATE (tgtcat[0].secfilt, SecFilt, NAVE*tgtcat[0].Nsecfilt); 273 } 274 } 275 276 if (srccat->found_t[i] != -1) continue; 277 if (!IN_REGION (srccat->average[i].R, srccat->average[i].D)) continue; 278 279 dvo_average_init (&tgtcat[0].average[Nave]); 280 tgtcat[0].average[Nave].R = srccat->average[i].R; 281 tgtcat[0].average[Nave].D = srccat->average[i].D; 282 283 tgtcat[0].average[Nave].Nmeasure = srccat->average[i].Nmeasure; 284 tgtcat[0].average[Nave].measureOffset = Nmeas; 285 tgtcat[0].average[Nave].objID = objID; 286 tgtcat[0].average[Nave].catID = catID; 282 287 283 288 if (PSPS_ID) { 284 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D);289 tgtcat[0].average[Nave].extID = CreatePSPSObjectID(tgtcat[0].average[Nave].R, tgtcat[0].average[Nave].D); 285 290 } 286 291 287 292 if (ACCEPT_MOTION) { 288 catalog[0].average[Nave].dR = stars[N][0].average.dR;289 catalog[0].average[Nave].dD = stars[N][0].average.dD;290 catalog[0].average[Nave].uR = stars[N][0].average.uR;291 catalog[0].average[Nave].uD = stars[N][0].average.uD;292 catalog[0].average[Nave].duR = stars[N][0].average.duR;293 catalog[0].average[Nave].duD = stars[N][0].average.duD;294 catalog[0].average[Nave].P = stars[N][0].average.P;295 catalog[0].average[Nave].dP = stars[N][0].average.dP;296 catalog[0].average[Nave].Tmean = stars[N][0].average.Tmean;293 tgtcat[0].average[Nave].dR = srccat->average[i].dR; 294 tgtcat[0].average[Nave].dD = srccat->average[i].dD; 295 tgtcat[0].average[Nave].uR = srccat->average[i].uR; 296 tgtcat[0].average[Nave].uD = srccat->average[i].uD; 297 tgtcat[0].average[Nave].duR = srccat->average[i].duR; 298 tgtcat[0].average[Nave].duD = srccat->average[i].duD; 299 tgtcat[0].average[Nave].P = srccat->average[i].P; 300 tgtcat[0].average[Nave].dP = srccat->average[i].dP; 301 tgtcat[0].average[Nave].Tmean = srccat->average[i].Tmean; 297 302 } 298 303 … … 300 305 301 306 for (j = 0; j < Nsecfilt; j++) { 302 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j], SECFILT_RESET_ALL); 303 } 304 305 for (j = 0; j < NREFSTAR_GROUP; j++) { 306 N = N1[i + j]; 307 308 catalog[0].measure[Nmeas] = stars[N][0].measure; 309 catalog[0].measure[Nmeas].dbFlags = 0; 310 catalog[0].measure[Nmeas].averef = Nave; 311 catalog[0].measure[Nmeas].objID = catalog[0].average[Nave].objID; 312 catalog[0].measure[Nmeas].catID = catalog[0].catID; 313 314 catalog[0].measure[Nmeas].t = (stars[N][0].measure.t == 0) ? TIMEREF : stars[N][0].measure.t; /** careful : time_t vs e_time **/ 315 catalog[0].measure[Nmeas].t_msec = (stars[N][0].measure.t == 0) ? 0 : stars[N][0].measure.t_msec; /** careful : time_t vs e_time **/ 316 317 stars[N][0].found = Nmeas; 318 next_meas[Nmeas] = -1; 307 dvo_secfilt_init (&tgtcat[0].secfilt[Nave*Nsecfilt+j], SECFILT_RESET_ALL); 308 } 309 310 off_t mOff = srccat->average[i].measureOffset; 311 for (mSrc = 0; mSrc < srccat->average[i].Nmeasure; mSrc++) { 312 // supply the measurements from this detection 313 dvo_measure_init (&tgtcat[0].measure[Nmeas]); 314 tgtcat[0].measure[Nmeas] = srccat->measure[mSrc + mOff]; 315 316 // the following measure elements cannot be set until here: 317 tgtcat[0].measure[Nmeas].dbFlags = 0; 318 tgtcat[0].measure[Nmeas].averef = Nave; 319 tgtcat[0].measure[Nmeas].objID = tgtcat[0].average[Nave].objID; 320 tgtcat[0].measure[Nmeas].catID = tgtcat[0].catID; 321 322 if (TIMEREF) { 323 tgtcat[0].measure[Nmeas].t = TIMEREF; 324 tgtcat[0].measure[Nmeas].t_msec = 0; 325 } 326 319 327 Nmeas ++; 320 } 321 for (j = 0; j < NREFSTAR_GROUP - 1; j++) { 322 next_meas[Nmeas - NREFSTAR_GROUP + j] = Nmeas - NREFSTAR_GROUP + j + 1; 323 } 328 329 // update the next_meas pointer for this entry (last one for this star is -1) 330 next_meas[Nmeas-1] = (mSrc < srccat->average[i].Nmeasure - 1) ? Nmeas : -1; 331 } 332 srccat->found_t[i] = Nave; 324 333 Nave ++; 325 334 } 326 335 327 REALLOCATE ( catalog[0].average, Average, Nave);328 REALLOCATE ( catalog[0].measure, Measure, Nmeas);336 REALLOCATE (tgtcat[0].average, Average, Nave); 337 REALLOCATE (tgtcat[0].measure, Measure, Nmeas); 329 338 330 339 // XXX allow for unsorted output? 331 catalog[0].measure = sort_measure (catalog[0].average, Nave, catalog[0].measure, Nmeas, next_meas); 332 catalog[0].sorted = TRUE; 333 334 /* note stars which have been found in this catalog */ 335 for (i = 0; i < Nstars; i++) { 336 if (stars[i][0].found > -1) { 337 stars[i][0].found = -2; 338 } 339 } 340 341 catalog[0].objID = objID; // new max value, save on catalog close 342 catalog[0].Naverage = Nave; 343 catalog[0].Nmeasure = Nmeas; 344 catalog[0].Nsecfilt_mem = Nave*Nsecfilt; 340 tgtcat[0].measure = sort_measure (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas, next_meas); 341 tgtcat[0].sorted = TRUE; 342 343 /* note stars which have been found in this tgtcat */ 344 for (i = 0; i < srccat->Naverage; i++) { 345 if (srccat->found_t[i] > -1) { 346 srccat->found_t[i] = -2; 347 } 348 } 349 350 /* check if the tgtcat has changed? if no change, no need to write */ 351 tgtcat[0].objID = objID; // new max value, save on tgtcat close 352 tgtcat[0].Naverage = Nave; 353 tgtcat[0].Nmeasure = Nmeas; 354 tgtcat[0].Nsecfilt_mem = Nave*Nsecfilt; 345 355 if (VERBOSE) fprintf (stderr, "Nstars, Nave, Nmeas: "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT", ("OFF_T_FMT" matches)\n", Nstars, Nave, Nmeas, Nmatch); 346 356 … … 348 358 free (Y1); 349 359 free (N1); 350 free (N2);351 360 free (X2); 352 361 free (Y2); 362 free (N2); 353 363 free (next_meas); 354 364 355 365 return (Nmatch); 356 366 } 367 368 /* differences with find_matches_closest(): 369 * accepts Stars **stars (vs Stars *stars) 370 * NREFSTAR_GROUP vs NSTAR_GROUP 371 * does not update lensing fields 372 * allows option to replace existing entries 373 * allows multiple photcodes 374 375 */ 376 -
trunk/Ohana/src/addstar/src/find_matches_refstars.c
r38467 r38986 1 1 # include "addstar.h" 2 2 3 int find_matches_refstars (SkyRegion *region, Stars **stars, unsigned int Nstars, Catalog *catalog, AddstarClientOptions options) { 4 5 off_t i, j, n, N, J; 3 // see bottom of this file for differences between find_matches_refstars.c and find_matches.c 4 int find_matches_refstars (SkyRegion *region, Catalog *srccat, Catalog *tgtcat, AddstarClientOptions options) { 5 6 off_t i, j, J, Nstars, mSrc; 6 7 double RADIUS, RADIUS2; 7 8 double *X1, *Y1, *X2, *Y2; 8 9 double dX, dY, dR; 9 off_t *N1, *N2 , *next_meas;10 off_t *N1, *N2; 10 11 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch; 11 12 unsigned int objID, catID; … … 13 14 int Nsecfilt; 14 15 15 switch (NREFSTAR_GROUP) {16 case 1:17 case 3:18 case 4:19 break;20 default:21 fprintf (stderr, "ERROR: NREFSTAR_GROUP NOT SET!\n");22 exit (1);23 }24 25 16 /* photcode data -- should not have to modify secfilt / average */ 26 17 Nsecfilt = GetPhotcodeNsecfilt (); 27 18 28 19 /** allocate local arrays (stars) **/ 29 ALLOCATE (X1, double, Nstars); 30 ALLOCATE (Y1, double, Nstars); 31 ALLOCATE (N1, off_t, Nstars); 32 33 /** allocate local arrays (catalog) **/ 34 Nave = catalog[0].Naverage; 35 NAVE = Nave + 1000; 20 ALLOCATE (X1, double, srccat->Naverage); 21 ALLOCATE (Y1, double, srccat->Naverage); 22 ALLOCATE (N1, off_t, srccat->Naverage); 23 24 myAbort ("figure out if found_t needs to be tracking Naverage or Nmeasure"); 25 if (!srccat->found_t) { 26 ALLOCATE (srccat->found_t, off_t, srccat->Naverage); 27 for (i = 0; i < srccat->Naverage; i++) { 28 srccat->found_t[i] = -1; 29 } 30 } 31 32 /** allocate local arrays (tgtcat) **/ 33 NAVE = Nave = tgtcat[0].Naverage; 36 34 ALLOCATE (X2, double, NAVE); 37 35 ALLOCATE (Y2, double, NAVE); 38 36 ALLOCATE (N2, off_t, NAVE); 39 ALLOCATE (catalog[0].found_t, off_t, NAVE); 40 REALLOCATE (catalog[0].average, Average, NAVE); 41 REALLOCATE (catalog[0].secfilt, SecFilt, NAVE*catalog[0].Nsecfilt); 37 38 if (!tgtcat->found_t) { 39 ALLOCATE (tgtcat[0].found_t, off_t, NAVE); 40 for (i = 0; i < NAVE; i++) { 41 tgtcat->found_t[i] = -1; 42 } 43 } 42 44 /* for secfilt j and star i, secfilt[i*Nsecfilt+j] */ 43 45 46 /* internal counters */ 44 47 Nmatch = 0; 45 NMEAS = Nmeas = catalog[0].Nmeasure;48 NMEAS = Nmeas = tgtcat[0].Nmeasure; 46 49 47 // current max obj ID for this catalog 48 objID = catalog[0].objID; 49 catID = catalog[0].catID; 50 51 /* project onto rectilinear grid with 1 arcsec pixels, sort by X */ 52 /* reference for coords is catalog center */ 53 InitCoords (&tcoords, "DEC--ZEA"); 50 off_t *next_meas = NULL; 51 52 // current max obj ID for this tgtcat 53 objID = tgtcat[0].objID; 54 catID = tgtcat[0].catID; 55 56 /* project onto rectilinear grid with 1 arcsec pixels. the choice of ARC projection has 57 * the advantage that every point in R,D has a mapping to a unique X,Y. However, note 58 * that not all possible X,Y points map back to R,D and the local plate scale changes 59 * substantially far from the projection pole. We use the center of the region (tgtcat) 60 * for crval1,2. 61 */ 62 InitCoords (&tcoords, "DEC--ARC"); 54 63 tcoords.crval1 = 0.5*(region[0].Rmin + region[0].Rmax); 55 tcoords.crval2 = 0.5*(region[0].Dmin + region[0].Dmax); 64 if ((region[0].Dmax < 90) && (region[0].Dmin > -90)) { 65 tcoords.crval2 = 0.5*(region[0].Dmin + region[0].Dmax); 66 } else { 67 tcoords.crval2 = (region[0].Dmax >= 90) ? 90.0 : -90.0; 68 } 56 69 tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0; 57 58 for (i = 0; i < Nstars; i++) { 59 RD_to_XY (&X1[i], &Y1[i], stars[i][0].average.R, stars[i][0].average.D, &tcoords); 60 N1[i] = i; 70 71 /* build spatial index (RA sort) referencing input array sequence */ 72 Nstars = 0; 73 for (i = 0; i < srccat->Naverage; i++) { 74 int status = RD_to_XY (&X1[Nstars], &Y1[Nstars], srccat->average[i].R, srccat->average[i].D, &tcoords); 75 if (!status) continue; 76 N1[Nstars] = i; 77 Nstars ++; 78 } 79 if (Nstars < 1) { 80 if (VERBOSE) fprintf (stderr, "skipping %s, no overlapping stars\n", tgtcat[0].filename); 81 free (X1); 82 free (Y1); 83 free (N1); 84 free (X2); 85 free (Y2); 86 free (N2); 87 return (0); 61 88 } 62 89 if (Nstars > 1) sort_coords_index (X1, Y1, N1, Nstars); 63 90 91 /* build spatial index (RA sort) */ 64 92 for (i = 0; i < Nave; i++) { 65 RD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);93 RD_to_XY (&X2[i], &Y2[i], tgtcat[0].average[i].R, tgtcat[0].average[i].D, &tcoords); 66 94 N2[i] = i; 67 catalog[0].found_t[N2[i]] = -1;95 tgtcat[0].found_t[N2[i]] = -1; 68 96 } 69 97 if (Nave > 1) sort_coords_index (X2, Y2, N2, Nave); 70 98 71 99 /* set up pointers for linked list of measurements */ 72 if ( catalog[0].sorted && (catalog[0].Nmeasure == catalog[0].Nmeasure_disk)) {100 if (tgtcat[0].sorted && (tgtcat[0].Nmeasure == tgtcat[0].Nmeasure_disk)) { 73 101 // this version is only valid if we have done a full catalog load, and if the catalog 74 102 // is sorted while processed 75 next_meas = init_measure_links ( catalog[0].average, Nave, catalog[0].measure, Nmeas);103 next_meas = init_measure_links (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas); 76 104 } else { 77 next_meas = build_measure_links ( catalog[0].average, Nave, catalog[0].measure, Nmeas);105 next_meas = build_measure_links (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas); 78 106 } 79 107 80 /* choose a radius for matches */108 /* choose a radius for matches (defined in args.c or ImageOptions.c) */ 81 109 if (options.radius == 0) { 82 110 RADIUS = 2.0; /* hardwired default for refstars */ … … 86 114 RADIUS2 = RADIUS*RADIUS; 87 115 88 /** find matched stars**/89 // XXX could use NREFSTAR_GROUP to do this match more quicky 116 /****************** find matched stars ********************/ 117 90 118 for (i = j = 0; (i < Nstars) && (j < Nave); ) { 91 119 if (!finite(X1[i]) || !finite(Y1[i])) { … … 97 125 continue; 98 126 } 99 127 128 /* negative dX: j is too large */ 100 129 dX = X1[i] - X2[j]; 101 130 if (dX <= -1.02*RADIUS) { … … 103 132 continue; 104 133 } 134 /* positive dX, i is too large */ 105 135 if (dX >= 1.02*RADIUS) { 106 136 j++; … … 108 138 } 109 139 110 /* negative dX: j is too large, positive dX, i is too large*/140 /* within match range; look for matches */ 111 141 for (J = j; (dX > -1.02*RADIUS) && (J < Nave); J++) { 112 142 dX = X1[i] - X2[J]; … … 117 147 /*** a match is found, add to average, measure ***/ 118 148 Nmatch ++; 119 n = N2[J]; 120 N = N1[i]; 121 122 /** in replace mode, search for entry and replace values M, dM, R, D */ 123 if (options.replace && replace_match (&catalog[0].average[n], catalog[0].measure, stars[N])) continue; 124 125 if (Nmeas == NMEAS) { 126 NMEAS = Nmeas + 1000; 149 off_t n = N2[J]; 150 off_t N = N1[i]; 151 152 /* make sure there is space for next entry */ 153 if (Nmeas >= NMEAS - srccat->average[N].Nmeasure) { 154 NMEAS = Nmeas + 1000 + srccat->average[N].Nmeasure; 127 155 REALLOCATE (next_meas, off_t, NMEAS); 128 REALLOCATE ( catalog[0].measure, Measure, NMEAS);156 REALLOCATE (tgtcat[0].measure, Measure, NMEAS); 129 157 } 130 158 131 /* add to end of measurement list */ 132 add_meas_link (&catalog[0].average[n], next_meas, Nmeas, NMEAS); 159 /** add measurements for this star **/ 160 off_t mOff = srccat->average[N].measureOffset; 161 for (mSrc = 0; mSrc < srccat->average[N].Nmeasure; mSrc++) { 162 /** in replace mode, search for entry and replace values M, dM, R, D */ 163 if (options.replace && replace_match (&tgtcat[0].average[n], tgtcat[0].measure, &srccat->measure[mSrc + mOff], &srccat->found_t[N])) continue; 164 165 /* add to end of measurement list */ 166 add_meas_link (&tgtcat[0].average[n], next_meas, Nmeas, NMEAS); 133 167 134 /** add measurements for this star **/135 136 // set the new measurements137 catalog[0].measure[Nmeas] = stars[N][0].measure;138 139 /** measure now stores R,D **/ 140 catalog[0].measure[Nmeas].dbFlags = 0;141 catalog[0].measure[Nmeas].averef = n; 142 catalog[0].measure[Nmeas].objID = catalog[0].average[n].objID;143 catalog[0].measure[Nmeas].catID = catalog[0].catID;144 145 float dRoff = dvoOffsetR(&catalog[0].measure[Nmeas], &catalog[0].average[n]);146 147 // rationalize dR:148 if (dRoff > +180.0*3600.0) {168 /** add measurements for this star **/ 169 170 // set the new measurements 171 tgtcat[0].measure[Nmeas] = srccat->measure[mSrc + mOff]; 172 173 // the following measure elements cannot be set until here: 174 tgtcat[0].measure[Nmeas].dbFlags = 0; 175 tgtcat[0].measure[Nmeas].averef = n; // this must be an absolute sequence number, if partial average is loaded 176 tgtcat[0].measure[Nmeas].objID = tgtcat[0].average[n].objID; 177 tgtcat[0].measure[Nmeas].catID = tgtcat[0].catID; 178 179 float dRoff = dvoOffsetR(&tgtcat[0].measure[Nmeas], &tgtcat[0].average[n]); 180 181 // rationalize R: 182 if (dRoff > +180.0*3600.0) { 149 183 // average on high end of boundary, move star up 150 catalog[0].measure[Nmeas].R += 360.0;184 tgtcat[0].measure[Nmeas].R += 360.0; 151 185 dRoff -= 360.0*3600.0; 186 } 187 if (dRoff < -180.0*3600.0) { 188 // average on low end of boundary, move star down 189 tgtcat[0].measure[Nmeas].R -= 360.0; 190 dRoff += 360.0*3600.0; 191 } 192 if (fabs(dRoff) > 10*RADIUS) { 193 // take declination into account and check again. 194 double cosD = cos(RAD_DEG*tgtcat[0].average[n].D); 195 if (fabs(dRoff*cosD) > 10*RADIUS) { 196 fprintf (stderr, "error: %10.6f,%10.6f vs %10.6f,%10.6f (%f,%f vs %f,%f)\n", 197 tgtcat[0].average[n].R, tgtcat[0].average[n].D, 198 srccat->average[N].R, srccat->average[N].D, 199 X1[i], X2[J], 200 Y1[i], Y2[J]); 201 } 202 } 203 204 if (TIMEREF) { 205 tgtcat[0].measure[Nmeas].t = TIMEREF; /** careful : time_t vs e_time **/ 206 tgtcat[0].measure[Nmeas].t_msec = 0; 207 } 208 209 if (ACCEPT_MOTION) { 210 tgtcat[0].average[n].uR = srccat->average[N].uR; 211 tgtcat[0].average[n].uD = srccat->average[N].uD; 212 tgtcat[0].average[n].duR = srccat->average[N].duR; 213 tgtcat[0].average[n].duD = srccat->average[N].duD; 214 tgtcat[0].average[n].P = srccat->average[N].P; 215 tgtcat[0].average[n].dP = srccat->average[N].dP; 216 } 217 218 /** don't update average / secfilt values for REF photcodes **/ 219 220 myAbort ("fix logic on multiple detections"); 221 222 /*** flag multiple stars */ 223 /* this image star matches more than one tgtcat star */ 224 if (srccat->found_t[N] > -1) { 225 tgtcat[0].measure[srccat->found_t[N]].dbFlags |= ID_MEAS_BLEND_MEAS; 226 tgtcat[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_MEAS; 227 } 228 if (srccat->found_t[N] == -2) { /* this image star matches a tgtcat star on a neighboring tgtcat */ 229 tgtcat[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_MEAS_X; 230 } 231 if (srccat->found_t[N] == -1) { /* this image star matches only this tgtcat star */ 232 srccat->found_t[N] = Nmeas; /* save first match, in case coincidences are found */ 233 } 234 /* this tgtcat star matches more than one image star */ 235 if (tgtcat[0].found_t[n] > -1) { 236 tgtcat[0].measure[tgtcat[0].found_t[n]].dbFlags |= ID_MEAS_BLEND_OBJ; 237 tgtcat[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_OBJ; 238 } else { 239 tgtcat[0].found_t[n] = Nmeas; 240 } 241 tgtcat[0].average[n].Nmeasure ++; 242 Nmeas ++; 152 243 } 153 if (dRoff < -180.0*3600.0) { 154 // average on low end of boundary, move star down 155 catalog[0].measure[Nmeas].R -= 360.0; 156 dRoff += 360.0*3600.0; 157 } 158 159 catalog[0].measure[Nmeas].t = (TIMEREF == 0) ? stars[N][0].measure.t : TIMEREF; /** careful : time_t vs e_time **/ 160 catalog[0].measure[Nmeas].t_msec = (TIMEREF == 0) ? stars[N][0].measure.t_msec : TIMEREF; /** careful : time_t vs e_time **/ 161 162 if (ACCEPT_MOTION) { 163 catalog[0].average[n].uR = stars[N][0].average.uR; 164 catalog[0].average[n].uD = stars[N][0].average.uD; 165 catalog[0].average[n].duR = stars[N][0].average.duR; 166 catalog[0].average[n].duD = stars[N][0].average.duD; 167 catalog[0].average[n].P = stars[N][0].average.P; 168 catalog[0].average[n].dP = stars[N][0].average.dP; 169 } 170 171 /** don't update average / secfilt values for REF photcodes **/ 172 173 /*** handle multiple stars */ 174 /* this image star matches more than one catalog star */ 175 if (stars[N][0].found > -1) { 176 catalog[0].measure[stars[N][0].found].dbFlags |= ID_MEAS_BLEND_MEAS; 177 catalog[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_MEAS; 178 } 179 if (stars[N][0].found == -2) { /* this image star matches a catalog star on a neighboring catalog */ 180 catalog[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_MEAS_X; 181 } 182 if (stars[N][0].found == -1) { /* this image star matches only this catalog star */ 183 stars[N][0].found = Nmeas; /* save first match, in case coincidences are found */ 184 } 185 /* this catalog star matches more than one image star */ 186 if (catalog[0].found_t[n] > -1) { 187 catalog[0].measure[catalog[0].found_t[n]].dbFlags |= ID_MEAS_BLEND_OBJ; 188 catalog[0].measure[Nmeas].dbFlags |= ID_MEAS_BLEND_OBJ; 189 } else { 190 catalog[0].found_t[n] = Nmeas; 191 } 192 193 catalog[0].average[n].Nmeasure ++; 194 Nmeas ++; 195 196 // update_coords (&catalog[0].average[n], &catalog[0].measure[0], next_meas); 244 245 // update_coords (&tgtcat[0].average[n], &tgtcat[0].measure[0], next_meas); 197 246 } 198 247 i++; 199 248 } 200 201 /* we don't add missed entries for refcat202 (already in database, not refcat) */203 249 204 250 /* incorporate unmatched refcat stars */ … … 207 253 the reference up-to-date with known stars only */ 208 254 209 for (i = 0; (i < Nstars) && !options.only_match; i+=NREFSTAR_GROUP) { 210 if (Nmeas >= NMEAS - NREFSTAR_GROUP) { 211 NMEAS = Nmeas + 1000; 255 for (i = 0; (i < Nstars) && !options.only_match; i++) { 256 /* make sure there is space for next entry */ 257 if (Nmeas >= NMEAS - srccat->average[i].Nmeasure) { 258 NMEAS = Nmeas + 1000 + srccat->average[i].Nmeasure; 212 259 REALLOCATE (next_meas, off_t, NMEAS); 213 REALLOCATE ( catalog[0].measure, Measure, NMEAS);214 } 215 if (Nave == NAVE) {260 REALLOCATE (tgtcat[0].measure, Measure, NMEAS); 261 } 262 if (Nave >= NAVE) { 216 263 NAVE = Nave + 1000; 217 REALLOCATE (catalog[0].average, Average, NAVE); 218 REALLOCATE (catalog[0].secfilt, SecFilt, NAVE*catalog[0].Nsecfilt); 219 } 220 221 N = i; 222 if (stars[N][0].found > -1) continue; 223 if (!IN_REGION (stars[N][0].average.R, stars[N][0].average.D)) continue; 224 225 dvo_average_init (&catalog[0].average[Nave]); 226 catalog[0].average[Nave].R = stars[N][0].average.R; 227 catalog[0].average[Nave].D = stars[N][0].average.D; 228 229 catalog[0].average[Nave].Nmeasure = NREFSTAR_GROUP; 230 catalog[0].average[Nave].measureOffset = Nmeas; 231 catalog[0].average[Nave].objID = objID; 232 catalog[0].average[Nave].catID = catID; 264 REALLOCATE (tgtcat[0].average, Average, NAVE); 265 if (tgtcat[0].secfilt) { 266 // we only update the secfilt table if it has been allocated for output 267 REALLOCATE (tgtcat[0].secfilt, SecFilt, NAVE*tgtcat[0].Nsecfilt); 268 } 269 } 270 271 if (srccat->found_t[i] >= 0) continue; 272 if (!IN_REGION (srccat->average[i].R, srccat->average[i].D)) continue; 273 274 dvo_average_init (&tgtcat[0].average[Nave]); 275 tgtcat[0].average[Nave].R = srccat->average[i].R; 276 tgtcat[0].average[Nave].D = srccat->average[i].D; 277 278 tgtcat[0].average[Nave].Nmeasure = srccat->average[i].Nmeasure; 279 tgtcat[0].average[Nave].measureOffset = Nmeas; 280 tgtcat[0].average[Nave].objID = objID; 281 tgtcat[0].average[Nave].catID = catID; 233 282 234 283 if (PSPS_ID) { 235 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, catalog[0].average[Nave].D);284 tgtcat[0].average[Nave].extID = CreatePSPSObjectID(tgtcat[0].average[Nave].R, tgtcat[0].average[Nave].D); 236 285 } 237 286 238 287 if (ACCEPT_MOTION) { 239 catalog[0].average[Nave].dR = stars[N][0].average.dR;240 catalog[0].average[Nave].dD = stars[N][0].average.dD;241 catalog[0].average[Nave].uR = stars[N][0].average.uR;242 catalog[0].average[Nave].uD = stars[N][0].average.uD;243 catalog[0].average[Nave].duR = stars[N][0].average.duR;244 catalog[0].average[Nave].duD = stars[N][0].average.duD;245 catalog[0].average[Nave].P = stars[N][0].average.P;246 catalog[0].average[Nave].dP = stars[N][0].average.dP;288 tgtcat[0].average[Nave].dR = srccat->average[i].dR; 289 tgtcat[0].average[Nave].dD = srccat->average[i].dD; 290 tgtcat[0].average[Nave].uR = srccat->average[i].uR; 291 tgtcat[0].average[Nave].uD = srccat->average[i].uD; 292 tgtcat[0].average[Nave].duR = srccat->average[i].duR; 293 tgtcat[0].average[Nave].duD = srccat->average[i].duD; 294 tgtcat[0].average[Nave].P = srccat->average[i].P; 295 tgtcat[0].average[Nave].dP = srccat->average[i].dP; 247 296 } 248 297 249 298 objID ++; 250 299 251 for (j = 0; j < Nsecfilt; j++) { 252 dvo_secfilt_init (&catalog[0].secfilt[Nave*Nsecfilt+j], SECFILT_RESET_ALL); 253 } 254 255 for (j = 0; j < NREFSTAR_GROUP; j++) { 256 N = i + j; 257 258 catalog[0].measure[Nmeas] = stars[N][0].measure; 259 260 catalog[0].measure[Nmeas].t = (stars[N][0].measure.t == 0) ? TIMEREF : stars[N][0].measure.t; /** careful : time_t vs e_time **/ 261 catalog[0].measure[Nmeas].t_msec = (stars[N][0].measure.t == 0) ? 0 : stars[N][0].measure.t_msec; /** careful : time_t vs e_time **/ 262 catalog[0].measure[Nmeas].dbFlags = 0; 263 catalog[0].measure[Nmeas].averef = Nave; 264 catalog[0].measure[Nmeas].objID = catalog[0].average[Nave].objID; 265 catalog[0].measure[Nmeas].catID = catalog[0].catID; 266 267 stars[N][0].found = Nmeas; 268 next_meas[Nmeas] = -1; // initial value here, update below 269 Nmeas ++; 270 } 271 272 for (j = 0; j < NREFSTAR_GROUP - 1; j++) { 273 next_meas[Nmeas - NREFSTAR_GROUP + j] = Nmeas - NREFSTAR_GROUP + j + 1; 300 for (j = 0; tgtcat[0].secfilt && (j < Nsecfilt); j++) { 301 dvo_secfilt_init (&tgtcat[0].secfilt[Nave*Nsecfilt+j], SECFILT_RESET_ALL); 302 } 303 304 off_t mOff = srccat->average[i].measureOffset; 305 for (mSrc = 0; mSrc < srccat->average[i].Nmeasure; mSrc++) { 306 // supply the measurments from this detection 307 dvo_measure_init (&tgtcat[0].measure[Nmeas]); 308 tgtcat[0].measure[Nmeas] = srccat->measure[mSrc + mOff]; 309 310 // the following measure elements cannot be set until here: 311 tgtcat[0].measure[Nmeas].dbFlags = 0; 312 tgtcat[0].measure[Nmeas].averef = Nave; // XXX EAM : must be absolute Nave if partial read 313 tgtcat[0].measure[Nmeas].objID = tgtcat[0].average[Nave].objID; 314 tgtcat[0].measure[Nmeas].catID = tgtcat[0].catID; 315 316 if (TIMEREF) { 317 tgtcat[0].measure[Nmeas].t = TIMEREF; 318 tgtcat[0].measure[Nmeas].t_msec = 0; 319 } 320 321 /* next[Nmeas] should always be -1 in this context (it is always the only 322 measurement for the star) */ 323 srccat->found_t[i] = Nmeas; 324 Nmeas ++; 325 326 // update the next_meas pointer for this entry (last one for this star is -1) 327 next_meas[Nmeas-1] = (mSrc < srccat->average[i].Nmeasure - 1) ? Nmeas : -1; 274 328 } 275 329 Nave ++; 276 330 } 277 331 278 REALLOCATE (catalog[0].average, Average, Nave); 332 REALLOCATE (tgtcat[0].average, Average, Nave); 333 REALLOCATE (tgtcat[0].measure, Measure, Nmeas); 279 334 280 335 // XXX allow for unsorted output? 281 catalog[0].measure = sort_measure (catalog[0].average, Nave, catalog[0].measure, Nmeas, next_meas); 282 283 /* note stars which have been found in this catalog */ 284 for (i = 0; i < Nstars; i++) { 285 if (stars[i][0].found > -1) { 286 stars[i][0].found = -2; 287 } else { 288 stars[i][0].found = -3; 289 } 290 } 291 292 catalog[0].objID = objID; // new max value, save on catalog close 293 catalog[0].Naverage = Nave; 294 catalog[0].Nmeasure = Nmeas; 295 catalog[0].Nsecfilt_mem = Nave*Nsecfilt; 296 if (VERBOSE) fprintf (stderr, "Nstars, Nave, Nmeas: %d "OFF_T_FMT" "OFF_T_FMT", ("OFF_T_FMT" matches)\n", Nstars, Nave, Nmeas, Nmatch); 336 tgtcat[0].measure = sort_measure (tgtcat[0].average, Nave, tgtcat[0].measure, Nmeas, next_meas); 337 338 /* note stars which have been found in this tgtcat */ 339 for (i = 0; i < srccat->Nmeasure; i++) { 340 if (srccat->found_t[i] > -1) { 341 srccat->found_t[i] = -2; 342 } 343 } 344 345 tgtcat[0].objID = objID; // new max value, save on tgtcat close 346 tgtcat[0].Naverage = Nave; 347 tgtcat[0].Nmeasure = Nmeas; 348 tgtcat[0].Nsecfilt_mem = Nave*Nsecfilt; 349 if (VERBOSE) fprintf (stderr, "Nstars, Nave, Nmeas: "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT", ("OFF_T_FMT" matches)\n", Nstars, Nave, Nmeas, Nmatch); 297 350 298 351 free (X1); … … 306 359 return (Nmatch); 307 360 } 361 362 /** differences between find_matches_refstars.c and find_matches.c: 363 * refstars has replace_match 364 * refstars has TIMEREF and ACCEPT_MOTION 365 * refstars does NOT have AddToCalibration 366 * refstars does NOT have Nsec 367 * refstars does NOT do update_coords 368 **/ -
trunk/Ohana/src/addstar/src/find_matches_starpar.c
r38636 r38986 131 131 132 132 /** add starpar for this star **/ 133 134 // set the new starparments 135 catalog[0].starpar[Nstarpar] = stars[N].starpar; 136 catalog[0].starpar[Nstarpar].averef = n; 137 catalog[0].starpar[Nstarpar].objID = catalog[0].average[n].objID; 138 catalog[0].starpar[Nstarpar].catID = catID; 139 140 // NOTE: include R,D in starpar? 141 // XXX if I add R,D to starpar, I should rationalize R,D to the same boundary? 142 133 off_t m; 134 if (options->replace && catalog[0].average[n].Nstarpar) { 135 m = catalog[0].average[n].starparOffset; 136 } else { 137 m = Nstarpar; 138 catalog[0].average[n].starparOffset = m; 139 catalog[0].average[n].Nstarpar ++; 140 Nstarpar ++; 141 } 142 catalog[0].starpar[m] = stars[N].starpar; 143 catalog[0].starpar[m].averef = n; 144 catalog[0].starpar[m].objID = catalog[0].average[n].objID; 145 catalog[0].starpar[m].catID = catID; 143 146 stars[N].found = TRUE; 144 catalog[0].average[n].Nstarpar ++;145 Nstarpar ++;146 147 i++; 147 148 } -
trunk/Ohana/src/addstar/src/get2mass_full.c
r34088 r38986 6 6 // fill in the data for a JHK triplet star. takes a pointer to the start of the line the 7 7 // RA and DEC have already been set 8 int get2mass_3star_full ( Stars **star, char *line, int Nmax) {8 int get2mass_3star_full (Measure *measure, char *line, int Nmax) { 9 9 10 10 char *ptr; … … 17 17 ptr = next2MASSfield (ptr); // dec (assumed to be already set) 18 18 ptr = next2MASSfield (ptr); // err_maj 19 star[0][0].measure.FWx = ToShortPixels(strtod (ptr, NULL));19 measure[0].FWx = ToShortPixels(strtod (ptr, NULL)); 20 20 ptr = next2MASSfield (ptr); // err_min 21 star[0][0].measure.FWy = ToShortPixels(strtod (ptr, NULL));21 measure[0].FWy = ToShortPixels(strtod (ptr, NULL)); 22 22 ptr = next2MASSfield (ptr); // err_ang 23 star[0][0].measure.theta = ToShortPixels(strtod (ptr, NULL));24 25 star[2][0].measure.FWx = star[1][0].measure.FWx = star[0][0].measure.FWx;26 star[2][0].measure.FWy = star[1][0].measure.FWy = star[0][0].measure.FWy;27 star[2][0].measure.theta = star[1][0].measure.theta = star[0][0].measure.theta;23 measure[0].theta = ToShortPixels(strtod (ptr, NULL)); 24 25 measure[2].FWx = measure[1].FWx = measure[0].FWx; 26 measure[2].FWy = measure[1].FWy = measure[0].FWy; 27 measure[2].theta = measure[1].theta = measure[0].theta; 28 28 29 29 ptr = next2MASSfield (ptr); // designation (skip) 30 30 31 31 ptr = next2MASSfield (ptr); // j_m 32 star[0][0].measure.M = strtod (ptr, NULL);32 measure[0].M = strtod (ptr, NULL); 33 33 ptr = next2MASSfield (ptr); // j_cmsig 34 star[0][0].measure.dM = strtod (ptr, NULL);34 measure[0].dM = strtod (ptr, NULL); 35 35 ptr = next2MASSfield (ptr); // j_msigcom 36 36 dMfull = strtod (ptr, NULL); 37 star[0][0].measure.dMcal = sqrt (SQ(dMfull) - SQ(star[0][0].measure.dM));37 measure[0].dMcal = sqrt (SQ(dMfull) - SQ(measure[0].dM)); 38 38 ptr = next2MASSfield (ptr); // j_snr (skip) 39 39 40 40 ptr = next2MASSfield (ptr); // h_m 41 star[1][0].measure.M = strtod (ptr, NULL);41 measure[1].M = strtod (ptr, NULL); 42 42 ptr = next2MASSfield (ptr); // h_cmsig 43 star[1][0].measure.dM = strtod (ptr, NULL);43 measure[1].dM = strtod (ptr, NULL); 44 44 ptr = next2MASSfield (ptr); // h_msigcom 45 45 dMfull = strtod (ptr, NULL); 46 star[1][0].measure.dMcal = sqrt (SQ(dMfull) - SQ(star[1][0].measure.dM));46 measure[1].dMcal = sqrt (SQ(dMfull) - SQ(measure[1].dM)); 47 47 ptr = next2MASSfield (ptr); // h_snr (skip) 48 48 49 49 ptr = next2MASSfield (ptr); // k_m 50 star[2][0].measure.M = strtod (ptr, NULL);50 measure[2].M = strtod (ptr, NULL); 51 51 ptr = next2MASSfield (ptr); // k_cmsig 52 star[2][0].measure.dM = strtod (ptr, NULL);52 measure[2].dM = strtod (ptr, NULL); 53 53 ptr = next2MASSfield (ptr); // k_msigcom 54 54 dMfull = strtod (ptr, NULL); 55 star[2][0].measure.dMcal = sqrt (SQ(dMfull) - SQ(star[2][0].measure.dM));55 measure[2].dMcal = sqrt (SQ(dMfull) - SQ(measure[2].dM)); 56 56 ptr = next2MASSfield (ptr); // k_snr (skip) 57 57 58 star[2][0].measure.photFlags = star[1][0].measure.photFlags = star[0][0].measure.photFlags = 0;58 measure[2].photFlags = measure[1].photFlags = measure[0].photFlags = 0; 59 59 60 60 ptr = next2MASSfield (ptr); // ph_qual 61 set2MASS_ph_qual ( star[0], ptr[0]);62 set2MASS_ph_qual ( star[1], ptr[1]);63 set2MASS_ph_qual ( star[2], ptr[2]);61 set2MASS_ph_qual (&measure[0], ptr[0]); 62 set2MASS_ph_qual (&measure[1], ptr[1]); 63 set2MASS_ph_qual (&measure[2], ptr[2]); 64 64 65 65 ptr = next2MASSfield (ptr); // rd_flg 66 set2MASS_rd_flag ( star[0], ptr[0]);67 set2MASS_rd_flag ( star[1], ptr[1]);68 set2MASS_rd_flag ( star[2], ptr[2]);66 set2MASS_rd_flag (&measure[0], ptr[0]); 67 set2MASS_rd_flag (&measure[1], ptr[1]); 68 set2MASS_rd_flag (&measure[2], ptr[2]); 69 69 70 70 ptr = next2MASSfield (ptr); // bl_flg 71 set2MASS_bl_flag ( star[0], ptr[0]);72 set2MASS_bl_flag ( star[1], ptr[1]);73 set2MASS_bl_flag ( star[2], ptr[2]);71 set2MASS_bl_flag (&measure[0], ptr[0]); 72 set2MASS_bl_flag (&measure[1], ptr[1]); 73 set2MASS_bl_flag (&measure[2], ptr[2]); 74 74 75 75 ptr = next2MASSfield (ptr); // cc_flg 76 set2MASS_cc_flag ( star[0], ptr[0]);77 set2MASS_cc_flag ( star[1], ptr[1]);78 set2MASS_cc_flag ( star[2], ptr[2]);76 set2MASS_cc_flag (&measure[0], ptr[0]); 77 set2MASS_cc_flag (&measure[1], ptr[1]); 78 set2MASS_cc_flag (&measure[2], ptr[2]); 79 79 80 80 ptr = next2MASSfield (ptr); // ndet (skip for now, XXX use somehow?) … … 84 84 85 85 ptr = next2MASSfield (ptr); // gal_contam (one flag for all filters) 86 set2MASS_gal_flag ( star[0], ptr[0]);87 set2MASS_gal_flag ( star[1], ptr[0]);88 set2MASS_gal_flag ( star[2], ptr[0]);86 set2MASS_gal_flag (&measure[0], ptr[0]); 87 set2MASS_gal_flag (&measure[1], ptr[0]); 88 set2MASS_gal_flag (&measure[2], ptr[0]); 89 89 90 90 ptr = next2MASSfield (ptr); // mp_flg (one flag for all filters) 91 set2MASS_mp_flag ( star[0], ptr[0]);92 set2MASS_mp_flag ( star[1], ptr[0]);93 set2MASS_mp_flag ( star[2], ptr[0]);91 set2MASS_mp_flag (&measure[0], ptr[0]); 92 set2MASS_mp_flag (&measure[1], ptr[0]); 93 set2MASS_mp_flag (&measure[2], ptr[0]); 94 94 95 95 ptr = next2MASSfield (ptr); // pts_key (skip for now, XXX use somehow?) … … 101 101 102 102 ptr = next2MASSfield (ptr); // x_scan 103 star[0][0].measure.Xccd = strtod (ptr, NULL);104 star[2][0].measure.Xccd = star[1][0].measure.Xccd = star[0][0].measure.Xccd;103 measure[0].Xccd = strtod (ptr, NULL); 104 measure[2].Xccd = measure[1].Xccd = measure[0].Xccd; 105 105 106 106 ptr = next2MASSfield (ptr); // jdate (julian date) 107 107 jd = strtod (ptr, NULL); 108 star[0][0].measure.t = ohana_jd_to_sec (jd);109 star[2][0].measure.t = star[1][0].measure.t = star[0][0].measure.t;108 measure[0].t = ohana_jd_to_sec (jd); 109 measure[2].t = measure[1].t = measure[0].t; 110 110 111 111 ptr = next2MASSfield (ptr); // j_psfchi 112 star[0][0].measure.psfChisq = strtod (ptr, NULL);112 measure[0].psfChisq = strtod (ptr, NULL); 113 113 ptr = next2MASSfield (ptr); // h_psfchi 114 star[1][0].measure.psfChisq = strtod (ptr, NULL);114 measure[1].psfChisq = strtod (ptr, NULL); 115 115 ptr = next2MASSfield (ptr); // k_psfchi 116 star[2][0].measure.psfChisq = strtod (ptr, NULL);116 measure[2].psfChisq = strtod (ptr, NULL); 117 117 118 118 ptr = next2MASSfield (ptr); // j_m_stdap 119 star[0][0].measure.Map = strtod (ptr, NULL);119 measure[0].Map = strtod (ptr, NULL); 120 120 ptr = next2MASSfield (ptr); // j_msig_stdap (skip?) 121 121 122 122 ptr = next2MASSfield (ptr); // h_m_stdap 123 star[1][0].measure.Map = strtod (ptr, NULL);123 measure[1].Map = strtod (ptr, NULL); 124 124 ptr = next2MASSfield (ptr); // h_msig_stdap (skip?) 125 125 126 126 ptr = next2MASSfield (ptr); // k_m_stdap 127 star[2][0].measure.Map = strtod (ptr, NULL);127 measure[2].Map = strtod (ptr, NULL); 128 128 ptr = next2MASSfield (ptr); // k_msig_stdap (skip?) 129 129 … … 133 133 134 134 ptr = next2MASSfield (ptr); // dup_src (one flag for all filters) 135 set2MASS_dup_flag ( star[0], ptr[0]);136 set2MASS_dup_flag ( star[1], ptr[0]);137 set2MASS_dup_flag ( star[2], ptr[0]);135 set2MASS_dup_flag (&measure[0], ptr[0]); 136 set2MASS_dup_flag (&measure[1], ptr[0]); 137 set2MASS_dup_flag (&measure[2], ptr[0]); 138 138 139 139 ptr = next2MASSfield (ptr); // use_src (one flag for all filters) 140 set2MASS_use_flag ( star[0], ptr[0]);141 set2MASS_use_flag ( star[1], ptr[0]);142 set2MASS_use_flag ( star[2], ptr[0]);143 144 star[0][0].measure.photcode = TM_J;145 star[0][0].measure.detID = 0;146 star[0][0].measure.imageID = 0;147 148 star[1][0].measure.photcode = TM_H;149 star[1][0].measure.detID = 0;150 star[1][0].measure.imageID = 0;151 152 star[2][0].measure.photcode = TM_K;153 star[2][0].measure.detID = 0;154 star[2][0].measure.imageID = 0;140 set2MASS_use_flag (&measure[0], ptr[0]); 141 set2MASS_use_flag (&measure[1], ptr[0]); 142 set2MASS_use_flag (&measure[2], ptr[0]); 143 144 measure[0].photcode = TM_J; 145 measure[0].detID = 0; 146 measure[0].imageID = 0; 147 148 measure[1].photcode = TM_H; 149 measure[1].detID = 0; 150 measure[1].imageID = 0; 151 152 measure[2].photcode = TM_K; 153 measure[2].detID = 0; 154 measure[2].imageID = 0; 155 155 156 156 return TRUE; … … 170 170 } 171 171 172 int set2MASS_ph_qual ( Stars *star, char qual) {173 174 switch (qual) { 175 case 'A': star[0].measure.photFlags |= 0x00000001; break; // was: 0x0004176 case 'B': star[0].measure.photFlags |= 0x00000002; break; // was: 0x0005177 case 'C': star[0].measure.photFlags |= 0x00000004; break; // was: 0x0006178 case 'D': star[0].measure.photFlags |= 0x00000008; break; // was: 0x0007179 case 'E': star[0].measure.photFlags |= 0x00000010; break; // was: 0x0003180 case 'F': star[0].measure.photFlags |= 0x00000020; break; // was: 0x0002181 case 'U': star[0].measure.photFlags |= 0x00000040; break; // was: 0x0001182 case 'X': star[0].measure.photFlags |= 0x00000080; break; // was: 0x0000172 int set2MASS_ph_qual (Measure *measure, char qual) { 173 174 switch (qual) { 175 case 'A': measure[0].photFlags |= 0x00000001; break; // was: 0x0004 176 case 'B': measure[0].photFlags |= 0x00000002; break; // was: 0x0005 177 case 'C': measure[0].photFlags |= 0x00000004; break; // was: 0x0006 178 case 'D': measure[0].photFlags |= 0x00000008; break; // was: 0x0007 179 case 'E': measure[0].photFlags |= 0x00000010; break; // was: 0x0003 180 case 'F': measure[0].photFlags |= 0x00000020; break; // was: 0x0002 181 case 'U': measure[0].photFlags |= 0x00000040; break; // was: 0x0001 182 case 'X': measure[0].photFlags |= 0x00000080; break; // was: 0x0000 183 183 default: 184 184 fprintf (stderr, "error!\n"); … … 188 188 } 189 189 190 int set2MASS_rd_flag ( Stars *star, char qual) {191 192 switch (qual) { 193 case '0': star[0].measure.photFlags |= 0x00000100; break; // was: 0x0000194 case '1': star[0].measure.photFlags |= 0x00000200; break; // was: 0x0010195 case '2': star[0].measure.photFlags |= 0x00000400; break; // was: 0x0020196 case '3': star[0].measure.photFlags |= 0x00000800; break; // was: 0x0030197 case '4': star[0].measure.photFlags |= 0x00001000; break; // was: 0x0040198 case '6': star[0].measure.photFlags |= 0x00002000; break; // was: 0x0050199 case '9': star[0].measure.photFlags |= 0x00004000; break; // was: 0x0060190 int set2MASS_rd_flag (Measure *measure, char qual) { 191 192 switch (qual) { 193 case '0': measure[0].photFlags |= 0x00000100; break; // was: 0x0000 194 case '1': measure[0].photFlags |= 0x00000200; break; // was: 0x0010 195 case '2': measure[0].photFlags |= 0x00000400; break; // was: 0x0020 196 case '3': measure[0].photFlags |= 0x00000800; break; // was: 0x0030 197 case '4': measure[0].photFlags |= 0x00001000; break; // was: 0x0040 198 case '6': measure[0].photFlags |= 0x00002000; break; // was: 0x0050 199 case '9': measure[0].photFlags |= 0x00004000; break; // was: 0x0060 200 200 default: 201 201 fprintf (stderr, "error!\n"); … … 205 205 } 206 206 207 int set2MASS_cc_flag ( Stars *star, char qual) {208 209 switch (qual) { 210 case 'p': star[0].measure.photFlags |= 0x00010000; break; // was: 0x0000211 case 'c': star[0].measure.photFlags |= 0x00020000; break; // was: 0x0100212 case 'd': star[0].measure.photFlags |= 0x00040000; break; // was: 0x0200213 case 's': star[0].measure.photFlags |= 0x00080000; break; // was: 0x0300214 case 'b': star[0].measure.photFlags |= 0x00010000; break; // was: 0x0400215 case '0': star[0].measure.photFlags |= 0x00020000; break; // was: 0x0500207 int set2MASS_cc_flag (Measure *measure, char qual) { 208 209 switch (qual) { 210 case 'p': measure[0].photFlags |= 0x00010000; break; // was: 0x0000 211 case 'c': measure[0].photFlags |= 0x00020000; break; // was: 0x0100 212 case 'd': measure[0].photFlags |= 0x00040000; break; // was: 0x0200 213 case 's': measure[0].photFlags |= 0x00080000; break; // was: 0x0300 214 case 'b': measure[0].photFlags |= 0x00010000; break; // was: 0x0400 215 case '0': measure[0].photFlags |= 0x00020000; break; // was: 0x0500 216 216 default: 217 217 fprintf (stderr, "error!\n"); … … 221 221 } 222 222 223 int set2MASS_bl_flag ( Stars *star, char qual) {224 225 switch (qual) { 226 case '0': star[0].measure.photFlags &= ~0x00300000; break; // was: ~0x0008227 case '1': star[0].measure.photFlags |= 0x00100000; break; // was: ~0x0008228 default: star[0].measure.photFlags |= 0x00200000; break; // was: 0x0008229 } 230 return (TRUE); 231 } 232 233 int set2MASS_gal_flag ( Stars *star, char qual) {234 235 switch (qual) { 236 case '0': star[0].measure.photFlags &= ~0x00c00000; break; // was: ~0x0080237 case '1': star[0].measure.photFlags |= 0x00400000; break; // was: ~0x0080238 default: star[0].measure.photFlags |= 0x00800000; // was: 0x0080239 star[0].measure.extNsigma = 100.0;223 int set2MASS_bl_flag (Measure *measure, char qual) { 224 225 switch (qual) { 226 case '0': measure[0].photFlags &= ~0x00300000; break; // was: ~0x0008 227 case '1': measure[0].photFlags |= 0x00100000; break; // was: ~0x0008 228 default: measure[0].photFlags |= 0x00200000; break; // was: 0x0008 229 } 230 return (TRUE); 231 } 232 233 int set2MASS_gal_flag (Measure *measure, char qual) { 234 235 switch (qual) { 236 case '0': measure[0].photFlags &= ~0x00c00000; break; // was: ~0x0080 237 case '1': measure[0].photFlags |= 0x00400000; break; // was: ~0x0080 238 default: measure[0].photFlags |= 0x00800000; // was: 0x0080 239 measure[0].extNsigma = 100.0; 240 240 break; 241 241 } … … 243 243 } 244 244 245 int set2MASS_mp_flag ( Stars *star, char qual) {246 247 switch (qual) { 248 case '0': star[0].measure.photFlags &= ~0x03000000; break; // was: ~0x0800249 case '1': star[0].measure.photFlags |= 0x01000000; break; // was: ~0x0800250 default: star[0].measure.photFlags |= 0x02000000; break; // was: 0x0800251 } 252 return (TRUE); 253 } 254 255 int set2MASS_dup_flag ( Stars *star, char qual) {256 257 switch (qual) { 258 case '0': star[0].measure.photFlags &= ~0x0c000000; break; // was: ~0x1000259 case '1': star[0].measure.photFlags |= 0x04000000; break; // was: ~0x1000260 default: star[0].measure.photFlags |= 0x08000000; break; // was: 0x1000261 } 262 return (TRUE); 263 } 264 265 int set2MASS_use_flag ( Stars *star, char qual) {266 267 switch (qual) { 268 case '0': star[0].measure.photFlags &= ~0x10000000; break; // was: ~0x2000269 case '1': star[0].measure.photFlags |= 0x10000000; break; // was: 0x2000245 int set2MASS_mp_flag (Measure *measure, char qual) { 246 247 switch (qual) { 248 case '0': measure[0].photFlags &= ~0x03000000; break; // was: ~0x0800 249 case '1': measure[0].photFlags |= 0x01000000; break; // was: ~0x0800 250 default: measure[0].photFlags |= 0x02000000; break; // was: 0x0800 251 } 252 return (TRUE); 253 } 254 255 int set2MASS_dup_flag (Measure *measure, char qual) { 256 257 switch (qual) { 258 case '0': measure[0].photFlags &= ~0x0c000000; break; // was: ~0x1000 259 case '1': measure[0].photFlags |= 0x04000000; break; // was: ~0x1000 260 default: measure[0].photFlags |= 0x08000000; break; // was: 0x1000 261 } 262 return (TRUE); 263 } 264 265 int set2MASS_use_flag (Measure *measure, char qual) { 266 267 switch (qual) { 268 case '0': measure[0].photFlags &= ~0x10000000; break; // was: ~0x2000 269 case '1': measure[0].photFlags |= 0x10000000; break; // was: 0x2000 270 270 default: abort(); 271 271 } -
trunk/Ohana/src/addstar/src/get2mass_ops.c
r34088 r38986 36 36 } 37 37 38 # if (0) 38 39 // fill in the data for a single star. takes a pointer to the start of the line 39 40 int get2mass_star (Stars *star, char *line, int Nmax) { … … 136 137 return TRUE; 137 138 } 139 # endif 138 140 139 141 // fill in the coords for a single star. takes a pointer to the start of the line -
trunk/Ohana/src/addstar/src/getgsc.c
r38467 r38986 4 4 # define DNSTARS 1000 5 5 6 static short GSC_M;7 6 static SkyTable *sky = NULL; 8 7 9 Stars *getgsc (SkyRegion *patch, unsigned int *NSTARS) { 8 static short int GSC_M; 9 10 Catalog *getgsc (SkyRegion *patch) { 10 11 11 unsigned int i, Ngsc, Nstars; 12 Stars *gsc; 13 Stars *stars; 12 unsigned int i; 14 13 SkyList *skylist; 15 14 … … 23 22 skylist = SkyListByPatch (sky, -1, patch); 24 23 25 Nstars = 0; 26 ALLOCATE (stars, Stars, 1); 27 24 Catalog *catalog = NULL; 25 ALLOCATE (catalog, Catalog, 1); 26 dvo_catalog_init (catalog, TRUE); 27 ALLOCATE (catalog->average, Average, 1); 28 ALLOCATE (catalog->measure, Measure, 1); 29 ALLOCATE (catalog->lensing, Lensing, 1); 30 31 SkyRegion region; 32 region.Rmin = 0.0; 33 region.Rmax = 360.0; 34 region.Dmin = -90.0; 35 region.Dmax = +90.0; 36 28 37 for (i = 0; i < skylist[0].Nregions; i++) { 29 gsc = rd_gsc (skylist[0].filename[i], &Ngsc);38 Catalog *newcat = rd_gsc (skylist[0].filename[i]); 30 39 31 REALLOCATE (stars, Stars, MAX (1, Nstars + Ngsc)); 32 memcpy (&stars[Nstars], gsc, Ngsc*sizeof(Stars)); 33 Nstars += Ngsc; 34 35 free (gsc); 40 AddstarClientOptions matchOptions; 41 matchOptions.radius = 0.4; // tight radius at this stage 42 matchOptions.calibrate = FALSE; 43 matchOptions.only_match = FALSE; 44 matchOptions.nosort = FALSE; 45 matchOptions.photcode = 0; // use an invalid photcode to avoid touching secfilt 46 47 find_matches_closest (®ion, newcat, catalog, matchOptions); 48 49 if (newcat) { 50 dvo_catalog_free (newcat); 51 free (newcat); 52 } 36 53 } 37 54 38 // XXX don't free because we only load it once and save it39 55 SkyListFree (skylist); 40 // SkyTableFree (sky);41 56 42 if (VERBOSE) fprintf (stderr, "%d stars from HST GSC\n", Nstars); 43 *NSTARS = Nstars; 44 return (stars); 57 if (VERBOSE) fprintf (stderr, "%d stars from HST GSC\n", (int) catalog->Naverage); 58 return (catalog); 45 59 } 46 60 47 Stars *rd_gsc (char *filename, unsigned int *nstars) {61 Catalog *rd_gsc (char *filename) { 48 62 49 int i, N STARS, Nstars, Nbytes, nbytes, Nline, Nbyte;63 int i, Nbytes, nbytes, Nline, Nbyte; 50 64 char *buffer; 51 65 FILE *f; 52 Stars *stars;53 66 54 Nstars = 0; 55 NSTARS = 1000; 56 ALLOCATE (stars, Stars, NSTARS); 67 int Nave = 0; 68 int Nmeas = 0; 69 int NAVE = 1000; 70 int NMEAS = 1000; 71 72 Catalog *catalog = NULL; 73 ALLOCATE (catalog, Catalog, 1); 74 dvo_catalog_init (catalog, TRUE); 75 ALLOCATE (catalog->average, Average, NAVE); 76 ALLOCATE (catalog->measure, Measure, NMEAS); 57 77 58 78 f = fopen (filename, "r"); … … 68 88 for (i = 0; i < Nline; i++) { 69 89 70 InitStar (&stars[Nstars]); 90 dvo_average_init (&catalog->average[Nave]); 91 dvo_measure_init (&catalog->measure[Nmeas]); 71 92 72 93 Nbyte = i*BYTES_STAR; 73 dparse (& stars[Nstars].average.R, 1, &buffer[Nbyte]);74 dparse (& stars[Nstars].average.D, 2, &buffer[Nbyte]);94 dparse (&catalog->average[Nave].R, 1, &buffer[Nbyte]); 95 dparse (&catalog->average[Nave].D, 2, &buffer[Nbyte]); 75 96 76 if ( stars[Nstars].average.R < UserPatch.Rmin) continue;77 if ( stars[Nstars].average.R > UserPatch.Rmax) continue;78 if ( stars[Nstars].average.D < UserPatch.Dmin) continue;79 if ( stars[Nstars].average.D > UserPatch.Dmax) continue;97 if (catalog->average[Nave].R < UserPatch.Rmin) continue; 98 if (catalog->average[Nave].R > UserPatch.Rmax) continue; 99 if (catalog->average[Nave].D < UserPatch.Dmin) continue; 100 if (catalog->average[Nave].D > UserPatch.Dmax) continue; 80 101 81 stars[Nstars].measure.R = stars[Nstars].average.R;82 stars[Nstars].measure.D = stars[Nstars].average.D;102 catalog->measure[Nmeas].R = catalog->average[Nave].R; 103 catalog->measure[Nmeas].D = catalog->average[Nave].D; 83 104 84 fparse (& stars[Nstars].measure.M, 3, &buffer[Nbyte]);85 stars[Nstars].measure.dM= NAN;86 stars[Nstars].measure.photcode= GSC_M;87 stars[Nstars].measure.t= 0;105 fparse (&catalog->measure[Nmeas].M, 3, &buffer[Nbyte]); 106 catalog->measure[Nmeas].dM = NAN; 107 catalog->measure[Nmeas].photcode = GSC_M; 108 catalog->measure[Nmeas].t = 0; 88 109 89 Nstars ++; 90 CHECK_REALLOCATE (stars, Stars, NSTARS, Nstars, 1000); 110 catalog->average[Nave].Nmeasure = 1; 111 catalog->average[Nave].measureOffset = Nmeas; 112 113 Nave ++; 114 Nmeas ++; 115 116 CHECK_REALLOCATE (catalog->average, Average, NAVE, Nave, 1000); 117 CHECK_REALLOCATE (catalog->measure, Measure, NMEAS, Nmeas, 1000); 91 118 } 92 119 } 93 120 fclose (f); 94 121 free (buffer); 95 REALLOCATE (stars, Stars, Nstars); 96 *nstars = Nstars; 97 return (stars); 122 return (catalog); 98 123 } -
trunk/Ohana/src/addstar/src/getusno.c
r38467 r38986 4 4 # define NELEM 3 5 5 6 Stars *getusno (SkyRegion *catstats, int photcode, unsigned int *nstars) {6 Catalog *getusno (SkyRegion *catstats) { 7 7 8 8 off_t offset; … … 15 15 double dec; 16 16 int spd, spd_start, spd_end; 17 int NUSNO, Nusno;18 Stars *stars;19 17 short int USNO_RED, USNO_BLUE; 20 18 … … 22 20 NAMED_PHOTCODE (USNO_RED, "USNO_RED"); 23 21 NAMED_PHOTCODE (USNO_BLUE, "USNO_BLUE"); 24 if (photcode == USNO_RED) goto good_code;25 if (photcode == USNO_BLUE) goto good_code;26 Shutdown ("USNO photcode not specified");27 good_code:28 22 29 23 /* identify ra & dec range of interest */ … … 43 37 } 44 38 45 Nusno = 0; 46 NUSNO = 5000; 47 ALLOCATE (stars, Stars, NUSNO); 39 int Nave = 0; 40 int Nmeas = 0; 41 int NAVE = 1000; 42 int NMEAS = 1000; 43 44 Catalog *catalog = NULL; 45 ALLOCATE (catalog, Catalog, 1); 46 dvo_catalog_init (catalog, TRUE); 47 ALLOCATE (catalog->average, Average, NAVE); 48 ALLOCATE (catalog->measure, Measure, NMEAS); 48 49 49 50 for (spd = spd_start; spd < spd_end; spd += 75) { … … 110 111 if (buf[1] > iDEC1) continue; 111 112 112 InitStar (&stars[Nusno]); 113 dvo_average_init (&catalog->average[Nave]); 114 dvo_measure_init (&catalog->measure[Nmeas+0]); 115 dvo_measure_init (&catalog->measure[Nmeas+1]); 113 116 114 stars[Nusno].average.R = buf[0]/360000.0; 115 stars[Nusno].average.D = buf[1]/360000.0 - 90.0; 116 stars[Nusno].measure.R = stars[Nusno].average.R; 117 stars[Nusno].measure.D = stars[Nusno].average.D; 118 stars[Nusno].measure.dM = NAN; 117 catalog->average[Nave].R = buf[0]/360000.0; 118 catalog->average[Nave].D = buf[1]/360000.0 - 90.0; 119 119 120 /* one pass of addstar does either r or b */ 121 if (photcode == USNO_RED) { 122 stars[Nusno].measure.photcode = USNO_RED; 123 stars[Nusno].measure.M = fabs (0.1*(buf[2] - 1000*((int)(buf[2]/1000)))); 124 } 125 if (photcode == USNO_BLUE) { 126 stars[Nusno].measure.photcode = USNO_BLUE; 127 stars[Nusno].measure.M = fabs (0.1*((int)(buf[2] - 1000000*((int)(buf[2]/1000000))) / 1000)); 128 } 129 Nusno ++; 130 CHECK_REALLOCATE (stars, Stars, NUSNO, Nusno, 5000); 120 catalog->measure[Nmeas+0].R = catalog->average[Nave].R; 121 catalog->measure[Nmeas+0].D = catalog->average[Nave].D; 122 catalog->measure[Nmeas+0].dM = NAN; 123 catalog->measure[Nmeas+1].R = catalog->average[Nave].R; 124 catalog->measure[Nmeas+1].D = catalog->average[Nave].D; 125 catalog->measure[Nmeas+1].dM = NAN; 126 127 catalog->measure[Nmeas+0].photcode = USNO_RED; 128 catalog->measure[Nmeas+0].M = fabs (0.1*(buf[2] - 1000*((int)(buf[2]/1000)))); 129 catalog->measure[Nmeas+1].photcode = USNO_BLUE; 130 catalog->measure[Nmeas+1].M = fabs (0.1*((int)(buf[2] - 1000000*((int)(buf[2]/1000000))) / 1000)); 131 132 catalog->average[Nave].Nmeasure = 2; 133 catalog->average[Nave].measureOffset = Nmeas; 134 135 Nave ++; 136 Nmeas += 2; 137 138 CHECK_REALLOCATE (catalog->average, Average, NAVE, Nave, 1000); 139 CHECK_REALLOCATE (catalog->measure, Measure, NMEAS, Nmeas, 1000); 131 140 } 132 141 free (buffer); 133 142 fclose (f); 134 143 } 135 REALLOCATE (stars, Stars, Nusno); 144 catalog->Naverage = Nave; 145 catalog->Nmeasure = Nmeas; 136 146 137 *nstars = Nusno; 138 if (VERBOSE) fprintf (stderr, "%d stars from USNO 1.0\n", Nusno); 139 return (stars); 147 if (VERBOSE) fprintf (stderr, "%d stars from USNO 1.0\n", Nave); 148 return (catalog); 140 149 } 141 150 -
trunk/Ohana/src/addstar/src/getusnob.c
r38467 r38986 3 3 # define NELEM 20 4 4 5 Stars *getusnob (SkyRegion *catstats, int photcode, unsigned int *nstars) {5 Catalog *getusnob (SkyRegion *catstats) { 6 6 7 7 off_t offset; 8 int i, bin, first, last, nitems, Nitems, Nbins, Nitemsum;8 int i, j, bin, first, last, nitems, Nitems, Nbins, Nitemsum; 9 9 float hours[100]; 10 10 int start[100], number[100], *buffer, *buf; … … 15 15 int iDEC0, iDEC1, iRA0, iRA1; 16 16 int spd, spd_start, spd_end; 17 int NUSNO, Nusno, Nstars;18 17 short int USNO_RED, USNO_BLUE, USNO_N; 19 18 e_time USNOepoch; 20 Stars *stars;21 19 22 20 m1 = m2 = 0.0; … … 26 24 NAMED_PHOTCODE (USNO_BLUE, "USNO_BLUE"); 27 25 NAMED_PHOTCODE (USNO_N, "USNO_N"); 28 if (photcode == USNO_RED) goto good_code;29 if (photcode == USNO_BLUE) goto good_code;30 if (photcode == USNO_N) goto good_code;31 Shutdown ("USNO photcode not specified");32 good_code:33 26 34 27 fprintf (stderr, "loading USNO-B 1.0\n"); … … 52 45 53 46 Nitemsum = 0; 54 Nusno = 0; 55 NUSNO = 5000; 56 ALLOCATE (stars, Stars, NUSNO); 47 48 int Nave = 0; 49 int Nmeas = 0; 50 int NAVE = 1000; 51 int NMEAS = 1000; 52 53 Catalog *catalog = NULL; 54 ALLOCATE (catalog, Catalog, 1); 55 dvo_catalog_init (catalog, TRUE); 56 ALLOCATE (catalog->average, Average, NAVE); 57 ALLOCATE (catalog->measure, Measure, NMEAS); 57 58 58 59 for (spd = spd_start; spd < spd_end; spd ++) { … … 96 97 97 98 /* sum the number of stars in data segment of interest */ 98 Nstars = 0;99 int Nstars = 0; 99 100 for (bin = first; bin < last; bin++) { 100 101 Nstars += number[bin]; … … 125 126 /* USNO coords are reported for J2000 / epoch 2000.0 */ 126 127 /* extract the basic stellar data */ 127 InitStar (&stars[Nusno]); 128 dvo_average_init (&catalog->average[Nave]); 129 dvo_measure_init (&catalog->measure[Nmeas+0]); 130 dvo_measure_init (&catalog->measure[Nmeas+1]); 128 131 129 stars[Nusno].average.R = buf[0]/360000.0;130 stars[Nusno].average.D = buf[1]/360000.0 - 90.0;132 catalog->average[Nave].R = buf[0]/360000.0; 133 catalog->average[Nave].D = buf[1]/360000.0 - 90.0; 131 134 132 135 /* XXX uR cos(D) or just uR ??? */ 133 stars[Nusno].average.uR = 2.0 * ((buf[2] % 10000) - 5000);134 stars[Nusno].average.uD = 2.0 * ((buf[2]/10000 % 10000) - 5000);136 catalog->average[Nave].uR = 2.0 * ((buf[2] % 10000) - 5000); 137 catalog->average[Nave].uD = 2.0 * ((buf[2]/10000 % 10000) - 5000); 135 138 136 stars[Nusno].average.duR = (buf[3] % 1000); 137 stars[Nusno].average.duD = (buf[3]/1000 % 1000); 138 139 stars[Nusno].average.dR = 0.001 * (buf[4] % 1000); 140 stars[Nusno].average.dD = 0.001 * (buf[4]/1000 % 1000); 141 142 stars[Nusno].average.P = 0; 143 stars[Nusno].average.dP = 0; 144 145 stars[Nusno].measure.R = stars[Nusno].average.R; 146 stars[Nusno].measure.D = stars[Nusno].average.D; 147 148 /* USNO magnitude errors are reported as a fixed 0.3 mag */ 149 stars[Nusno].measure.dM = 0.3; 139 catalog->average[Nave].duR = (buf[3] % 1000); 140 catalog->average[Nave].duD = (buf[3]/1000 % 1000); 141 catalog->average[Nave].dR = 0.001 * (buf[4] % 1000); 142 catalog->average[Nave].dD = 0.001 * (buf[4]/1000 % 1000); 143 catalog->average[Nave].P = 0; 144 catalog->average[Nave].dP = 0; 150 145 151 146 /* USNO-B uses J2000 equinox and 2000.0 epoch for coordinates */ 152 147 /* the magnitudes have no temporal information */ 153 stars[Nusno].measure.t = USNOepoch;154 148 155 /* one pass of addstar does r, b, or n */ 156 if (photcode == USNO_BLUE) { 157 m1 = fabs(0.01 * (buf[5] % 10000)); /* 1st blue mag */ 158 m2 = fabs(0.01 * (buf[7] % 10000)); /* 1st blue mag */ 149 for (j = 0; j < 3; j++) { 150 catalog->measure[Nmeas+j].R = catalog->average[Nave].R; 151 catalog->measure[Nmeas+j].D = catalog->average[Nave].D; 152 catalog->measure[Nmeas+j].dM = 0.3; /* USNO magnitude errors are reported as a fixed 0.3 mag */ 153 catalog->measure[Nmeas+j].t = USNOepoch; 159 154 } 160 if (photcode == USNO_RED) {161 m1 = fabs(0.01 * (buf[6] % 10000)); /* 1st red mag */162 m2 = fabs(0.01 * (buf[8] % 10000)); /* 2nd red mag */163 }164 if (photcode == USNO_N) {165 m1 = fabs(0.01 * (buf[9] % 10000)); /* N (IR) survey */166 m2 = 0;167 }168 stars[Nusno].measure.photcode = photcode;169 155 170 /* if two mags are available, get an average */ 156 catalog->measure[Nmeas+0].photcode = USNO_BLUE; 157 m1 = fabs(0.01 * (buf[5] % 10000)); /* 1st blue mag */ 158 m2 = fabs(0.01 * (buf[7] % 10000)); /* 2nd blue mag */ 171 159 if (m1 && m2) { 172 160 mag = 0.5*(m1 + m2); … … 174 162 mag = (m1) ? m1 : m2; 175 163 } 176 stars[Nusno].measure.M = (mag == 0.0) ? 32.0 : mag;164 catalog->measure[Nmeas+0].M = (mag == 0.0) ? 32.0 : mag; 177 165 178 Nusno ++; 179 CHECK_REALLOCATE (stars, Stars, NUSNO, Nusno, 5000); 166 catalog->measure[Nmeas+1].photcode = USNO_RED; 167 m1 = fabs(0.01 * (buf[6] % 10000)); /* 1st red mag */ 168 m2 = fabs(0.01 * (buf[8] % 10000)); /* 2nd red mag */ 169 if (m1 && m2) { 170 mag = 0.5*(m1 + m2); 171 } else { 172 mag = (m1) ? m1 : m2; 173 } 174 catalog->measure[Nmeas+1].M = (mag == 0.0) ? 32.0 : mag; 175 176 catalog->measure[Nmeas+2].photcode = USNO_N; 177 catalog->measure[Nmeas+2].M = fabs(0.01 * (buf[9] % 10000)); /* N (IR) survey */ 178 179 catalog->average[Nave].Nmeasure = 3; 180 catalog->average[Nave].measureOffset = Nmeas; 181 182 Nave ++; 183 Nmeas += 3; 184 185 CHECK_REALLOCATE (catalog->average, Average, NAVE, Nave, 1000); 186 CHECK_REALLOCATE (catalog->measure, Measure, NMEAS, Nmeas, 1000); 180 187 } 181 188 free (buffer); 182 189 Nitemsum += Nitems; 183 if (VERBOSE) fprintf (stderr, "N usno: %d, Nitems: %d, Nitemsum : %d, Nbytes stars: %d\n", Nusno, Nitems, Nitemsum, (unsigned int) (Nusno*sizeof(Stars)));190 if (VERBOSE) fprintf (stderr, "Naverage: %d, Nitems: %d, Nitemsum : %d\n", Nave, Nitems, Nitemsum); 184 191 fclose (f); 185 192 } 193 catalog->Naverage = Nave; 194 catalog->Nmeasure = Nmeas; 186 195 187 REALLOCATE (stars, Stars, MAX (1, Nusno)); 188 189 *nstars = Nusno; 190 if (VERBOSE) fprintf (stderr, "%d stars from USNO-B 1.0\n", Nusno); 191 return (stars); 196 if (VERBOSE) fprintf (stderr, "%d stars from USNO-B 1.0\n", Nave); 197 return (catalog); 192 198 } -
trunk/Ohana/src/addstar/src/greference.c
r38467 r38986 3 3 # define LOAD_DR2 1 4 4 5 Stars *greference (char *Refcat, SkyRegion *region, int photcode, unsigned int *nstars) {5 Catalog *greference (char *Refcat, SkyRegion *region, int photcode) { 6 6 7 unsigned int Nstars; 8 Stars *stars; 7 Catalog *catalog = NULL; 9 8 10 9 if (VERBOSE) fprintf (stderr, "loading reference catalog data from %s\n", Refcat); 11 10 if (VERBOSE) fprintf (stderr, "full region: %f - %f, %f - %f\n", region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax); 12 11 13 Nstars = 0; 14 stars = NULL; 15 12 /* get stars from HST GSC for the given region */ 13 if (!strcasecmp (Refcat, "GSC")) { 14 catalog = getgsc (region); 15 } 16 16 17 /* get stars from USNO for the given region */ 17 18 if (!strcasecmp (Refcat, "USNO")) { 18 stars = getusno (region, photcode, &Nstars);19 catalog = getusno (region); 19 20 } 20 21 21 22 /* get stars from the USNO B catalog for the given region */ 22 23 if (!strcasecmp (Refcat, "USNOB")) { 23 stars = getusnob (region, photcode, &Nstars);24 catalog = getusnob (region); 24 25 } 25 26 26 27 /* get stars from the Tycho catalog for the given region */ 27 28 if (!strcasecmp (Refcat, "TYCHO")) { 28 // stars = gettycho2 (region, photcode, &Nstars);29 29 fprintf (stderr, "Tycho load via addstar is deprecated: use loadtycho\n"); 30 30 exit (2); … … 33 33 /* get stars from the Tycho catalog for the given region (old ingest) */ 34 34 if (!strcasecmp (Refcat, "TYCHO_OLD")) { 35 // stars = gettycho (region, photcode, &Nstars);36 35 fprintf (stderr, "Tycho load via addstar is deprecated: use loadtycho\n"); 37 36 exit (2); 38 37 } 39 38 40 /* get stars from HST GSC for the given region */41 if (!strcasecmp (Refcat, "GSC")) {42 stars = getgsc (region, &Nstars);43 }44 45 39 /* get stars from 2MASS for the given region */ 46 40 if (!strcasecmp (Refcat, "2MASS")) { 47 // stars = get2mass (region, photcode, LOAD_ALLSKY, &Nstars);48 41 fprintf (stderr, "2MASS load via addstar is deprecated: use load2mass\n"); 49 42 exit (2); … … 52 45 /* get stars from 2MASS for the given region */ 53 46 if (!strcasecmp (Refcat, "2MASS-ALLSKY")) { 54 // stars = get2mass (region, photcode, LOAD_ALLSKY, &Nstars);55 47 fprintf (stderr, "2MASS load via addstar is deprecated: use load2mass\n"); 56 48 exit (2); … … 59 51 /* get stars from 2MASS for the given region */ 60 52 if (!strcasecmp (Refcat, "2MASS-DR2")) { 61 // stars = get2mass (region, photcode, LOAD_DR2, &Nstars);62 53 fprintf (stderr, "2MASS load via addstar is deprecated: use load2mass\n"); 63 54 exit (2); 64 55 } 65 56 66 if (VERBOSE && ( Nstars== 0)) fprintf (stderr, "no ref objects in region %s\n", region[0].name);57 if (VERBOSE && (catalog->Naverage == 0)) fprintf (stderr, "no ref objects in region %s\n", region[0].name); 67 58 68 *nstars = Nstars; 69 return (stars); 70 59 return (catalog); 71 60 } -
trunk/Ohana/src/addstar/src/grefstars.c
r38467 r38986 2 2 3 3 /* read ASCII file with ref star data */ 4 Stars *grefstars (char *file, int photcode, unsigned int *Nstars) {4 Catalog *grefstars (char *file, int photcode) { 5 5 6 6 FILE *f; 7 int N, NSTARS; 8 Stars *stars; 7 int NSTARS; 9 8 char line[256]; 10 9 … … 13 12 if (f == NULL) Shutdown ("can't read data from %s", file); 14 13 15 NSTARS = 100; 16 ALLOCATE (stars, Stars, NSTARS); 14 NSTARS = 1000; 15 16 Catalog *catalog = NULL; 17 ALLOCATE (catalog, Catalog, 1); 18 dvo_catalog_init (catalog, TRUE); 19 ALLOCATE (catalog->average, Average, NSTARS); 20 ALLOCATE (catalog->measure, Measure, NSTARS); 17 21 18 22 /* read in stars line-by-line */ 19 for (N = 0; scan_line (f, line) != EOF; N++) { 23 int N = 0; 24 while (scan_line (f, line) != EOF) { 20 25 stripwhite (line); 21 26 if (line[0] == 0) continue; 22 27 if (line[0] == '#') continue; 23 28 24 InitStar (&stars[N]); 29 dvo_average_init (&catalog->average[N]); 30 dvo_measure_init (&catalog->measure[N]); 25 31 26 32 int status = sscanf (line, "%lf %lf %f %f %x", 27 &stars[N].average.R, &stars[N].average.D, 28 &stars[N].measure.M, &stars[N].measure.dM, 29 &stars[N].measure.photFlags); 33 &catalog->average[N].R, &catalog->average[N].D, 34 &catalog->measure[N].M, &catalog->measure[N].dM, 35 &catalog->measure[N].photFlags); 36 30 37 if ((status != 4) && (status != 5)) { 31 38 fprintf (stderr, "error reading line: %s\n", line); 32 N --;33 39 continue; 34 40 } 35 stars[N].average.R = ohana_normalize_angle (stars[N].average.R);41 catalog->average[N].R = ohana_normalize_angle (catalog->average[N].R); 36 42 37 stars[N].measure.R = stars[N].average.R;38 stars[N].measure.D = stars[N].average.D;43 catalog->measure[N].R = catalog->average[N].R; 44 catalog->measure[N].D = catalog->average[N].D; 39 45 40 stars[N].measure.photcode = photcode;46 catalog->measure[N].photcode = photcode; 41 47 42 CHECK_REALLOCATE (stars, Stars, NSTARS, N+1, 100); 48 catalog->average[N].Nmeasure = 1; 49 catalog->average[N].measureOffset = N; 50 51 N++; 52 CHECK_REALLOCATE (catalog->average, Average, NSTARS, N, 1000); 53 CHECK_REALLOCATE (catalog->measure, Measure, NSTARS, N, 1000); 43 54 } 44 *Nstars = N; 45 return (stars); 55 catalog->Naverage = N; 56 catalog->Nmeasure = N; 57 return (catalog); 46 58 } -
trunk/Ohana/src/addstar/src/load2mass.c
r25757 r38986 12 12 13 13 // need to construct these options with args_load2mass... 14 SetSignals (); 14 15 options = ConfigInit (&argc, argv); 15 16 options = args_load2mass (argc, argv, options); -
trunk/Ohana/src/addstar/src/load2mass_as_rawdata.c
r38471 r38986 12 12 int load2mass_as_rawdata (SkyList *skytable, char *filename, AddstarClientOptions options) { 13 13 14 int i, j, verbose;15 int N stars, NSTARS, Ntstars, NTSTARS;14 int i, j, k, verbose; 15 int Ntstars, NTSTARS; 16 16 int Nbyte, Nextra, offset; 17 17 … … 21 21 char *buffer, *p, *q; 22 22 23 Stars **stars; // this is an array of pointers to be consistent with input to find_match_refstars24 23 TMStars *tstars; 25 24 SkyList *skylist; … … 117 116 if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]); 118 117 119 // collect array of (Stars *) stars in a new output catalog 120 Nstars = 0; 121 NSTARS = 3000; 122 ALLOCATE (stars, Stars *, NSTARS); 118 int Nave = 0; 119 int Nmeas = 0; 120 int NAVE = 1000; 121 int NMEAS = 3000; 122 123 Catalog *newcat = NULL; 124 ALLOCATE (newcat, Catalog, 1); 125 dvo_catalog_init (newcat, TRUE); 126 ALLOCATE (newcat->average, Average, NAVE); 127 ALLOCATE (newcat->measure, Measure, NMEAS); 123 128 124 129 // loop over stars in this 2mass region that are also in this output region … … 140 145 offset = tstars[j].offset; 141 146 142 ALLOCATE (stars[Nstars+0], Stars, 1); 143 ALLOCATE (stars[Nstars+1], Stars, 1); 144 ALLOCATE (stars[Nstars+2], Stars, 1); 145 146 InitStar (stars[Nstars+0]); 147 InitStar (stars[Nstars+1]); 148 InitStar (stars[Nstars+2]); 149 150 stars[Nstars+0][0].average.R = tstars[j].R; 151 stars[Nstars+0][0].average.D = tstars[j].D; 152 stars[Nstars+1][0].average.R = tstars[j].R; 153 stars[Nstars+1][0].average.D = tstars[j].D; 154 stars[Nstars+2][0].average.R = tstars[j].R; 155 stars[Nstars+2][0].average.D = tstars[j].D; 156 get2mass_3star_full (&stars[Nstars], &buffer[offset], Nbyte - offset); 147 dvo_average_init (&newcat->average[Nave]); 148 for (k = 0; k < 4; k++) { 149 dvo_measure_init (&newcat->measure[Nmeas+k]); 150 } 151 152 newcat->average[Nave].R = tstars[j].R; 153 newcat->average[Nave].D = tstars[j].D; 154 get2mass_3star_full (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset); 157 155 158 156 tstars[j].flag = TRUE; 159 157 160 Nstars += 3; 161 if (Nstars >= NSTARS - 3) { 162 NSTARS += 3000; 163 REALLOCATE (stars, Stars *, NSTARS); 164 } 165 } 166 167 if (!Nstars) { 168 free (stars); 158 newcat->average[Nave].Nmeasure = 3; 159 newcat->average[Nave].measureOffset = Nmeas; 160 161 Nave ++; 162 Nmeas += 3; 163 164 CHECK_REALLOCATE (newcat->average, Average, NAVE, Nave, 1000); 165 CHECK_REALLOCATE (newcat->measure, Measure, NMEAS, Nmeas, 3000); 166 } 167 newcat->Naverage = Nave; 168 newcat->Nmeasure = Nmeas; 169 170 if (!newcat->Naverage) { 171 dvo_catalog_free (newcat); 172 free (newcat); 169 173 continue; 170 174 } 171 175 172 if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 176 if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", 177 (int) newcat->Naverage, 173 178 region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax); 174 179 … … 193 198 // assume no input star matches an existing star 194 199 // simply add to the existing table 195 // load2mass_catalog (&catalog, stars, Nstars);196 find_matches_refstars (skylist[0].regions[0], stars, Nstars, &catalog, options); 197 // load2mass_catalog (&catalog, stars, Nstars);198 199 dvo_catalog_save (&catalog, VERBOSE);200 dvo_catalog_unlock (&catalog);200 find_matches_refstars (skylist[0].regions[0], newcat, &catalog, options); 201 202 SetProtect (TRUE); 203 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 204 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 205 SetProtect (FALSE); 201 206 dvo_catalog_free (&catalog); 202 // free (catalog.filename);203 // XXX don't free this! it points to an element of the skytable204 207 } 205 208 206 209 SkyListFree (skylist); 207 for (j = 0; j < Nstars; j++) free (stars[j]);208 free ( stars);210 dvo_catalog_free (newcat); 211 free (newcat); 209 212 VERBOSE = verbose; 210 213 } -
trunk/Ohana/src/addstar/src/loadICRF.c
r37807 r38986 16 16 AddstarClientOptions options; 17 17 18 SetSignals (); 18 19 options = ConfigInit (&argc, argv); 19 20 options = args_loadICRF (&argc, argv, options); // XXX fix args after rest is done -
trunk/Ohana/src/addstar/src/loadICRF_catalog.c
r38471 r38986 22 22 find_matches_ICRF (region, stars, Nstars, &catalog, options); 23 23 24 dvo_catalog_save (&catalog, VERBOSE); 25 dvo_catalog_unlock (&catalog); 24 SetProtect (TRUE); 25 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 26 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 27 SetProtect (FALSE); 28 26 29 dvo_catalog_free (&catalog); 27 30 -
trunk/Ohana/src/addstar/src/loadICRF_client.c
r37807 r38986 7 7 8 8 // need to construct these options with args_loadICRF... 9 SetSignals (); 9 10 options = ConfigInit (&argc, argv); 10 11 options = args_loadICRF_client (&argc, argv, options); -
trunk/Ohana/src/addstar/src/loadgalphot.c
r38600 r38986 13 13 14 14 // need to construct these options with args_loadgalphot... 15 SetSignals (); 15 16 options = ConfigInit (&argc, argv); 16 17 options = args_loadgalphot (&argc, argv, options); -
trunk/Ohana/src/addstar/src/loadgalphot_catalog.c
r38553 r38986 22 22 find_matches_galphot (region, stars, Nstars, &catalog, options); 23 23 24 dvo_catalog_save (&catalog, VERBOSE); 25 dvo_catalog_unlock (&catalog); 24 SetProtect (TRUE); 25 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 26 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 27 SetProtect (FALSE); 28 26 29 dvo_catalog_free (&catalog); 27 30 -
trunk/Ohana/src/addstar/src/loadstarpar.c
r37807 r38986 17 17 18 18 // need to construct these options with args_loadstarpar... 19 SetSignals (); 19 20 options = ConfigInit (&argc, argv); 20 options = args_loadstarpar ( argc, argv, options);21 options = args_loadstarpar (&argc, argv, options); 21 22 22 23 // load the full sky description table (dvodb must exist) … … 24 25 SkyTableSetFilenames (sky, CATDIR, "cpt"); 25 26 27 // make the tmpdir if needed 28 if (!loadstarpar_tmpdir()) exit (1); 29 26 30 // load the list of hosts 27 31 HostTable *hosts = NULL; -
trunk/Ohana/src/addstar/src/loadstarpar_catalog.c
r38471 r38986 22 22 find_matches_starpar (region, stars, Nstars, &catalog, options); 23 23 24 dvo_catalog_save (&catalog, VERBOSE); 25 dvo_catalog_unlock (&catalog); 24 SetProtect (TRUE); 25 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 26 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 27 SetProtect (FALSE); 28 26 29 dvo_catalog_free (&catalog); 27 30 -
trunk/Ohana/src/addstar/src/loadstarpar_client.c
r37807 r38986 7 7 8 8 // need to construct these options with args_loadstarpar... 9 SetSignals (); 9 10 options = ConfigInit (&argc, argv); 10 options = args_loadstarpar_client ( argc, argv, options);11 options = args_loadstarpar_client (&argc, argv, options); 11 12 12 13 // client is called with a pointer to the file to be loaded … … 20 21 StarPar_Stars *stars = loadstarpar_load_stars (INPUT, &Nstars); 21 22 22 loadstarpar_catalog (stars, Nstars, skylist->regions[0], CPT_FILE, &options); 23 char filename[DVO_MAX_PATH]; 24 snprintf (filename, DVO_MAX_PATH, "%s/%s.cpt", HOSTDIR, CPT_FILE); 25 26 loadstarpar_catalog (stars, Nstars, skylist->regions[0], filename, &options); 23 27 24 28 free (stars); -
trunk/Ohana/src/addstar/src/loadstarpar_io.c
r37807 r38986 29 29 gfits_define_bintable_column (&theader, "D", "DEC", "", "degree", 1.0, 0.0); 30 30 gfits_define_bintable_column (&theader, "E", "GLON", "", "degree", 1.0, 0.0); 31 gfits_define_bintable_column (&theader, " D", "GLAT", "", "degree", 1.0, 0.0);31 gfits_define_bintable_column (&theader, "E", "GLAT", "", "degree", 1.0, 0.0); 32 32 gfits_define_bintable_column (&theader, "E", "Ebv", "", "", 1.0, 0.0); 33 33 gfits_define_bintable_column (&theader, "E", "dEbv", "", "", 1.0, 0.0); … … 84 84 gfits_free_table (&ftable); 85 85 86 fflush (f); 87 fclose (f); 88 86 89 return TRUE; 87 90 } 88 91 89 92 90 # define GET_COLUMN(OUT,NAME,TYPE ) \93 # define GET_COLUMN(OUT,NAME,TYPE,RTYPE) \ 91 94 TYPE *OUT = gfits_get_bintable_column_data (&theader, &ftable, NAME, type, &Nrow, &Ncol); \ 92 myAssert (!strcmp(type, # TYPE), "wrong column type");95 myAssert (!strcmp(type, #RTYPE), "wrong column type"); 93 96 94 97 StarPar_Stars *loadstarpar_load_stars (char *filename, int *nstars) { … … 134 137 if (!gfits_fread_ftable_data (f, &ftable, FALSE)) goto escape; 135 138 136 GET_COLUMN(ra , "RA" , double );137 GET_COLUMN(dec , "DEC" , double );138 GET_COLUMN(glon , "GLON" , float );139 GET_COLUMN(glat , "GLAT" , float );140 GET_COLUMN(Ebv , "Ebv" , float );141 GET_COLUMN(dEbv , "dEbv" , float );142 GET_COLUMN(DistMag , "DistMag" , float );143 GET_COLUMN(dDistMag, "dDistMag" , float );144 GET_COLUMN(M_r , "M_r" , float );145 GET_COLUMN(dM_r , "dM_r" , float );146 GET_COLUMN(FeH , "FeH" , float );147 GET_COLUMN(dFeH , "dFeH" , float );148 GET_COLUMN(averef , "averef" , unsigned int );149 GET_COLUMN(objID , "objID" , unsigned int );150 GET_COLUMN(catID , "catID" , unsigned int );139 GET_COLUMN(ra , "RA" , double , double ); 140 GET_COLUMN(dec , "DEC" , double , double ); 141 GET_COLUMN(glon , "GLON" , float , float ); 142 GET_COLUMN(glat , "GLAT" , float , float ); 143 GET_COLUMN(Ebv , "Ebv" , float , float ); 144 GET_COLUMN(dEbv , "dEbv" , float , float ); 145 GET_COLUMN(DistMag , "DistMag" , float , float ); 146 GET_COLUMN(dDistMag, "dDistMag" , float , float ); 147 GET_COLUMN(M_r , "M_r" , float , float ); 148 GET_COLUMN(dM_r , "dM_r" , float , float ); 149 GET_COLUMN(FeH , "FeH" , float , float ); 150 GET_COLUMN(dFeH , "dFeH" , float , float ); 151 GET_COLUMN(averef , "averef" , unsigned int, int ); 152 GET_COLUMN(objID , "objID" , unsigned int, int ); 153 GET_COLUMN(catID , "catID" , unsigned int, int ); 151 154 152 155 gfits_free_header (&theader); -
trunk/Ohana/src/addstar/src/loadstarpar_readstars.c
r37807 r38986 47 47 char type[16]; 48 48 49 GET_COLUMN (gl at, "l", float);50 GET_COLUMN (gl on, "b", float);49 GET_COLUMN (glon, "l", float); 50 GET_COLUMN (glat, "b", float); 51 51 GET_COLUMN (conv, "conv", byte); 52 52 GET_COLUMN (lnZ, "lnZ", float); -
trunk/Ohana/src/addstar/src/loadstarpar_save_remote.c
r38441 r38986 18 18 19 19 // save to a unique filename 20 char filename[ 1024]; // CATDIR/tmpdir/starpar.PID.index.fits21 snprintf (filename, 1024, "%s/tmpdir/starpar.%s.%05d.fits", CATDIR, uniquer, region->index);20 char filename[DVO_MAX_PATH]; // CATDIR/tmpdir/starpar.PID.index.fits 21 snprintf (filename, DVO_MAX_PATH, "%s/tmpdir/starpar.%s.%05d.fits", CATDIR, uniquer, region->index); 22 22 23 23 // write the data to the given FITS file … … 57 57 strextend (&command, "-input %s", filename); 58 58 59 if (options->only_match) strextend (&command, "-only-match"); 60 if (options->replace) strextend (&command, "-replace"); 61 62 fprintf (stderr, "command: %s\n", command); 63 59 64 // launch the job on the remote machine (no handshake) 60 65 int errorInfo = 0; -
trunk/Ohana/src/addstar/src/loadsupercos.c
r38441 r38986 15 15 int i, status; 16 16 SkyTable *sky; 17 SkyList *skylist = NULL;18 17 AddstarClientOptions options; 19 18 FITS_DB db; 20 19 21 20 // need to construct these options with args_loadWISE... 21 SetSignals (); 22 22 options = ConfigInit (&argc, argv); 23 23 options = args_loadsupercos (&argc, argv, options); … … 27 27 SkyTableSetFilenames (sky, CATDIR, "cpt"); 28 28 29 // generate the subset matching the user-selected region30 skylist = SkyListByPatch (sky, -1, &UserPatch);31 32 // if we only match to existing (already populated) regions, limit the select to those regions:33 if (options.existing_regions) {34 SkyList *tmp;35 tmp = SkyListExistingSubset (skylist, CATDIR);36 SkyListFree (skylist);37 skylist = tmp;38 }39 40 29 // load the images table (needed regardless) 41 30 int Nsurvey = 0; … … 68 57 for (i = 3; i < argc; i++) { 69 58 fprintf (stderr, "loading %s\n", argv[i]); 70 loadsupercos_rawdata (image, imlist, Nimage, sky list, argv[i], options);59 loadsupercos_rawdata (image, imlist, Nimage, sky, argv[i], options); 71 60 } 72 61 exit (0); -
trunk/Ohana/src/addstar/src/loadsupercos_ops.c
r37036 r38986 79 79 } 80 80 81 int loadsupercos_sortStars (Stars *tstars, int Ntstars) {82 83 # define SWAPFUNC(A,B){ Stars temp = tstars[A]; tstars[A] = tstars[B]; tstars[B] = temp; }84 # define COMPARE(A,B)(tstars[A].average.R < tstars[B].average.R)85 86 OHANA_SORT (Ntstars, COMPARE, SWAPFUNC);87 88 # undef SWAPFUNC89 # undef COMPARE90 91 return TRUE;92 }93 94 81 int *loadsupercos_image_index (Image *image, int Nimage) { 95 82 -
trunk/Ohana/src/addstar/src/loadsupercos_rawdata.c
r38471 r38986 6 6 # define DEBUG 0 7 7 8 int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, Sky List*skytable, char *filename, AddstarClientOptions options) {8 int loadsupercos_rawdata (Image *image, int *imlist, int Nimage, SkyTable *skytable, char *filename, AddstarClientOptions options) { 9 9 10 int i , j, verbose;11 int N stars, NSTARS, Nrecords;10 int i; 11 int Nrecords; 12 12 13 13 FILE *f; … … 15 15 16 16 Detection *sstars; 17 Stars **stars, *tstars;18 SkyList *skylist;19 SkyRegion *region;20 17 Catalog catalog; 21 18 … … 26 23 if (f == NULL) Shutdown ("can't read the Supercosmos data file: %s", filename); 27 24 28 ALLOCATE (tstars, Stars, NRECORDS);29 25 ALLOCATE (sstars, Detection, NRECORDS); 30 26 … … 33 29 double Dmin = +90.0; 34 30 double Dmax = -90.0; 31 32 Catalog *newcat = NULL; 33 ALLOCATE (newcat, Catalog, 1); 34 dvo_catalog_init (newcat, TRUE); 35 ALLOCATE (newcat->average, Average, NRECORDS); 36 ALLOCATE (newcat->measure, Measure, NRECORDS); 35 37 36 38 while ((Nrecords = fread (buffer, NBYTE, NRECORDS, f)) != 0) { … … 62 64 // convert to the Stars format 63 65 for (i = 0; i < Nrecords; i++) { 64 InitStar (&tstars[i]);65 tstars[i].measure.Xccd = sstars[i].xCen;66 tstars[i].measure.Yccd = sstars[i].yCen;67 66 68 tstars[i].measure.M = sstars[i].sMag; 69 tstars[i].measure.Map = sstars[i].gMag; 70 tstars[i].measure.photFlags = sstars[i].class; 67 dvo_average_init (&newcat->average[i]); 68 dvo_measure_init (&newcat->measure[i]); 71 69 72 tstars[i].average.R = sstars[i].ra;73 tstars[i].average.D = sstars[i].dec;70 newcat->measure[i].Xccd = sstars[i].xCen; 71 newcat->measure[i].Yccd = sstars[i].yCen; 74 72 75 tstars[i].measure.R = sstars[i].ra; 76 tstars[i].measure.D = sstars[i].dec; 73 newcat->measure[i].M = sstars[i].sMag; 74 newcat->measure[i].Map = sstars[i].gMag; 75 newcat->measure[i].photFlags = sstars[i].class; 76 77 newcat->average[i].R = sstars[i].ra; 78 newcat->average[i].D = sstars[i].dec; 79 80 newcat->measure[i].R = sstars[i].ra; 81 newcat->measure[i].D = sstars[i].dec; 77 82 78 83 int Ni = imlist[sstars[i].plateID]; … … 80 85 81 86 // XXX fix these 82 tstars[i].measure.Mcal = 0.0;83 tstars[i].measure.dt = image[Ni].exptime;87 newcat->measure[i].Mcal = 0.0; 88 newcat->measure[i].dt = image[Ni].exptime; 84 89 85 90 double sidtime = image[Ni].sidtime; … … 87 92 88 93 double alt, az; 89 altaz (&alt, &az, 15.0*sidtime - tstars[i].average.R, tstars[i].average.D, latitude);94 altaz (&alt, &az, 15.0*sidtime - newcat->average[i].R, newcat->average[i].D, latitude); 90 95 91 tstars[i].measure.airmass = 1.0 / cos(RAD_DEG*alt);92 tstars[i].measure.az = az;93 tstars[i].measure.t = image[Ni].tzero;94 tstars[i].measure.imageID = image[Ni].imageID;95 tstars[i].measure.photcode = image[Ni].photcode;96 newcat->measure[i].airmass = 1.0 / cos(RAD_DEG*alt); 97 newcat->measure[i].az = az; 98 newcat->measure[i].t = image[Ni].tzero; 99 newcat->measure[i].imageID = image[Ni].imageID; 100 newcat->measure[i].photcode = image[Ni].photcode; 96 101 97 tstars[i].measure.FWx = ToShortPixels(sstars[i].aU);98 tstars[i].measure.FWy = ToShortPixels(sstars[i].bU);99 tstars[i].measure.theta = ToShortDegrees(sstars[i].thetaU);102 newcat->measure[i].FWx = ToShortPixels(sstars[i].aU); 103 newcat->measure[i].FWy = ToShortPixels(sstars[i].bU); 104 newcat->measure[i].theta = ToShortDegrees(sstars[i].thetaU); 100 105 101 Rmin = MIN (Rmin, tstars[i].average.R);102 Rmax = MAX (Rmax, tstars[i].average.R);103 Dmin = MIN (Dmin, tstars[i].average.D);104 Dmax = MAX (Dmax, tstars[i].average.D);106 Rmin = MIN (Rmin, newcat->average[i].R); 107 Rmax = MAX (Rmax, newcat->average[i].R); 108 Dmin = MIN (Dmin, newcat->average[i].D); 109 Dmax = MAX (Dmax, newcat->average[i].D); 105 110 } 106 111 107 112 if (VERBOSE) fprintf (stderr, "scan %d stars (%10.6f - %10.6f, %10.6f - %10.6f) .. ", Nrecords, Rmin, Rmax, Dmin, Dmax); 108 113 109 // sort the tstars by RA 110 loadsupercos_sortStars (tstars, Nrecords); 114 SkyList *skylist = SkyListForStars (skytable, -1, newcat); 111 115 112 // scan through the stars, loading the containing catalogs 113 // skip through table for unsaved stars 114 for (i = 0; i < Nrecords; i++) { 115 if (tstars[i].found != -1) continue; 116 for (i = 0; i < skylist[0].Nregions; i++) { 117 // now we have all of the loaded stars in this catalog 118 dvo_catalog_init (&catalog, TRUE); 119 catalog.filename = skylist[0].filename[0]; 120 catalog.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data 121 catalog.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data 122 catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT; 123 catalog.Nsecfilt = GetPhotcodeNsecfilt (); 116 124 117 // scan forward until we reach the UserPatch (stars sorted by RA) 118 if (tstars[i].average.R < UserPatch.Rmin) continue; 119 if (tstars[i].average.R > UserPatch.Rmax) break; 120 if (tstars[i].average.D < UserPatch.Dmin) continue; 121 if (tstars[i].average.D > UserPatch.Dmax) continue; 122 123 // identify the relevant catalog 124 skylist = SkyRegionByPoint_List (skytable, -1, tstars[i].average.R, tstars[i].average.D); 125 if (skylist[0].Nregions == 0) { 126 SkyListFree (skylist); 127 continue; 128 } 129 region = skylist[0].regions[0]; 130 if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]); 131 132 int this_image_id = tstars[i].measure.imageID; 133 134 // loop over stars in this WISE region that are also in this output region 135 Nstars = 0; 136 NSTARS = 1000; 137 ALLOCATE (stars, Stars *, NSTARS); 138 139 for (j = i; j < Nrecords; j++) { 140 if (tstars[j].found != -1) continue; 141 142 if (tstars[j].measure.imageID != this_image_id) continue; 143 144 // check if in skyregion 145 if (tstars[j].average.R < region[0].Rmin) continue; 146 if (tstars[j].average.R > region[0].Rmax) break; 147 if (tstars[j].average.D < region[0].Dmin) continue; 148 if (tstars[j].average.D > region[0].Dmax) continue; 149 150 // check if in UserPatch 151 if (tstars[j].average.R < UserPatch.Rmin) continue; 152 if (tstars[j].average.R > UserPatch.Rmax) break; 153 if (tstars[j].average.D < UserPatch.Dmin) continue; 154 if (tstars[j].average.D > UserPatch.Dmax) continue; 155 156 stars[Nstars] = &tstars[j]; 157 Nstars ++; 158 159 CHECK_REALLOCATE (stars, Stars *, NSTARS, Nstars, 1000); 160 } 161 162 if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 163 region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax); 164 165 if (1) { 166 verbose = VERBOSE; 167 VERBOSE = FALSE; 168 169 // now we have all of the loaded stars in this catalog 170 dvo_catalog_init (&catalog, TRUE); 171 catalog.filename = skylist[0].filename[0]; 172 catalog.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data 173 catalog.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data 174 catalog.catflags = DVO_LOAD_AVERAGE | DVO_LOAD_MEASURE | DVO_LOAD_MISSING | DVO_LOAD_SECFILT; 175 catalog.Nsecfilt = GetPhotcodeNsecfilt (); 176 177 // an error exit status here is a significant error 178 if (!dvo_catalog_open (&catalog, skylist[0].regions[0], VERBOSE, "w")) { 179 fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename); 180 exit (2); 181 } 182 183 // assume no input star matches an existing star 184 // simply add to the existing table 185 // loadWISE_catalog (&catalog, stars, Nstars); 186 find_matches_refstars (skylist[0].regions[0], stars, Nstars, &catalog, options); 187 // loadWISE_catalog (&catalog, stars, Nstars); 188 189 dvo_catalog_save (&catalog, VERBOSE); 190 dvo_catalog_unlock (&catalog); 191 dvo_catalog_free (&catalog); 192 // free (catalog.filename); 193 // XXX don't free this! it points to an element of the skytable 125 // an error exit status here is a significant error 126 if (!dvo_catalog_open (&catalog, skylist[0].regions[0], VERBOSE, "w")) { 127 fprintf (stderr, "ERROR: failure to open/create catalog file %s\n", catalog.filename); 128 exit (2); 194 129 } 195 130 196 SkyListFree (skylist); 131 // assume no input star matches an existing star 132 // simply add to the existing table 133 find_matches_refstars (skylist[0].regions[0], newcat, &catalog, options); 197 134 198 free (stars); 199 VERBOSE = verbose; 135 SetProtect (TRUE); 136 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 137 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 138 SetProtect (FALSE); 139 140 dvo_catalog_free (&catalog); 200 141 } 142 143 SkyListFree (skylist); 144 dvo_catalog_free (newcat); 145 free (newcat); 146 201 147 if (VERBOSE) fprintf (stderr, "done\n"); 202 148 } … … 204 150 if (VERBOSE) fprintf (stderr, "\n"); 205 151 206 free (tstars);207 152 free (sstars); 208 153 … … 225 170 */ 226 171 172 173 174 175 176 177 178 179 180 181 182 183 184 -
trunk/Ohana/src/addstar/src/loadtycho.c
r38467 r38986 20 20 21 21 // need to construct these options with args_loadtycho... 22 SetSignals (); 22 23 options = ConfigInit (&argc, argv); 23 24 options = args_loadtycho (&argc, argv, options); -
trunk/Ohana/src/addstar/src/loadtycho_rawdata.c
r38471 r38986 22 22 23 23 Tycho_Stars *tstars; 24 Stars *stars, **starrefs; // this is an array of pointers to be consistent with input to find_match_refstars25 24 SkyList *skylist; 26 25 SkyRegion *region; … … 87 86 if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]); 88 87 89 // collect array of (Stars *) stars in a new output catalog 90 int Nstars = 0; 91 int NSTARS = (NGROUP*1000); 92 ALLOCATE (stars, Stars, NSTARS); 88 int Nave = 0; 89 int Nmeas = 0; 90 int NAVE = 1000; 91 int NMEAS = 4000; 92 93 Catalog *newcat = NULL; 94 ALLOCATE (newcat, Catalog, 1); 95 dvo_catalog_init (newcat, TRUE); 96 ALLOCATE (newcat->average, Average, NAVE); 97 ALLOCATE (newcat->measure, Measure, NMEAS); 93 98 94 99 // loop over stars in this WISE region that are also in this output region … … 108 113 if (tstars[j].average.D > UserPatch.Dmax) continue; 109 114 110 for (k = 0; k < NGROUP; k++) { 111 stars[Nstars+k].average = tstars[j].average; 112 stars[Nstars+k].measure = tstars[j].measure[k]; 113 stars[Nstars+k].found = -1; 114 } 115 dvo_average_init (&newcat->average[Nave]); 116 newcat->average[Nave] = tstars[j].average; 117 for (k = 0; k < NGROUP; k++) { 118 dvo_measure_init (&newcat->measure[Nmeas + k]); 119 newcat->measure[Nmeas + k] = tstars[j].measure[k]; 120 } 115 121 tstars[j].flag = TRUE; 116 122 117 Nstars += NGROUP; 118 if (Nstars >= NSTARS - NGROUP) { 119 NSTARS += (NGROUP*1000); 120 REALLOCATE (stars, Stars, NSTARS); 121 } 123 newcat->average[Nave].Nmeasure = NGROUP; 124 newcat->average[Nave].measureOffset = Nmeas; 125 126 Nave ++; 127 Nmeas += NGROUP; 128 129 CHECK_REALLOCATE (newcat->average, Average, NAVE, Nave, 1000); 130 CHECK_REALLOCATE (newcat->measure, Measure, NMEAS, Nmeas + NGROUP, 4000); 122 131 } 132 newcat->Naverage = Nave; 133 newcat->Nmeasure = Nmeas; 123 134 124 ALLOCATE (starrefs, Stars *, NSTARS); 125 for (j = 0; j < Nstars; j++) { 126 starrefs[j] = &stars[j]; 135 if (!newcat->Naverage) { 136 dvo_catalog_free (newcat); 137 free (newcat); 138 continue; 127 139 } 128 140 … … 145 157 // assume no input star matches an existing star 146 158 // simply add to the existing table 147 find_matches_closest_refstars(region, starrefs, Nstars, &catalog, options);159 find_matches_closest_refstars(region, newcat, &catalog, options); 148 160 149 dvo_catalog_save (&catalog, verbose); 150 dvo_catalog_unlock (&catalog); 161 SetProtect (TRUE); 162 if (!dvo_catalog_save (&catalog, verbose)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 163 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 164 SetProtect (FALSE); 165 151 166 dvo_catalog_free (&catalog); 152 167 153 168 SkyListFree (skylist); 154 free (stars);155 free ( starrefs);169 dvo_catalog_free (newcat); 170 free (newcat); 156 171 } 157 172 free (tstars); -
trunk/Ohana/src/addstar/src/loadwise.c
r37807 r38986 20 20 21 21 // need to construct these options with args_loadWISE... 22 SetSignals (); 22 23 options = ConfigInit (&argc, argv); 23 24 options = args_loadwise (argc, argv, options); -
trunk/Ohana/src/addstar/src/loadwise_prelim_rawdata.c
r38471 r38986 202 202 // loadWISE_catalog (&catalog, stars, Nstars); 203 203 204 dvo_catalog_save (&catalog, VERBOSE); 205 dvo_catalog_unlock (&catalog); 204 SetProtect (TRUE); 205 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 206 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 207 SetProtect (FALSE); 208 206 209 dvo_catalog_free (&catalog); 207 210 // free (catalog.filename); -
trunk/Ohana/src/addstar/src/loadwise_rawdata.c
r38471 r38986 13 13 14 14 int i, j, k, verbose; 15 int N stars, NSTARS, Ntstars, NTSTARS;15 int Ntstars, NTSTARS; 16 16 int Nbyte, Nextra, offset; 17 17 … … 21 21 char *buffer, *p, *q; 22 22 23 Stars **stars; // this is an array of pointers to be consistent with input to find_match_refstars24 23 WISE_Stars *tstars; 25 24 SkyList *skylist; … … 117 116 if (DEBUG) fprintf (stderr, "writing to %s\n", skylist[0].filename[0]); 118 117 119 // collect array of (Stars *) stars in a new output catalog 120 Nstars = 0; 121 NSTARS = 3000; 122 ALLOCATE (stars, Stars *, NSTARS); 118 int Nave = 0; 119 int Nmeas = 0; 120 int NAVE = 1000; 121 int NMEAS = 4000; 122 123 Catalog *newcat = NULL; 124 ALLOCATE (newcat, Catalog, 1); 125 dvo_catalog_init (newcat, TRUE); 126 ALLOCATE (newcat->average, Average, NAVE); 127 ALLOCATE (newcat->measure, Measure, NMEAS); 123 128 124 129 // loop over stars in this WISE region that are also in this output region … … 140 145 offset = tstars[j].offset; 141 146 147 dvo_average_init (&newcat->average[Nave]); 142 148 for (k = 0; k < 4; k++) { 143 ALLOCATE (stars[Nstars + k], Stars, 1); 144 InitStar (stars[Nstars + k]); 145 stars[Nstars+k][0].average.R = tstars[j].R; 146 stars[Nstars+k][0].average.D = tstars[j].D; 147 stars[Nstars+k][0].measure.R = tstars[j].R; 148 stars[Nstars+k][0].measure.D = tstars[j].D; 149 } 149 dvo_measure_init (&newcat->measure[Nmeas+k]); 150 } 150 151 152 newcat->average[Nave].R = tstars[j].R; 153 newcat->average[Nave].D = tstars[j].D; 154 151 155 switch (MODE) { 152 156 case MODE_PRELIM: 153 loadwise_star_prelim (& stars[Nstars], &buffer[offset], Nbyte - offset);157 loadwise_star_prelim (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset); 154 158 break; 155 159 case MODE_ALLSKY: 156 loadwise_star_allsky (& stars[Nstars], &buffer[offset], Nbyte - offset);160 loadwise_star_allsky (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset); 157 161 break; 158 162 case MODE_ALLWISE: 159 loadwise_star_allwise (& stars[Nstars], &buffer[offset], Nbyte - offset);163 loadwise_star_allwise (&newcat->measure[Nmeas], &buffer[offset], Nbyte - offset); 160 164 break; 161 165 default: … … 165 169 tstars[j].flag = TRUE; 166 170 167 Nstars += 4; 168 if (Nstars >= NSTARS - 4) { 169 NSTARS += 4000; 170 REALLOCATE (stars, Stars *, NSTARS); 171 } 172 } 173 174 if (!Nstars) { 175 free (stars); 171 newcat->average[Nave].Nmeasure = 4; 172 newcat->average[Nave].measureOffset = Nmeas; 173 174 Nave ++; 175 Nmeas += 4; 176 177 CHECK_REALLOCATE (newcat->average, Average, NAVE, Nave, 1000); 178 CHECK_REALLOCATE (newcat->measure, Measure, NMEAS, Nmeas, 4000); 179 } 180 newcat->Naverage = Nave; 181 newcat->Nmeasure = Nmeas; 182 183 if (!newcat->Naverage) { 184 dvo_catalog_free (newcat); 185 free (newcat); 176 186 continue; 177 187 } 178 188 179 if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", Nstars, 189 if (DEBUG) fprintf (stderr, "selected %d stars (%10.6f - %10.6f, %10.6f - %10.6f)\n", 190 (int) newcat->Naverage, 180 191 region[0].Rmin, region[0].Rmax, region[0].Dmin, region[0].Dmax); 181 192 … … 200 211 // assume no input star matches an existing star 201 212 // simply add to the existing table 202 // loadWISE_catalog (&catalog, stars, Nstars);203 find_matches_refstars (skylist[0].regions[0], stars, Nstars, &catalog, options); 204 // loadWISE_catalog (&catalog, stars, Nstars);205 206 dvo_catalog_save (&catalog, VERBOSE);207 dvo_catalog_unlock (&catalog);213 find_matches_refstars (skylist[0].regions[0], newcat, &catalog, options); 214 215 SetProtect (TRUE); 216 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 217 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 218 SetProtect (FALSE); 208 219 dvo_catalog_free (&catalog); 209 // free (catalog.filename);210 // XXX don't free this! it points to an element of the skytable211 220 } 212 221 213 222 SkyListFree (skylist); 214 for (j = 0; j < Nstars; j++) free (stars[j]);215 free ( stars);223 dvo_catalog_free (newcat); 224 free (newcat); 216 225 VERBOSE = verbose; 217 226 } -
trunk/Ohana/src/addstar/src/loadwise_star_full.c
r38062 r38986 2 2 # include "WISE.h" 3 3 4 int setWISE_ph_qual ( Stars *star, char qual);5 int setWISE_var_flag_allsky ( Stars *star, char qual);6 int setWISE_ext_flag_allsky ( Stars **star, char ptr);7 int setWISE_var_flag_prelim ( Stars *star, char qual);8 int setWISE_ext_flag_prelim ( Stars **star, char ptr);9 int setWISE_cc_flag ( Stars *star, char qual);10 int setWISE_sat_flag ( Stars *star, char *ptr);11 int setWISE_blend_flag ( Stars **star, char *ptr);4 int setWISE_ph_qual (Measure *measure, char qual); 5 int setWISE_var_flag_allsky (Measure *measure, char qual); 6 int setWISE_ext_flag_allsky (Measure *measure, char ptr); 7 int setWISE_var_flag_prelim (Measure *measure, char qual); 8 int setWISE_ext_flag_prelim (Measure *measure, char ptr); 9 int setWISE_cc_flag (Measure *measure, char qual); 10 int setWISE_sat_flag (Measure *measure, char *ptr); 11 int setWISE_blend_flag (Measure *measure, char *ptr); 12 12 13 13 // fill in the data for a WISE quad star. takes a pointer to the start of the line the 14 14 // RA and DEC have already been set 15 int loadwise_star_allwise ( Stars **star, char *line, int Nmax) {15 int loadwise_star_allwise (Measure *measure, char *line, int Nmax) { 16 16 17 17 int i; … … 23 23 24 24 // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale 25 star[0][0].measure.posangle = 0.0;26 star[0][0].measure.pltscale = 1.0;25 measure[0].posangle = 0.0; 26 measure[0].pltscale = 1.0; 27 27 28 28 ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: desig, ra, dec, 29 star[0][0].measure.dXccd = ToShortPixels((strtod (ptr, NULL) + 0.005)); // sig_ra -- add 5/1000 to avoid truncation29 measure[0].dXccd = ToShortPixels((strtod (ptr, NULL) + 0.005)); // sig_ra -- add 5/1000 to avoid truncation 30 30 ptr = nextWISEfield (ptr); 31 star[0][0].measure.dYccd = ToShortPixels((strtod (ptr, NULL) + 0.005)); // sig_dec31 measure[0].dYccd = ToShortPixels((strtod (ptr, NULL) + 0.005)); // sig_dec 32 32 ptr = nextWISEfield (ptr); 33 33 34 34 // we only know a single set of values for all 4 bands 35 35 for (i = 1; i < 4; i++) { 36 star[i][0].measure.dXccd = star[0][0].measure.dXccd;37 star[i][0].measure.dYccd = star[0][0].measure.dYccd;38 star[i][0].measure.posangle = star[0][0].measure.posangle;39 star[i][0].measure.pltscale = star[0][0].measure.pltscale;36 measure[i].dXccd = measure[0].dXccd; 37 measure[i].dYccd = measure[0].dYccd; 38 measure[i].posangle = measure[0].posangle; 39 measure[i].pltscale = measure[0].pltscale; 40 40 } 41 41 ptr = skipNbounds (ptr, '|', 5, Nmax); // skip: sig_radec, glon, glat, elon, elat 42 42 43 star[0][0].measure.Xccd = strtod (ptr, NULL); // wx43 measure[0].Xccd = strtod (ptr, NULL); // wx 44 44 ptr = nextWISEfield (ptr); // skip wx 45 star[0][0].measure.Yccd = strtod (ptr, NULL); // wy45 measure[0].Yccd = strtod (ptr, NULL); // wy 46 46 ptr = nextWISEfield (ptr); // skip wy 47 47 48 48 for (i = 1; i < 4; i++) { 49 star[i][0].measure.Xccd = star[0][0].measure.Xccd;50 star[i][0].measure.Yccd = star[0][0].measure.Yccd;49 measure[i].Xccd = measure[0].Xccd; 50 measure[i].Yccd = measure[0].Yccd; 51 51 } 52 52 ptr = skipNbounds (ptr, '|', 4, Nmax); // skip: cntr, source_id, coadd_id, src … … 55 55 for (i = 0; i < 4; i++) { 56 56 char *endpoint; 57 star[i][0].measure.M = strtod (ptr, &endpoint); // w?mpro57 measure[i].M = strtod (ptr, &endpoint); // w?mpro 58 58 if (endpoint == ptr) { 59 star[i][0].measure.M = NAN;59 measure[i].M = NAN; 60 60 } 61 61 ptr = nextWISEfield (ptr); 62 star[i][0].measure.dM = strtod (ptr, &endpoint); // w?sigmpro62 measure[i].dM = strtod (ptr, &endpoint); // w?sigmpro 63 63 if (endpoint == ptr) { 64 star[i][0].measure.dM = NAN;64 measure[i].dM = NAN; 65 65 } 66 66 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr 67 star[i][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi268 star[i][0].measure.psfQF = strtod (ptr, NULL); // w?rchi267 measure[i].psfChisq = strtod (ptr, NULL); // w?rchi2 68 measure[i].psfQF = strtod (ptr, NULL); // w?rchi2 69 69 ptr = nextWISEfield (ptr); // skip : w1rchi2 70 70 71 71 // init the photFlags field 72 star[i][0].measure.photFlags = 0;72 measure[i].photFlags = 0; 73 73 } 74 74 … … 76 76 77 77 // set blend flags for all 4 measures 78 setWISE_blend_flag ( star, ptr); // nb & na both used here78 setWISE_blend_flag (measure, ptr); // nb & na both used here 79 79 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na 80 80 81 81 for (i = 0; i < 4; i++) { 82 setWISE_sat_flag ( star[i], ptr); // w1sat82 setWISE_sat_flag (&measure[i], ptr); // w1sat 83 83 ptr = nextWISEfield (ptr); 84 84 } … … 88 88 89 89 for (i = 0; i < 4; i++) { 90 setWISE_cc_flag ( star[i], ptr[i]); // cc_flags90 setWISE_cc_flag (&measure[i], ptr[i]); // cc_flags 91 91 } 92 92 ptr = nextWISEfield (ptr); // skip cc_flags … … 94 94 95 95 // set ext flags for all 4 measures 96 setWISE_ext_flag_allsky ( star, ptr[0]); // ext_flg96 setWISE_ext_flag_allsky (measure, ptr[0]); // ext_flg 97 97 ptr = nextWISEfield (ptr); // skip ext_flags 98 98 99 99 for (i = 0; i < 4; i++) { 100 setWISE_var_flag_allsky ( star[i], ptr[i]); // var_flg100 setWISE_var_flag_allsky (&measure[i], ptr[i]); // var_flg 101 101 } 102 102 ptr = nextWISEfield (ptr); // skip var_flags 103 103 104 104 for (i = 0; i < 4; i++) { 105 setWISE_ph_qual ( star[i], ptr[i]); // ph_qual105 setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual 106 106 } 107 107 … … 123 123 // the release is based on data taken in the period 14 January 2010 to 29 April 2010 124 124 if (mjdmean == 0.0) { 125 star[i][0].measure.t = 0;125 measure[i].t = 0; 126 126 } else { 127 star[i][0].measure.t = ohana_mjd_to_sec (mjdmean);127 measure[i].t = ohana_mjd_to_sec (mjdmean); 128 128 } 129 129 } 130 130 131 star[0][0].measure.photcode = WISE_W1;132 star[0][0].measure.detID = 0;133 star[0][0].measure.imageID = 0;134 135 star[1][0].measure.photcode = WISE_W2;136 star[1][0].measure.detID = 0;137 star[1][0].measure.imageID = 0;138 139 star[2][0].measure.photcode = WISE_W3;140 star[2][0].measure.detID = 0;141 star[2][0].measure.imageID = 0;142 143 star[3][0].measure.photcode = WISE_W4;144 star[3][0].measure.detID = 0;145 star[3][0].measure.imageID = 0;131 measure[0].photcode = WISE_W1; 132 measure[0].detID = 0; 133 measure[0].imageID = 0; 134 135 measure[1].photcode = WISE_W2; 136 measure[1].detID = 0; 137 measure[1].imageID = 0; 138 139 measure[2].photcode = WISE_W3; 140 measure[2].detID = 0; 141 measure[2].imageID = 0; 142 143 measure[3].photcode = WISE_W4; 144 measure[3].detID = 0; 145 measure[3].imageID = 0; 146 146 147 147 return TRUE; … … 156 156 // fill in the data for a WISE quad star. takes a pointer to the start of the line the 157 157 // RA and DEC have already been set 158 int loadwise_star_allsky ( Stars **star, char *line, int Nmax) {158 int loadwise_star_allsky (Measure *measure, char *line, int Nmax) { 159 159 160 160 int i; … … 166 166 167 167 // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale 168 star[0][0].measure.posangle = 0.0;169 star[0][0].measure.pltscale = 1.0;168 measure[0].posangle = 0.0; 169 measure[0].pltscale = 1.0; 170 170 171 171 ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: desig, ra, dec, 172 star[0][0].measure.dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra172 measure[0].dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra 173 173 ptr = nextWISEfield (ptr); 174 star[0][0].measure.dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec174 measure[0].dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec 175 175 ptr = nextWISEfield (ptr); 176 176 177 177 // we only know a single set of values for all 4 bands 178 178 for (i = 1; i < 4; i++) { 179 star[i][0].measure.dXccd = star[0][0].measure.dXccd;180 star[i][0].measure.dYccd = star[0][0].measure.dYccd;181 star[i][0].measure.posangle = star[0][0].measure.posangle;182 star[i][0].measure.pltscale = star[0][0].measure.pltscale;179 measure[i].dXccd = measure[0].dXccd; 180 measure[i].dYccd = measure[0].dYccd; 181 measure[i].posangle = measure[0].posangle; 182 measure[i].pltscale = measure[0].pltscale; 183 183 } 184 184 ptr = skipNbounds (ptr, '|', 5, Nmax); // skip: sig_radec, glon, glat, elon, elat 185 185 186 star[0][0].measure.Xccd = strtod (ptr, NULL); // wx186 measure[0].Xccd = strtod (ptr, NULL); // wx 187 187 ptr = nextWISEfield (ptr); // skip wx 188 star[0][0].measure.Yccd = strtod (ptr, NULL); // wy188 measure[0].Yccd = strtod (ptr, NULL); // wy 189 189 ptr = nextWISEfield (ptr); // skip wy 190 190 191 191 for (i = 1; i < 4; i++) { 192 star[i][0].measure.Xccd = star[0][0].measure.Xccd;193 star[i][0].measure.Yccd = star[0][0].measure.Yccd;192 measure[i].Xccd = measure[0].Xccd; 193 measure[i].Yccd = measure[0].Yccd; 194 194 } 195 195 ptr = skipNbounds (ptr, '|', 4, Nmax); // skip: cntr, source_id, coadd_id, src … … 198 198 for (i = 0; i < 4; i++) { 199 199 char *endpoint; 200 star[i][0].measure.M = strtod (ptr, &endpoint); // w?mpro200 measure[i].M = strtod (ptr, &endpoint); // w?mpro 201 201 if (endpoint == ptr) { 202 star[i][0].measure.M = NAN;202 measure[i].M = NAN; 203 203 } 204 204 ptr = nextWISEfield (ptr); 205 star[i][0].measure.dM = strtod (ptr, &endpoint); // w?sigmpro205 measure[i].dM = strtod (ptr, &endpoint); // w?sigmpro 206 206 if (endpoint == ptr) { 207 star[i][0].measure.dM = NAN;207 measure[i].dM = NAN; 208 208 } 209 209 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr 210 star[i][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2210 measure[i].psfChisq = strtod (ptr, NULL); // w?rchi2 211 211 ptr = nextWISEfield (ptr); // skip : w1rchi2 212 212 213 213 // init the photFlags field 214 star[i][0].measure.photFlags = 0;214 measure[i].photFlags = 0; 215 215 } 216 216 … … 218 218 219 219 // set blend flags for all 4 measures 220 setWISE_blend_flag ( star, ptr); // nb & na both used here220 setWISE_blend_flag (measure, ptr); // nb & na both used here 221 221 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na 222 222 223 223 for (i = 0; i < 4; i++) { 224 setWISE_sat_flag ( star[i], ptr); // w1sat224 setWISE_sat_flag (&measure[i], ptr); // w1sat 225 225 ptr = nextWISEfield (ptr); 226 226 } … … 228 228 229 229 for (i = 0; i < 4; i++) { 230 setWISE_cc_flag ( star[i], ptr[i]); // cc_flg230 setWISE_cc_flag (&measure[i], ptr[i]); // cc_flg 231 231 } 232 232 ptr = nextWISEfield (ptr); // skip cc_flags 233 233 234 234 // set ext flags for all 4 measures 235 setWISE_ext_flag_allsky ( star, ptr[0]); // ext_flg235 setWISE_ext_flag_allsky (measure, ptr[0]); // ext_flg 236 236 ptr = nextWISEfield (ptr); // skip ext_flags 237 237 238 238 for (i = 0; i < 4; i++) { 239 setWISE_var_flag_allsky ( star[i], ptr[i]); // var_flg239 setWISE_var_flag_allsky (&measure[i], ptr[i]); // var_flg 240 240 } 241 241 ptr = nextWISEfield (ptr); // skip var_flags 242 242 243 243 for (i = 0; i < 4; i++) { 244 setWISE_ph_qual ( star[i], ptr[i]); // ph_qual244 setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual 245 245 } 246 246 … … 261 261 // the release is based on data taken in the period 14 January 2010 to 29 April 2010 262 262 if (mjdmean == 0.0) { 263 star[i][0].measure.t = 0;263 measure[i].t = 0; 264 264 } else { 265 star[i][0].measure.t = ohana_mjd_to_sec (mjdmean);265 measure[i].t = ohana_mjd_to_sec (mjdmean); 266 266 } 267 267 } 268 268 269 star[0][0].measure.photcode = WISE_W1;270 star[0][0].measure.detID = 0;271 star[0][0].measure.imageID = 0;272 273 star[1][0].measure.photcode = WISE_W2;274 star[1][0].measure.detID = 0;275 star[1][0].measure.imageID = 0;276 277 star[2][0].measure.photcode = WISE_W3;278 star[2][0].measure.detID = 0;279 star[2][0].measure.imageID = 0;280 281 star[3][0].measure.photcode = WISE_W4;282 star[3][0].measure.detID = 0;283 star[3][0].measure.imageID = 0;269 measure[0].photcode = WISE_W1; 270 measure[0].detID = 0; 271 measure[0].imageID = 0; 272 273 measure[1].photcode = WISE_W2; 274 measure[1].detID = 0; 275 measure[1].imageID = 0; 276 277 measure[2].photcode = WISE_W3; 278 measure[2].detID = 0; 279 measure[2].imageID = 0; 280 281 measure[3].photcode = WISE_W4; 282 measure[3].detID = 0; 283 measure[3].imageID = 0; 284 284 285 285 return TRUE; … … 288 288 // fill in the data for a WISE quad star. takes a pointer to the start of the line the 289 289 // RA and DEC have already been set 290 int loadwise_star_prelim ( Stars **star, char *line, int Nmax) {290 int loadwise_star_prelim (Measure *measure, char *line, int Nmax) { 291 291 292 292 int i; … … 298 298 299 299 // I can assign dRA and dDEC to dX and dY if I can consistently set posangle and pltscale 300 star[0][0].measure.posangle = 0.0;301 star[0][0].measure.pltscale = 1.0;300 measure[0].posangle = 0.0; 301 measure[0].pltscale = 1.0; 302 302 303 303 ptr = skipNbounds (ptr, '|', 3, Nmax); // skip: desig, ra, dec, 304 star[0][0].measure.dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra304 measure[0].dXccd = ToShortPixels(strtod (ptr, NULL)); // sig_ra 305 305 ptr = nextWISEfield (ptr); 306 star[0][0].measure.dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec306 measure[0].dYccd = ToShortPixels(strtod (ptr, NULL)); // sig_dec 307 307 ptr = nextWISEfield (ptr); 308 308 309 309 // we only know a single set of values for all 4 bands 310 310 for (i = 1; i < 4; i++) { 311 star[i][0].measure.dXccd = star[0][0].measure.dXccd;312 star[i][0].measure.dYccd = star[0][0].measure.dYccd;313 star[i][0].measure.posangle = star[0][0].measure.posangle;314 star[i][0].measure.pltscale = star[0][0].measure.pltscale;311 measure[i].dXccd = measure[0].dXccd; 312 measure[i].dYccd = measure[0].dYccd; 313 measure[i].posangle = measure[0].posangle; 314 measure[i].pltscale = measure[0].pltscale; 315 315 } 316 316 ptr = skipNbounds (ptr, '|', 5, Nmax); // skip: sig_radec, glon, glat, elon, elat 317 317 318 star[0][0].measure.Xccd = strtod (ptr, NULL); // wx318 measure[0].Xccd = strtod (ptr, NULL); // wx 319 319 ptr = nextWISEfield (ptr); // skip wx 320 star[0][0].measure.Yccd = strtod (ptr, NULL); // wy320 measure[0].Yccd = strtod (ptr, NULL); // wy 321 321 ptr = nextWISEfield (ptr); // skip wy 322 322 323 323 for (i = 1; i < 4; i++) { 324 star[i][0].measure.Xccd = star[0][0].measure.Xccd;325 star[i][0].measure.Yccd = star[0][0].measure.Yccd;324 measure[i].Xccd = measure[0].Xccd; 325 measure[i].Yccd = measure[0].Yccd; 326 326 } 327 327 ptr = skipNbounds (ptr, '|', 4, Nmax); // skip: cntr, source_id, coadd_id, src … … 329 329 // W1 330 330 for (i = 0; i < 4; i++) { 331 star[i][0].measure.M = strtod (ptr, NULL); // w?mpro331 measure[i].M = strtod (ptr, NULL); // w?mpro 332 332 ptr = nextWISEfield (ptr); 333 star[i][0].measure.dM = strtod (ptr, NULL); // w?sigmpro333 measure[i].dM = strtod (ptr, NULL); // w?sigmpro 334 334 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: w?sigmpro, w?snr 335 star[i][0].measure.psfChisq = strtod (ptr, NULL); // w?rchi2335 measure[i].psfChisq = strtod (ptr, NULL); // w?rchi2 336 336 ptr = nextWISEfield (ptr); // skip : w1rchi2 337 337 338 338 // init the photFlags field 339 star[i][0].measure.photFlags = 0;339 measure[i].photFlags = 0; 340 340 } 341 341 … … 343 343 344 344 // set blend flags for all 4 measures 345 setWISE_blend_flag ( star, ptr); // nb & na both used here345 setWISE_blend_flag (measure, ptr); // nb & na both used here 346 346 ptr = skipNbounds (ptr, '|', 2, Nmax); // skip: nb, na 347 347 348 348 for (i = 0; i < 4; i++) { 349 setWISE_sat_flag ( star[i], ptr); // w1sat349 setWISE_sat_flag (&measure[i], ptr); // w1sat 350 350 ptr = nextWISEfield (ptr); 351 351 } … … 353 353 354 354 for (i = 0; i < 4; i++) { 355 setWISE_cc_flag ( star[i], ptr[i]); // cc_flg355 setWISE_cc_flag (&measure[i], ptr[i]); // cc_flg 356 356 } 357 357 ptr = nextWISEfield (ptr); // skip cc_flags 358 358 359 359 // set ext flags for all 4 measures 360 setWISE_ext_flag_prelim ( star, *ptr); // ext_flg360 setWISE_ext_flag_prelim (measure, *ptr); // ext_flg 361 361 ptr = nextWISEfield (ptr); // skip ext_flags 362 362 363 363 for (i = 0; i < 4; i++) { 364 setWISE_var_flag_prelim ( star[i], ptr[i]); // var_flg364 setWISE_var_flag_prelim (&measure[i], ptr[i]); // var_flg 365 365 } 366 366 ptr = nextWISEfield (ptr); // skip var_flags 367 367 368 368 for (i = 0; i < 4; i++) { 369 setWISE_ph_qual ( star[i], ptr[i]); // ph_qual369 setWISE_ph_qual (&measure[i], ptr[i]); // ph_qual 370 370 } 371 371 372 372 double jd = 2455263.0; // NOTE : WISE prelim release does not contain per-detection time info. 373 373 // the release is based on data taken in the period 14 January 2010 to 29 April 2010 374 star[0][0].measure.t = ohana_jd_to_sec (jd);375 star[1][0].measure.t = star[0][0].measure.t;376 star[2][0].measure.t = star[0][0].measure.t;377 star[3][0].measure.t = star[0][0].measure.t;378 379 star[0][0].measure.photcode = WISE_W1;380 star[0][0].measure.detID = 0;381 star[0][0].measure.imageID = 0;382 383 star[1][0].measure.photcode = WISE_W2;384 star[1][0].measure.detID = 0;385 star[1][0].measure.imageID = 0;386 387 star[2][0].measure.photcode = WISE_W3;388 star[2][0].measure.detID = 0;389 star[2][0].measure.imageID = 0;390 391 star[3][0].measure.photcode = WISE_W4;392 star[3][0].measure.detID = 0;393 star[3][0].measure.imageID = 0;374 measure[0].t = ohana_jd_to_sec (jd); 375 measure[1].t = measure[0].t; 376 measure[2].t = measure[0].t; 377 measure[3].t = measure[0].t; 378 379 measure[0].photcode = WISE_W1; 380 measure[0].detID = 0; 381 measure[0].imageID = 0; 382 383 measure[1].photcode = WISE_W2; 384 measure[1].detID = 0; 385 measure[1].imageID = 0; 386 387 measure[2].photcode = WISE_W3; 388 measure[2].detID = 0; 389 measure[2].imageID = 0; 390 391 measure[3].photcode = WISE_W4; 392 measure[3].detID = 0; 393 measure[3].imageID = 0; 394 394 395 395 return TRUE; … … 436 436 # define FLAG_VARIABLE_LEVEL3 0x40000000 // var_flg == 8 or 9 437 437 438 int setWISE_blend_flag ( Stars **star, char *ptr) {438 int setWISE_blend_flag (Measure *measure, char *ptr) { 439 439 440 440 int nb = atoi (ptr); … … 445 445 446 446 if (na == 0) { 447 star[0][0].measure.photFlags |= FLAG_BLEND_ACTIVE;448 star[1][0].measure.photFlags |= FLAG_BLEND_ACTIVE;449 star[2][0].measure.photFlags |= FLAG_BLEND_ACTIVE;450 star[3][0].measure.photFlags |= FLAG_BLEND_ACTIVE;447 measure[0].photFlags |= FLAG_BLEND_ACTIVE; 448 measure[1].photFlags |= FLAG_BLEND_ACTIVE; 449 measure[2].photFlags |= FLAG_BLEND_ACTIVE; 450 measure[3].photFlags |= FLAG_BLEND_ACTIVE; 451 451 } else { 452 star[0][0].measure.photFlags |= FLAG_BLEND_PASSIVE;453 star[1][0].measure.photFlags |= FLAG_BLEND_PASSIVE;454 star[2][0].measure.photFlags |= FLAG_BLEND_PASSIVE;455 star[3][0].measure.photFlags |= FLAG_BLEND_PASSIVE;452 measure[0].photFlags |= FLAG_BLEND_PASSIVE; 453 measure[1].photFlags |= FLAG_BLEND_PASSIVE; 454 measure[2].photFlags |= FLAG_BLEND_PASSIVE; 455 measure[3].photFlags |= FLAG_BLEND_PASSIVE; 456 456 } 457 457 return TRUE; 458 458 } 459 459 460 int setWISE_sat_flag ( Stars *star, char *ptr) {460 int setWISE_sat_flag (Measure *measure, char *ptr) { 461 461 462 462 float sat = strtod (ptr, NULL); 463 463 if (sat > 0.0) { 464 star[0].measure.photFlags |= FLAG_SATURATED_PIX;464 measure[0].photFlags |= FLAG_SATURATED_PIX; 465 465 } 466 466 return TRUE; 467 467 } 468 468 469 int setWISE_cc_flag ( Stars *star, char qual) {469 int setWISE_cc_flag (Measure *measure, char qual) { 470 470 471 471 switch (qual) { 472 case 'p': star[0].measure.photFlags |= FLAG_CC_PERSIST; break;473 case 'h': star[0].measure.photFlags |= FLAG_CC_HALO; break;474 case 'd': star[0].measure.photFlags |= FLAG_CC_SPIKE; break;475 case 'o': star[0].measure.photFlags |= FLAG_CC_GHOST; break;476 477 case 'P': star[0].measure.photFlags |= FLAG_CC_PERSIST | FLAG_CC_SPURIOUS; break;478 case 'H': star[0].measure.photFlags |= FLAG_CC_HALO | FLAG_CC_SPURIOUS; break;479 case 'D': star[0].measure.photFlags |= FLAG_CC_SPIKE | FLAG_CC_SPURIOUS; break;480 case 'O': star[0].measure.photFlags |= FLAG_CC_GHOST | FLAG_CC_SPURIOUS; break;472 case 'p': measure[0].photFlags |= FLAG_CC_PERSIST; break; 473 case 'h': measure[0].photFlags |= FLAG_CC_HALO; break; 474 case 'd': measure[0].photFlags |= FLAG_CC_SPIKE; break; 475 case 'o': measure[0].photFlags |= FLAG_CC_GHOST; break; 476 477 case 'P': measure[0].photFlags |= FLAG_CC_PERSIST | FLAG_CC_SPURIOUS; break; 478 case 'H': measure[0].photFlags |= FLAG_CC_HALO | FLAG_CC_SPURIOUS; break; 479 case 'D': measure[0].photFlags |= FLAG_CC_SPIKE | FLAG_CC_SPURIOUS; break; 480 case 'O': measure[0].photFlags |= FLAG_CC_GHOST | FLAG_CC_SPURIOUS; break; 481 481 482 482 case '0': break; … … 487 487 } 488 488 489 int setWISE_ext_flag_allsky ( Stars **star, char value) {489 int setWISE_ext_flag_allsky (Measure *measure, char value) { 490 490 491 491 switch (value) { … … 493 493 return TRUE; 494 494 case '1': 495 star[0][0].measure.photFlags |= FLAG_EXTENDED;496 star[1][0].measure.photFlags |= FLAG_EXTENDED;497 star[2][0].measure.photFlags |= FLAG_EXTENDED;498 star[3][0].measure.photFlags |= FLAG_EXTENDED;495 measure[0].photFlags |= FLAG_EXTENDED; 496 measure[1].photFlags |= FLAG_EXTENDED; 497 measure[2].photFlags |= FLAG_EXTENDED; 498 measure[3].photFlags |= FLAG_EXTENDED; 499 499 return TRUE; 500 500 case '2': 501 star[0][0].measure.photFlags |= FLAG_EXT_IN_XSC;502 star[1][0].measure.photFlags |= FLAG_EXT_IN_XSC;503 star[2][0].measure.photFlags |= FLAG_EXT_IN_XSC;504 star[3][0].measure.photFlags |= FLAG_EXT_IN_XSC;501 measure[0].photFlags |= FLAG_EXT_IN_XSC; 502 measure[1].photFlags |= FLAG_EXT_IN_XSC; 503 measure[2].photFlags |= FLAG_EXT_IN_XSC; 504 measure[3].photFlags |= FLAG_EXT_IN_XSC; 505 505 return TRUE; 506 506 case '3': 507 star[0][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;508 star[1][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;509 star[2][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;510 star[3][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC;507 measure[0].photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC; 508 measure[1].photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC; 509 measure[2].photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC; 510 measure[3].photFlags |= FLAG_EXTENDED | FLAG_EXT_IN_XSC; 511 511 return TRUE; 512 512 case '4': 513 star[0][0].measure.photFlags |= FLAG_EXT_BY_XSC;514 star[1][0].measure.photFlags |= FLAG_EXT_BY_XSC;515 star[2][0].measure.photFlags |= FLAG_EXT_BY_XSC;516 star[3][0].measure.photFlags |= FLAG_EXT_BY_XSC;513 measure[0].photFlags |= FLAG_EXT_BY_XSC; 514 measure[1].photFlags |= FLAG_EXT_BY_XSC; 515 measure[2].photFlags |= FLAG_EXT_BY_XSC; 516 measure[3].photFlags |= FLAG_EXT_BY_XSC; 517 517 return TRUE; 518 518 case '5': 519 star[0][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;520 star[1][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;521 star[2][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;522 star[3][0].measure.photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC;519 measure[0].photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC; 520 measure[1].photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC; 521 measure[2].photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC; 522 measure[3].photFlags |= FLAG_EXTENDED | FLAG_EXT_BY_XSC; 523 523 return TRUE; 524 524 default: … … 529 529 } 530 530 531 int setWISE_ext_flag_prelim ( Stars **star, char value) {531 int setWISE_ext_flag_prelim (Measure *measure, char value) { 532 532 533 533 switch (value) { … … 535 535 return TRUE; 536 536 case '1': 537 star[0][0].measure.photFlags |= FLAG_EXTENDED;538 star[1][0].measure.photFlags |= FLAG_EXTENDED;539 star[2][0].measure.photFlags |= FLAG_EXTENDED;540 star[3][0].measure.photFlags |= FLAG_EXTENDED;537 measure[0].photFlags |= FLAG_EXTENDED; 538 measure[1].photFlags |= FLAG_EXTENDED; 539 measure[2].photFlags |= FLAG_EXTENDED; 540 measure[3].photFlags |= FLAG_EXTENDED; 541 541 return TRUE; 542 542 default: … … 548 548 549 549 // NOTE: var flag definition changed slightly between prelim & allsky 550 int setWISE_var_flag_allsky ( Stars *star, char qual) {550 int setWISE_var_flag_allsky (Measure *measure, char qual) { 551 551 552 552 switch (qual) { … … 559 559 case '4': 560 560 case '5': 561 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL1;561 measure[0].photFlags |= FLAG_VARIABLE_LEVEL1; 562 562 return TRUE; 563 563 case '6': 564 564 case '7': 565 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL2;565 measure[0].photFlags |= FLAG_VARIABLE_LEVEL2; 566 566 return TRUE; 567 567 case '8': 568 568 case '9': 569 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;569 measure[0].photFlags |= FLAG_VARIABLE_LEVEL3; 570 570 return TRUE; 571 571 default: … … 575 575 } 576 576 577 int setWISE_var_flag_prelim ( Stars *star, char qual) {577 int setWISE_var_flag_prelim (Measure *measure, char qual) { 578 578 579 579 switch (qual) { … … 584 584 case '3': 585 585 case '4': 586 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL1;586 measure[0].photFlags |= FLAG_VARIABLE_LEVEL1; 587 587 return TRUE; 588 588 case '5': 589 589 case '6': 590 590 case '7': 591 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL2;591 measure[0].photFlags |= FLAG_VARIABLE_LEVEL2; 592 592 return TRUE; 593 593 case '8': 594 594 case '9': 595 star[0].measure.photFlags |= FLAG_VARIABLE_LEVEL3;595 measure[0].photFlags |= FLAG_VARIABLE_LEVEL3; 596 596 return TRUE; 597 597 default: … … 601 601 } 602 602 603 int setWISE_ph_qual ( Stars *star, char qual) {603 int setWISE_ph_qual (Measure *measure, char qual) { 604 604 605 605 switch (qual) { 606 case 'A': star[0].measure.photFlags |= FLAG_PH_A; break;607 case 'B': star[0].measure.photFlags |= FLAG_PH_B; break;608 case 'C': star[0].measure.photFlags |= FLAG_PH_C; break;609 case 'U': star[0].measure.photFlags |= FLAG_PH_U; break;610 case 'X': star[0].measure.photFlags |= FLAG_PH_X; break;611 case 'Z': star[0].measure.photFlags |= FLAG_PH_Z; break;606 case 'A': measure[0].photFlags |= FLAG_PH_A; break; 607 case 'B': measure[0].photFlags |= FLAG_PH_B; break; 608 case 'C': measure[0].photFlags |= FLAG_PH_C; break; 609 case 'U': measure[0].photFlags |= FLAG_PH_U; break; 610 case 'X': measure[0].photFlags |= FLAG_PH_X; break; 611 case 'Z': measure[0].photFlags |= FLAG_PH_Z; break; 612 612 default: 613 613 fprintf (stderr, "error in ph_flag: %c\n", qual); -
trunk/Ohana/src/addstar/src/replace_match.c
r37036 r38986 1 1 # include "addstar.h" 2 2 3 int replace_match (Average *average, Measure *measure, Stars *star) {3 int replace_match (Average *average, Measure *measure, Measure *newmeas, off_t *found) { 4 4 5 5 int i, j, m; … … 11 11 for (i = 0; i < average[0].Nmeasure; i++) { 12 12 j = i + m; 13 if (measure[j].photcode != star[0].measure.photcode) continue;14 measure[j].R = star[0].average.R;15 measure[j].D = star[0].average.D;16 measure[j].M = star[0].measure.M;17 measure[j].dM = star[0].measure.dM;18 star[0].found = average[0].measureOffset + i;13 if (measure[j].photcode != newmeas->photcode) continue; 14 measure[j].R = newmeas->R; 15 measure[j].D = newmeas->D; 16 measure[j].M = newmeas->M; 17 measure[j].dM = newmeas->dM; 18 *found = average[0].measureOffset + i; 19 19 return (TRUE); 20 20 } -
trunk/Ohana/src/addstar/src/resort_catalog.c
r38638 r38986 55 55 // earlier formats did not carry the objID or catID, so they are not available (we could assign on load, but we don't) 56 56 myAssert(average[averageSeq[i]].catID == measure[measureSeq[i]].catID, "object / detection mismatch"); 57 # if (1)58 57 myAssert (average[averageSeq[i]].objID == measure[measureSeq[i]].objID, "object ID mismatch?"); 59 # endif60 58 # if (0) 61 59 // myAssert(average[averageSeq[i]].objID == measure[measureSeq[i]].objID, "object / detection mismatch"); 62 // check if the objID is correct. if not, check if it is byte-swapped (this has happened) and repair if so. 63 // otherwise, abort60 61 // Check some possible causes for objID failures 64 62 if (average[averageSeq[i]].objID != measure[measureSeq[i]].objID) { 65 63 fprintf (stderr, "object / detection mismatch average.objID = %d, measure.objID = %d, catID: %d, detID: %d", 66 64 average[averageSeq[i]].objID, measure[measureSeq[i]].objID, 67 65 measure[measureSeq[i]].catID, measure[measureSeq[i]].detID); 66 // is the byte-swapped value the correct objID? 68 67 int objIDalt = measure[measureSeq[i]].objID; 69 68 char *byte = (char *) &objIDalt; … … 72 71 tmp = byte[1]; byte[1] = byte[2]; byte[2] = tmp; 73 72 if (average[averageSeq[i]].objID == objIDalt) { 74 fprintf (stderr, "objID is byte-swapped, repairing\n"); 75 measure[measureSeq[i]].objID = average[averageSeq[i]].objID; // XXX I don't really like this... 76 } else if (measure[measureSeq[i]].objID == 0) { 77 fprintf (stderr, "objID is 0, repairing\n"); 78 measure[measureSeq[i]].objID = average[averageSeq[i]].objID; // XXX I don't really like this... 73 myAbort ("measure.objID is byte-swapped, consider repairing\n"); 74 // measure[measureSeq[i]].objID = average[averageSeq[i]].objID; // XXX I don't really like this... 75 } 76 if (measure[measureSeq[i]].objID == 0) { 77 myAbort ("measure.objID is 0, repairing\n"); 78 // measure[measureSeq[i]].objID = average[averageSeq[i]].objID; // XXX I don't really like this... 79 79 } else { 80 myAbort ("objID is NOT byte-swapped , aborting\n");80 myAbort ("objID is NOT byte-swapped and NOT 0, aborting\n"); 81 81 } 82 82 } -
trunk/Ohana/src/addstar/src/resort_threaded.c
r38636 r38986 81 81 // write out catalog, if appropriate 82 82 SetProtect (TRUE); 83 dvo_catalog_save (&catalog, VERBOSE); 83 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 84 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 84 85 SetProtect (FALSE); 85 dvo_catalog_unlock (&catalog); 86 86 87 dvo_catalog_free (&catalog); 87 88 threadData->state = TS_DONE; -
trunk/Ohana/src/addstar/src/resort_unthreaded.c
r38636 r38986 52 52 // write out catalog, if appropriate 53 53 SetProtect (TRUE); 54 dvo_catalog_save (&catalog, VERBOSE); 54 if (!dvo_catalog_save (&catalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", catalog.filename); exit (1); } 55 if (!dvo_catalog_unlock (&catalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", catalog.filename); exit (1); } 55 56 SetProtect (FALSE); 56 dvo_catalog_unlock (&catalog); 57 57 58 dvo_catalog_free (&catalog); 58 59 } -
trunk/Ohana/src/addstar/src/sedstar.c
r38471 r38986 12 12 13 13 // need to construct these options with args_load2mass... 14 SetSignals (); 14 15 options = ConfigInit (&argc, argv); 15 16 options = args_sedstar (argc, argv, options); … … 64 65 SEDfitCatalog (&outcatalog, &incatalog, sedtable); 65 66 66 dvo_catalog_save (&outcatalog, VERBOSE); 67 dvo_catalog_unlock (&outcatalog); 67 SetProtect (TRUE); 68 if (!dvo_catalog_save (&outcatalog, VERBOSE)) { fprintf (stderr, "ERROR: failed to save %s\n", outcatalog.filename); exit (1); } 69 if (!dvo_catalog_unlock (&outcatalog)) { fprintf (stderr, "ERROR: failed to unlock %s\n", outcatalog.filename); exit (1); } 70 SetProtect (FALSE); 68 71 dvo_catalog_free (&outcatalog); 69 72 -
trunk/Ohana/src/addstar/test
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20150625/Ohana/src/addstar/test merged: 38983
- Property svn:mergeinfo changed
Note:
See TracChangeset
for help on using the changeset viewer.
