- Timestamp:
- Sep 22, 2007, 3:47:28 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20070921/psModules/src/objects/pmPSF.c
r14980 r14986 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.28.2. 3$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-09-22 02:20:11$8 * @version $Revision: 1.28.2.4 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-09-22 13:47:28 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 67 67 options->psfTrendNy = 0; 68 68 69 options->poissonErrors = false; 69 options->poissonErrorsPhotLMM = true; 70 options->poissonErrorsPhotLin = false; 71 options->poissonErrorsParams = true; 72 73 return options; 70 74 } 71 75 … … 115 119 psf->nPSFstars = 0; 116 120 psf->nApResid = 0; 117 psf->poissonErrors = options->poissonErrors; 121 122 psf->poissonErrorsPhotLMM = options->poissonErrorsPhotLMM; 123 psf->poissonErrorsPhotLin = options->poissonErrorsPhotLin; 124 psf->poissonErrorsParams = options->poissonErrorsParams; 118 125 119 126 // the ApTrend components are (x, y). It may be represented with a polynomial or with a … … 128 135 psf->FluxScale = NULL; 129 136 130 if (psf->poissonErrors ) {137 if (psf->poissonErrorsPhotLMM) { 131 138 psf->ChiTrend = psPolynomial1DAlloc (PS_POLYNOMIAL_ORD, 1); 132 139 } else { … … 140 147 psf->residuals = NULL; 141 148 142 Nparams = pmModelClassParameterCount ( type);149 Nparams = pmModelClassParameterCount (options->type); 143 150 if (!Nparams) { 144 151 psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType"); … … 156 163 // are left as NULL. these are selected by testing for them by the named values ( 157 164 // PM_PAR_XPOS, etc) 165 166 psf->Nx = options->image->numCols; 167 psf->Ny = options->image->numRows; 158 168 159 169 // define the parameter trends … … 293 303 294 304 // generate a psf model of the requested type, with fixed shape 295 // XXX update this.296 305 pmPSF *pmPSFBuildSimple (char *typeName, float sxx, float syy, float sxy, ...) 297 306 { … … 300 309 va_start(ap, sxy); 301 310 302 pmModelType type = pmModelClassGetType (typeName); 303 psPolynomial2D *psfTrend = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, 0, 0); 304 pmPSF *psf = pmPSFAlloc (type, true, psfTrend); 311 pmPSFOptions *options = pmPSFOptionsAlloc (); 312 options->type = pmModelClassGetType (typeName); 313 options->psfTrendMode = PM_TREND_POLY_ORD; 314 options->psfTrendNx = 0; 315 options->psfTrendNy = 0; 316 317 pmPSF *psf = pmPSFAlloc (options); 305 318 306 319 psVector *par = psVectorAlloc (psf->params->n, PS_TYPE_F32); … … 311 324 psEllipsePol pol = pmPSF_ModelToFit(par->data.F32); 312 325 326 pmTrend2D *trend = NULL; 327 313 328 // set the psf shape parameters 314 psPolynomial2D *poly = NULL; 315 poly = psf->params->data[PM_PAR_E0]; 316 poly->coeff[0][0] = pol.e0; 317 318 poly = psf->params->data[PM_PAR_E1]; 319 poly->coeff[0][0] = pol.e1; 320 321 poly = psf->params->data[PM_PAR_E2]; 322 poly->coeff[0][0] = pol.e2; 329 trend = psf->params->data[PM_PAR_E0]; 330 trend->poly->coeff[0][0] = pol.e0; 331 332 trend = psf->params->data[PM_PAR_E1]; 333 trend->poly->coeff[0][0] = pol.e1; 334 335 trend = psf->params->data[PM_PAR_E2]; 336 trend->poly->coeff[0][0] = pol.e2; 323 337 324 338 for (int i = PM_PAR_SXY + 1; i < psf->params->n; i++) { 325 poly= psf->params->data[i];326 poly->coeff[0][0] = (psF32)va_arg(ap, psF64);339 trend = psf->params->data[i]; 340 trend->poly->coeff[0][0] = (psF32)va_arg(ap, psF64); 327 341 } 328 342 va_end(ap); 329 343 330 344 psFree (par); 331 psFree ( psfTrend);345 psFree (options); 332 346 return psf; 333 347 }
Note:
See TracChangeset
for help on using the changeset viewer.
