Changeset 14619
- Timestamp:
- Aug 22, 2007, 3:09:08 PM (19 years ago)
- Location:
- branches/eam_branch_20070817/psphot/src/models
- Files:
-
- 2 edited
-
pmModel_STRAIL.c (modified) (7 diffs)
-
pmModel_TEST1.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20070817/psphot/src/models/pmModel_STRAIL.c
r14545 r14619 475 475 476 476 //fixed I think...no good way of guessing as far as I can tell 477 bool PM_MODEL_GUESS ( void *inModel, void *inSource)477 bool PM_MODEL_GUESS (pmModel *model, pmSource *source) 478 478 { 479 pmModel *model = inModel;480 pmSource *source = inSource;481 482 479 pmMoments *Smoments = source->moments; 483 480 psF32 *params = model->params->data.F32; … … 520 517 521 518 //fixed 522 bool PM_MODEL_FROM_PSF ( void *inModelPSF, void *inModelFLT, void *inPSF)519 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf) 523 520 { 524 pmModel *modelPSF = inModelPSF;525 pmModel *modelFLT = inModelFLT;526 pmPSF *psf = inPSF;527 528 521 psF32 *out = modelPSF->params->data.F32; 529 522 psF32 *in = modelFLT->params->data.F32; … … 537 530 538 531 for (int i = 4; i < 7; i++) { 539 psPolynomial2D *poly = psf->params _NEW->data[i-4];532 psPolynomial2D *poly = psf->params->data[i-4]; 540 533 out[i] = psPolynomial2DEval (poly, out[2], out[3]); 541 534 } … … 545 538 // construct the PSF model from the FLT model and the psf 546 539 // XXX is this sufficiently general do be a global function, not a pmModelClass function? 547 bool PM_MODEL_PARAMS_FROM_PSF ( void *inModel, void *inPSF, float Xo, float Yo, float Io)540 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io) 548 541 { 549 pmModel *model = inModel;550 pmPSF *psf = inPSF;551 552 542 psF32 *PAR = model->params->data.F32; 553 543 554 544 // we require these two parameters to exist 555 assert (psf->params _NEW->n > PM_PAR_YPOS);556 assert (psf->params _NEW->n > PM_PAR_XPOS);545 assert (psf->params->n > PM_PAR_YPOS); 546 assert (psf->params->n > PM_PAR_XPOS); 557 547 558 548 PAR[PM_PAR_SKY] = 0.0; … … 562 552 563 553 // supply the model-fitted parameters, or copy from the input 564 for (int i = 0; i < psf->params _NEW->n; i++) {554 for (int i = 0; i < psf->params->n; i++) { 565 555 if (i == PM_PAR_SKY) continue; 566 psPolynomial2D *poly = psf->params _NEW->data[i];556 psPolynomial2D *poly = psf->params->data[i]; 567 557 assert (poly); 568 558 PAR[i] = psPolynomial2DEval(poly, Xo, Yo); … … 579 569 // apply the model limits here: this truncates excessive extrapolation 580 570 // XXX do we need to do this still? should we put in asserts to test? 581 for (int i = 0; i < psf->params _NEW->n; i++) {571 for (int i = 0; i < psf->params->n; i++) { 582 572 // apply the limits to all components or just the psf-model parameters? 583 if (psf->params _NEW->data[i] == NULL)573 if (psf->params->data[i] == NULL) 584 574 continue; 585 575 … … 596 586 597 587 //done I think 598 bool PM_MODEL_FIT_STATUS ( void *inModel)588 bool PM_MODEL_FIT_STATUS (pmModel *model) 599 589 { 600 pmModel *model = inModel;601 602 590 psF32 dP; 603 591 bool status; -
branches/eam_branch_20070817/psphot/src/models/pmModel_TEST1.c
r14545 r14619 123 123 124 124 // make an initial guess for parameters 125 bool PM_MODEL_GUESS (void *inModel, void *inSource) 126 { 127 pmModel *model = inModel; 128 pmSource *source = inSource; 129 125 bool PM_MODEL_GUESS (pmModel *model, pmSource *source) 126 { 130 127 pmMoments *moments = source->moments; 131 128 psF32 *PAR = model->params->data.F32; … … 207 204 } 208 205 209 bool PM_MODEL_FROM_PSF (void *inModelPSF, void *inModelFLT, void *inPSF) 210 { 211 pmModel *modelPSF = inModelPSF; 212 pmModel *modelFLT = inModelFLT; 213 pmPSF *psf = inPSF; 214 206 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf) 207 { 215 208 psF32 *out = modelPSF->params->data.F32; 216 209 psF32 *in = modelFLT->params->data.F32; 217 210 218 211 // we require these two parameters to exist 219 assert (psf->params _NEW->n > PM_PAR_YPOS);220 assert (psf->params _NEW->n > PM_PAR_XPOS);221 222 for (int i = 0; i < psf->params _NEW->n; i++) {223 if (psf->params _NEW->data[i] == NULL) {212 assert (psf->params->n > PM_PAR_YPOS); 213 assert (psf->params->n > PM_PAR_XPOS); 214 215 for (int i = 0; i < psf->params->n; i++) { 216 if (psf->params->data[i] == NULL) { 224 217 out[i] = in[i]; 225 218 } else { 226 psPolynomial2D *poly = psf->params _NEW->data[i];219 psPolynomial2D *poly = psf->params->data[i]; 227 220 out[i] = psPolynomial2DEval(poly, in[PM_PAR_XPOS], in[PM_PAR_YPOS]); 228 221 } … … 237 230 // construct the PSF model from the FLT model and the psf 238 231 // XXX is this sufficiently general do be a global function, not a pmModelClass function? 239 bool PM_MODEL_PARAMS_FROM_PSF (void *inModel, void *inPSF, float Xo, float Yo, float Io) 240 { 241 pmModel *model = inModel; 242 pmPSF *psf = inPSF; 243 232 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io) 233 { 244 234 psF32 *PAR = model->params->data.F32; 245 235 246 236 // we require these two parameters to exist 247 assert (psf->params _NEW->n > PM_PAR_YPOS);248 assert (psf->params _NEW->n > PM_PAR_XPOS);237 assert (psf->params->n > PM_PAR_YPOS); 238 assert (psf->params->n > PM_PAR_XPOS); 249 239 250 240 PAR[PM_PAR_SKY] = 0.0; … … 254 244 255 245 // supply the model-fitted parameters, or copy from the input 256 for (int i = 0; i < psf->params _NEW->n; i++) {246 for (int i = 0; i < psf->params->n; i++) { 257 247 if (i == PM_PAR_SKY) continue; 258 psPolynomial2D *poly = psf->params _NEW->data[i];248 psPolynomial2D *poly = psf->params->data[i]; 259 249 assert (poly); 260 250 PAR[i] = psPolynomial2DEval(poly, Xo, Yo); … … 271 261 // apply the model limits here: this truncates excessive extrapolation 272 262 // XXX do we need to do this still? should we put in asserts to test? 273 for (int i = 0; i < psf->params _NEW->n; i++) {263 for (int i = 0; i < psf->params->n; i++) { 274 264 // apply the limits to all components or just the psf-model parameters? 275 if (psf->params _NEW->data[i] == NULL)265 if (psf->params->data[i] == NULL) 276 266 continue; 277 267 … … 290 280 // this test is invalid if the parameters are derived 291 281 // from the PSF model 292 bool PM_MODEL_FIT_STATUS (void *inModel) 293 { 294 pmModel *model = inModel; 295 282 bool PM_MODEL_FIT_STATUS (pmModel *model) 283 { 296 284 psF32 dP; 297 285 bool status;
Note:
See TracChangeset
for help on using the changeset viewer.
