Changeset 5802 for trunk/psphot/src/psphotFullFit.c
- Timestamp:
- Dec 17, 2005, 10:26:59 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotFullFit.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotFullFit.c
r5773 r5802 1 1 # 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; } \ 2 8 3 9 bool psphotFullFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky) 4 10 { 5 bool s kip, status;11 bool status; 6 12 float x, y; 7 13 int Nfit = 0; … … 26 32 psphotInitRadiusFLT (config, sky, modelTypeFLT); 27 33 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 28 40 for (int i = 0; i < sources->n; i++) { 29 41 … … 37 49 38 50 // save the PSF model from the Ensemble fit 39 pmModel * save= pmModelCopy (source->modelPSF);51 pmModel *LIN = pmModelCopy (source->modelPSF); 40 52 41 53 // attempt to fit the PSF model … … 49 61 x = modelPSF->params->data.F32[2]; 50 62 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 } 51 69 52 70 // fit PSF model (set/unset the pixel mask) … … 63 81 pmSourceSubModel (source->pixels, source->mask, source->modelPSF, false, false); 64 82 source->mode |= PM_SOURCE_SUBTRACTED; 65 psFree ( save);83 psFree (LIN); 66 84 Nsub ++; 85 CLEAR_TRACE; 67 86 continue; 68 87 } 69 88 70 89 // 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; 81 92 82 93 // add the double-PSF fit mode … … 84 95 85 96 // 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; 90 98 91 99 // use the source moments, etc to guess basic model parameters … … 111 119 pmSourceSubModel (source->pixels, source->mask, source->modelFLT, false, false); 112 120 source->mode |= PM_SOURCE_SUBTRACTED; 113 psFree ( save);121 psFree (LIN); 114 122 Nsub ++; 123 CLEAR_TRACE; 115 124 continue; 116 125 } 117 126 118 127 // 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: 121 129 psFree (source->modelPSF); 122 source->modelPSF = save;130 source->modelPSF = LIN; 123 131 pmSourceSubModel (source->pixels, source->mask, source->modelPSF, false, false); 124 132 source->mode |= PM_SOURCE_SUBTRACTED; 133 source->mode |= PM_SOURCE_LINEAR; 134 Nsub ++; 135 CLEAR_TRACE; 125 136 } 126 137
Note:
See TracChangeset
for help on using the changeset viewer.
