IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27760


Ignore:
Timestamp:
Apr 23, 2010, 2:19:21 PM (16 years ago)
Author:
rhenders
Message:

Now counting, and discarding, detections where flux = NULL or flux = 0.0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/src/ippToPspsBatchDetection.c

    r27700 r27760  
    1414
    1515// Gets flux from magnitude
    16 static __inline float ippToPsps_getFlux(const float zeroPoint, const float exposureTime, const float magnitude) {
     16static __inline bool ippToPsps_getFlux(const float zeroPoint, const float exposureTime, const float magnitude, float* flux) {
    1717
    1818    // use uncalibrated instrumental flux
    19     float flux = powf(10.0, -0.4*magnitude) / exposureTime;
     19    *flux = powf(10.0, -0.4*magnitude) / exposureTime;
    2020
    2121    // use calibrated flux in Janskys, where 3631 Jy is the zero point flux for the filter: constant over all filters because we're using AB magnitudes
     
    2323
    2424    //    printf("mag=%f\texpTime=%f\tzeroPoint=%f\tflux=%f\n", magnitude, exposureTime, zeroPoint, flux);
    25     return isnormal(flux) ? flux : -999.0;
     25    return (isnormal(*flux) && *flux > 0.0) ? true : false;
    2626}
    2727
     
    151151    short nOta = 0;
    152152    long i;
    153     bool duplicate;
     153    bool isDuplicate;
    154154    uint32_t numOfDuplicates;
     155    uint32_t numInvalidFlux;
    155156    long numDetectionsOut;
    156     long duplicateList[MAXDETECT];
     157    long removeList[MAXDETECT];
    157158    long thisObjId;
    158159
     
    252253            // both DVO detections and smf detections should increment. however, there may be gaps in smf and 'invalid' rows in dvo
    253254            numOfDuplicates = 0;
     255            numInvalidFlux = 0;
    254256            for (long s = 0; s<nDet; s++) {
     257
     258                isDuplicate = false;
    255259
    256260                // count jumps in smf file
     
    266270
    267271                    // TODO HACK duplicates bug - don't include any duplicates
    268                     duplicate = false;
    269272                    thisObjId = dvoDetections[d].ave.extID;
    270273                    for (i=0; i<totalDetections; i++) {
    271274                        if (thisObjId == objID[i]) {
    272                             duplicate = true;
    273                             duplicateList[numOfDuplicates] = s+1;
     275                            removeList[numOfDuplicates+numInvalidFlux] = s+1;
    274276                            numOfDuplicates++;
     277                            isDuplicate=true;
    275278                            break;
    276279                        }
     
    283286                    imageID[s] = pspsImageId;
    284287                    obsTimes[s] = obsTime;
    285                     instFlux[s] = ippToPsps_getFlux(zeroPoint, exposureTime, instMag[s]);
    286                     instFluxErr[s] = ippToPsps_getFlux(zeroPoint, exposureTime, instMagErr[s]);
    287                     peakFlux[s] = ippToPsps_getFlux(zeroPoint, exposureTime, peakMag[s]);
     288                    ippToPsps_getFlux(zeroPoint, exposureTime, instMagErr[s], &instFluxErr[s]);
     289                    ippToPsps_getFlux(zeroPoint, exposureTime, peakMag[s], &peakFlux[s]);
     290
     291                    // check for invalid flux values (if not already labelled as a duplicate)
     292                    if (!ippToPsps_getFlux(zeroPoint, exposureTime, instMag[s], &instFlux[s]) && !isDuplicate) {
     293                        removeList[numOfDuplicates+numInvalidFlux] = s+1;
     294                        numInvalidFlux++;
     295                    }
    288296
    289297                    // store max/min objID
     
    304312
    305313            // write number of rows (detections) to ImageMeta
    306             numDetectionsOut = totalDetections - numOfDuplicates;
     314            numDetectionsOut = totalDetections - numOfDuplicates - numInvalidFlux;
    307315            fits_write_col(this->fitsOut, TLONG, 10, 1, 1, 1, &numDetectionsOut, &status);
    308316
     
    321329            fits_write_col(this->fitsOut, TFLOAT, DETECTION_PEAKADU, 1, 1, nDet, peakFlux, &status);
    322330            fits_write_col(this->fitsOut, TSTRING, DETECTION_ASSOCDATE, 1, 1, nDet, assocDate, &status);
    323             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
     331            if (numOfDuplicates||numInvalidFlux) fits_delete_rowlist(this->fitsOut, removeList, numOfDuplicates+numInvalidFlux, &status);
    324332
    325333            // skinny object
     
    327335            fits_write_col(this->fitsOut, TLONGLONG, SKINNYOBJECT_OBJID, 1, 1, nDet, objID, &status);
    328336            fits_write_col(this->fitsOut, TLONGLONG, SKINNYOBJECT_IPPOBJID, 1, 1, nDet, ippObjID, &status);
    329             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
     337            if (numOfDuplicates||numInvalidFlux) fits_delete_rowlist(this->fitsOut, removeList, numOfDuplicates+numInvalidFlux, &status);
    330338
    331339            // object calibration color
     
    334342            fits_write_col(this->fitsOut, TLONGLONG, OBJECTCALCOLOR_IPPOBJID, 1, 1, nDet, ippObjID, &status);
    335343            fits_write_col(this->fitsOut, TBYTE, OBJECTCALCOLOR_FILTERID, 1, 1, nDet, filterIDs, &status);
    336             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
     344            if (numOfDuplicates||numInvalidFlux) fits_delete_rowlist(this->fitsOut, removeList, numOfDuplicates+numInvalidFlux, &status);
    337345
    338346            psLogMsg("ippToPsps", PS_LOG_INFO,
    339                     " ___________________________________________________________________\n"
    340                     "| Extension | Rows in | Rows out | Missing from DVO | Duplicate IDs |\n"
    341                     "|  %s |  %5ld  |   %5ld  |      %5d       |    %5d      |\n",
    342                     extensionName, nDet, numDetectionsOut, unmatched, numOfDuplicates);
     347                    "+-----------+---------+----------+------------------+---------------+--------------+\n"
     348                    "| Extension | Rows in | Rows out | Missing from DVO | Duplicate IDs | Invalid Flux |\n"
     349                    "|  %s |  %5ld  |   %5ld  |      %5d       |    %5d      |    %5d     |\n",
     350                    extensionName, nDet, numDetectionsOut, unmatched, numOfDuplicates, numInvalidFlux);
    343351
    344352            if (dvoDetections!= NULL) dvoFree(dvoDetections);
Note: See TracChangeset for help on using the changeset viewer.