Changeset 29818
- Timestamp:
- Nov 24, 2010, 12:04:14 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20101103/Ohana/src/relastro/src/high_speed_objects.c
r28811 r29818 13 13 // XXX seems silly to require region here just to find the catalog bounds / center 14 14 15 off_t i, j, m, J, ni, nj, *N1, Nslow, Ninvalid, NgroupA, NgroupB, NgroupAbad, NgroupBbad ;16 int *slowMoving, *groupA, *groupB, status, foundA, foundB, Nmatch, valid ;15 off_t i, j, m, J, ni, nj, *N1, Nslow, Ninvalid, NgroupA, NgroupB, NgroupAbad, NgroupBbad,l,i1,Noff,Nmeasure,Naverage, NAVERAGE, NMEASURE; 16 int *slowMoving, *groupA, *groupB, status, foundA, foundB, Nmatch, valid,Nmatchmeas,Nepoch,nv[2],Nmatchmeasobj; 17 17 double *X1, *Y1; 18 double dX, dY, dR, RADIUS2 , yJ;18 double dX, dY, dR, RADIUS2; 19 19 Coords tcoords; 20 Catalog catalog1; 20 21 21 22 int zcode, zNsec, ycode, yNsec, jcode, jNsec, hcode, hNsec, kcode, kNsec, USNO_R, USNO_N, Nsecfilt; 23 char filename[1024]; 24 char outdir[]="/data/ipp022.0/ndeacon/hispeedzy"; 25 Noff = strlen(CATDIR); 26 sprintf (filename, "%s/%s", outdir, &catalog[0].filename[Noff]); 27 dvo_catalog_init(&catalog1, TRUE); /*initialise new catalogue*/ 28 catalog1.filename = strcreate(filename); 29 30 SIGMA_LIM = 0.0; 22 31 23 32 Nsecfilt = GetPhotcodeNsecfilt(); 33 Naverage=catalog[0].Naverage; 34 Nmeasure=catalog[0].Nmeasure; 35 // ALLOCATE (catalog1.average, Average,Naverage); 36 // ALLOCATE (catalog1.measure, Measure,Nmeasure); 37 // ALLOCATE(catalog1.secfilt, SecFilt,catalog[0].Naverage*Nsecfilt); 38 catalog1.filename = filename; // based on the input name, need to keep everything below the catdir portion 39 catalog1.Nsecfilt = Nsecfilt; 40 // always load all of the data (if any exists) 41 catalog1.catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF; 42 43 catalog1.catformat = dvo_catalog_catformat (CATFORMAT); // set the default catformat from config data 44 catalog1.catmode = dvo_catalog_catmode (CATMODE); // set the default catmode from config data 45 46 if (!dvo_catalog_open (&catalog1, region, VERBOSE,"w")) { 47 fprintf (stderr, "ERROR: failure to open catalog file %s\n", 48 filename); 49 exit (2); 50 } 51 52 NAVERAGE = 1000; 53 NMEASURE = 10000; 54 REALLOCATE (catalog1.average, Average, NAVERAGE); 55 REALLOCATE (catalog1.measure, Measure, NMEASURE); 56 REALLOCATE(catalog1.secfilt, SecFilt, NAVERAGE*Nsecfilt); 24 57 25 58 ycode = GetPhotcodeCodebyName("y"); … … 67 100 NgroupBbad = 0; 68 101 69 fprintf (stdout, "# RA_A DEC_A RA_B DEC_B : pmx pmy dR : z dz y dy J dJ H dH K dK\n");102 fprintf (stdout, "# RA_A DEC_A RA_B DEC_B : pmx pmy dR dt: z dz y dy J dJ H dH K dK\n"); 70 103 //................270.2346670 20.2471540 270.2170434 20.2717396 : -59.11 88.78 106.66 : 0.000 0.000 19.582 0.112 16.041 0.110 15.388 0.098 14.858 0.001 71 104 … … 88 121 foundA = FALSE; 89 122 for (j = 0; !foundA && (j < catalog[0].average[i].Nmeasure); j++, m++) { 123 if((catalog[0].average[i].R>204.1923)&&(catalog[0].average[i].R<204.1924)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377)) 124 { 125 printf("Hello"); 126 } 127 90 128 if (MeasMatchesPhotcode(&catalog[0].measure[m], photcodesGroupA, NphotcodesGroupA)) { 91 129 foundA = TRUE; … … 97 135 foundB = FALSE; 98 136 for (j = 0; !foundB && (j < catalog[0].average[i].Nmeasure); j++, m++) { 137 138 if((catalog[0].average[i].R>204.192)&&(catalog[0].average[i].R<204.1925)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377)) 139 { 140 printf("Hello"); 141 } 142 99 143 if (MeasMatchesPhotcode(&catalog[0].measure[m], photcodesGroupB, NphotcodesGroupB)) { 100 144 foundB = TRUE; … … 114 158 if (foundA && !foundB) { 115 159 // average-based tests: 160 161 if((catalog[0].average[i].R>204.1923)&&(catalog[0].average[i].R<204.1924)&&(catalog[0].average[i].D>11.376)&&(catalog[0].average[i].D<11.377)) 162 { 163 printf("Hello"); 164 } 165 116 166 valid = TRUE; 117 valid &= ((catalog[0].average[i].flags & 0x 40000) == 0);118 valid &= ((catalog[0].average[i].flags & 0x 80000) > 0);119 valid &= ( catalog[0].secfilt[i*Nsecfilt + yNsec].M < 1.0);120 valid &= ( catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0);167 valid &= ((catalog[0].average[i].flags & 0x02000000) == 0); 168 valid &= ((catalog[0].average[i].flags & 0x08000000) > 0); 169 valid &= ((catalog[0].secfilt[i*Nsecfilt + yNsec].M < 1.0)||(isnan(catalog[0].secfilt[i*Nsecfilt + yNsec].M))); 170 valid &= (((catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0))||(isnan(catalog[0].secfilt[i*Nsecfilt + zNsec].M))); 121 171 // XXX color restrictions are applied in the pair-wise matching below 122 172 123 173 // measure-based tests: 124 m = catalog[0].average[i].measureOffset;174 /* m = catalog[0].average[i].measureOffset; 125 175 for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) { 126 176 if (catalog[0].measure[m].photcode == USNO_R) { … … 130 180 valid &= ((catalog[0].measure[m].M > 18.0) || isnan(catalog[0].measure[m].M)); 131 181 } 132 } 182 }*/ 133 183 134 184 // ((objflags & 524288) == 524288) && … … 154 204 155 205 // average-based tests: 206 if((catalog[0].average[i].R>204.192)&&(catalog[0].average[i].R<204.193)&&(catalog[0].average[i].D>11.372)&&(catalog[0].average[i].D<11.373)) 207 { 208 printf("Hello"); 209 } 156 210 valid = TRUE; 157 valid &= ((catalog[0].average[i].flags & 0x10000) == 0); 158 valid &= ((catalog[0].average[i].flags & 0x20000) > 0); 159 valid &= (catalog[0].secfilt[i*Nsecfilt + jNsec].M < 1.0); 211 valid &= ((catalog[0].average[i].flags & 0x01000000) == 0); 212 213 valid &= ((catalog[0].average[i].flags & 0x04000000) > 0); 214 215 valid &= ((catalog[0].secfilt[i*Nsecfilt + jNsec].M < 1.0)||(isnan(catalog[0].secfilt[i*Nsecfilt + jNsec].M))); 160 216 valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].Nused > 1); 161 217 valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].dM < 0.2); 162 218 163 if ((catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0) || (catalog[0].secfilt[i*Nsecfilt + zNsec].Nused == 1)) {219 /*if ((catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0) || (catalog[0].secfilt[i*Nsecfilt + zNsec].Nused == 1)) { 164 220 valid &= TRUE; 165 221 } else { 166 222 valid &= ((catalog[0].secfilt[i*Nsecfilt + zNsec].M - catalog[0].secfilt[i*Nsecfilt + yNsec].M) > 0.2); 167 } 223 }*/ 168 224 169 225 // measure-based tests: 170 m = catalog[0].average[i].measureOffset;226 /*m = catalog[0].average[i].measureOffset; 171 227 for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) { 172 228 if (catalog[0].measure[m].photcode == USNO_R) { … … 176 232 valid &= ((catalog[0].measure[m].M > 18.5) || isnan(catalog[0].measure[m].M)); 177 233 } 178 } 234 }*/ 179 235 180 236 // (abs(glat)>15.0) && … … 236 292 237 293 Nmatch = 0; 294 Nmatchmeas = 0; 238 295 RADIUS2 = SQ(RADIUS); 239 296 … … 243 300 ni = N1[i]; 244 301 nj = N1[j]; 245 246 302 // if (ni == 131030) { 247 303 // fprintf (stderr, "got 2mass\n"); … … 268 324 269 325 // within match range; look for valid matches 270 for (J = j; (dX > -1.02*RADIUS) && (J < catalog[0].Naverage); J++) { 326 for (J = j; (dX > -1.02*RADIUS) && (J < catalog[0].Naverage); J++) { 271 327 if (J == i) continue; // avoid auto-matches 272 328 … … 281 337 282 338 // y_groupA - J_groupB 283 yJ = catalog[0].secfilt[nj*Nsecfilt + yNsec].M - catalog[0].secfilt[ni*Nsecfilt + jNsec].M; 339 340 /* yJ = catalog[0].secfilt[nj*Nsecfilt + yNsec].M - catalog[0].secfilt[ni*Nsecfilt + jNsec].M; 284 341 if (yJ < 1.25) continue; 285 if (yJ > 5.0) continue; 342 if (yJ > 5.0) continue;*/ 286 343 287 344 /*** a match is found (just print it for the moment) ***/ 345 /*Define a vector of matched indices and set averages in new catalogue*/ 346 Nepoch=2; 347 FIT_MODE = FIT_PM_ONLY; 348 /*nv=(int *)malloc(Nepoch*sizeof(int));*/ 349 nv[0]=ni; /*THESE SHOULD BE CHANGED FOR MULTIPLE EPOCHS AS SHOULD nv*/ 350 nv[1]=nj; 351 352 catalog1.average[Nmatch]=catalog[0].average[nv[0]]; 353 /*Loop over index values and set measurements in new catalogue*/ 354 Nmatchmeasobj=0; 355 catalog1.average[Nmatch].measureOffset=Nmatchmeas; 356 for(l=0;l<Nepoch;l++) { 357 m = catalog[0].average[nv[l]].measureOffset; 358 for(i1=0;i1<catalog[0].average[nv[l]].Nmeasure;i1++) { 359 catalog1.measure[Nmatchmeas]=catalog[0].measure[m+i1]; 360 /*Set offset RA and Dec wrt correct average value*/ 361 catalog1.measure[Nmatchmeas].dR=catalog[0].measure[m+i1].dR+3600.0*(catalog[0].average[nv[0]].R-catalog[0].average[nv[l]].R); 362 catalog1.measure[Nmatchmeas].dD=catalog[0].measure[m+i1].dD+3600.0*(catalog[0].average[nv[0]].D-catalog[0].average[nv[l]].D); 363 catalog1.measure[Nmatchmeas].averef = Nmatch; 364 Nmatchmeasobj++; 365 Nmatchmeas++; 366 367 if (Nmatchmeas == NMEASURE - 1) { 368 NMEASURE += 10000; 369 REALLOCATE (catalog1.measure, Measure, NMEASURE); 370 } 371 } 372 } 373 catalog1.average[Nmatch].Nmeasure=Nmatchmeasobj; 288 374 Nmatch ++; 289 375 376 if (Nmatch == NAVERAGE - 1) { 377 NAVERAGE += 1000; 378 REALLOCATE (catalog1.average, Average, NAVERAGE); 379 REALLOCATE(catalog1.secfilt, SecFilt, NAVERAGE*Nsecfilt); 380 } 290 381 // for the moment, just write the matches to stdout: 291 float pmx = -dX; // proper-motion displacement in ra direction (B - A) [arcsec]292 float pmy = -dY; // proper-motion displacement in dec direction (B - A) [arcsec]293 fprintf (stdout, "%11.7f %11.7f %11.7f %11.7f : %7.2f %7.2f %7.2f: %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f\n",382 //float pmx = -dX; // proper-motion displacement in ra direction (B - A) [arcsec] 383 //float pmy = -dY; // proper-motion displacement in dec direction (B - A) [arcsec] 384 /* fprintf (stdout, "%11.7f %11.7f %11.7f %11.7f : %7.2f %7.2f %7.2f: %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f %7.3f %6.3f\n", 294 385 catalog[0].average[ni].R, catalog[0].average[ni].D, 295 386 catalog[0].average[nj].R, catalog[0].average[nj].D, 296 pmx, pmy, sqrt(dR),387 dX, dY, sqrt(dR), 297 388 catalog[0].secfilt[nj*Nsecfilt + zNsec].M, 298 389 catalog[0].secfilt[nj*Nsecfilt + zNsec].dM, … … 304 395 catalog[0].secfilt[ni*Nsecfilt + hNsec].dM, 305 396 catalog[0].secfilt[ni*Nsecfilt + kNsec].M, 306 catalog[0].secfilt[ni*Nsecfilt + kNsec].dM); 397 catalog[0].secfilt[ni*Nsecfilt + kNsec].dM);*/ 307 398 } 308 399 i++; 309 400 } 401 catalog1.Naverage=Nmatch; 402 catalog1.Nmeasure=Nmatchmeas; 403 catalog1.Nsecfilt=Nsecfilt; 404 catalog1.Nsecf_mem=Nmatch*Nsecfilt; 405 406 UpdateObjects(&catalog1, 1); 407 310 408 fprintf (stderr, "found %d matches\n", Nmatch); 311 409 dvo_catalog_save (&catalog1, VERBOSE); 410 dvo_catalog_unlock (&catalog1); 411 dvo_catalog_free (&catalog1); 312 412 free (slowMoving); 313 413 free (groupA);
Note:
See TracChangeset
for help on using the changeset viewer.
