Changeset 13900 for trunk/psphot/src/psphotSourceFits.c
- Timestamp:
- Jun 19, 2007, 4:40:44 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotSourceFits.c (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotSourceFits.c
r13035 r13900 16 16 bool psphotFitSummary () { 17 17 18 fprintf (stderr, "fitted %5d psf, %5d blend, %5d ext, %5d dbl : %6.2f sec\n", 19 NfitPSF, NfitBlend, NfitEXT, NfitDBL, psTimerMark ("psphot.fits"));20 return true; 21 } 22 23 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf ) {18 fprintf (stderr, "fitted %5d psf, %5d blend, %5d ext, %5d dbl : %6.2f sec\n", 19 NfitPSF, NfitBlend, NfitEXT, NfitDBL, psTimerMark ("psphot.fits")); 20 return true; 21 } 22 23 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal) { 24 24 25 25 float x, y, dR; … … 27 27 // if this source is not a possible blend, just fit as PSF 28 28 if ((source->blends == NULL) || (source->mode & PM_SOURCE_MODE_SATSTAR)) { 29 bool status = psphotFitPSF (readout, source, psf );29 bool status = psphotFitPSF (readout, source, psf, maskVal); 30 30 return status; 31 31 } … … 65 65 model->params->data.F32[PM_PAR_YPOS] = blend->peak->yf; 66 66 67 // these should never be invalid values68 // XXX drop these tests eventually67 // these should never be invalid values 68 // XXX drop these tests eventually 69 69 if (isnan(model->params->data.F32[PM_PAR_I0])) psAbort("nan in blend fit"); 70 70 if (isnan(model->params->data.F32[PM_PAR_XPOS])) psAbort("nan in blend fit"); … … 83 83 84 84 // fit PSF model (set/unset the pixel mask) 85 pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF );85 pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF, maskVal); 86 86 87 87 // correct model chisq for flux trend … … 109 109 psTrace ("psphot", 5, "fitted blend as PSF\n"); 110 110 111 // build cached model and subtract112 pmSourceCacheModel (blend);113 pmSourceSub (blend, PM_MODEL_OP_FULL);111 // build cached model and subtract 112 pmSourceCacheModel (blend, maskVal); 113 pmSourceSub (blend, PM_MODEL_OP_FULL, maskVal); 114 114 blend->mode |= PM_SOURCE_MODE_SUBTRACTED; 115 115 blend->mode &= ~PM_SOURCE_MODE_TEMPSUB; … … 121 121 psTrace ("psphot", 4, "failed on blend 0 of %ld\n", modelSet->n); 122 122 psFree (PSF); 123 psFree (modelSet);124 psFree (sourceSet);123 psFree (modelSet); 124 psFree (sourceSet); 125 125 return false; 126 126 } … … 134 134 135 135 // build cached model and subtract 136 pmSourceCacheModel (source );137 pmSourceSub (source, PM_MODEL_OP_FULL );136 pmSourceCacheModel (source, maskVal); 137 pmSourceSub (source, PM_MODEL_OP_FULL, maskVal); 138 138 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 139 139 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; … … 141 141 } 142 142 143 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf ) {143 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal) { 144 144 145 145 double chiTrend; … … 155 155 156 156 // fit PSF model (set/unset the pixel mask) 157 pmSourceFitModel (source, PSF, PM_SOURCE_FIT_PSF );157 pmSourceFitModel (source, PSF, PM_SOURCE_FIT_PSF, maskVal); 158 158 159 159 // correct model chisq for flux trend … … 173 173 174 174 // build cached model and subtract 175 pmSourceCacheModel (source );176 pmSourceSub (source, PM_MODEL_OP_FULL );175 pmSourceCacheModel (source, maskVal); 176 pmSourceSub (source, PM_MODEL_OP_FULL, maskVal); 177 177 source->mode |= PM_SOURCE_MODE_SUBTRACTED; 178 178 source->mode &= ~PM_SOURCE_MODE_TEMPSUB; … … 201 201 } 202 202 203 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf ) {203 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psMaskType maskVal) { 204 204 205 205 bool okEXT, okDBL; … … 222 222 pmSource *tmpSrc = pmSourceAlloc (); 223 223 224 pmModel *EXT = psphotFitEXT (readout, source );224 pmModel *EXT = psphotFitEXT (readout, source, maskVal); 225 225 okEXT = psphotEvalEXT (tmpSrc, EXT); 226 226 chiEXT = EXT->chisq / EXT->nDOF; 227 227 228 psArray *DBL = psphotFitDBL (readout, source );228 psArray *DBL = psphotFitDBL (readout, source, maskVal); 229 229 okDBL = psphotEvalDBL (tmpSrc, DBL->data[0]); 230 230 okDBL &= psphotEvalDBL (tmpSrc, DBL->data[1]); … … 269 269 270 270 // build cached model and subtract 271 pmSourceCacheModel (source );272 pmSourceSub (source, PM_MODEL_OP_FULL );271 pmSourceCacheModel (source, maskVal); 272 pmSourceSub (source, PM_MODEL_OP_FULL, maskVal); 273 273 psTrace ("psphot", 5, "blob as EXT: %f %f\n", EXT->params->data.F32[PM_PAR_XPOS], EXT->params->data.F32[PM_PAR_YPOS]); 274 274 … … 294 294 295 295 // build cached models and subtract 296 pmSourceCacheModel (source );297 pmSourceSub (source, PM_MODEL_OP_FULL );298 pmSourceCacheModel (newSrc );299 pmSourceSub (newSrc, PM_MODEL_OP_FULL );296 pmSourceCacheModel (source, maskVal); 297 pmSourceSub (source, PM_MODEL_OP_FULL, maskVal); 298 pmSourceCacheModel (newSrc, maskVal); 299 pmSourceSub (newSrc, PM_MODEL_OP_FULL, maskVal); 300 300 psTrace ("psphot", 5, "blob as DBL: %f %f\n", ONE->params->data.F32[PM_PAR_XPOS], ONE->params->data.F32[PM_PAR_YPOS]); 301 301 … … 307 307 308 308 // fit a double PSF source to an extended blob 309 psArray *psphotFitDBL (pmReadout *readout, pmSource *source ) {309 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psMaskType maskVal) { 310 310 311 311 float dx, dy; … … 348 348 349 349 // fit PSF model (set/unset the pixel mask) 350 pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF );350 pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF, maskVal); 351 351 return (modelSet); 352 352 } 353 353 354 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source ) {354 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, psMaskType maskVal) { 355 355 356 356 NfitEXT ++; … … 359 359 pmModel *EXT = pmSourceModelGuess (source, modelTypeEXT); 360 360 PS_ASSERT (EXT, NULL); 361 361 362 362 // if (isnan(EXT->params->data.F32[1])) psAbort("nan in ext fit"); 363 363 … … 369 369 370 370 // fit EXT (not PSF) model (set/unset the pixel mask) 371 pmSourceFitModel (source, EXT, PM_SOURCE_FIT_EXT );371 pmSourceFitModel (source, EXT, PM_SOURCE_FIT_EXT, maskVal); 372 372 return (EXT); 373 373 }
Note:
See TracChangeset
for help on using the changeset viewer.
