IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28204


Ignore:
Timestamp:
Jun 3, 2010, 2:21:32 PM (16 years ago)
Author:
eugene
Message:

hard-wired rules for tdwarfs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/relastro/src/high_speed_objects.c

    r28201 r28204  
    44# define NEXT_J { j++; continue; }
    55
     6# define REF_RA1 192.455781
     7# define REF_DEC1 2.563102
     8# define REF_RA2 192.444302113
     9# define REF_DEC2 2.5786559112
    610int high_speed_objects (SkyRegion *region, Catalog *catalog) {
    711
    812  // XXX seems silly to require region here just to find the catalog bounds / center
    913
    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;
    1115  int *slowMoving, *groupA, *groupB, status, foundA, foundB, Nmatch, valid;
    1216  double *X1, *Y1;
    13   double dX, dY, dR, RADIUS2;
     17  double dX, dY, dR, RADIUS2, radius, yJ;
    1418  Coords tcoords;
    1519
     
    2125  yNsec = GetPhotcodeNsec(ycode);
    2226 
    23   zcode = GetPhotcodeCodebyName("y");
     27  zcode = GetPhotcodeCodebyName("z");
    2428  zNsec = GetPhotcodeNsec(zcode);
    2529 
     
    5761
    5862    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    }
    5972
    6073    // do any of the measures for this object match group A?
     
    89102      // average-based tests:
    90103      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);
    93106      valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].M < 1.0);
    94107      valid &= (catalog[0].secfilt[i*Nsecfilt + zNsec].M < 1.0);
     
    99112      for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) {
    100113        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));
    102115        }
    103116        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));
    105118        }
    106119      }
     
    118131        NgroupA ++;
    119132        continue;
     133      } else {
     134        // fprintf (stderr, "skip %lld (group A)\n", (long long) i);
    120135      }
    121136    }
     
    126141      // average-based tests:
    127142      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);
    130145      valid &= (catalog[0].secfilt[i*Nsecfilt + jNsec].M < 1.0);
    131146      valid &= (catalog[0].secfilt[i*Nsecfilt + yNsec].Nused > 1);
    132147      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
    135155      // measure-based tests:
    136156      m = catalog[0].average[i].measureOffset;
    137157      for (j = 0; valid && (j < catalog[0].average[i].Nmeasure); j++, m++) {
    138158        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));
    140160        }
    141161        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));
    143163        }
    144164      }
     
    158178        NgroupB ++;
    159179        continue;
     180      } else {
     181        // fprintf (stderr, "skip %lld (group B)\n", (long long) i);
    160182      }
    161183    }
     
    207229    nj = N1[j];
    208230
     231    if (ni == 131030) {
     232      fprintf (stderr, "got 2mass\n");
     233    }
     234    if (nj == 53581) {
     235      fprintf (stderr, "got ps1\n");
     236    }
     237
    209238    if (slowMoving[ni]) NEXT_I;
    210239    if (slowMoving[nj]) NEXT_J;
     
    226255    for (J = j; (dX > -1.02*RADIUS) && (J < catalog[0].Naverage); J++) {
    227256      if (J == i) continue;  // avoid auto-matches
     257
    228258      dX = X1[i] - X1[J];
     259
     260      nj = N1[J];
     261      if (!groupB[nj]) continue;
     262
    229263      dY = Y1[i] - Y1[J];
    230264      dR = dX*dX + dY*dY;
    231265      if (dR > RADIUS2) continue;
    232266
     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
    233272      /*** a match is found (just print it for the moment) ***/
    234273      Nmatch ++;
    235       Ni = N1[i];
    236       Nj = N1[J];
    237274
    238275      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));
    243280    }
    244281    i++;
Note: See TracChangeset for help on using the changeset viewer.