Changeset 34352 for trunk/psphot/src/psphotStackMatchPSFs.c
- Timestamp:
- Aug 24, 2012, 12:33:06 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotStackMatchPSFs.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotStackMatchPSFs.c
r34136 r34352 4 4 { 5 5 bool status = true; 6 7 psLogMsg ("psphot", PS_LOG_INFO, "--- psphotStack Match PSFs ---"); 6 8 7 9 psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, "PSPHOT"); … … 44 46 } 45 47 46 // loop over the available readouts (ignore chisq image) 48 // loop over the available readouts (ignore chisq image)psLogMsg ("psphot", PS_LOG_INFO, "--- psphot Source Stats ---"); 47 49 for (int i = 0; i < num; i++) { 48 50 if (!psphotStackMatchPSFsReadout (config, view, options, i)) { … … 57 59 58 60 // convolve the image to match desired PSF 59 // XXX is this code consistent with 'convolve' = false? 61 // XXX is this code consistent with 'convolve' = false? XXX: No 60 62 bool psphotStackMatchPSFsReadout (pmConfig *config, const pmFPAview *view, psphotStackOptions *options, int index) { 61 63 62 64 psImageMaskType maskValue; 63 65 psImageMaskType markValue; 66 67 psLogMsg("psphot", PS_LOG_DETAIL, "-- starting PSF matching for readout %d --", index); 64 68 65 69 // get the PSPHOT.MASK value from the config … … 102 106 saveMatchData(readoutOut, options, index); 103 107 } 108 bool notMatched = psMetadataLookupBool(NULL, readoutOut->analysis, "NOT.PSF.MATCHED"); 109 if (notMatched) { 110 if (!readoutOut->image) { 111 // our images got freed in the matching process. Recreate them so that they 112 // are available when sources are copied to this readout. 113 readoutOut->image = psImageCopy(NULL, readoutSrc->image, PS_TYPE_F32); 114 if (readoutSrc->variance) { 115 psFree(readoutOut->variance); 116 readoutOut->variance = psImageCopy(NULL, readoutSrc->variance, PS_TYPE_F32); 117 } 118 if (readoutSrc->mask) { 119 psFree(readoutOut->mask); 120 readoutOut->mask = psImageCopy(NULL, readoutSrc->mask, PS_TYPE_IMAGE_MASK); 121 } 122 } 123 } 104 124 105 125 // renormalize the stack variances to have sigma = 1.0 … … 111 131 // save the output fwhm values in the readout->analysis. we may have / will have multiple output PSF sizes, 112 132 // so we save this in a vector. if the vector is not yet defined, create it 113 // Skip this if the readoutdeconvolution fraction was over the limit.133 // Skip this if psf matching failed for this readout. For example if deconvolution fraction was over the limit. 114 134 // NOTE: fwhmValues as defined here has 1 + nMatched PSF : 0 == unmatched 115 135 psVector *fwhmValues = psVectorAllocEmpty(10, PS_TYPE_F32); 116 136 psVectorAppend(fwhmValues, NAN); // XXX this corresponds to the unmatched image set 117 137 118 bool overLimit = psMetadataLookupBool(NULL, readoutOut->analysis, "DECONV.OVERLIMIT"); 119 if (!overLimit) { 138 if (!notMatched) { 120 139 for (int i = 0; i < options->targetSeeing->n; i++) { 121 140 psVectorAppend(fwhmValues, options->targetSeeing->data.F32[i]); … … 124 143 psMetadataAddVector(readoutSrc->analysis, PS_LIST_TAIL, "STACK.PSF.FWHM.VALUES", PS_META_REPLACE, "PSF sizes", fwhmValues); 125 144 psMetadataAddVector(readoutOut->analysis, PS_LIST_TAIL, "STACK.PSF.FWHM.VALUES", PS_META_REPLACE, "PSF sizes", fwhmValues); 126 psFree(fwhmValues); // drops th e extra copy145 psFree(fwhmValues); // drops this function's reference 127 146 128 147 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
