Changeset 28003 for branches/pap/ppSub/src/ppSubMakePSF.c
- Timestamp:
- May 18, 2010, 12:49:05 PM (16 years ago)
- Location:
- branches/pap
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ppSub/src/ppSubMakePSF.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap
- Property svn:mergeinfo changed
-
branches/pap/ppSub/src/ppSubMakePSF.c
r27698 r28003 106 106 // save the resulting PSF information on the pmFPAfile PSPHOT.PSF.LOAD 107 107 pmFPAfile *psfFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.PSF.LOAD"); // PSF file 108 if (!ppSubCopyPSF (psfFile, photFile, view)) {108 if (!ppSubCopyPSF(psfFile, photFile, view)) { 109 109 psErrorStackPrint(stderr, "PSF was not generated"); 110 110 psWarning("PSF was not generated --- suspect bad data quality."); … … 121 121 } 122 122 123 bool ppSubCopyPSF (pmFPAfile *output, pmFPAfile *input, pmFPAview *view) { 124 125 bool mdok = false; 126 123 bool ppSubCopyPSF(pmFPAfile *output, pmFPAfile *input, pmFPAview *view) 124 { 127 125 pmChip *inputChip = pmFPAviewThisChip(view, input->fpa); // Chip with PSF info 128 126 pmChip *outputChip = pmFPAviewThisChip(view, output->fpa); // Chip to store PSF info … … 134 132 pmCell *outputCell = pmFPAviewThisCell(view, output->fpa); 135 133 outputRO = pmReadoutAlloc(outputCell); 136 outputRO->image = psMemIncrRefCounter (inputRO->image);134 outputRO->image = psMemIncrRefCounter(inputRO->image); 137 135 } 138 136 139 // copy the PSF-related data to PSPHOT.PSF.LOAD for safe-keeping 140 psMetadata *psfRegions = psMetadataAlloc(); 141 142 int nRegions = psMetadataLookupS32 (&mdok, inputRO->analysis, "PSF.CLUMP.NREGIONS"); 143 if (!nRegions) { 144 psErrorStackPrint(stderr, "No PSF available"); 145 return false; 137 // Copy the PSF-related data 138 psMetadataIterator *iter = psMetadataIteratorAlloc(inputRO->analysis, PS_LIST_HEAD, "^PSF\\.CLUMP.*"); 139 psMetadataItem *item; // Item from iteration 140 while ((item = psMetadataGetAndIncrement(iter))) { 141 psMetadataAddItem(outputRO->analysis, item, PS_LIST_TAIL, PS_META_REPLACE); 146 142 } 147 psMetadataAddS32 (psfRegions, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS", PS_META_REPLACE, "psf clump regions", nRegions); 148 149 for (int i = 0; i < nRegions; i++) { 150 char fieldName[80]; 151 snprintf (fieldName, 80, "PSF.CLUMP.REGION.%03d", i); 152 psMetadata *regionMD = psMetadataLookupPtr (&mdok, inputRO->analysis, fieldName); 153 if (!regionMD) { 154 psWarning ("missing psf clump region metadata for entry %d", i); 155 continue; 156 } 157 psMetadataAddMetadata (psfRegions, PS_LIST_TAIL, fieldName, PS_META_REPLACE, "psf clump region", regionMD); 158 } 159 160 // XXX why am I replacing the entire analysis MD? 161 psFree(outputRO->analysis); 162 outputRO->analysis = psfRegions; 143 psFree(iter); 163 144 164 145 // copy the PSF model data … … 169 150 } 170 151 171 psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE, "PSF from ppSubMakePSF", psf); 152 psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE, 153 "PSF from ppSubMakePSF", psf); 172 154 173 155 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
