IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25187


Ignore:
Timestamp:
Aug 25, 2009, 1:30:21 PM (17 years ago)
Author:
Paul Price
Message:

Ignore bad sources.

Location:
branches/pap_mops/ppMops/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_mops/ppMops/src/ppMopsDetections.c

    r25181 r25187  
    4949    det->mjd = NAN;
    5050    det->seeing = NAN;
    51     det->num = num;
    52     det->x = psVectorAlloc(num, PS_TYPE_F32);
    53     det->y = psVectorAlloc(num, PS_TYPE_F32);
    54     det->ra = psVectorAlloc(num, PS_TYPE_F64);
    55     det->dec = psVectorAlloc(num, PS_TYPE_F64);
    56     det->raErr = psVectorAlloc(num, PS_TYPE_F64);
    57     det->decErr = psVectorAlloc(num, PS_TYPE_F64);
    58     det->mag = psVectorAlloc(num, PS_TYPE_F32);
    59     det->magErr = psVectorAlloc(num, PS_TYPE_F32);
    60     det->extended = psVectorAlloc(num, PS_TYPE_F32);
    61     det->angle = psVectorAlloc(num, PS_TYPE_F32);
    62     det->angleErr = psVectorAlloc(num, PS_TYPE_F32);
    63     det->length = psVectorAlloc(num, PS_TYPE_F32);
    64     det->lengthErr = psVectorAlloc(num, PS_TYPE_F32);
    65     det->flags = psVectorAlloc(num, PS_TYPE_U32);
    66     det->diffSkyfileId = psVectorAlloc(num, PS_TYPE_S64);
    67     det->naxis1 = psVectorAlloc(num, PS_TYPE_S32);
    68     det->naxis2 = psVectorAlloc(num, PS_TYPE_S32);
    69     det->mask = psVectorAlloc(num, PS_TYPE_U8);
     51    det->num = 0;
     52    det->x = psVectorAllocEmpty(num, PS_TYPE_F32);
     53    det->y = psVectorAllocEmpty(num, PS_TYPE_F32);
     54    det->ra = psVectorAllocEmpty(num, PS_TYPE_F64);
     55    det->dec = psVectorAllocEmpty(num, PS_TYPE_F64);
     56    det->raErr = psVectorAllocEmpty(num, PS_TYPE_F64);
     57    det->decErr = psVectorAllocEmpty(num, PS_TYPE_F64);
     58    det->mag = psVectorAllocEmpty(num, PS_TYPE_F32);
     59    det->magErr = psVectorAllocEmpty(num, PS_TYPE_F32);
     60    det->extended = psVectorAllocEmpty(num, PS_TYPE_F32);
     61    det->angle = psVectorAllocEmpty(num, PS_TYPE_F32);
     62    det->angleErr = psVectorAllocEmpty(num, PS_TYPE_F32);
     63    det->length = psVectorAllocEmpty(num, PS_TYPE_F32);
     64    det->lengthErr = psVectorAllocEmpty(num, PS_TYPE_F32);
     65    det->flags = psVectorAllocEmpty(num, PS_TYPE_U32);
     66    det->diffSkyfileId = psVectorAllocEmpty(num, PS_TYPE_S64);
     67    det->naxis1 = psVectorAllocEmpty(num, PS_TYPE_S32);
     68    det->naxis2 = psVectorAllocEmpty(num, PS_TYPE_S32);
     69    det->mask = psVectorAllocEmpty(num, PS_TYPE_U8);
    7070
    7171    return det;
  • branches/pap_mops/ppMops/src/ppMopsRead.c

    r25186 r25187  
    7373
    7474        double plateScale = 0.0;        // Plate scale
     75        long numGood = 0;               // Number of good rows
    7576        for (long j = 0; j < size; j++) {
    7677            psMetadata *row = table->data[j]; // Row of interest
    77             det->x->data.F32[j] = psMetadataLookupF32(NULL, row, "X_PSF");
    78             det->y->data.F32[j] = psMetadataLookupF32(NULL, row, "Y_PSF");
    79             det->ra->data.F64[j] = DEG_TO_RAD(psMetadataLookupF64(NULL, row, "RA_PSF"));
    80             det->dec->data.F64[j] = DEG_TO_RAD(psMetadataLookupF64(NULL, row, "DEC_PSF"));
    81             det->mag->data.F32[j] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG");
    82             det->magErr->data.F32[j] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG_SIG");
    83             det->extended->data.F32[j] = psMetadataLookupF32(NULL, row, "EXT_NSIGMA");
    84             det->angle->data.F32[j] = 0.0;
    85             det->angleErr->data.F32[j] = 0.0;
    86             det->length->data.F32[j] = 0.0;
    87             det->lengthErr->data.F32[j] = 0.0;
    88             det->flags->data.U32[j] = psMetadataLookupU32(NULL, row, "FLAGS");
    89             det->diffSkyfileId->data.F32[j] = diffSkyfileId;
    90             det->naxis1->data.S32[j] = naxis1;
    91             det->naxis2->data.S32[j] = naxis2;
    92             det->mask->data.U8[j] = 0;
     78
     79            psU32 flags = psMetadataLookupU32(NULL, row, "FLAGS");
     80            if (flags & SOURCE_MASK) {
     81                continue;
     82            }
     83
     84            det->x->data.F32[numGood] = psMetadataLookupF32(NULL, row, "X_PSF");
     85            det->y->data.F32[numGood] = psMetadataLookupF32(NULL, row, "Y_PSF");
     86            det->ra->data.F64[numGood] = DEG_TO_RAD(psMetadataLookupF64(NULL, row, "RA_PSF"));
     87            det->dec->data.F64[numGood] = DEG_TO_RAD(psMetadataLookupF64(NULL, row, "DEC_PSF"));
     88            det->mag->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG");
     89            det->magErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG_SIG");
     90            det->extended->data.F32[numGood] = psMetadataLookupF32(NULL, row, "EXT_NSIGMA");
     91            det->angle->data.F32[numGood] = 0.0;
     92            det->angleErr->data.F32[numGood] = 0.0;
     93            det->length->data.F32[numGood] = 0.0;
     94            det->lengthErr->data.F32[numGood] = 0.0;
     95            det->flags->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS");
     96            det->diffSkyfileId->data.F32[numGood] = diffSkyfileId;
     97            det->naxis1->data.S32[numGood] = naxis1;
     98            det->naxis2->data.S32[numGood] = naxis2;
    9399
    94100            // Calculate error in RA, Dec
     
    98104            double angle = psMetadataLookupF64(NULL, row, "POSANGLE");
    99105
     106            if (!isfinite(det->x->data.F32[numGood]) || !isfinite(det->y->data.F32[numGood]) ||
     107                !isfinite(det->ra->data.F64[numGood]) || !isfinite(det->dec->data.F64[numGood]) ||
     108                !isfinite(det->mag->data.F32[numGood]) || !isfinite(det->magErr->data.F32[numGood]) ||
     109                !isfinite(xErr) || !isfinite(yErr) || !isfinite(scale) || !isfinite(angle) ||
     110                (det->flags->data.U32[numGood] & SOURCE_MASK)) {
     111                continue;
     112            }
     113
    100114            // XXX Not at all sure I've got the angles around the right way here...
    101115            double cosAngle = cos(angle), sinAngle = sin(angle);
     
    103117            double xErr2 = PS_SQR(xErr), yErr2 = PS_SQR(yErr);
    104118            double errScale = scale / 3600.0;
    105             det->raErr->data.F64[j] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2);
    106             det->decErr->data.F64[j] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2);
     119            det->raErr->data.F64[numGood] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2);
     120            det->decErr->data.F64[numGood] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2);
    107121
     122            det->mask->data.U8[numGood] = 0;
    108123            plateScale += scale;
     124            numGood++;
    109125        }
    110         det->seeing *= plateScale / size;
     126        det->seeing *= plateScale / numGood;
     127
     128        det->x->n = numGood;
     129        det->y->n = numGood;
     130        det->ra->n = numGood;
     131        det->dec->n = numGood;
     132        det->raErr->n = numGood;
     133        det->decErr->n = numGood;
     134        det->mag->n = numGood;
     135        det->magErr->n = numGood;
     136        det->extended->n = numGood;
     137        det->angle->n = numGood;
     138        det->angleErr->n = numGood;
     139        det->length->n = numGood;
     140        det->lengthErr->n = numGood;
     141        det->flags->n = numGood;
     142        det->diffSkyfileId->n = numGood;
     143        det->naxis1->n = numGood;
     144        det->naxis2->n = numGood;
     145        det->mask->n = numGood;
     146
     147        det->num = numGood;
    111148
    112149        if (isfinite(args->zp)) {
Note: See TracChangeset for help on using the changeset viewer.