IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25611


Ignore:
Timestamp:
Sep 27, 2009, 10:52:23 AM (17 years ago)
Author:
eugene
Message:

careful to mark the actual desired aperture; ensure source is added into image before photometry

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20090715/psphot/src/psphotSourceSize.c

    r25530 r25611  
    44typedef struct {
    55    psImageMaskType maskVal;
     6    psImageMaskType markVal;
    67    psImageMaskType crMask;
    78    float ApResid;
     
    3940    assert (options.maskVal);
    4041
     42    options.markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); // Mask value for bad pixels
     43    assert (options.markVal);
     44
    4145    // bit to mask the cosmic-ray pixels
    4246    options.crMask  = pmConfigMaskGet("CR", config); // Mask value for cosmic rays
     
    8185    psphotVisualPlotSourceSize (recipe, sources);
    8286    psphotVisualShowSourceSize (readout, sources);
     87    psphotVisualPlotApResid (sources, options.ApResid, options.ApSysErr);
    8388
    8489    return true;
     
    8994    // replace the source flux
    9095    pmSourceAdd (source, PM_MODEL_OP_FULL, maskVal);
    91     source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
    9296
    9397    // flag this as a CR
     
    198202    psVector *ApErr = psVectorAllocEmpty (100, PS_TYPE_F32);
    199203   
     204    psImageMaskType maskVal = options->maskVal | options->markVal;
     205
     206    // XXX  why PHOT_WEIGHT??
    200207    pmSourcePhotometryMode photMode = PM_SOURCE_PHOT_WEIGHT;
    201208
     
    204211        if (!(source->mode & PM_SOURCE_MODE_PSFSTAR)) continue;
    205212
     213        // replace object in image
     214        if (source->tmpFlags & PM_SOURCE_TMPF_SUBTRACTED) {
     215            pmSourceAdd (source, PM_MODEL_OP_FULL, options->maskVal);
     216        }
     217
     218        // clear the mask bit and set the circular mask pixels
     219        psImageMaskPixels (source->maskObj, "AND", PS_NOT_IMAGE_MASK(options->markVal));
     220        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, source->apRadius, "OR", options->markVal);
     221
    206222        // XXX can we test if psfMag is set and calculate only if needed?
    207         pmSourceMagnitudes (source, psf, photMode, options->maskVal);
     223        pmSourceMagnitudes (source, psf, photMode, maskVal); // maskVal includes markVal
    208224       
     225        // clear the mask bit
     226        psImageMaskPixels (source->maskObj, "AND", PS_NOT_IMAGE_MASK(options->markVal));
     227
     228        // re-subtract the object, leave local sky
     229        pmSourceSub (source, PM_MODEL_OP_FULL, options->maskVal);
     230
    209231        float apMag = -2.5*log10(source->moments->Sum);
    210232        float dMag = source->psfMag - apMag;
     
    288310    pmSourcePhotometryMode photMode = PM_SOURCE_PHOT_WEIGHT;
    289311
     312    psImageMaskType maskVal = options->maskVal | options->markVal;
     313
    290314    for (psS32 i = 0 ; i < sources->n ; i++) {
    291315
     
    322346        psF32 Myy = source->moments->Myy;
    323347
     348        // replace object in image
     349        if (source->tmpFlags & PM_SOURCE_TMPF_SUBTRACTED) {
     350            pmSourceAdd (source, PM_MODEL_OP_FULL, options->maskVal);
     351        }
     352
     353        // clear the mask bit and set the circular mask pixels
     354        psImageMaskPixels (source->maskObj, "AND", PS_NOT_IMAGE_MASK(options->markVal));
     355        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, source->apRadius, "OR", options->markVal);
     356
    324357        // XXX can we test if psfMag is set and calculate only if needed?
    325         pmSourceMagnitudes (source, psf, photMode, options->maskVal);
     358        pmSourceMagnitudes (source, psf, photMode, maskVal); // maskVal includes markVal
     359
     360        // clear the mask bit
     361        psImageMaskPixels (source->maskObj, "AND", PS_NOT_IMAGE_MASK(options->markVal));
     362
     363        // re-subtract the object, leave local sky
     364        pmSourceSub (source, PM_MODEL_OP_FULL, options->maskVal);
    326365
    327366        float apMag = -2.5*log10(source->moments->Sum);
     
    336375        bool isPSF = (fabs(nSigma) < options->nSigmaApResid) && (fabs(Mxx - psfClump->X) < options->nSigmaMoments*psfClump->dX) && (fabs(Myy - psfClump->Y) < options->nSigmaMoments*psfClump->dY);
    337376        if (isPSF) {
    338             if (Mxx > 3.0) {
    339                 fprintf (stderr, "!");
    340             }
    341377            Npsf ++;
    342378            continue;
     
    345381        // Defects may not always match CRs from peak curvature analysis
    346382        // Defects may also be marked as SATSTAR -- XXX deactivate this flag?
     383        // XXX this rule is not great
    347384        if ((Mxx < psfClump->X) || (Myy < psfClump->Y)) {
    348385            source->mode |= PM_SOURCE_MODE_DEFECT;
     
    366403        }
    367404
    368         fprintf (stderr, "miss %f,%f : %f %f -- %f\n", source->peak->xf, source->peak->yf, Mxx, Myy, nSigma);
     405        psWarning ("sourse size was missed for %f,%f : %f %f -- %f\n", source->peak->xf, source->peak->yf, Mxx, Myy, nSigma);
    369406        Nmiss ++;
    370407    }
Note: See TracChangeset for help on using the changeset viewer.