IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 20, 2008, 3:28:06 PM (18 years ago)
Author:
Paul Price
Message:

Adding penalty for wideness.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_branch_080617/ppSub/src/ppSubReadout.c

    r18230 r18249  
    7373    int ringsOrder = psMetadataLookupS32(NULL, config->arguments, "RINGS.ORDER"); // RINGS polynomial order
    7474    int binning = psMetadataLookupS32(NULL, config->arguments, "SPAM.BINNING"); // Binning for SPAM kernel
     75    float penalty = psMetadataLookupF32(NULL, config->arguments, "PENALTY"); // Penalty for wideness
    7576    psMaskType maskBad = pmConfigMask(psMetadataLookupStr(NULL, config->arguments, "MASK.BAD"),
    7677                                    config); // Value to mask
     
    131132
    132133    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,
    135136                            maskBlank, badFrac, mode)) {
    136137        psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
     
    184185#endif
    185186
    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
    187210    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
    192212
    193213    // Photometry is to be performed in two stages:
     
    198218    pmPSF *psf = NULL;                  // PSF for photometry
    199219    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        }
    202224
    203225        pmFPAfile *photFile = psMetadataLookupPtr(NULL, config->files, "PSPHOT.INPUT");
     
    244266    }
    245267
    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);
    275276
    276277    psFree(inConv);
Note: See TracChangeset for help on using the changeset viewer.