IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18857


Ignore:
Timestamp:
Aug 1, 2008, 12:11:51 PM (18 years ago)
Author:
Paul Price
Message:

Add a trap for case where no sources have a good extended fit.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmPSFtry.c

    r18581 r18857  
    55 *  @author EAM, IfA
    66 *
    7  *  @version $Revision: 1.58 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2008-07-16 23:06:10 $
     7 *  @version $Revision: 1.59 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2008-08-01 22:11:51 $
    99 *
    1010 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    138138        status = pmSourceFitModel (source, source->modelEXT, PM_SOURCE_FIT_EXT, maskVal);
    139139
    140         // clear object mask to define valid pixels
     140        // clear object mask to define valid pixels
    141141        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
    142142
     
    152152    psTrace ("psphot.psftry", 3, "keeping %d of %ld PSF candidates (EXT)\n", Next, sources->n);
    153153
     154    if (Next == 0) {
     155        psError(PS_ERR_UNKNOWN, true, "No sources with good extended fits from which to determine PSF.");
     156        psFree(psfTry);
     157        return NULL;
     158    }
     159
    154160    // stage 2: construct a psf (pmPSF) from this collection of model fits
    155161    if (!pmPSFFromPSFtry (psfTry)) {
     
    169175            psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : source is masked\n", i, source->peak->x, source->peak->y);
    170176            continue;
    171         }
     177        }
    172178
    173179        // set shape for this model based on PSF
     
    188194        // skip poor fits
    189195        if (!status) {
    190             psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
     196            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
    191197            psfTry->mask->data.U8[i] = PSFTRY_MASK_PSF_FAIL;
    192198            psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : failed PSF fit\n", i, source->peak->x, source->peak->y);
     
    195201
    196202        status = pmSourceMagnitudes (source, psfTry->psf, PM_SOURCE_PHOT_INTERP, maskVal);
    197         if (!status || isnan(source->apMag)) {
    198             psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
     203        if (!status || isnan(source->apMag)) {
     204            psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
    199205            psfTry->mask->data.U8[i] = PSFTRY_MASK_BAD_PHOT;
    200206            psTrace ("psModules.objects", 4, "dropping %d (%d,%d) : poor photometry\n", i, source->peak->x, source->peak->y);
     
    202208        }
    203209
    204         // clear object mask to define valid pixels
     210        // clear object mask to define valid pixels
    205211        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "AND", PS_NOT_U8(markVal));
    206212
     
    209215        psfTry->metricErr->data.F32[i] = source->errMag;
    210216
    211         psTrace ("psphot.psftry", 6, "keeping source %d (%d) of %ld\n", i, Npsf, psfTry->sources->n);
     217        psTrace ("psphot.psftry", 6, "keeping source %d (%d) of %ld\n", i, Npsf, psfTry->sources->n);
    212218        Npsf ++;
    213219    }
     
    268274    if (!pmPSFtryMetric (psfTry, options)) {
    269275        psError(PS_ERR_UNKNOWN, false, "Attempt to fit PSF with model %s failed.", modelName);
    270         psFree (psfTry);
     276        psFree (psfTry);
    271277        return NULL;
    272278    }
Note: See TracChangeset for help on using the changeset viewer.