Changeset 28484 for branches/pap/ippToPsps/src/ippToPspsBatchDetection.c
- Timestamp:
- Jun 24, 2010, 2:59:09 PM (16 years ago)
- Location:
- branches/pap
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippToPsps/src/ippToPspsBatchDetection.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap
- Property svn:mergeinfo changed
-
branches/pap/ippToPsps/src/ippToPspsBatchDetection.c
r28105 r28484 13 13 #include "fitsio.h" 14 14 15 // Gets flux from magnitude15 // Gets uncalibrated instrumental flux from magnitude 16 16 static __inline bool ippToPsps_getFlux(const float zeroPoint, const float exposureTime, const float magnitude, float* flux) { 17 17 18 // use uncalibrated instrumental flux19 18 *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 magnitudes22 //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);25 19 return (!isfinite(*flux) || *flux < 0.000001) ? false : true; 26 20 } … … 54 48 float zptObs, zeroPoint, exposureTime; 55 49 char filterType[20]; 50 double obsTime; 51 double expStart; 52 double expTime; 56 53 status=0; fits_read_key(fitsIn, TFLOAT, "ZPT_OBS", &zptObs, NULL, &status); 57 54 status=0; fits_read_key(fitsIn, TFLOAT, "ZPT_REF", &zeroPoint, NULL, &status); 58 55 status=0; fits_read_key(fitsIn, TFLOAT, "EXPREQ", &exposureTime, NULL, &status); 59 56 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 61 61 ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "FrameMeta", true); 62 62 63 63 // FrameMeta values 64 64 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;} 67 69 fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_SURVEYID, 1, 1, 1, &surveyID, &status); 68 70 69 71 int8_t filterID = -1; 70 i ppToPspsConfig_getFilterId(this->config, filterType, &filterID);72 if (!ippToPspsConfig_getFilterId(this->config, filterType, &filterID)) {return PS_EXIT_DATA_ERROR;} 71 73 fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_FILTERID, 1, 1, 1, &filterID, &status); 72 74 … … 81 83 82 84 // stuff to keep from psf.hdr header 83 double obsTime = 0.0;84 85 int sourceId = -1; 85 86 int imageId = -1; … … 97 98 int maxDvoDetId = -1; 98 99 int numDvoDetections = -1; 99 Image * pImage = NULL;100 Image *image = NULL; 100 101 101 102 // stuff for detections table … … 130 131 long ippDetectID[MAXDETECT]; 131 132 long imageID[MAXDETECT]; 132 floatobsTimes[MAXDETECT];133 double obsTimes[MAXDETECT]; 133 134 float instFlux[MAXDETECT]; 134 135 float instFluxErr[MAXDETECT]; … … 150 151 long maxObjID = LONG_MIN; 151 152 long minObjID = LONG_MAX; 153 uint64_t imageFlags; 152 154 short nOta = 0; 153 155 long i; … … 156 158 uint32_t numInvalidFlux; 157 159 long numDetectionsOut; 160 long totalDetectionsOut = 0; 158 161 long removeList[MAXDETECT]; 159 162 long thisObjId; … … 193 196 status=0; fits_read_key(fitsIn, TFLOAT, "IQ_FW2", &momentMin, NULL, &status); 194 197 status=0; fits_read_key(fitsIn, TLONG, "IMAGEID", &imageId, NULL, &status); 195 status=0; fits_read_key(fitsIn, TDOUBLE, "MJD-OBS", &obsTime, NULL, &status);196 198 status=0; fits_read_key(fitsIn, TLONG, "SOURCEID", &sourceId, NULL, &status); 197 199 198 200 // access DVO database 199 skylist = dvoSkyListByExternID(this->dvoConfig, sourceId, imageId, & pImage);201 skylist = dvoSkyListByExternID(this->dvoConfig, sourceId, imageId, &image); 200 202 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); 202 206 continue; 203 207 } 204 208 205 209 // 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; 207 211 208 212 // now get DVO detections 209 213 dvoDetections = NULL; 210 numDvoDetections = dvoGetDetections(skylist, pImage->imageID, &dvoDetections, &maxDvoDetId);214 numDvoDetections = dvoGetDetections(skylist, image->imageID, &dvoDetections, &maxDvoDetId); 211 215 212 216 // TODO check nDet < MAXDETECT … … 216 220 psfFwhm = (fwhmMaj+fwhmMin)/2; 217 221 momentFwhm = (momentMaj+momentMin)/2; 222 imageFlags = (uint64_t)image->flags; 218 223 fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_IMAGEID, 1, 1, 1, &pspsImageId, &status); 219 224 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); 222 227 fits_write_col(this->fitsOut, TBYTE, IMAGEMETA_FILTERID, 1, 1, 1, &filterID, &status); 223 228 fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOSCAT, 1, 1, 1, &zptObs, &status); … … 225 230 fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_MOMENTFWHM, 1, 1, 1, &momentFwhm, &status); 226 231 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); 227 233 228 234 // now move BACK to detections table in smf … … 329 335 fits_write_col(this->fitsOut, TBYTE, DETECTION_SURVEYID, 1, 1, nDet, surveyIDs, &status); 330 336 fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IMAGEID, 1, 1, nDet, imageID, &status); 331 fits_write_col(this->fitsOut, T FLOAT, DETECTION_OBSTIME, 1, 1, nDet, obsTimes, &status);337 fits_write_col(this->fitsOut, TDOUBLE, DETECTION_OBSTIME, 1, 1, nDet, obsTimes, &status); 332 338 fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUX, 1, 1, nDet, instFlux, &status); 333 339 fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUXERR, 1, 1, nDet, instFluxErr, &status); … … 357 363 extensionName, nDet, numDetectionsOut, unmatched, numOfDuplicates, numInvalidFlux); 358 364 365 totalDetectionsOut += numDetectionsOut; 366 359 367 if (dvoDetections!= NULL) dvoFree(dvoDetections); 360 368 SkyListFree(skylist); 361 369 } 362 370 } 371 372 psLogMsg("ippToPsps", PS_LOG_INFO, "Total detections for this exposure = %ld\n", totalDetectionsOut); 363 373 364 374 for (uint32_t i=0; i<MAXDETECT;i++) free(assocDate[i]); … … 382 392 if (fprintf(this->resultsFile, "%ld\n", maxObjID) < 1 ) 383 393 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); 384 396 } 385 397
Note:
See TracChangeset
for help on using the changeset viewer.
