Changeset 14655 for trunk/psphot/src/models/pmModel_STRAIL.c
- Timestamp:
- Aug 23, 2007, 2:40:16 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/models/pmModel_STRAIL.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/models/pmModel_STRAIL.c
r11702 r14655 12 12 *****************************************************************************/ 13 13 14 # define PM_MODEL_FUNC pmModelFunc_STRAIL 15 # define PM_MODEL_FLUX pmModelFlux_STRAIL 16 # define PM_MODEL_GUESS pmModelGuess_STRAIL 17 # define PM_MODEL_LIMITS pmModelLimits_STRAIL 18 # define PM_MODEL_RADIUS pmModelRadius_STRAIL 19 # define PM_MODEL_FROM_PSF pmModelFromPSF_STRAIL 20 # define PM_MODEL_FIT_STATUS pmModelFitStatus_STRAIL 14 # define PM_MODEL_FUNC pmModelFunc_STRAIL 15 # define PM_MODEL_FLUX pmModelFlux_STRAIL 16 # define PM_MODEL_GUESS pmModelGuess_STRAIL 17 # define PM_MODEL_LIMITS pmModelLimits_STRAIL 18 # define PM_MODEL_RADIUS pmModelRadius_STRAIL 19 # define PM_MODEL_FROM_PSF pmModelFromPSF_STRAIL 20 # define PM_MODEL_PARAMS_FROM_PSF pmModelParamsFromPSF_STRAIL 21 # define PM_MODEL_FIT_STATUS pmModelFitStatus_STRAIL 21 22 22 23 psF32 PM_MODEL_FUNC(psVector *deriv, … … 474 475 475 476 //fixed I think...no good way of guessing as far as I can tell 476 bool PM_MODEL_GUESS (pmModel *model, pmSource *source) {477 477 bool PM_MODEL_GUESS (pmModel *model, pmSource *source) 478 { 478 479 pmMoments *Smoments = source->moments; 479 480 psF32 *params = model->params->data.F32; … … 516 517 517 518 //fixed 518 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf) {519 519 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf) 520 { 520 521 psF32 *out = modelPSF->params->data.F32; 521 522 psF32 *in = modelFLT->params->data.F32; … … 529 530 530 531 for (int i = 4; i < 7; i++) { 531 psPolynomial2D *poly = psf->params _NEW->data[i-4];532 psPolynomial2D *poly = psf->params->data[i-4]; 532 533 out[i] = psPolynomial2DEval (poly, out[2], out[3]); 533 534 } … … 535 536 } 536 537 538 // construct the PSF model from the FLT model and the psf 539 // XXX is this sufficiently general do be a global function, not a pmModelClass function? 540 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io) 541 { 542 psF32 *PAR = model->params->data.F32; 543 544 // we require these two parameters to exist 545 assert (psf->params->n > PM_PAR_YPOS); 546 assert (psf->params->n > PM_PAR_XPOS); 547 548 PAR[PM_PAR_SKY] = 0.0; 549 PAR[PM_PAR_I0] = Io; 550 PAR[PM_PAR_XPOS] = Xo; 551 PAR[PM_PAR_YPOS] = Yo; 552 553 // supply the model-fitted parameters, or copy from the input 554 for (int i = 0; i < psf->params->n; i++) { 555 if (i == PM_PAR_SKY) continue; 556 psPolynomial2D *poly = psf->params->data[i]; 557 assert (poly); 558 PAR[i] = psPolynomial2DEval(poly, Xo, Yo); 559 } 560 561 // the 2D PSF model fits polarization terms (E0,E1,E2) 562 // convert to shape terms (SXX,SYY,SXY) 563 // XXX user-defined value for limit? 564 if (!pmPSF_FitToModel (PAR, 0.1)) { 565 psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo); 566 return false; 567 } 568 569 // apply the model limits here: this truncates excessive extrapolation 570 // XXX do we need to do this still? should we put in asserts to test? 571 for (int i = 0; i < psf->params->n; i++) { 572 // apply the limits to all components or just the psf-model parameters? 573 if (psf->params->data[i] == NULL) 574 continue; 575 576 bool status = true; 577 status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, PAR, NULL); 578 status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, PAR, NULL); 579 if (!status) { 580 psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo); 581 model->flags |= PM_MODEL_STATUS_LIMITS; 582 } 583 } 584 return(true); 585 } 586 537 587 //done I think 538 bool PM_MODEL_FIT_STATUS (pmModel *model) {539 588 bool PM_MODEL_FIT_STATUS (pmModel *model) 589 { 540 590 psF32 dP; 541 591 bool status; … … 566 616 # undef PM_MODEL_RADIUS 567 617 # undef PM_MODEL_FROM_PSF 618 # undef PM_MODEL_PARAMS_FROM_PSF 568 619 # undef PM_MODEL_FIT_STATUS
Note:
See TracChangeset
for help on using the changeset viewer.
