Changeset 28759 for trunk/ippToPsps/src/ippToPspsBatchTest.c
- Timestamp:
- Jul 28, 2010, 4:22:32 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/src/ippToPspsBatchTest.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/src/ippToPspsBatchTest.c
r28662 r28759 13 13 #include "fitsio.h" 14 14 15 // Gets flux from magnitude 16 static __inline bool ippToPsps_getFlux(const float zeroPoint, const float exposureTime, const float magnitude, float* flux) { 17 18 // use uncalibrated instrumental flux 15 // Gets uncalibrated instrumental flux from magnitude 16 static __inline bool ippToPsps_getFlux(const float exposureTime, const float magnitude, float* flux, const float magnitudeErr, float* fluxErr) { 17 19 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 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); 25 return (!isfinite(*flux) || *flux < 0.000001) ? false : true; 19 if (!isfinite(*flux) || *flux < 0.000001) return false; 20 if (fluxErr) *fluxErr = fabsf((magnitudeErr * *flux)/1.085736); 21 // if (fluxErr) printf("Mag = %03.03f, Flux = %03.03f, Mag err = %03.03f, Flux Err = %03.03f\n", magnitude, *flux, magnitudeErr, *fluxErr); 22 23 return true; 26 24 } 27 25 … … 29 27 \brief test data for checking PSPS values correspond with IPP 30 28 31 */29 */ 32 30 int ippToPsps_batchTest(IppToPsps *this) { 33 31 … … 53 51 status=0; fits_read_key(fitsIn, TFLOAT, "EXPREQ", &exposureTime, NULL, &status); 54 52 status=0; fits_read_key(fitsIn, TSTRING, "FILTERID", filterType, NULL, &status); 55 56 ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "FrameMeta", true);53 54 // ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "FrameMeta", true); 57 55 58 56 // FrameMeta values 59 fits_write_col(this->fitsOut, TLONG, FRAMEMETA_FRAMEID, 1, 1, 1, &this->expId, &status);57 // fits_write_col(this->fitsOut, TLONG, FRAMEMETA_FRAMEID, 1, 1, 1, &this->expId, &status); 60 58 61 59 int8_t filterID = -1; 62 60 ippToPspsConfig_getFilterId(this->config, filterType, &filterID); 63 fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_FILTERID, 1, 1, 1, &filterID, &status);61 // fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_FILTERID, 1, 1, 1, &filterID, &status); 64 62 65 63 // stuff to keep from psf.hdr header … … 140 138 long removeList[MAXDETECT]; 141 139 long thisObjId; 142 bool firstTimeIn = true ;140 bool firstTimeIn = true, peakFluxOk, instFluxOk; 143 141 int ippIDetNum, instMagNum, instMagErrNum, peakMagNum; 144 142 … … 198 196 199 197 // create ImageMeta 200 ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "ImageMeta", true);198 // ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "ImageMeta", true); 201 199 psfFwhm = (fwhmMaj+fwhmMin)/2; 202 200 momentFwhm = (momentMaj+momentMin)/2; 203 201 imageFlags = (uint64_t)pImage->flags; 204 fits_write_col(this->fitsOut, TLONG, IMAGEMETA_PHOTOCALID, 1, 1, 1, &pImage->photcode, &status);205 fits_write_col(this->fitsOut, TBYTE, IMAGEMETA_FILTERID, 1, 1, 1, &filterID, &status);206 fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOSCAT, 1, 1, 1, &zptObs, &status);207 fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PSFFWHM, 1, 1, 1, &psfFwhm, &status);208 fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOZERO, 1, 1, 1, &zptObs, &status);209 fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_QAFLAGS, 1, 1, 1, &imageFlags, &status);202 // fits_write_col(this->fitsOut, TLONG, IMAGEMETA_PHOTOCALID, 1, 1, 1, &pImage->photcode, &status); 203 // fits_write_col(this->fitsOut, TBYTE, IMAGEMETA_FILTERID, 1, 1, 1, &filterID, &status); 204 // fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOSCAT, 1, 1, 1, &zptObs, &status); 205 // fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PSFFWHM, 1, 1, 1, &psfFwhm, &status); 206 // fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOZERO, 1, 1, 1, &zptObs, &status); 207 // fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_QAFLAGS, 1, 1, 1, &imageFlags, &status); 210 208 211 209 // now move BACK to detections table in smf … … 287 285 obsTimes[s] = obsTime; 288 286 289 ippToPsps_getFlux(zeroPoint, exposureTime, instMagErr[s], &instFluxErr[s]); 287 peakFluxOk = ippToPsps_getFlux(exposureTime, peakMag[s], &peakFlux[s], 0.0, NULL); 288 instFluxOk = ippToPsps_getFlux(exposureTime, instMag[s], &instFlux[s], instMagErr[s], &instFluxErr[s]); 290 289 291 290 // check for invalid flux values (if not already labelled as a duplicate) 292 if ((!ippToPsps_getFlux(zeroPoint, exposureTime, peakMag[s], &peakFlux[s]) || 293 !ippToPsps_getFlux(zeroPoint, exposureTime, instMag[s], &instFlux[s])) && !isDuplicate) { 291 if ( (!peakFluxOk || !instFluxOk) && !isDuplicate) { 294 292 removeList[numOfDuplicates+numInvalidFlux] = s+1; 295 293 numInvalidFlux++; … … 314 312 // write number of rows (detections) to ImageMeta 315 313 numDetectionsOut = totalDetections - numOfDuplicates - numInvalidFlux; 316 fits_write_col(this->fitsOut, TLONG, IMAGEMETA_NDETECT, 1, 1, 1, &numDetectionsOut, &status);314 // fits_write_col(this->fitsOut, TLONG, IMAGEMETA_NDETECT, 1, 1, 1, &numDetectionsOut, &status); 317 315 318 316 // detections … … 323 321 fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IPPDETECTID, 1, 1, nDet, ippDetectID, &status); 324 322 fits_write_col(this->fitsOut, TBYTE, DETECTION_FILTERID, 1, 1, nDet, filterIDs, &status); 323 fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IMAGEID, 1, 1, nDet, imageID, &status); 325 324 fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUX, 1, 1, nDet, instFlux, &status); 326 fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUXERR, 1, 1, nDet, instFluxErr, &status);327 fits_write_col(this->fitsOut, TFLOAT, DETECTION_PEAKADU, 1, 1, nDet, peakFlux, &status);325 //fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUXERR, 1, 1, nDet, instFluxErr, &status); 326 //fits_write_col(this->fitsOut, TFLOAT, DETECTION_PEAKADU, 1, 1, nDet, peakFlux, &status); 328 327 fits_write_col(this->fitsOut, TLONGLONG, DETECTION_INFOFLAG, 1, 1, nDet, flags, &status); 329 328 if (numOfDuplicates||numInvalidFlux) fits_delete_rowlist(this->fitsOut, removeList, numOfDuplicates+numInvalidFlux, &status); … … 346 345 // write number of images we have found into FrameMeta table 347 346 status=0; 348 if (fits_movnam_hdu(this->fitsOut, BINARY_TBL, "FrameMeta", 0, &status))349 psError(PS_ERR_IO, false, "Can't move back to FrameMeta extension to write number of OTAs\n");350 else351 fits_write_col(this->fitsOut, TSHORT, FRAMEMETA_NOTA, 1, 1, 1, &nOta, &status);347 //if (fits_movnam_hdu(this->fitsOut, BINARY_TBL, "FrameMeta", 0, &status)) 348 // psError(PS_ERR_IO, false, "Can't move back to FrameMeta extension to write number of OTAs\n"); 349 //else 350 // fits_write_col(this->fitsOut, TSHORT, FRAMEMETA_NOTA, 1, 1, 1, &nOta, &status); 352 351 353 352 status=0;
Note:
See TracChangeset
for help on using the changeset viewer.
