Changeset 23740 for trunk/ppSub/src/ppSubReadoutPhotometry.c
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/pap merged: 23690,23704,23711,23719,23723,23730-23735
- Property svn:mergeinfo changed
-
trunk/ppSub
- Property svn:mergeinfo changed
/branches/pap/ppSub merged: 23704,23711,23719,23723,23730,23732-23734
- Property svn:mergeinfo changed
-
trunk/ppSub/src
- Property svn:ignore
-
old new 10 10 stamp-h1 11 11 ppSubKernel 12 ppSubErrorCodes.h 13 ppSubErrorCodes.c
-
- Property svn:ignore
-
trunk/ppSub/src/ppSubReadoutPhotometry.c
r23688 r23740 22 22 #include "ppSub.h" 23 23 24 bool ppSubReadoutPhotometry (pmConfig *config, ppSubData *data, const pmFPAview *view)24 bool ppSubReadoutPhotometry(const char *name, pmConfig *config, ppSubData *data) 25 25 { 26 26 psAssert(config, "Require configuration"); 27 psAssert(view, "Require view"); 27 28 if (!data->photometry) { 29 return false; 30 } 28 31 29 32 // Look up recipe values … … 39 42 // The PSF (measured in ppSubMakePSF) is stored on the chip->analysis of PSPHOT.INPUT 40 43 // In order to use an incoming PSF, it must be stored on the chip->analysis of PSPHOT.PSF.LOAD 44 pmFPAview *view = ppSubViewReadout(); // View to readout 41 45 pmChip *psfInputChip = pmFPAfileThisChip(config->files, view, "PSPHOT.INPUT"); // Chip with PSF 42 46 psAssert (psfInputChip, "should have been generated for ppSubMakePSF"); … … 47 51 psErrorStackPrint(stderr, "No PSF available"); 48 52 psWarning("No PSF available --- suspect bad data quality."); 49 ppSubDataQuality(config, data, psErrorCodeLast(), PPSUB_FILES_PHOT );53 ppSubDataQuality(config, data, psErrorCodeLast(), PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV); 50 54 return true; 51 55 } … … 58 62 // around the pointers so PSPHOT.INPUT corresponds to the output image; previously, it was 59 63 // equivalent to the minuend image. 60 pmFPAfile *outputFile = psMetadataLookupPtr(&mdok, config->files, "PPSUB.OUTPUT"); // Output file 61 pmReadout *outRO = pmFPAviewThisReadout(view, outputFile->fpa); // Readout with the sources 64 pmReadout *inRO = pmFPAfileThisReadout(config->files, view, name); // Readout with image and sources 62 65 63 // XXX possibly rename this to PPSUB.RESID?64 66 pmFPAfile *photFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.INPUT"); // Photometry file 65 67 pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout to photometer … … 68 70 photRO = pmReadoutAlloc(cell); // Output readout: subtraction 69 71 } 70 photRO->image = psImageCopy(photRO->image, outRO->image, PS_TYPE_F32);71 if ( outRO->variance) {72 photRO->variance = psImageCopy(photRO->variance, outRO->variance, PS_TYPE_F32);72 photRO->image = psImageCopy(photRO->image, inRO->image, PS_TYPE_F32); 73 if (inRO->variance) { 74 photRO->variance = psImageCopy(photRO->variance, inRO->variance, PS_TYPE_F32); 73 75 } else { 74 76 psFree(photRO->variance); 75 77 photRO->variance = NULL; 76 78 } 77 if ( outRO->mask) {78 photRO->mask = psImageCopy(photRO->mask, outRO->mask, PS_TYPE_IMAGE_MASK);79 if (inRO->mask) { 80 photRO->mask = psImageCopy(photRO->mask, inRO->mask, PS_TYPE_IMAGE_MASK); 79 81 } else { 80 82 psFree(photRO->mask); 81 83 photRO->mask = NULL; 82 84 } 85 psMetadataAddPtr(photRO->parent->parent->analysis, PS_LIST_TAIL, "PSPHOT.PSF", 86 PS_META_REPLACE | PS_DATA_UNKNOWN, "Point-spread function", data->psf); 87 88 psFree(photRO->analysis); 89 photRO->analysis = psMetadataAlloc(); 83 90 84 91 if (!psphotReadoutMinimal(config, view)) { … … 87 94 psErrorStackPrint(stderr, "Unable to perform photometry on image"); 88 95 psWarning("Unable to perform photometry on image --- suspect bad data quality."); 89 ppSubDataQuality(config, data, psErrorCodeLast(), PPSUB_FILES_PHOT );96 ppSubDataQuality(config, data, psErrorCodeLast(), PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV); 90 97 } 91 98 92 photRO->data_exists = true; 93 photRO->parent->data_exists = true; 94 photRO->parent->parent->data_exists = true; 99 if (!data->quality && !psMetadataCopySingle(inRO->analysis, photRO->analysis, "PSPHOT.SOURCES")) { 100 psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to copy PSPHOT.SOURCES"); 101 return false; 102 } 95 103 96 104 if (data->stats) { 97 105 psArray *sources = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.SOURCES"); // Sources 98 psMetadataAddS32(data->stats, PS_LIST_TAIL, "NUM_SOURCES", 0, "Number of sources detected", 99 sources ? sources->n : 0); 100 psMetadataAddF32(data->stats, PS_LIST_TAIL, "TIME_PHOT", 0, "Time to do photometry", 101 psTimerClear("PPSUB_PHOT")); 106 bool mdok; 107 int numSources = psMetadataLookupS32(&mdok, data->stats, "NUM_SOURCES"); // Number of sources 108 numSources += sources ? sources->n : 0; 109 psMetadataAddS32(data->stats, PS_LIST_TAIL, "NUM_SOURCES", PS_META_REPLACE, 110 "Total number of sources detected", numSources); 111 float newTime = psTimerClear("PPSUB_PHOT"); // Time for photometry 112 float oldTime = psMetadataLookupF32(&mdok, data->stats, "TIME_PHOT"); // Previous time for photometry 113 psMetadataAddF32(data->stats, PS_LIST_TAIL, "TIME_PHOT", PS_META_REPLACE, "Time to do photometry", 114 isfinite(oldTime) ? oldTime + newTime : newTime); 102 115 } 103 116
Note:
See TracChangeset
for help on using the changeset viewer.
