Changeset 28204
- Timestamp:
- Jun 3, 2010, 2:21:32 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/relastro/src/high_speed_objects.c
r28201 r28204 4 4 # define NEXT_J { j++; continue; } 5 5 6 # define REF_RA1 192.455781 7 # define REF_DEC1 2.563102 8 # define REF_RA2 192.444302113 9 # define REF_DEC2 2.5786559112 6 10 int high_speed_objects (SkyRegion *region, Catalog *catalog) { 7 11 8 12 // XXX seems silly to require region here just to find the catalog bounds / center 9 13 10 off_t i, j, m, J, Ni, ni, nj, Nj, *N1, Nslow, NgroupA, NgroupB;14 off_t i, j, m, J, ni, nj, *N1, Nslow, NgroupA, NgroupB; 11 15 int *slowMoving, *groupA, *groupB, status, foundA, foundB, Nmatch, valid; 12 16 double *X1, *Y1; 13 double dX, dY, dR, RADIUS2 ;17 double dX, dY, dR, RADIUS2, radius, yJ; 14 18 Coords tcoords; 15 19 … … 21 25 yNsec = GetPhotcodeNsec(ycode); 22 26 23 zcode = GetPhotcodeCodebyName(" y");27 zcode = GetPhotcodeCodebyName("z"); 24 28 zNsec = GetPhotcodeNsec(zcode); 25 29 … … 57 61 58 62 if (i % 100 == 0) fprintf (stderr, "."); 63 64 radius = hypot((REF_DEC1 - catalog[0].average[i].D), (REF_RA1 - catalog[0].average[i].R)); 65 if (radius < 0.0001) { 66 fprintf (stderr, "found it\n"); 67 } 68 radius = hypot((REF_DEC2 - catalog[0].average[i].D), (REF_RA2 - catalog[0].average[i].R)); 69 if (radius < 0.0001) { 70 fprintf (stderr, "found it\n"); 71 } 59 72 60 73 // do any of the measures for this object match group A? … … 89 102 // average-based tests: 90 103 valid = TRUE; 91 valid &= !(catalog[0].average[i].flags & 0x40000);92 valid &= ( catalog[0].average[i].flags & 0x80000);104 valid &= ((catalog[0].average[i].flags & 0x40000) == 0); 105 valid &= ((catalog[0].average[i].flags & 0x80000) > 0); 93 106 valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].M < 1.0); 94 107 valid &= (catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0); … … 99 112 for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) { 100 113 if (catalog[0].measure[m].photcode == USNO_R) { 101 valid &= ((catalog[0].measure[m].M > 20.0) || (catalog[0].measure[m].M < 1.0));114 valid &= ((catalog[0].measure[m].M > 20.0) || isnan(catalog[0].measure[m].M)); 102 115 } 103 116 if (catalog[0].measure[m].photcode == USNO_N) { 104 valid &= ((catalog[0].measure[m].M > 18. 5) || (catalog[0].measure[m].M < 1.0));117 valid &= ((catalog[0].measure[m].M > 18.0) || isnan(catalog[0].measure[m].M)); 105 118 } 106 119 } … … 118 131 NgroupA ++; 119 132 continue; 133 } else { 134 // fprintf (stderr, "skip %lld (group A)\n", (long long) i); 120 135 } 121 136 } … … 126 141 // average-based tests: 127 142 valid = TRUE; 128 valid &= !(catalog[0].average[i].flags & 0x10000);129 valid &= ( catalog[0].average[i].flags & 0x20000);143 valid &= ((catalog[0].average[i].flags & 0x10000) == 0); 144 valid &= ((catalog[0].average[i].flags & 0x20000) > 0); 130 145 valid &= (catalog[0].secfilt[i*Nsecfilt + jNsec].M < 1.0); 131 146 valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].Nused > 1); 132 147 valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].dM < 0.2); 133 // XXX ignoring the z-band restriction for now 134 148 149 if ((catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0) || (catalog[0].secfilt[i*Nsecfilt + zNsec].Nused == 1)) { 150 valid &= TRUE; 151 } else { 152 valid &= ((catalog[0].secfilt[i*Nsecfilt + zNsec].M - catalog[0].secfilt[i*Nsecfilt + yNsec].M) > 0.2); 153 } 154 135 155 // measure-based tests: 136 156 m = catalog[0].average[i].measureOffset; 137 157 for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) { 138 158 if (catalog[0].measure[m].photcode == USNO_R) { 139 valid &= ((catalog[0].measure[m].M > 20.0) || (catalog[0].measure[m].M < 1.0));159 valid &= ((catalog[0].measure[m].M > 20.0) || isnan(catalog[0].measure[m].M)); 140 160 } 141 161 if (catalog[0].measure[m].photcode == USNO_N) { 142 valid &= ((catalog[0].measure[m].M > 18.5) || (catalog[0].measure[m].M < 1.0));162 valid &= ((catalog[0].measure[m].M > 18.5) || isnan(catalog[0].measure[m].M)); 143 163 } 144 164 } … … 158 178 NgroupB ++; 159 179 continue; 180 } else { 181 // fprintf (stderr, "skip %lld (group B)\n", (long long) i); 160 182 } 161 183 } … … 207 229 nj = N1[j]; 208 230 231 if (ni == 131030) { 232 fprintf (stderr, "got 2mass\n"); 233 } 234 if (nj == 53581) { 235 fprintf (stderr, "got ps1\n"); 236 } 237 209 238 if (slowMoving[ni]) NEXT_I; 210 239 if (slowMoving[nj]) NEXT_J; … … 226 255 for (J = j; (dX > -1.02*RADIUS) && (J < catalog[0].Naverage); J++) { 227 256 if (J == i) continue; // avoid auto-matches 257 228 258 dX = X1[i] - X1[J]; 259 260 nj = N1[J]; 261 if (!groupB[nj]) continue; 262 229 263 dY = Y1[i] - Y1[J]; 230 264 dR = dX*dX + dY*dY; 231 265 if (dR > RADIUS2) continue; 232 266 267 // y_groupA - J_groupB 268 yJ = catalog[0].secfilt[nj*Nsecfilt + yNsec].M - catalog[0].secfilt[ni*Nsecfilt + jNsec].M; 269 if (yJ < 1.25) continue; 270 if (yJ > 5.0) continue; 271 233 272 /*** a match is found (just print it for the moment) ***/ 234 273 Nmatch ++; 235 Ni = N1[i];236 Nj = N1[J];237 274 238 275 if (1) fprintf (stderr, "match %d = %lld %lld : %f %f : %f %f : %f\n", 239 Nmatch, (long long) i, (long long) J,240 catalog[0].average[Ni].R, catalog[0].average[Ni].D,241 catalog[0].average[Nj].R, catalog[0].average[Nj].D,242 sqrt(dR));276 Nmatch, (long long) i, (long long) J, 277 catalog[0].average[ni].R, catalog[0].average[ni].D, 278 catalog[0].average[nj].R, catalog[0].average[nj].D, 279 sqrt(dR)); 243 280 } 244 281 i++;
Note:
See TracChangeset
for help on using the changeset viewer.
