IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 17, 2005, 10:26:59 AM (21 years ago)
Author:
eugene
Message:

clean up of small accounting bugs, adding the post-subtraction ApResid

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotFullFit.c

    r5773 r5802  
    11# include "psphot.h"
     2
     3# define CLEAR_TRACE \
     4  if (TEST_SRC_ON) { \
     5    psTraceSetLevel (".pmObjects.pmSourceFitModel", 0); \
     6    psTraceSetLevel ("psMinimizeLMChi2", 0); \
     7    TEST_SRC_ON = false; } \
    28
    39bool psphotFullFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky)
    410{
    5     bool  skip, status;
     11    bool  status;
    612    float x, y;
    713    int   Nfit = 0;
     
    2632    psphotInitRadiusFLT (config, sky, modelTypeFLT);
    2733
     34    float TEST_SRC_X = psMetadataLookupF32 (&status, config, "TEST_SRC_X");
     35    float TEST_SRC_Y = psMetadataLookupF32 (&status, config, "TEST_SRC_Y");
     36    bool TEST_SRC_ON = false;
     37    bool TEST_SRC    = status;
     38    fprintf (stderr, "test src: %f %f\n", TEST_SRC_X, TEST_SRC_Y);
     39
    2840    for (int i = 0; i < sources->n; i++) {
    2941
     
    3749
    3850        // save the PSF model from the Ensemble fit
    39         pmModel *save  = pmModelCopy (source->modelPSF);
     51        pmModel *LIN  = pmModelCopy (source->modelPSF);
    4052
    4153        // attempt to fit the PSF model
     
    4961        x = modelPSF->params->data.F32[2];
    5062        y = modelPSF->params->data.F32[3];
     63
     64        if (TEST_SRC && (fabs(TEST_SRC_X - x) < 5) && (fabs(TEST_SRC_Y - y) < 5)) {
     65            psTraceSetLevel (".pmObjects.pmSourceFitModel", 6);
     66            psTraceSetLevel ("psMinimizeLMChi2", 6);
     67            TEST_SRC_ON = true;
     68        }
    5169
    5270        // fit PSF model (set/unset the pixel mask)
     
    6381            pmSourceSubModel (source->pixels, source->mask, source->modelPSF, false, false);
    6482            source->mode |= PM_SOURCE_SUBTRACTED;
    65             psFree (save);
     83            psFree (LIN);
    6684            Nsub ++;
     85            CLEAR_TRACE;
    6786            continue;
    6887        }
    6988
    7089        // skip the source if we don't think it is extended
    71         skip  = (source->type != PM_SOURCE_GALAXY);
    72         skip |= (source->moments->SN < GAL_MIN_SN);
    73         if (skip) {
    74             source->modelPSF = save;
    75             pmSourceSubModel (source->pixels, source->mask, source->modelPSF, false, false);
    76             source->mode |= PM_SOURCE_SUBTRACTED;
    77             psFree (modelPSF);
    78             Nsub ++;
    79             continue;
    80         }
     90        if (source->type != PM_SOURCE_GALAXY) goto subLINEAR;
     91        if (source->moments->SN < GAL_MIN_SN) goto subLINEAR;
    8192
    8293        // add the double-PSF fit mode
     
    8495       
    8596        // recalculate the source moments using the larger galaxy moments radius
    86         if (!pmSourceMoments (source, GAL_MOMENTS_RAD)) {
    87             source->mode |= PM_SOURCE_FAIL;  // better choice?
    88             continue;
    89         }
     97        if (!pmSourceMoments (source, GAL_MOMENTS_RAD)) goto subLINEAR;
    9098
    9199        // use the source moments, etc to guess basic model parameters
     
    111119            pmSourceSubModel (source->pixels, source->mask, source->modelFLT, false, false);
    112120            source->mode |= PM_SOURCE_SUBTRACTED;
    113             psFree (save);
     121            psFree (LIN);
    114122            Nsub ++;
     123            CLEAR_TRACE;
    115124            continue;
    116125        }
    117126
    118127        // subtract PSF for object, leave local sky
    119         // XXX : we should keep the non-linear PSF fit if object was marked extended but
    120         //       PSF fit is OK otherwise.
     128    subLINEAR:
    121129        psFree (source->modelPSF);
    122         source->modelPSF = save;
     130        source->modelPSF = LIN;
    123131        pmSourceSubModel (source->pixels, source->mask, source->modelPSF, false, false);
    124132        source->mode |= PM_SOURCE_SUBTRACTED;
     133        source->mode |= PM_SOURCE_LINEAR;
     134        Nsub ++;
     135        CLEAR_TRACE;
    125136    }
    126137
Note: See TracChangeset for help on using the changeset viewer.