Changeset 18249 for branches/pap_branch_080617/ppSub/src/ppSubReadout.c
- Timestamp:
- Jun 20, 2008, 3:28:06 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_080617/ppSub/src/ppSubReadout.c
r18230 r18249 73 73 int ringsOrder = psMetadataLookupS32(NULL, config->arguments, "RINGS.ORDER"); // RINGS polynomial order 74 74 int binning = psMetadataLookupS32(NULL, config->arguments, "SPAM.BINNING"); // Binning for SPAM kernel 75 float penalty = psMetadataLookupF32(NULL, config->arguments, "PENALTY"); // Penalty for wideness 75 76 psMaskType maskBad = pmConfigMask(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"), 76 77 config); // Value to mask … … 131 132 132 133 if (!pmSubtractionMatch(inConv, refConv, inRO, refRO, footprint, regionSize, spacing, threshold, sources, 133 stampsName, type, size, order, widths, orders, inner, ringsOrder, 134 binning, optimum, optWidths, optOrder, optThresh, iter, rej, maskBad,134 stampsName, type, size, order, widths, orders, inner, ringsOrder, binning, 135 penalty, optimum, optWidths, optOrder, optThresh, iter, rej, maskBad, 135 136 maskBlank, badFrac, mode)) { 136 137 psError(PS_ERR_UNKNOWN, false, "Unable to match images."); … … 184 185 #endif 185 186 186 // "Subtract" the mask and weight map 187 // Subtraction is: minuend - subtrahend 188 pmReadout *minuend = inConv; 189 pmReadout *subtrahend = refConv; 190 191 if (reverse) { 192 pmReadout *temp = subtrahend; 193 subtrahend = minuend; 194 minuend = temp; 195 } 196 197 #ifdef TESTING 198 { 199 psFits *fits = psFitsOpen("minuend.fits", "w"); 200 psFitsWriteImage(fits, NULL, minuend->image, 0, NULL); 201 psFitsClose(fits); 202 } 203 { 204 psFits *fits = psFitsOpen("subtrahend.fits", "w"); 205 psFitsWriteImage(fits, NULL, subtrahend->image, 0, NULL); 206 psFitsClose(fits); 207 } 208 #endif 209 187 210 outRO->mask = (psImage*)psBinaryOp(outRO->mask, inConv->mask, "|", refConv->mask); 188 if (inConv->weight && refConv->weight) { 189 outRO->weight = (psImage*)psBinaryOp(outRO->weight, inConv->weight, "+", refConv->weight); 190 } 191 outRO->data_exists = outCell->data_exists = outCell->parent->data_exists = true; 211 outRO->data_exists = outCell->data_exists = outCell->parent->data_exists = true; // It'll be there soon 192 212 193 213 // Photometry is to be performed in two stages: … … 198 218 pmPSF *psf = NULL; // PSF for photometry 199 219 if (psMetadataLookupBool(NULL, config->arguments, "PHOTOMETRY")) { 200 // We use a summed image as the basis for the PSF: this will have the maximum S/N. 201 outRO->image = (psImage*)psBinaryOp(outRO->image, inConv->image, "+", refConv->image); 220 outRO->image = psImageCopy(outRO->image, minuend->image, PS_TYPE_F32); 221 if (minuend->weight) { 222 outRO->weight = psImageCopy(outRO->weight, minuend->weight, PS_TYPE_F32); 223 } 202 224 203 225 pmFPAfile *photFile = psMetadataLookupPtr(NULL, config->files, "PSPHOT.INPUT"); … … 244 266 } 245 267 246 // Do the subtraction 247 { 248 // Subtraction is: minuend - subtrahend 249 pmReadout *minuend = inConv; 250 pmReadout *subtrahend = refConv; 251 252 if (reverse) { 253 pmReadout *temp = subtrahend; 254 subtrahend = minuend; 255 minuend = temp; 256 } 257 258 outRO->image = (psImage*)psBinaryOp(outRO->image, minuend->image, "-", subtrahend->image); 259 260 #ifdef TESTING 261 { 262 psFits *fits = psFitsOpen("minuend.fits", "w"); 263 psFitsWriteImage(fits, NULL, minuend->image, 0, NULL); 264 psFitsClose(fits); 265 } 266 { 267 psFits *fits = psFitsOpen("subtrahend.fits", "w"); 268 psFitsWriteImage(fits, NULL, subtrahend->image, 0, NULL); 269 psFitsClose(fits); 270 } 271 #endif 272 273 pmReadoutMaskApply(outRO, maskBlank); 274 } 268 // Do the actual subtraction 269 outRO->image = (psImage*)psBinaryOp(outRO->image, minuend->image, "-", subtrahend->image); 270 if (inConv->weight && refConv->weight) { 271 outRO->weight = (psImage*)psBinaryOp(outRO->weight, inConv->weight, "+", refConv->weight); 272 } 273 outRO->data_exists = outCell->data_exists = outCell->parent->data_exists = true; 274 275 pmReadoutMaskApply(outRO, maskBlank); 275 276 276 277 psFree(inConv);
Note:
See TracChangeset
for help on using the changeset viewer.
