Changeset 26711
- Timestamp:
- Jan 28, 2010, 4:42:14 PM (16 years ago)
- Location:
- branches/eam_branches/20091201/Ohana/src/addstar
- Files:
-
- 1 deleted
- 11 edited
- 1 copied
-
Makefile (modified) (4 diffs)
-
include/addstar.h (modified) (1 diff)
-
src/FilterStars.c (modified) (2 diffs)
-
src/LoadData.c (modified) (2 diffs)
-
src/PSPS_IDs.c (deleted)
-
src/ReadImageHeader.c (modified) (2 diffs)
-
src/UpdateImageIDs.c (modified) (1 diff)
-
src/build_links.c (modified) (5 diffs)
-
src/find_matches.c (modified) (1 diff)
-
src/find_matches_closest.c (modified) (1 diff)
-
src/find_matches_closest_refstars.c (modified) (1 diff)
-
src/find_matches_refstars.c (modified) (2 diffs)
-
src/psps_ids.c (copied) (copied from trunk/Ohana/src/addstar/src/psps_ids.c )
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/Ohana/src/addstar/Makefile
r26280 r26711 81 81 $(SRC)/ReadImageHeader.$(ARCH).o \ 82 82 $(SRC)/UpdateImageIDs.$(ARCH).o \ 83 $(SRC)/update_coords.$(ARCH).o 83 $(SRC)/update_coords.$(ARCH).o \ 84 $(SRC)/psps_ids.$(ARCH).o 84 85 85 86 ADDSTARD = \ … … 118 119 $(SRC)/opening_angle.$(ARCH).o \ 119 120 $(SRC)/replace_match.$(ARCH).o \ 120 $(SRC)/update_coords.$(ARCH).o 121 $(SRC)/update_coords.$(ARCH).o \ 122 $(SRC)/psps_ids.$(ARCH).o 121 123 122 124 ADDSTART = \ … … 157 159 $(SRC)/NewImage_Thread.$(ARCH).o \ 158 160 $(SRC)/NewReflist_Thread.$(ARCH).o \ 159 $(SRC)/NewRefcat_Thread.$(ARCH).o 161 $(SRC)/NewRefcat_Thread.$(ARCH).o \ 162 $(SRC)/psps_ids.$(ARCH).o 160 163 161 164 ADDSTARC = \ … … 206 209 $(SRC)/ConfigInit.$(ARCH).o \ 207 210 $(SRC)/Shutdown.$(ARCH).o \ 208 $(SRC)/SetSignals.$(ARCH).o 211 $(SRC)/SetSignals.$(ARCH).o \ 212 $(SRC)/psps_ids.$(ARCH).o 209 213 210 214 SEDSTAR = \ -
branches/eam_branches/20091201/Ohana/src/addstar/include/addstar.h
r26286 r26711 289 289 PhotCode *pmm_get_photcode (char *emulsion, char *filter); 290 290 291 #define PSPS_ID TRUE 292 uint64_t CreatePSPSDetectionID(double tobs, int ccdid, int detID); 293 uint64_t CreatePSPSObjectID(double ra, double dec); 294 291 295 // this is a gnu extension?? caution! 292 296 void *memrchr(const void *s, int c, size_t n); -
branches/eam_branches/20091201/Ohana/src/addstar/src/FilterStars.c
r21508 r26711 1 1 # include "addstar.h" 2 # define EXTERNAL_ID FALSE2 # define EXTERNAL_ID TRUE 3 3 4 4 /* exclude some detections based on various filter options: … … 88 88 } 89 89 90 # if (0)91 90 if (PSPS_ID) { 92 91 double mjd; 93 92 mjd = ohana_sec_to_mjd (image[0].tzero); 94 // XXX this is clearly wrong : what does PSPS want? 95 stars[N].measure.extID = PSPS_create_detectid (mjd, imageID); 93 stars[N].measure.extID = CreatePSPSDetectionID(mjd, image[0].ccdnum, stars[N].measure.detID); 94 } else { 95 stars[N].measure.extID = 0; 96 96 } 97 # endif98 97 99 stars[N].measure.imageID = imageID; // this value is update in UpdateImageIDs98 stars[N].measure.imageID = imageID; // this value is updated in UpdateImageIDs 100 99 101 100 N ++; -
branches/eam_branches/20091201/Ohana/src/addstar/src/LoadData.c
r26286 r26711 10 10 char *name; 11 11 int i, j, Nvalid, Nhead, Ndata, Nskip; 12 uint32_t parentID = UINT32_MAX; 12 13 Stars *inStars; 13 14 … … 58 59 // skip the table if there is no data segment (eg, mosaic WRP image) 59 60 if (!strcmp(headerSets[i].extdata, "NONE")) { 61 if (!strcmp(headerSets[i].exthead, "PHU") && (Nimages > 1)) { 62 // This image is the parent of subsequent images 63 parentID = Nvalid; 64 images[0][Nvalid].parentID = UINT32_MAX; 65 } 60 66 Nvalid++; 61 67 CHECK_REALLOCATE (images[0], Image, NVALID, Nvalid, 10); 62 68 continue; 63 69 } 70 images[0][Nvalid].parentID = parentID; 64 71 65 72 // advance the pointer to the start of the corresponding table block -
branches/eam_branches/20091201/Ohana/src/addstar/src/ReadImageHeader.c
r26284 r26711 5 5 int ReadImageHeader (Header *header, Image *image, int photcode) { 6 6 7 int Nastro, ccdnum,hour, min, Nx, Ny, haveNx, haveNy, sourceID;7 int Nastro, hour, min, Nx, Ny, haveNx, haveNy, sourceID; 8 8 double tmp, sec, Cerror, ZeroPt, FWHM_X, FWHM_Y; 9 char *c, photname[64], line[80] ;9 char *c, photname[64], line[80], ccdnum[64]; 10 10 PhotCode *photcodeData = NULL; 11 11 … … 174 174 } 175 175 176 if (!gfits_scan (header, CCDNumKeyword, "%d", 1, &ccdnum)) { 177 image[0].ccdnum = 0xff; 178 } else { 179 image[0].ccdnum = ccdnum; 176 if (!gfits_scan (header, CCDNumKeyword, "%s", 1, ccdnum)) { 177 fprintf (stderr, "CCDNumKeyword %s not found\n", CCDNumKeyword); 178 return FALSE; 179 } else { 180 // CCDNumKeyword (EXTNAME) is a string yet we need an integer 181 // RULE: ccdnum is the value of the first string of digits in CCDNumKeyword 182 // For example: ccdnum(XY42.hdr) = 42, ccdnum(XY01.hdr) = 1 183 char *p = ccdnum; 184 // get rid of any leading non-digit characters 185 while (*p && !isdigit(*p)) p++; 186 if (*p == 0) { 187 fprintf (stderr, "invalid ccdnum %s\n", ccdnum); 188 return FALSE; 189 } 190 image[0].ccdnum = atoi(p); 180 191 } 181 192 -
branches/eam_branches/20091201/Ohana/src/addstar/src/UpdateImageIDs.c
r21508 r26711 40 40 for (i = 0; i < Nimages; i++) { 41 41 images[i].imageID += imageID; 42 if (images[i].parentID == UINT32_MAX) { 43 images[i].parentID = 0; 44 } else { 45 images[i].parentID += imageID; 46 } 42 47 } 43 48 -
branches/eam_branches/20091201/Ohana/src/addstar/src/build_links.c
r17192 r26711 1 1 # include "addstar.h" 2 3 /* 4 5 There are two modes for the measure table: sorted and unsorted. 6 7 In sorted mode, all measures associated with a given average are in a single block. The block 8 is pointed to by average->measureOffset and the range is average->Nmeasure 9 10 In unsorted mode, it is not possible to go directly from average to measure without scanning. 11 In this case, it is necessary to use the value measure->averef to find the corresponding 12 average entry. 13 14 Note that average->measureOffset and measure->averef are only valid for a given load of the 15 data: they refer to the sequence number in the data blocks. 16 17 next_meas is a list of the equivalent sequence of the measure block as if it were sorted. 18 19 to find the sequence of measurements for a given average: 20 n_0 = average->measureOffset 21 n_1 = next_meas[n_0] 22 n_i = next_meas[n_i-1] 23 24 */ 2 25 3 26 /* build the initial links assuming the table is sorted, … … 31 54 } 32 55 56 /* construct measure links which are valid FOR THIS LOAD 57 * - if we have a full load, we will get links which can 58 * be used by other programs (eg, relphot, etc) 59 * - if we have a partial load, the links are only valid 60 * for that partial load 61 */ 62 63 int *build_measure_links (Average *average, int Naverage, Measure *measure, int Nmeasure) { 64 65 int i, m, k, Nm, averef; 66 int *next; 67 68 ALLOCATE (next, int, Nmeasure); 69 70 /* reset the Nm, offset values for average */ 71 for (i = 0; i < Naverage; i++) { 72 average[i].measureOffset = -1; 73 average[i].Nmeasure = 0; 74 } 75 76 for (Nm = 0; Nm < Nmeasure; Nm++) { 77 averef = measure[Nm].averef; 78 m = average[averef].measureOffset; 79 next[Nm] = -1; 80 81 if (m == -1) { /* no links yet for source */ 82 average[averef].measureOffset = Nm; 83 average[averef].Nmeasure = 1; 84 continue; 85 } 86 87 for (k = 0; next[m] != -1; k++) { 88 m = next[m]; 89 if (m >= Nmeasure) { 90 fprintf (stderr, "WARNING: m out of bounds (1)\n"); 91 } 92 } 93 94 average[averef].Nmeasure = k + 2; 95 next[m] = Nm; 96 if (m >= Nmeasure) { 97 fprintf (stderr, "WARNING: m out of bounds (2)\n"); 98 } 99 } 100 return (next); 101 } 102 103 /* average[].measureOffset, average[].Nmeasure are valid within an addstar run */ 104 int add_meas_link (Average *average, int *next, int Nmeasure, int NMEASURE) { 105 106 int k, m; 107 108 /* if we have trouble, check validity of next[m] : m < Nmeasure */ 109 m = average[0].measureOffset; 110 111 for (k = 0; k < average[0].Nmeasure - 1; k++) { 112 m = next[m]; 113 if (m >= NMEASURE) { 114 fprintf (stderr, "WARNING: m out of bounds (3)\n"); 115 } 116 } 117 118 /* set up references */ 119 next[Nmeasure] = -1; 120 if (Nmeasure >= NMEASURE) { 121 fprintf (stderr, "WARNING: Nmeasure out of bounds (1)\n"); 122 } 123 124 if (m == -1) { 125 average[0].measureOffset = Nmeasure; 126 } else { 127 next[m] = Nmeasure; 128 if (m >= NMEASURE) { 129 fprintf (stderr, "WARNING: m out of bounds (4)\n"); 130 } 131 } 132 133 return (TRUE); 134 } 135 136 /* Missing does not carry enough information to reconstruct the links 137 we must always save the missing table, if it exists */ 138 139 Measure *sort_measure (Average *average, int Naverage, Measure *measure, int Nmeasure, int *next) { 140 141 int i, k, n, N; 142 Measure *tmpmeasure; 143 144 /* fix order of Measure (memory intensive, but fast) */ 145 N = 0; 146 ALLOCATE (tmpmeasure, Measure, Nmeasure); 147 for (i = 0; i < Naverage; i++) { 148 n = average[i].measureOffset; 149 average[i].measureOffset = N; 150 for (k = 0; k < average[i].Nmeasure; k++, N++) { 151 if (n == -1) abort(); 152 tmpmeasure[N] = measure[n]; 153 if (measure[n].averef != i) abort(); 154 tmpmeasure[N].averef = i; 155 n = next[n]; 156 } 157 } 158 free (measure); 159 return (tmpmeasure); 160 } 161 33 162 /* build the initial links assuming the table is sorted */ 34 163 int *init_missing_links (Average *average, int Naverage, Missing *missing, int Nmissing) { … … 57 186 } 58 187 59 /* average[].measureOffset, average[].Nmeasure are valid within an addstar run */60 int add_meas_link (Average *average, int *next, int Nmeasure, int NMEASURE) {61 62 int k, m;63 64 /* if we have trouble, check validity of next[m] : m < Nmeasure */65 m = average[0].measureOffset;66 67 for (k = 0; k < average[0].Nmeasure - 1; k++) {68 m = next[m];69 if (m >= NMEASURE) {70 fprintf (stderr, "WARNING: m out of bounds (3)\n");71 }72 }73 74 /* set up references */75 next[Nmeasure] = -1;76 if (Nmeasure >= NMEASURE) {77 fprintf (stderr, "WARNING: Nmeasure out of bounds (1)\n");78 }79 80 if (m == -1) {81 average[0].measureOffset = Nmeasure;82 } else {83 next[m] = Nmeasure;84 if (m >= NMEASURE) {85 fprintf (stderr, "WARNING: m out of bounds (4)\n");86 }87 }88 89 return (TRUE);90 }91 92 188 int add_miss_link (Average *average, int *next, int Nmissing) { 93 189 … … 109 205 } 110 206 111 /* construct measure links which are valid FOR THIS LOAD112 * - if we have a full load, we will get links which can113 * be used by other programs (eg, relphot, etc)114 * - if we have a partial load, the links are only valid115 * for that partial load116 */117 118 int *build_measure_links (Average *average, int Naverage, Measure *measure, int Nmeasure) {119 120 int i, m, k, Nm, averef;121 int *next;122 123 ALLOCATE (next, int, Nmeasure);124 125 /* reset the Nm, offset values for average */126 for (i = 0; i < Naverage; i++) {127 average[i].measureOffset = -1;128 average[i].Nmeasure = 0;129 }130 131 for (Nm = 0; Nm < Nmeasure; Nm++) {132 averef = measure[Nm].averef;133 m = average[averef].measureOffset;134 next[Nm] = -1;135 136 if (m == -1) { /* no links yet for source */137 average[averef].measureOffset = Nm;138 average[averef].Nmeasure = 1;139 continue;140 }141 142 for (k = 0; next[m] != -1; k++) {143 m = next[m];144 if (m >= Nmeasure) {145 fprintf (stderr, "WARNING: m out of bounds (1)\n");146 }147 }148 149 average[averef].Nmeasure = k + 2;150 next[m] = Nm;151 if (m >= Nmeasure) {152 fprintf (stderr, "WARNING: m out of bounds (2)\n");153 }154 }155 return (next);156 }157 158 /* Missing does not carry enough information to reconstruct the links159 we must always save the missing table, if it exists */160 161 Measure *sort_measure (Average *average, int Naverage, Measure *measure, int Nmeasure, int *next) {162 163 int i, k, n, N;164 Measure *tmpmeasure;165 166 /* fix order of Measure (memory intensive, but fast) */167 N = 0;168 ALLOCATE (tmpmeasure, Measure, Nmeasure);169 for (i = 0; i < Naverage; i++) {170 n = average[i].measureOffset;171 average[i].measureOffset = N;172 for (k = 0; k < average[i].Nmeasure; k++, N++) {173 tmpmeasure[N] = measure[n];174 tmpmeasure[N].averef = i;175 n = next[n];176 }177 }178 free (measure);179 return (tmpmeasure);180 }181 182 207 Missing *sort_missing (Average *average, int Naverage, Missing *missing, int Nmissing, int *next) { 183 208 … … 199 224 return (tmpmissing); 200 225 } 226 -
branches/eam_branches/20091201/Ohana/src/addstar/src/find_matches.c
r26283 r26711 271 271 catalog[0].average[Nave].catID = catID; 272 272 catalog[0].average[Nave].flags = 0; 273 if (PSPS_ID) { 274 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 275 catalog[0].average[Nave].D); 276 } else { 277 catalog[0].average[Nave].extID = 0; 278 } 273 279 274 280 objID ++; -
branches/eam_branches/20091201/Ohana/src/addstar/src/find_matches_closest.c
r26283 r26711 266 266 catalog[0].average[Nave].catID = catID; 267 267 catalog[0].average[Nave].flags = 0; 268 if (PSPS_ID) { 269 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 270 catalog[0].average[Nave].D); 271 } else { 272 catalog[0].average[Nave].extID = 0; 273 } 274 268 275 269 276 objID ++; -
branches/eam_branches/20091201/Ohana/src/addstar/src/find_matches_closest_refstars.c
r26283 r26711 291 291 catalog[0].average[Nave].catID = catID; 292 292 catalog[0].average[Nave].flags = 0; 293 if (PSPS_ID) { 294 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 295 catalog[0].average[Nave].D); 296 } else { 297 catalog[0].average[Nave].extID = 0; 298 } 293 299 294 300 objID ++; -
branches/eam_branches/20091201/Ohana/src/addstar/src/find_matches_refstars.c
r26283 r26711 261 261 catalog[0].average[Nave].catID = catID; 262 262 catalog[0].average[Nave].flags = 0; 263 if (PSPS_ID) { 264 catalog[0].average[Nave].extID = CreatePSPSObjectID(catalog[0].average[Nave].R, 265 catalog[0].average[Nave].D); 266 } else { 267 catalog[0].average[Nave].extID = 0; 268 } 269 263 270 264 271 objID ++; … … 290 297 291 298 stars[N][0].found = Nmeas; 292 next_meas[Nmeas] = -1; 293 Nmeas ++; 299 next_meas[Nmeas] = -1; // initial value here, update below 300 Nmeas ++; 301 } 302 303 for (j = 0; j < NREFSTAR_GROUP - 1; j++) { 304 next_meas[Nmeas - NREFSTAR_GROUP + j] = Nmeas - NREFSTAR_GROUP + j + 1; 294 305 } 295 306 Nave ++;
Note:
See TracChangeset
for help on using the changeset viewer.
