- Timestamp:
- Aug 22, 2007, 3:09:08 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.
