Changeset 37807 for trunk/Ohana/src/dvomerge
- Timestamp:
- Jan 11, 2015, 2:14:39 PM (12 years ago)
- Location:
- trunk/Ohana
- Files:
-
- 17 edited
- 8 copied
-
. (modified) (1 prop)
-
src/dvomerge/Makefile (modified) (3 diffs)
-
src/dvomerge/include/dvomerge.h (modified) (3 diffs)
-
src/dvomerge/include/dvoutils.h (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/include/dvoutils.h )
-
src/dvomerge/src/ImageOps.c (modified) (1 diff)
-
src/dvomerge/src/LoadCatalog.c (modified) (1 diff)
-
src/dvomerge/src/ReadDeleteListExternID.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/ReadDeleteListExternID.c )
-
src/dvomerge/src/args.c (modified) (3 diffs)
-
src/dvomerge/src/build_links.c (modified) (1 diff)
-
src/dvomerge/src/dvo_image_merge_dbs.c (modified) (1 diff)
-
src/dvomerge/src/dvomergeUpdate_catalogs.c (modified) (4 diffs)
-
src/dvomerge/src/dvorepair.c (modified) (2 diffs)
-
src/dvomerge/src/dvorepairCPT.c (modified) (1 diff)
-
src/dvomerge/src/dvorepairDeleteImageList.c (modified) (2 diffs)
-
src/dvomerge/src/dvorepairDeleteImagesByExternID.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvorepairDeleteImagesByExternID.c )
-
src/dvomerge/src/dvorepairFixImages.c (modified) (3 diffs)
-
src/dvomerge/src/dvorepairFixTables.c (modified) (1 diff)
-
src/dvomerge/src/dvoutils.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoutils.c )
-
src/dvomerge/src/dvoutils_args.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoutils_args.c )
-
src/dvomerge/src/dvoutils_load_image_index.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoutils_load_image_index.c )
-
src/dvomerge/src/dvoutils_uniq_images.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvoutils_uniq_images.c )
-
src/dvomerge/src/dvoverify_utils.c (modified) (1 diff)
-
src/dvomerge/src/merge_catalogs_new.c (modified) (3 diffs)
-
src/dvomerge/src/merge_catalogs_old.c (modified) (15 diffs)
-
src/dvomerge/src/myIndex.c (copied) (copied from branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/myIndex.c )
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana
- Property svn:mergeinfo changed
-
trunk/Ohana/src/dvomerge/Makefile
r35416 r37807 23 23 dvoverify_client : $(BIN)/dvoverify_client.$(ARCH) 24 24 25 all: dvomerge dvomerge_client dvoconvert dvosecfilt dvosecfilt_client dvoverify dvoverify_client 25 dvoutils : $(BIN)/dvoutils.$(ARCH) 26 27 all: dvomerge dvomerge_client dvoconvert dvosecfilt dvosecfilt_client dvorepair dvoverify dvoverify_client dvoutils 26 28 27 29 # $(SRC)/dvomergeContinue.$(ARCH).o … … 120 122 $(SRC)/dvorepairImagesVsMeasures.$(ARCH).o \ 121 123 $(SRC)/dvorepairDeleteImageList.$(ARCH).o \ 124 $(SRC)/dvorepairDeleteImagesByExternID.$(ARCH).o \ 125 $(SRC)/dvorepairDeleteImagesByExternID.$(ARCH).o \ 122 126 $(SRC)/dvorepairFixImages.$(ARCH).o \ 123 127 $(SRC)/psps_ids.$(ARCH).o \ 124 128 $(SRC)/LoadImages.$(ARCH).o \ 125 129 $(SRC)/ReadDeleteList.$(ARCH).o \ 130 $(SRC)/ReadDeleteListExternID.$(ARCH).o \ 131 $(SRC)/myIndex.$(ARCH).o \ 126 132 $(SRC)/match_image.$(ARCH).o \ 127 133 $(SRC)/help.$(ARCH).o \ … … 149 155 $(BIN)/dvoverify_client.$(ARCH) : $(DVOVERIFY_CLIENT) 150 156 151 INSTALL = dvomerge dvomerge_client dvoconvert dvosecfilt dvosecfilt_client dvorepair dvoverify dvoverify_client 157 DVOUTILS = \ 158 $(SRC)/dvoutils.$(ARCH).o \ 159 $(SRC)/dvoutils_args.$(ARCH).o \ 160 $(SRC)/dvoutils_uniq_images.$(ARCH).o \ 161 $(SRC)/dvoutils_load_image_index.$(ARCH).o 162 163 $(DVOUTILS) : $(INC)/dvoutils.h 164 $(BIN)/dvoutils.$(ARCH) : $(DVOUTILS) 165 166 INSTALL = dvomerge dvomerge_client dvoconvert dvosecfilt dvosecfilt_client dvorepair dvoverify dvoverify_client dvoverify 152 167 153 168 # dependancy rules for binary code ######################### -
trunk/Ohana/src/dvomerge/include/dvomerge.h
r37116 r37807 41 41 int REPLACE_BY_PHOTCODE; 42 42 int FORCE_MERGE; 43 char *UPDATE_CATFORMAT; 44 45 int MATCHED_TABLES; 43 46 44 47 char *SINGLE_CPT; 45 48 SkyRegion UserPatch; // used by MODE CAT 49 50 # ifndef MAX_INT 51 # define MAX_INT 2147483647 52 # endif 53 54 typedef struct { 55 int minID; 56 int maxID; 57 int *index; 58 int Nindex; 59 int NINDEX; 60 } myIndexType; 46 61 47 62 typedef struct { … … 138 153 int add_lens_link PROTO((Average *average, off_t *next, off_t Nlensing, off_t NLENSING)); 139 154 Lensing *sort_lensing PROTO((Average *average, off_t Naverage, Lensing *lensing, off_t Nlensing, off_t *next)); 155 156 off_t *build_starpar_links PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar)); 157 off_t *init_starpar_links PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar)); 158 int add_star_link PROTO((Average *average, off_t *next, off_t Nstarpar, off_t NSTARPAR)); 159 StarPar *sort_starpar PROTO((Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar, off_t *next)); 140 160 141 161 off_t *init_missing_links PROTO((Average *average, off_t Naverage, Missing *missing, off_t Nmissing)); … … 200 220 int dvoCreateID (char *catdir); 201 221 222 myIndexType *myIndexInit (); 223 int myIndexFree (myIndexType *myIndex); 224 int myIndexUpdateLimits (myIndexType *myIndex, int value); 225 int myIndexSetRange (myIndexType *myIndex); 226 int myIndexSetEntry (myIndexType *myIndex, int value, int entry); 227 int myIndexGetEntry (myIndexType *myIndex, int value); 228 229 int dvorepairDeleteImagesByExternID (int argc, char **argv); 230 int RepairTableCPT_V1(char *cptFilenameSrc, char *cptFilenameTgt, char *cpsFilenameSrc, char *cpsFilenameTgt, Measure *measure, off_t Nmeasure, Image *image, off_t Nimage, myIndexType *imageIDindex, char catformat); 231 int *ReadDeleteListExternID(char *filename, int *nindex); -
trunk/Ohana/src/dvomerge/src/ImageOps.c
r29938 r37807 18 18 } 19 19 if (m == -1) return (NULL); 20 if (!FindMosaicForImage (image, Nimage, m)) return (NULL);21 20 return (&image[m]); 22 21 } -
trunk/Ohana/src/dvomerge/src/LoadCatalog.c
r37116 r37807 8 8 9 9 // always load all of the data (if any exists) 10 catalog[0].catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF | LOAD_LENSING | LOAD_LENSOBJ ;10 catalog[0].catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF | LOAD_LENSING | LOAD_LENSOBJ | LOAD_STARPAR; 11 11 12 12 catalog[0].catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data -
trunk/Ohana/src/dvomerge/src/args.c
r35765 r37807 37 37 } 38 38 39 /* extra error messages */ 40 MATCHED_TABLES = FALSE; 41 if ((N = get_argument (*argc, argv, "-matched-tables"))) { 42 MATCHED_TABLES = TRUE; 43 remove_argument (N, argc, argv); 44 } 45 39 46 /* use a different photcode file to define mean values */ 40 47 if ((N = get_argument (*argc, argv, "-photcode-file"))) { … … 48 55 if ((N = get_argument (*argc, argv, "-force-merge"))) { 49 56 FORCE_MERGE = TRUE; 57 remove_argument (N, argc, argv); 58 } 59 60 UPDATE_CATFORMAT = NULL; 61 if ((N = get_argument (*argc, argv, "-update-catformat"))) { 62 remove_argument (N, argc, argv); 63 UPDATE_CATFORMAT = strcreate (argv[N]); 50 64 remove_argument (N, argc, argv); 51 65 } … … 185 199 } 186 200 201 /* extra error messages */ 202 MATCHED_TABLES = FALSE; 203 if ((N = get_argument (*argc, argv, "-matched-tables"))) { 204 MATCHED_TABLES = TRUE; 205 remove_argument (N, argc, argv); 206 } 207 187 208 /* replace measurement, don't duplicate */ 188 209 REPLACE_BY_PHOTCODE = FALSE; -
trunk/Ohana/src/dvomerge/src/build_links.c
r37762 r37807 382 382 } 383 383 384 384 /******** StarPar ********************************************************************************/ 385 386 /* build the initial links assuming the table is sorted, 387 not partial, and has a correct set of average[].starparOffset,Nstarpar values */ 388 off_t *init_starpar_links (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar) { 389 390 off_t i, j, N; 391 off_t *next_star; 392 393 N = 0; 394 395 ALLOCATE (next_star, off_t, Nstarpar); 396 for (i = 0; i < Naverage; i++) { 397 if (!average[i].Nstarpar) continue; 398 for (j = 0; j < average[i].Nstarpar - 1; j++, N++) { 399 next_star[N] = N + 1; 400 if (N >= Nstarpar) { 401 fprintf (stderr, "WARNING: N out of bounds (1)\n"); 402 } 403 } 404 next_star[N] = -1; 405 if (N >= Nstarpar) { 406 fprintf (stderr, "WARNING: N out of bounds (2)\n"); 407 } 408 409 if (N >= Nstarpar) { 410 fprintf (stderr, "overflow in init_starpar_links\n"); 411 abort (); 412 } 413 N++; 414 } 415 return (next_star); 416 } 417 418 /* construct starpar links which are valid FOR THIS LOAD 419 * - if we have a full load, we will get links which can 420 * be used by other programs (eg, relphot, etc) 421 * - if we have a partial load, the links are only valid 422 * for that partial load 423 */ 424 425 off_t *build_starpar_links (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar) { 426 427 off_t i, m, k, Nm, averef; 428 off_t *next_star; 429 430 ALLOCATE (next_star, off_t, Nstarpar); 431 432 /* reset the Nm, offset values for average */ 433 for (i = 0; i < Naverage; i++) { 434 average[i].starparOffset = -1; 435 average[i].Nstarpar = 0; 436 } 437 438 for (Nm = 0; Nm < Nstarpar; Nm++) { 439 averef = starpar[Nm].averef; 440 m = average[averef].starparOffset; 441 next_star[Nm] = -1; 442 443 if (m == -1) { /* no links yet for source */ 444 average[averef].starparOffset = Nm; 445 average[averef].Nstarpar = 1; 446 continue; 447 } 448 449 for (k = 0; next_star[m] != -1; k++) { 450 m = next_star[m]; 451 if (m >= Nstarpar) { 452 fprintf (stderr, "WARNING: m out of bounds (1)\n"); 453 } 454 } 455 456 average[averef].Nstarpar = k + 2; 457 next_star[m] = Nm; 458 if (m >= Nstarpar) { 459 fprintf (stderr, "WARNING: m out of bounds (2)\n"); 460 } 461 } 462 return (next_star); 463 } 464 465 /* average[].starparOffset, average[].Nstarpar are valid within an addstar run */ 466 int add_star_link (Average *average, off_t *next_star, off_t Nstarpar, off_t NSTARPAR) { 467 468 off_t k, m; 469 470 /* if we have trouble, check validity of next_star[m] : m < Nstarpar */ 471 m = average[0].starparOffset; 472 473 for (k = 0; k < average[0].Nstarpar - 1; k++) { 474 m = next_star[m]; 475 if (m >= NSTARPAR) { 476 fprintf (stderr, "WARNING: m out of bounds (3)\n"); 477 } 478 } 479 480 /* set up references */ 481 next_star[Nstarpar] = -1; 482 if (Nstarpar >= NSTARPAR) { 483 fprintf (stderr, "WARNING: Nstarpar out of bounds (1)\n"); 484 } 485 486 if (m == -1) { 487 average[0].starparOffset = Nstarpar; 488 } else { 489 next_star[m] = Nstarpar; 490 if (m >= NSTARPAR) { 491 fprintf (stderr, "WARNING: m out of bounds (4)\n"); 492 } 493 } 494 495 return (TRUE); 496 } 497 498 StarPar *sort_starpar (Average *average, off_t Naverage, StarPar *starpar, off_t Nstarpar, off_t *next_star) { 499 500 off_t i, k, n, np, N; 501 StarPar *tmpstarpar; 502 503 /* 504 for (i = 0; i < Naverage; i++) { 505 if (average[i].Nstarpar != 4) { 506 fprintf (stderr, "check %d %d %d\n", (int) i, (int) average[i].Nstarpar, (int) average[i].starparOffset); 507 } 508 } 509 */ 510 511 /* fix order of StarPar (memory intensive, but fast) */ 512 N = 0; 513 ALLOCATE (tmpstarpar, StarPar, Nstarpar); 514 for (i = 0; i < Naverage; i++) { 515 if (!average[i].Nstarpar) continue; 516 n = average[i].starparOffset; 517 average[i].starparOffset = N; 518 for (k = 0; k < average[i].Nstarpar; k++, N++) { 519 if (n == -1) { 520 fprintf (stderr, "entry after %d has a problem\n", (int) np); 521 abort(); 522 } 523 tmpstarpar[N] = starpar[n]; 524 if (starpar[n].averef != i) abort(); 525 tmpstarpar[N].averef = i; 526 np = n; 527 n = next_star[n]; 528 } 529 } 530 free (starpar); 531 return (tmpstarpar); 532 } 533 534 -
trunk/Ohana/src/dvomerge/src/dvo_image_merge_dbs.c
r37360 r37807 113 113 create_IDmap_lookup (IDmap); 114 114 115 if (!out[0].swapped) {116 gfits_convert_Image ((Image *) out[0].ftable.buffer, sizeof(Image), Nout);117 out[0].swapped = TRUE;118 }119 120 115 Nout += Nimages; 121 116 IDstart += Nimages; -
trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c
r37116 r37807 58 58 } 59 59 60 # ifdef OLD_CODE 61 // NOTE: i was having trouble dropping objects on edges with the option below. Since an object can move outside the catalog grab the neighbors. 60 62 // SkyListByBounds will return neighbor catalogs if the boundaries exactly match (due to rounding). Since the regions are not infinitely small, 61 63 // compare to a slightly reduced footprint 62 64 float dPos = 2.0/3600.0; 63 65 outlist = SkyListByBounds (outsky, -1, inlist[0].regions[i][0].Rmin + dPos, inlist[0].regions[i][0].Rmax - dPos, inlist[0].regions[i][0].Dmin + dPos, inlist[0].regions[i][0].Dmax - dPos); 66 # endif 67 68 if (MATCHED_TABLES) { 69 // if we know the output will have the same depth / layout as the input, just choose the matched table 70 outlist = SkyRegionByIndex (outsky, inlist[0].regions[i][0].index); 71 } else { 72 // Since an object can move outside the catalog grab the neighbors. 73 float dPos = 2.0/3600.0; 74 outlist = SkyListByBounds (outsky, -1, inlist[0].regions[i][0].Rmin - dPos, inlist[0].regions[i][0].Rmax + dPos, inlist[0].regions[i][0].Dmin - dPos, inlist[0].regions[i][0].Dmax + dPos); 75 } 64 76 65 77 OutputStatus *outstat = OutputStatusInit (outlist->Nregions); … … 163 175 LoadCatalog (&outcatalog, outlist[0].regions[j], outcatalog.filename, "w", NsecfiltOutput); 164 176 165 // if no catalog already exists, use the input catalog to define the format 177 // if no catalog already exists, use the input catalog to define the format or the specified format 166 178 if (outcatalog.Naves_disk == 0) { 167 outcatalog.catformat = incatalog.catformat; 179 if (UPDATE_CATFORMAT) { 180 outcatalog.catformat = dvo_catalog_catformat (UPDATE_CATFORMAT); 181 } else { 182 outcatalog.catformat = incatalog.catformat; 183 } 168 184 } 169 185 … … 187 203 SetProtect (FALSE); 188 204 205 if (!dvo_catalog_unlock (&outcatalog)) { 206 fprintf (stderr, "ERROR: failed to unlock catalog %s\n", outlist[0].filename[j]); 207 exit (1); 208 } 209 189 210 if (!dvo_catalog_unlink_backup (&outcatalog, TRUE)) { 190 211 fprintf (stderr, "WARNING: failed to remove backup for catalog %s\n", outlist[0].filename[j]); 191 212 } 192 213 193 dvo_catalog_unlock (&outcatalog);194 214 dvo_catalog_free (&outcatalog); 195 215 … … 256 276 if (PARALLEL_INPUT) { snprintf (tmpline, DVO_MAX_PATH, "%s -parallel-input", command); strcpy (command, tmpline); } 257 277 if (FORCE_MERGE) { snprintf (tmpline, DVO_MAX_PATH, "%s -force-merge", command); strcpy (command, tmpline); } 278 if (MATCHED_TABLES) { snprintf (tmpline, DVO_MAX_PATH, "%s -matched-tables", command); strcpy (command, tmpline); } 258 279 259 280 // add some config variables: -
trunk/Ohana/src/dvomerge/src/dvorepair.c
r37046 r37807 3 3 int main (int argc, char **argv) { 4 4 5 fprintf (stderr, "this program needs to be updated to load old format Measure tables (pre PV1_V5) in which dR,dD are saved, not R,D\n");6 fprintf (stderr, "reminder: relastro can re-construct R,D from X,Y; FtableToMeasure and vice versa could just NAN those values\n");7 exit (2);5 // fprintf (stderr, "this program needs to be updated to load old format Measure tables (pre PV1_V5) in which dR,dD are saved, not R,D\n"); 6 // fprintf (stderr, "reminder: relastro can re-construct R,D from X,Y; FtableToMeasure and vice versa could just NAN those values\n"); 7 // exit (2); 8 8 9 9 dvorepair_help(argc, argv); … … 13 13 if (!strcmp(argv[1], "-images-vs-measures")) dvorepairImagesVsMeasures(argc, argv); 14 14 if (!strcmp(argv[1], "-delete-image-list")) dvorepairDeleteImageList(argc, argv); 15 if (!strcmp(argv[1], "-delete-images-by-extern-id")) dvorepairDeleteImagesByExternID(argc, argv); 15 16 if (!strcmp(argv[1], "-fix-images")) dvorepairFixImages(argc, argv); 16 17 dvorepair_help(0, NULL); -
trunk/Ohana/src/dvomerge/src/dvorepairCPT.c
r37046 r37807 119 119 thisImage = MatchImage (image, Nimage, measure[i].t, measure[i].photcode, measure[i].imageID); 120 120 XY_to_RD (&average[Nave].R, &average[Nave].D, measure[i].Xccd, measure[i].Yccd, &thisImage[0].coords); 121 average[Nave].R = ohana_normalize_angle (average[Nave].R); 121 122 122 123 average[Nave].Nmeasure = 1; -
trunk/Ohana/src/dvomerge/src/dvorepairDeleteImageList.c
r37046 r37807 114 114 index = deleteIDs[i]; 115 115 seq = imageIdx[index]; 116 if (!FindMosaicForImage (image, Nimage, seq)) {117 fprintf (stderr, "cannot find mosaic for %s, skipping\n", image[seq].name);118 continue;119 }120 116 121 117 XY_to_RD(&Rthis, &Dthis, 0, 0, &image[seq].coords); … … 404 400 thisImage = MatchImage (image, Nimage, measure[i].t, measure[i].photcode, measure[i].imageID); 405 401 XY_to_RD (&average[Nave].R, &average[Nave].D, measure[i].Xccd, measure[i].Yccd, &thisImage[0].coords); 402 average[Nave].R = ohana_normalize_angle (average[Nave].R); 406 403 407 404 average[Nave].Nmeasure = 1; -
trunk/Ohana/src/dvomerge/src/dvorepairFixImages.c
r29938 r37807 130 130 int MarkMosaicsToDelete(Image *image, off_t Nimage, int *deleteIndex) { 131 131 132 myAbort ("this function needs to be redone with a concept to match the old BuildChipMatch"); 133 134 # if (0) 135 132 136 off_t i; 133 137 … … 140 144 marked. Now find all WRP images for which none/some/all images are to be deleted. 141 145 */ 146 147 142 148 143 149 // make a copy of the ChipMatch table (generated by BuildChipMatch, see libdvo/src/mosaic_astrom.c) … … 237 243 free (ChipByMosaicID); 238 244 245 # endif 246 239 247 return TRUE; 240 248 } -
trunk/Ohana/src/dvomerge/src/dvorepairFixTables.c
r37046 r37807 259 259 thisImage = MatchImage (image, Nimage, measure[i].t, measure[i].photcode, measure[i].imageID); 260 260 XY_to_RD (&average[Nave].R, &average[Nave].D, measure[i].Xccd, measure[i].Yccd, &thisImage[0].coords); 261 average[Nave].R = ohana_normalize_angle (average[Nave].R); 261 262 262 263 average[Nave].Nmeasure = 1; -
trunk/Ohana/src/dvomerge/src/dvoverify_utils.c
r37360 r37807 238 238 } 239 239 // lensingOffset needs to be in range for each object 240 lensingOffsetOK &= ( catalog.average[i].lensingOffset < catalog.Nlensing);241 if (VERBOSE && !(catalog.average[i].lensingOffset < catalog.Nlensing)) {240 lensingOffsetOK &= (!catalog.Nlensing || (catalog.average[i].lensingOffset < catalog.Nlensing)); 241 if (VERBOSE && catalog.Nlensing && !(catalog.average[i].lensingOffset < catalog.Nlensing)) { 242 242 fprintf (stderr, "lensingOffset >= catalog.Nlensing: %d %d %d\n", i, catalog.average[i].lensingOffset, (int) catalog.Nlensing); 243 243 } -
trunk/Ohana/src/dvomerge/src/merge_catalogs_new.c
r37472 r37807 11 11 12 12 off_t i, j, offset; 13 off_t NAVERAGE, NMEASURE, NLENSING, N average, Nmeasure, Nlensing, NsecfiltIn, NsecfiltOut, Nm;13 off_t NAVERAGE, NMEASURE, NLENSING, NSTARPAR, Naverage, Nmeasure, Nlensing, Nstarpar, NsecfiltIn, NsecfiltOut, Nm; 14 14 15 15 Naverage = output[0].Naverage; … … 81 81 output[0].average[Naverage].Nlensing = Nm; 82 82 83 Nm = 0; 84 for (j = 0; j < input[0].average[i].Nstarpar; j++) { 85 offset = input[0].average[i].starparOffset + j; 86 87 output[0].starpar[Nstarpar] = input[0].starpar[offset]; 88 output[0].starpar[Nstarpar].averef = Naverage; 89 90 Nstarpar ++; 91 Nm ++; 92 if (Nstarpar == NSTARPAR) { 93 NSTARPAR += 1000; 94 REALLOCATE (output[0].starpar, StarPar, NSTARPAR); 95 } 96 } 97 output[0].average[Naverage].Nstarpar = Nm; 98 83 99 Naverage ++; 84 100 if (Naverage == NAVERAGE) { … … 91 107 REALLOCATE (output[0].measure, Measure, MAX (Nmeasure, 1)); 92 108 REALLOCATE (output[0].lensing, Lensing, MAX (Nlensing, 1)); 109 REALLOCATE (output[0].starpar, StarPar, MAX (Nstarpar, 1)); 93 110 REALLOCATE (output[0].secfilt, SecFilt, NsecfiltOut*MAX (Naverage, 1)); 94 111 output[0].Naverage = Naverage; 95 112 output[0].Nlensing = Nlensing; 113 output[0].Nstarpar = Nstarpar; 96 114 output[0].Nsecf_mem = Naverage * NsecfiltOut; 97 115 -
trunk/Ohana/src/dvomerge/src/merge_catalogs_old.c
r37116 r37807 4 4 # define IN_REGION(R,D) ( \ 5 5 ((D) >= region[0].Dmin) && ((D) < region[0].Dmax) && \ 6 ((R) >= region[0].Rmin) && ((R) < region[0].Rmax))6 ((R) >= region[0].Rmin) && ((R) < region[0].Rmax)) 7 7 8 8 // merge the input data into the output catalog … … 14 14 double *X1, *Y1, *X2, *Y2; 15 15 double dX, dY, dR; 16 off_t *N1, *N2, *next_meas, *next_lens ;17 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch, Nlens, NLENS ;16 off_t *N1, *N2, *next_meas, *next_lens, *next_star; 17 off_t Nave, NAVE, Nmeas, NMEAS, Nmatch, Nlens, NLENS, Nstar, NSTAR; 18 18 int NsecfiltIn; 19 19 int NsecfiltOut; … … 53 53 NMEAS = Nmeas = output[0].Nmeasure; 54 54 NLENS = Nlens = output[0].Nlensing; 55 NSTAR = Nstar = output[0].Nstarpar; 55 56 56 57 // current max obj ID for this catalog … … 64 65 * coordops.update.c). We use the center of the region (catalog) for crval1,2. 65 66 */ 67 68 InitCoords (&tcoords, "DEC--ARC"); 66 69 tcoords.crval1 = 0.5*(region[0].Rmin + region[0].Rmax); 67 70 if (region[0].Dmax < 90) { … … 70 73 tcoords.crval2 = 90.0; 71 74 } 72 tcoords.crpix1 = 0;73 tcoords.crpix2 = 0;74 75 tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0; 75 tcoords.pc1_1 = tcoords.pc2_2 = 1.0;76 tcoords.pc1_2 = tcoords.pc2_1 = 0.0;77 tcoords.Npolyterms = 1;78 strcpy (tcoords.ctype, "DEC--ARC");79 76 80 77 if (VERBOSE) fprintf (stderr, "merging %s into %s\n", input[0].filename, output[0].filename); … … 120 117 next_meas = init_measure_links (output[0].average, Nave, output[0].measure, Nmeas); 121 118 next_lens = init_lensing_links (output[0].average, Nave, output[0].lensing, Nlens); 119 next_star = init_starpar_links (output[0].average, Nave, output[0].starpar, Nstar); 122 120 } else { 123 121 next_meas = build_measure_links (output[0].average, Nave, output[0].measure, Nmeas); 124 122 next_lens = build_lensing_links (output[0].average, Nave, output[0].lensing, Nlens); 123 next_star = build_starpar_links (output[0].average, Nave, output[0].starpar, Nstar); 125 124 } 126 125 … … 184 183 REALLOCATE (output[0].measure, Measure, NMEAS); 185 184 } 186 if (Nlens + input[0].average[N].N measure>= NLENS) {187 NLENS = Nlens + input[0].average[N].N measure+ 1000;185 if (Nlens + input[0].average[N].Nlensing >= NLENS) { 186 NLENS = Nlens + input[0].average[N].Nlensing + 1000; 188 187 REALLOCATE (next_lens, off_t, NLENS); 189 188 REALLOCATE (output[0].lensing, Lensing, NLENS); 189 } 190 if (Nstar + input[0].average[N].Nstarpar >= NSTAR) { 191 NSTAR = Nstar + input[0].average[N].Nstarpar + 1000; 192 REALLOCATE (next_star, off_t, NSTAR); 193 REALLOCATE (output[0].starpar, StarPar, NSTAR); 190 194 } 191 195 … … 274 278 } 275 279 280 // if lensing measurements exist, add them too 281 if (output[0].starpar) { 282 for (Nin = 0; Nin < input[0].average[N].Nstarpar; Nin++) { 283 /* add to end of lensing list */ 284 add_star_link (&output[0].average[n], next_star, Nstar, NSTAR); 285 286 // set the new starpar 287 off_t staroff = input[0].average[N].starparOffset + Nin; 288 output[0].starpar[Nstar] = input[0].starpar[staroff]; 289 290 output[0].starpar[Nstar].averef = n; 291 output[0].starpar[Nstar].objID = output[0].average[n].objID; 292 output[0].starpar[Nstar].catID = output[0].catID; 293 output[0].average[n].Nstarpar ++; 294 Nstar ++; 295 } 296 } 297 276 298 // update the average properties to reflect the incoming entries: 277 299 // if the original value is NAN but the input value is not, accept the input: … … 319 341 REALLOCATE (output[0].lensing, Lensing, NLENS); 320 342 } 343 if (Nstar + input[0].average[N].Nstarpar >= NSTAR) { 344 NSTAR = Nstar + input[0].average[N].Nstarpar + 1000; 345 REALLOCATE (next_star, off_t, NSTAR); 346 REALLOCATE (output[0].starpar, StarPar, NSTAR); 347 } 321 348 if (Nave >= NAVE) { 322 349 NAVE = Nave + 1000; … … 326 353 327 354 if (input[0].found_t[N] >= 0) continue; 328 if (!IN_REGION (input[0].average[N].R, input[0].average[N].D)) continue; 355 356 // if we are using MATCHED_TABLES, we are going to leave the edge cases in their 357 // source catalog, even if they have leaked beyond the edge 358 if (!MATCHED_TABLES && !IN_REGION (input[0].average[N].R, input[0].average[N].D)) continue; 329 359 330 360 // XXX should we accept the input measurements for these fields? … … 413 443 } 414 444 445 /** add starpar for this input average object **/ 446 if (output[0].starpar) { 447 output[0].average[Nave].starparOffset = Nstar; 448 for (Nin = 0; Nin < input[0].average[N].Nstarpar; Nin ++) { 449 // supply the starpar values from this detection 450 off_t staroff = input[0].average[N].starparOffset + Nin; 451 output[0].starpar[Nstar] = input[0].starpar[staroff]; 452 453 // the following starpar elements cannot be set until here: 454 output[0].starpar[Nstar].averef = Nave; 455 output[0].starpar[Nstar].objID = output[0].average[Nave].objID; 456 output[0].starpar[Nstar].catID = output[0].catID; 457 458 // as we add starpar, update Nstarpar to match 459 output[0].average[Nave].Nstarpar ++; 460 461 /* we set next[Nstar] to -1 here, and update correctly below */ 462 next_star[Nstar] = -1; 463 Nstar ++; 464 } 465 int Ngroup = input[0].average[N].Nstarpar; 466 for (j = 0; j < Ngroup - 1; j++) { 467 next_star[Nstar - Ngroup + j] = Nstar - Ngroup + j + 1; 468 } 469 } 470 415 471 Nave ++; 416 472 } … … 421 477 REALLOCATE (output[0].measure, Measure, Nmeas); 422 478 REALLOCATE (output[0].lensing, Lensing, Nlens); 479 REALLOCATE (output[0].starpar, StarPar, Nstar); 423 480 424 481 # define NOSORT 0 … … 429 486 output[0].measure = sort_measure (output[0].average, Nave, output[0].measure, Nmeas, next_meas); 430 487 output[0].lensing = sort_lensing (output[0].average, Nave, output[0].lensing, Nlens, next_lens); 488 output[0].starpar = sort_starpar (output[0].average, Nave, output[0].starpar, Nstar, next_star); 431 489 } 432 490 … … 445 503 output[0].Nmeasure = Nmeas; 446 504 output[0].Nlensing = Nlens; 505 output[0].Nstarpar = Nstar; 447 506 output[0].Nsecf_mem = Nave*NsecfiltOut; 448 507 if (VERBOSE) fprintf (stderr, "Nstars, Nave, Nmeas, Nlens: "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT" "OFF_T_FMT", ("OFF_T_FMT" matches)\n", Nstars, Nave, Nmeas, Nlens, Nmatch); … … 450 509 free (next_meas); 451 510 free (next_lens); 511 free (next_star); 452 512 453 513 free (X2);
Note:
See TracChangeset
for help on using the changeset viewer.
