IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 24, 2010, 2:59:09 PM (16 years ago)
Author:
Paul Price
Message:

Merging trunk in advance of reintegrating into trunk.

Location:
branches/pap
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/pap

  • branches/pap/ippToPsps/src/ippToPspsBatchDetection.c

    r28105 r28484  
    1313#include "fitsio.h"
    1414
    15 // Gets flux from magnitude
     15// Gets uncalibrated instrumental flux from magnitude
    1616static __inline bool ippToPsps_getFlux(const float zeroPoint, const float exposureTime, const float magnitude, float* flux) {
    1717
    18     // use uncalibrated instrumental flux
    1918    *flux = powf(10.0, -0.4*magnitude) / exposureTime;
    20 
    21     // 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
    22     //float flux = 3631 * powf(10.0, -0.4*(magnitude + zeroPoint)) / exposureTime;
    23 
    24     //    printf("mag=%f\texpTime=%f\tzeroPoint=%f\tflux=%f\n", magnitude, exposureTime, zeroPoint, flux);
    2519    return (!isfinite(*flux) || *flux < 0.000001) ? false : true;
    2620}
     
    5448    float zptObs, zeroPoint, exposureTime;
    5549    char filterType[20];
     50    double obsTime;
     51    double expStart;
     52    double expTime;
    5653    status=0; fits_read_key(fitsIn, TFLOAT, "ZPT_OBS", &zptObs, NULL, &status);
    5754    status=0; fits_read_key(fitsIn, TFLOAT, "ZPT_REF", &zeroPoint, NULL, &status);
    5855    status=0; fits_read_key(fitsIn, TFLOAT, "EXPREQ", &exposureTime, NULL, &status);
    5956    status=0; fits_read_key(fitsIn, TSTRING, "FILTERID", filterType, NULL, &status);
    60    
     57    status=0; fits_read_key(fitsIn, TDOUBLE, "MJD-OBS", &expStart, NULL, &status);
     58    status=0; fits_read_key(fitsIn, TDOUBLE, "EXPTIME", &expTime, NULL, &status);
     59    obsTime = expStart + (expTime/172800); // exp start plus half exp time (converted from secs to days)
     60   
    6161    ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "FrameMeta", true);
    6262
    6363    // FrameMeta values
    6464    fits_write_col(this->fitsOut, TLONG, FRAMEMETA_FRAMEID, 1, 1, 1, &this->expId, &status);
    65 
    66     int8_t surveyID = 0; // TODO
     65    fits_write_col(this->fitsOut, TSTRING, FRAMEMETA_FRAMENAME, 1, 1, 1, &this->expName, &status);
     66
     67    int8_t surveyID = -1;
     68    if (!ippToPspsConfig_getSurveyId(this->config, this->surveyType, &surveyID)) {return PS_EXIT_DATA_ERROR;}
    6769    fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_SURVEYID, 1, 1, 1, &surveyID, &status);
    6870
    6971    int8_t filterID = -1;
    70     ippToPspsConfig_getFilterId(this->config, filterType, &filterID);
     72    if (!ippToPspsConfig_getFilterId(this->config, filterType, &filterID)) {return PS_EXIT_DATA_ERROR;}
    7173    fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_FILTERID, 1, 1, 1, &filterID, &status);
    7274
     
    8183
    8284    // stuff to keep from psf.hdr header
    83     double obsTime = 0.0;
    8485    int sourceId = -1;
    8586    int imageId = -1;
     
    9798    int maxDvoDetId = -1;
    9899    int numDvoDetections = -1;
    99     Image *pImage = NULL;
     100    Image *image = NULL;
    100101
    101102    // stuff for detections table
     
    130131    long ippDetectID[MAXDETECT];
    131132    long imageID[MAXDETECT];
    132     float obsTimes[MAXDETECT];
     133    double obsTimes[MAXDETECT];
    133134    float instFlux[MAXDETECT];
    134135    float instFluxErr[MAXDETECT];
     
    150151    long maxObjID = LONG_MIN;
    151152    long minObjID = LONG_MAX;
     153    uint64_t imageFlags;
    152154    short nOta = 0;
    153155    long i;
     
    156158    uint32_t numInvalidFlux;
    157159    long numDetectionsOut;
     160    long totalDetectionsOut = 0;
    158161    long removeList[MAXDETECT];
    159162    long thisObjId;
     
    193196            status=0; fits_read_key(fitsIn, TFLOAT, "IQ_FW2", &momentMin, NULL, &status);
    194197            status=0; fits_read_key(fitsIn, TLONG, "IMAGEID", &imageId, NULL, &status);
    195             status=0; fits_read_key(fitsIn, TDOUBLE, "MJD-OBS", &obsTime, NULL, &status);
    196198            status=0; fits_read_key(fitsIn, TLONG, "SOURCEID", &sourceId, NULL, &status);
    197199
    198200            // access DVO database
    199             skylist = dvoSkyListByExternID(this->dvoConfig, sourceId, imageId, &pImage);
     201            skylist = dvoSkyListByExternID(this->dvoConfig, sourceId, imageId, &image);
    200202            if (skylist == NULL) {
    201                 psError(PS_ERR_IO, false, "DVO: can't find SkyList for sourceId='%d' imageId='%d' (CCD = XY%s): skipping\n", sourceId, imageId, ccdNumber);
     203                psError(PS_ERR_IO, false,
     204                        "DVO: can't find SkyList for sourceId='%d' imageId='%d' (CCD = XY%s): skipping\n",
     205                        sourceId, imageId, ccdNumber);
    202206                continue;
    203207            }
    204208
    205209            // create unique int from 'frameID' (aka exposure ID) and ccd number
    206             pspsImageId = (this->expId*100) + pImage->ccdnum;
     210            pspsImageId = (this->expId*100) + image->ccdnum;
    207211
    208212            // now get DVO detections
    209213            dvoDetections = NULL;
    210             numDvoDetections = dvoGetDetections(skylist, pImage->imageID, &dvoDetections, &maxDvoDetId);
     214            numDvoDetections = dvoGetDetections(skylist, image->imageID, &dvoDetections, &maxDvoDetId);
    211215
    212216            // TODO check nDet < MAXDETECT
     
    216220            psfFwhm = (fwhmMaj+fwhmMin)/2;
    217221            momentFwhm = (momentMaj+momentMin)/2;
     222            imageFlags = (uint64_t)image->flags;
    218223            fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_IMAGEID, 1, 1, 1, &pspsImageId, &status);
    219224            fits_write_col(this->fitsOut, TLONG, IMAGEMETA_FRAMEID, 1, 1, 1, &this->expId, &status);
    220             fits_write_col(this->fitsOut, TSHORT, IMAGEMETA_CCDID, 1, 1, 1, &pImage->ccdnum, &status);
    221             fits_write_col(this->fitsOut, TLONG, IMAGEMETA_PHOTOCALID, 1, 1, 1, &pImage->photcode, &status);
     225            fits_write_col(this->fitsOut, TSHORT, IMAGEMETA_CCDID, 1, 1, 1, &image->ccdnum, &status);
     226            fits_write_col(this->fitsOut, TLONG, IMAGEMETA_PHOTOCALID, 1, 1, 1, &image->photcode, &status);
    222227            fits_write_col(this->fitsOut, TBYTE, IMAGEMETA_FILTERID, 1, 1, 1, &filterID, &status);
    223228            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOSCAT, 1, 1, 1, &zptObs, &status);
     
    225230            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_MOMENTFWHM, 1, 1, 1, &momentFwhm, &status);
    226231            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOZERO, 1, 1, 1, &zptObs, &status);
     232            fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_QAFLAGS, 1, 1, 1, &imageFlags, &status);
    227233
    228234            // now move BACK to detections table in smf
     
    329335            fits_write_col(this->fitsOut, TBYTE, DETECTION_SURVEYID, 1, 1, nDet, surveyIDs, &status);
    330336            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IMAGEID, 1, 1, nDet, imageID, &status);
    331             fits_write_col(this->fitsOut, TFLOAT, DETECTION_OBSTIME, 1, 1, nDet, obsTimes, &status);
     337            fits_write_col(this->fitsOut, TDOUBLE, DETECTION_OBSTIME, 1, 1, nDet, obsTimes, &status);
    332338            fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUX, 1, 1, nDet, instFlux, &status);
    333339            fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUXERR, 1, 1, nDet, instFluxErr, &status);
     
    357363                    extensionName, nDet, numDetectionsOut, unmatched, numOfDuplicates, numInvalidFlux);
    358364
     365            totalDetectionsOut += numDetectionsOut;
     366
    359367            if (dvoDetections!= NULL) dvoFree(dvoDetections);
    360368            SkyListFree(skylist);
    361369        }
    362370    }
     371
     372    psLogMsg("ippToPsps", PS_LOG_INFO, "Total detections for this exposure = %ld\n", totalDetectionsOut);
    363373
    364374    for (uint32_t i=0; i<MAXDETECT;i++) free(assocDate[i]);
     
    382392        if (fprintf(this->resultsFile, "%ld\n", maxObjID) < 1 )
    383393            psError(PS_ERR_IO, false, "Unable to write max Object ID to'%s'\n", this->resultsPath);
     394        if (fprintf(this->resultsFile, "%ld\n", totalDetectionsOut) < 1 )
     395            psError(PS_ERR_IO, false, "Unable to write totalDetectionsOut to'%s'\n", this->resultsPath);
    384396    }
    385397
Note: See TracChangeset for help on using the changeset viewer.