Changeset 14986
- Timestamp:
- Sep 22, 2007, 3:47:28 AM (19 years ago)
- Location:
- branches/eam_branch_20070921
- Files:
-
- 10 edited
-
psModules/src/objects/pmPSF.c (modified) (9 diffs)
-
psModules/src/objects/pmPSF.h (modified) (4 diffs)
-
psModules/src/objects/pmPSF_IO.c (modified) (10 diffs)
-
psModules/src/objects/pmPSF_IO.h (modified) (2 diffs)
-
psModules/src/objects/pmPSFtry.c (modified) (8 diffs)
-
psModules/src/objects/pmPSFtry.h (modified) (4 diffs)
-
psModules/src/objects/pmTrend2D.c (modified) (4 diffs)
-
psModules/test/camera/Makefile.am (modified) (1 diff)
-
psphot/doc/psfmodel.txt (modified) (1 diff)
-
psphot/src/psphotChoosePSF.c (modified) (3 diffs)
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 } -
branches/eam_branch_20070921/psModules/src/objects/pmPSF.h
r14980 r14986 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.16.2. 2$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-09-22 02:20:11$8 * @version $Revision: 1.16.2.3 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-09-22 13:47:28 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 47 47 int nPSFstars; ///< number of stars used to measure PSF 48 48 int nApResid; ///< number of stars used to measure ApResid 49 bool poissonErrors; 49 int Nx, Ny; ///< reference image dimensions 50 bool poissonErrorsPhotLMM; ///< use poission errors for non-linear model fitting 51 bool poissonErrorsPhotLin; ///< use poission errors for linear model fitting 52 bool poissonErrorsParams; ///< use poission errors for model parameter fitting 50 53 pmGrowthCurve *growth; ///< apMag vs Radius 51 54 pmResiduals *residuals; ///< normalized residual image (no spatial variation) … … 60 63 int psfTrendNx; 61 64 int psfTrendNy; 62 bool poissonErrors; 65 bool poissonErrorsPhotLMM; ///< use poission errors for non-linear model fitting 66 bool poissonErrorsPhotLin; ///< use poission errors for linear model fitting 67 bool poissonErrorsParams; ///< use poission errors for model parameter fitting 68 float radius; 69 63 70 } pmPSFOptions; 64 71 … … 72 79 * 73 80 */ 74 pmPSF *pmPSFAlloc( 75 pmModelType type, // type of model for PSF 76 bool poissonErrors, 77 psPolynomial2D *psfTrendMask 78 ); 81 pmPSF *pmPSFAlloc (pmPSFOptions *options); 82 pmPSFOptions *pmPSFOptionsAlloc (); 79 83 80 84 double pmPSF_SXYfromModel (psF32 *modelPar); -
branches/eam_branch_20070921/psModules/src/objects/pmPSF_IO.c
r14980 r14986 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.22.2. 2$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-09-22 02:20:11$8 * @version $Revision: 1.22.2.3 $ $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 … … 246 246 247 247 // write the PSF model parameters in a FITS table 248 assert (psf->psfTrendMode != PM_TREND_NONE);249 248 { 250 249 // we need to write a header for the table, … … 254 253 psMetadataAddStr (header, PS_LIST_TAIL, "PSF_NAME", 0, "PSF model name", modelName); 255 254 256 psMetadataAddBool (header, PS_LIST_TAIL, "POISSON", 0, "Use Poisson errors in fits?", psf->poissonErrors); 255 psMetadataAddBool (header, PS_LIST_TAIL, "ERR_LMM", 0, "Use Poisson errors in fits?", psf->poissonErrorsPhotLMM); 256 psMetadataAddBool (header, PS_LIST_TAIL, "ERR_LIN", 0, "Use Poisson errors in fits?", psf->poissonErrorsPhotLin); 257 psMetadataAddBool (header, PS_LIST_TAIL, "ERR_PAR", 0, "Use Poisson errors in fits?", psf->poissonErrorsParams); 257 258 258 259 int nPar = pmModelClassParameterCount (psf->type) ; 259 260 psMetadataAdd (header, PS_LIST_TAIL, "PSF_NPAR", PS_DATA_S32, "PSF model parameter count", nPar); 261 262 psMetadataAddS32 (header, PS_LIST_TAIL, "IMAXIS1", 0, "Image X Size", psf->Nx); 263 psMetadataAddS32 (header, PS_LIST_TAIL, "IMAXIS2", 0, "Image Y Size", psf->Ny); 260 264 261 265 // save the dimensions of each parameter 262 266 for (int i = 0; i < nPar; i++) { 263 267 char name[9]; 264 psPolynomial2D *poly = psf->params->data[i]; 265 if (poly == NULL) continue; 268 int nX, nY; 269 270 pmTrend2D *trend = psf->params->data[i]; 271 if (trend == NULL) continue; 272 273 if (trend->mode == PM_TREND_MAP) { 274 nX = trend->map->map->numCols; 275 nY = trend->map->map->numRows; 276 } else { 277 nX = trend->poly->nX; 278 nY = trend->poly->nY; 279 } 266 280 snprintf (name, 9, "PAR%02d_NX", i); 267 psMetadataAddS32 (header, PS_LIST_TAIL, name, 0, "", poly->nX);281 psMetadataAddS32 (header, PS_LIST_TAIL, name, 0, "", nX); 268 282 snprintf (name, 9, "PAR%02d_NY", i); 269 psMetadataAddS32 (header, PS_LIST_TAIL, name, 0, "", poly->nY); 270 } 271 272 char *modeName = pmTrend2DModeToString(trend->mode); 283 psMetadataAddS32 (header, PS_LIST_TAIL, name, 0, "", nY); 284 snprintf (name, 9, "PAR%02d_MD", i); 285 char *modeName = pmTrend2DModeToString (trend->mode); 286 psMetadataAddStr (header, PS_LIST_TAIL, name, 0, "", modeName); 287 psFree (modeName); 288 } 273 289 274 290 // other required information describing the PSF … … 277 293 psMetadataAddF32 (header, PS_LIST_TAIL, "CHISQ", 0, "chi-square for fit", psf->chisq); 278 294 psMetadataAddS32 (header, PS_LIST_TAIL, "NSTARS", 0, "number of stars used to measure PSF", psf->nPSFstars); 279 psMetadataAddStr (header, PS_LIST_TAIL, "MODE", 0, "", modeName);280 psFree (modeName);281 295 282 296 // XXX can we drop this now? … … 536 550 if (!header) psAbort("cannot read table header"); 537 551 552 pmPSFOptions *options = pmPSFOptionsAlloc(); 553 538 554 // load the PSF model parameters from the FITS table 539 555 char *modelName = psMetadataLookupStr (&status, header, "PSF_NAME"); 540 pmModelTypetype = pmModelClassGetType (modelName);541 if ( type == -1) {556 options->type = pmModelClassGetType (modelName); 557 if (options->type == -1) { 542 558 psError(PS_ERR_UNKNOWN, true, "invalid model name %s in psf file %s", modelName, file->filename); 543 559 return false; 544 560 } 545 561 546 bool poissonErrors = psMetadataLookupBool (&status, header, "POISSON"); 562 options->poissonErrorsPhotLMM = psMetadataLookupBool (&status, header, "ERR_LMM"); 563 options->poissonErrorsPhotLin = psMetadataLookupBool (&status, header, "ERR_LIN"); 564 options->poissonErrorsParams = psMetadataLookupBool (&status, header, "ERR_PAR"); 565 566 // XXX this is a bit ad-hoc: determine the PSF trend mode by looking at one of the parameters 567 // this could allow the psf model to use different trend modes for different parameters, but we 568 // would need to change the alloc somewhat 547 569 548 570 // we determine the PSF parameter polynomials from the MD-defined polynomials 549 pmPSF *psf = pmPSFAlloc ( type, poissonErrors, NULL);571 pmPSF *psf = pmPSFAlloc (options); 550 572 551 573 // check the number of expected parameters … … 554 576 psAbort("mismatch model par count"); 555 577 556 // load the dimensions of each parameter 578 int nXimage = psMetadataLookupS32 (&status, header, "IMAXIS1"); 579 int nYimage = psMetadataLookupS32 (&status, header, "IMAXIS2"); 580 // XXX don't require this to exist? 0,0 if not defined? 581 582 // load the trend mode and dimensions of each parameter 557 583 for (int i = 0; i < nPar; i++) { 558 584 char name[9]; … … 572 598 return false; 573 599 } 574 // XXX allocate pmTrend2d based on the values here 575 psf->params->data[i] = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, nXorder, nYorder); 600 pmTrend2DMode psfTrendMode = pmTrend2DModeFromString (modeName); 601 // XXX default to POLY_ORD if not defined? 602 603 psf->params->data[i] = pmTrend2DFieldAlloc (psfTrendMode, nXimage, nYimage, nXorder, nYorder, NULL); 576 604 } 577 605 … … 584 612 // XXX can we drop this now? 585 613 psf->skyBias = psMetadataLookupF32 (&status, header, "SKY_BIAS"); 586 587 char *modeName = psMetadataLookupStr (&status, header, "MODE");588 trend->mode = pmTrend2DModeToString(modeName);589 614 590 615 // read the raw table data … … 608 633 psImageMap *map = trend->map; 609 634 map->map->data.F32[yPow][xPow] = psMetadataLookupF32 (&status, row, "VALUE"); 610 map->error->data.F32[yPow][xPow] = psMetadataLookupF32 (&status, row, "ERROR"); 611 // poly->mask[xPow][yPow] = psMetadataLookupU8 (&status, row, "MASK"); 635 map->error->data.F32[yPow][xPow] = psMetadataLookupF32 (&status, row, "ERROR"); 612 636 } else { 613 637 psPolynomial2D *poly = trend->poly; … … 666 690 667 691 // create a psMetadata representation (human-readable) of a psf model 668 // XXX drop this function? 669 psMetadata *pmPSFtoMetadata (psMetadata *metadata, pmPSF *psf) 670 { 671 672 if (metadata == NULL) { 673 metadata = psMetadataAlloc (); 674 } 675 676 char *modelName = pmModelClassGetName (psf->type); 677 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_MODEL_NAME", PS_DATA_STRING, "PSF model name", modelName); 678 679 int nPar = pmModelClassParameterCount (psf->type) ; 680 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_MODEL_NPAR", PS_DATA_S32, "PSF model parameter count", nPar); 681 682 for (int i = 0; i < nPar; i++) { 683 psPolynomial2D *poly = psf->params->data[i]; 684 if (poly == NULL) 685 continue; 686 psPolynomial2DtoMetadata (metadata, poly, "PSF_PAR%02d", i); 687 } 688 689 // XXX fix this 690 psWarning ("APTREND is currently missing"); 691 // psPolynomial4DtoMetadata (metadata, psf->ApTrend, "APTREND"); 692 693 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_AP_RESID", PS_DATA_F32, "aperture residual", psf->ApResid); 694 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_dAP_RESID", PS_DATA_F32, "aperture residual scatter", psf->dApResid); 695 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_SKY_BIAS", PS_DATA_F32, "sky bias level", psf->skyBias); 696 697 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_CHISQ", PS_DATA_F32, "chi-square for fit", psf->chisq); 698 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_NSTARS", PS_DATA_S32, "number of stars used to measure PSF", psf->nPSFstars); 699 psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_POISSON_ERRORS", PS_DATA_BOOL, "Poisson errors for fits", psf->poissonErrors); 700 701 return metadata; 702 } 703 704 // parse a psMetadata representation (human-readable) of a psf model 705 // XXX drop this function? 706 pmPSF *pmPSFfromMetadata (psMetadata *metadata) 707 { 708 709 bool status; 710 char keyword[80]; 711 712 char *modelName = psMetadataLookupPtr (&status, metadata, "PSF_MODEL_NAME"); 713 pmModelType type = pmModelClassGetType (modelName); 714 715 bool poissonErrors = psMetadataLookupPtr (&status, metadata, "PSF_POISSON_ERRORS"); 716 if (!status) 717 poissonErrors = true; 718 719 // we determine the PSF parameter polynomials from the MD-defined polynomials 720 pmPSF *psf = pmPSFAlloc (type, poissonErrors, NULL); 721 722 int nPar = psMetadataLookupS32 (&status, metadata, "PSF_MODEL_NPAR"); 723 if (nPar != pmModelClassParameterCount (psf->type)) 724 psAbort("mismatch model par count"); 725 726 // un-fitted terms, not in the Metadata, are left NULL 727 // XXX add a double-check of the expected number? 728 for (int i = 0; i < nPar; i++) { 729 sprintf (keyword, "PSF_PAR%02d", i); 730 psMetadata *folder = psMetadataLookupPtr (&status, metadata, keyword); 731 if (!status) 732 continue; 733 psPolynomial2D *poly = psPolynomial2DfromMetadata (folder); 734 psFree (psf->params->data[i]); 735 psf->params->data[i] = poly; 736 } 737 738 // load the APTREND data 739 // XXX fix this to work with pmTrend2D 740 psWarning ("APTREND is not being read"); 741 # if (0) 742 sprintf (keyword, "APTREND"); 743 psMetadata *folder = psMetadataLookupPtr (&status, metadata, keyword); 744 psPolynomial4D *poly = psPolynomial4DfromMetadata (folder); 745 psFree (psf->ApTrend); 746 psf->ApTrend = poly; 747 # endif 748 749 psf->ApResid = psMetadataLookupF32 (&status, metadata, "PSF_AP_RESID"); 750 psf->dApResid = psMetadataLookupF32 (&status, metadata, "PSF_dAP_RESID"); 751 psf->skyBias = psMetadataLookupF32 (&status, metadata, "PSF_SKY_BIAS"); 752 753 psf->chisq = psMetadataLookupF32 (&status, metadata, "PSF_CHISQ"); 754 psf->nPSFstars = psMetadataLookupS32 (&status, metadata, "PSF_NSTARS"); 755 756 psFree (metadata); 757 return (psf); 758 } 692 // XXX pmPSF to/from Metadata functions were defined for 1.22 and earlier, but were dropped -
branches/eam_branch_20070921/psModules/src/objects/pmPSF_IO.h
r14652 r14986 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 8-24 00:11:02$8 * @version $Revision: 1.9.4.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-09-22 13:47:28 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 33 33 bool pmPSFmodelCheckDataStatusForChip (const pmChip *chip); 34 34 35 psMetadata *pmPSFtoMetadata (psMetadata *metadata, pmPSF *psf);36 pmPSF *pmPSFfromMetadata (psMetadata *metadata);37 38 35 /// @} 39 36 # endif -
branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.c
r14980 r14986 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.45.2. 2$ $Name: not supported by cvs2svn $8 * @date $Date: 2007-09-22 02:20:11$7 * @version $Revision: 1.45.2.3 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2007-09-22 13:47:28 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 139 139 140 140 // stage 2: construct a psf (pmPSF) from this collection of model fits 141 // XXX take 'applyWeights' from the psf options? 142 if (!pmPSFFromPSFtry (psfTry, options->applyWeights)) { 141 if (!pmPSFFromPSFtry (psfTry)) { 143 142 psError(PS_ERR_UNKNOWN, false, "failed to construct a psf model from collection of sources"); 144 143 psFree(psfTry); … … 339 338 /***************************************************************************** 340 339 pmPSFFromPSFtry (psfTry): build a PSF model from a collection of 341 source->modelEXT ent ires. The PSF ignores the first 4 (independent) model340 source->modelEXT entries. The PSF ignores the first 4 (independent) model 342 341 parameters and constructs a polynomial fit to the remaining as a function of 343 342 image coordinate. … … 345 344 Note: some of the array entries may be NULL (failed fits); ignore them. 346 345 *****************************************************************************/ 347 bool pmPSFFromPSFtry (pmPSFtry *psfTry , bool applyWeight)346 bool pmPSFFromPSFtry (pmPSFtry *psfTry) 348 347 { 349 348 pmPSF *psf = psfTry->psf; … … 355 354 356 355 psVector *dz = NULL; 357 if ( applyWeight) {356 if (psf->poissonErrorsParams) { 358 357 dz = psVectorAlloc (psfTry->sources->n, PS_TYPE_F32); 359 358 } … … 420 419 if (psTraceGetLevel("psModules.objects") >= 4) { 421 420 FILE *f = fopen ("pol.dat", "w"); 422 fprintf (f, " x y : e0obs e1obs e2obs : e0fit e1fit e2fit : mask\n",421 fprintf (f, "# x y : e0obs e1obs e2obs : e0fit e1fit e2fit : mask\n"); 423 422 for (int i = 0; i < e0->n; i++) { 424 423 fprintf (f, "%f %f : %f %f %f : %f %f %f : %d\n", … … 462 461 // fit the collection of measured parameters to the PSF 2D model 463 462 // the mask is carried from previous steps and updated with this operation 464 // the weight is either the flux error or NULL, depending on ' applyWeights'463 // the weight is either the flux error or NULL, depending on 'psf->poissonErrorParams' 465 464 if (!pmTrend2DFit (psf->params->data[i], psfTry->mask, 0xff, x, y, e0, NULL)) { 466 465 psError(PS_ERR_UNKNOWN, false, "failed to build psf model for parameter %d", i); 467 psFree(stats);468 466 psFree(x); 469 467 psFree(y); … … 502 500 } 503 501 504 psFree (stats);505 502 psFree (x); 506 503 psFree (y); -
branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.h
r14505 r14986 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.14 $ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 8-15 20:21:18 $8 * @version $Revision: 1.14.6.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-09-22 13:47:28 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 78 78 * 79 79 */ 80 pmPSFtry *pmPSFtryAlloc (psArray *sources, char *modelName, bool poissonErrors, psPolynomial2D *psfTrendMask);80 pmPSFtry *pmPSFtryAlloc (psArray *sources, pmPSFOptions *options); 81 81 82 82 /** pmPSFtryModel() … … 87 87 * 88 88 */ 89 pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, float RADIUS, bool poissonErrors, psPolynomial2D *psfTrendMask, bool applyWeights, psMaskType maskVal, psMaskType mark);89 pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, pmPSFOptions *options, psMaskType maskVal, psMaskType mark); 90 90 91 91 /** pmPSFtryMetric() … … 123 123 * 124 124 */ 125 bool pmPSFFromPSFtry (pmPSFtry *psfTry , bool applyWeights);125 bool pmPSFFromPSFtry (pmPSFtry *psfTry); 126 126 127 127 /// @} -
branches/eam_branch_20070921/psModules/src/objects/pmTrend2D.c
r14980 r14986 3 3 * @author EAM, IfA 4 4 * 5 * @version $Revision: 1.2.2. 2$ $Name: not supported by cvs2svn $6 * @date $Date: 2007-09-22 02:20:11$5 * @version $Revision: 1.2.2.3 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2007-09-22 13:47:28 $ 7 7 * 8 8 * Copyright 2004 Institute for Astronomy, University of Hawaii … … 14 14 #endif 15 15 16 # include <strings.h> 16 17 # include <pslib.h> 17 18 # include "pmTrend2D.h" … … 85 86 for (int nx = 0; nx < trend->poly->nX + 1; nx++) { 86 87 for (int ny = 0; ny < trend->poly->nY + 1; ny++) { 87 trend->poly->mask[nx][ny] = XXX; 88 if (nx + ny >= PS_MAX (trend->poly->nX, trend->poly->nY) + 1) { 89 trend->poly->mask[nx][ny] = 1; 90 } else { 91 trend->poly->mask[nx][ny] = 0; 92 } 88 93 } 89 94 } … … 181 186 182 187 psString pmTrend2DModeToString (pmTrend2DMode mode) { 188 189 psString name; 183 190 184 191 switch (mode) { 185 192 case PM_TREND_NONE: 186 psStringname = psStringCopy ("NONE");187 break; 188 case PM_TREND_POLY_ORD: 189 psStringname = psStringCopy ("POLY_ORD");190 break; 191 case PM_TREND_POLY_CHEB: 192 psStringname = psStringCopy ("POLY_CHEB");193 break; 194 case PM_TREND_MAP: 195 psStringname = psStringCopy ("MAP");193 name = psStringCopy ("NONE"); 194 break; 195 case PM_TREND_POLY_ORD: 196 name = psStringCopy ("POLY_ORD"); 197 break; 198 case PM_TREND_POLY_CHEB: 199 name = psStringCopy ("POLY_CHEB"); 200 break; 201 case PM_TREND_MAP: 202 name = psStringCopy ("MAP"); 196 203 break; 197 204 default: -
branches/eam_branch_20070921/psModules/test/camera/Makefile.am
r14551 r14986 11 11 $(PSMODULES_LIBS) 12 12 13 TEST_PROGS = \ 14 tap_pmFPAReadWrite 13 TEST_PROGS = 15 14 16 15 if BUILD_TESTS -
branches/eam_branch_20070921/psphot/doc/psfmodel.txt
r14970 r14986 1 2 2007.09.21 3 4 there are three places where we can choose to use errors in the fits or not: 5 6 * non-linear fitting of the models to the pixel flux distribution (poissonErrorsPhotLMM) 7 * linear fitting of the models to the pixel flux distribution (poissonErrorsPhotLin) 8 * fitting of the 2D variations in the psf parameters (poissonErrorsParams) 9 * fitting of the 2D variations in the aperture residuals 1 10 2 11 2007.09.20 -
branches/eam_branch_20070921/psphot/src/psphotChoosePSF.c
r14980 r14986 27 27 28 28 // use poissonian errors or local-sky errors 29 options->poissonErrorsPhotom = psMetadataLookupBool (&status, recipe, "POISSON.ERRORS.PHOTOM"); 29 options->poissonErrorsPhotLMM = psMetadataLookupBool (&status, recipe, "POISSON.ERRORS.PHOT.LMM"); 30 assert (status); 31 32 // use poissonian errors or local-sky errors 33 options->poissonErrorsPhotLin = psMetadataLookupBool (&status, recipe, "POISSON.ERRORS.PHOT.LIN"); 30 34 assert (status); 31 35 … … 52 56 options->image = psMemIncrRefCounter (readout->image); 53 57 54 pmSourceFitModelInit (15, 0.01, PS_SQR(SKY_SIG), options->poissonErrorsPhot om);58 pmSourceFitModelInit (15, 0.01, PS_SQR(SKY_SIG), options->poissonErrorsPhotLMM); 55 59 56 60 psArray *stars = psArrayAllocEmpty (sources->n); … … 235 239 // use pmModelSub because modelFlux has not been generated 236 240 assert (source->maskObj); 237 psImageKeepCircle (source->maskObj, x, y, RADIUS, "OR", PM_MASK_MARK);241 psImageKeepCircle (source->maskObj, x, y, options->radius, "OR", PM_MASK_MARK); 238 242 pmModelSub (source->pixels, source->maskObj, source->modelPSF, PM_MODEL_OP_FULL, maskVal); 239 psImageKeepCircle (source->maskObj, x, y, RADIUS, "AND", PS_NOT_U8(PM_MASK_MARK));243 psImageKeepCircle (source->maskObj, x, y, options->radius, "AND", PS_NOT_U8(PM_MASK_MARK)); 240 244 } 241 245
Note:
See TracChangeset
for help on using the changeset viewer.
