IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27675


Ignore:
Timestamp:
Apr 13, 2010, 4:50:09 PM (16 years ago)
Author:
eugene
Message:

handle case of Rmin > Rmax (360,0 boundary)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/getstar/src/select_by_region.c

    r27435 r27675  
    1515  /* identify selection criteria */
    1616  if (VERBOSE) fprintf (stderr, "extracting for time range %d to %d\n", start, end);
    17   if (VERBOSE) fprintf (stderr, "extracting for region %f,%f to %f,%f\n", 
    18                         region[0].Rmin, region[0].Dmin, region[0].Rmax, region[0].Dmax);
     17  if (VERBOSE) fprintf (stderr, "extracting for region %f,%f to %f,%f\n",
     18                        region[0].Rmin, region[0].Dmin, region[0].Rmax, region[0].Dmax);
    1919
    2020  if (output[0].header.buffer != NULL) {
     
    5454    if (VERBOSE) fprintf (stderr, "extracting from catalog covering region %f,%f to %f,%f\n", Rmin, Dmin, Rmax, Dmax);
    5555
    56     AREA = fabs(Dmax - Dmin) * fabs(Rmax - Rmin) * cos (0.5*RAD_DEG*(Dmax + Dmin)); 
     56    AREA = fabs(Dmax - Dmin) * fabs(Rmax - Rmin) * cos (0.5*RAD_DEG*(Dmax + Dmin));
    5757    assert (AREA > 0);
    5858
     
    7070      mag = NAN;
    7171      if (Nsec != -1) {
    72         mag = catalog[0].secfilt[i*Nsecfilt + Nsec].M;
     72        mag = catalog[0].secfilt[i*Nsecfilt + Nsec].M;
    7373      } else {
    74         offset = catalog[0].average[i].measureOffset;
    75         for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
    76           if (catalog[0].measure[offset + m].photcode == code) {
    77             mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
    78             break;
    79           }
    80         }
     74        offset = catalog[0].average[i].measureOffset;
     75        for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
     76          if (catalog[0].measure[offset + m].photcode == code) {
     77            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
     78            break;
     79          }
     80        }
    8181      }
    8282      if (isnan(mag)) continue;
     
    8888      Nmag[bin] ++;
    8989    }
    90      
     90
    9191    if (!MinMagUse) MinMagValue = MagMin;
    9292    bin = (MinMagValue - MagMin) / dMag;
     
    106106    R = catalog[0].average[i].R;
    107107    D = catalog[0].average[i].D;
    108    
    109     if (R < region[0].Rmin) continue;
    110     if (R > region[0].Rmax) continue;
     108
     109    if (region[0].Rmin > region[0].Rmax) {
     110        // Rmin > Rmax : R may either be > Rmin or < Rmax:
     111        if ((R > region[0].Rmin) && (R < region[0].Rmax)) continue;
     112    } else {
     113        if (R < region[0].Rmin) continue;
     114        if (R > region[0].Rmax) continue;
     115    }
    111116    if (D < region[0].Dmin) continue;
    112117    if (D > region[0].Dmax) continue;
     
    115120      mag = NAN;
    116121      if (Nsec != -1) {
    117         mag = catalog[0].secfilt[i*Nsecfilt + Nsec].M;
     122        mag = catalog[0].secfilt[i*Nsecfilt + Nsec].M;
    118123      } else {
    119         offset = catalog[0].average[i].measureOffset;
    120         for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
    121           if (catalog[0].measure[offset + m].photcode == code) {
    122             mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
    123             break;
    124           }
    125         }
     124        offset = catalog[0].average[i].measureOffset;
     125        for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
     126          if (catalog[0].measure[offset + m].photcode == code) {
     127            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
     128            break;
     129          }
     130        }
    126131      }
    127132      if (isnan(mag) || (mag > MagLimitValue)) continue;
     
    141146      output[0].measure[Nmeas].averef = Nave;
    142147      Nmeas ++;
    143      
     148
    144149      CHECK_REALLOCATE (output[0].measure, Measure, NMEAS, Nmeas, 1000);
    145     }     
     150    }
    146151
    147152    Nave ++;
     
    157162
    158163  fprintf (stderr, "output catalog has %lld stars (%lld measures, %d secfilt)\n",
    159            (long long) output[0].Naverage, (long long) output[0].Nmeasure, output[0].Nsecfilt);
     164           (long long) output[0].Naverage, (long long) output[0].Nmeasure, output[0].Nsecfilt);
    160165  return (TRUE);
    161166}
Note: See TracChangeset for help on using the changeset viewer.