Changeset 28418
- Timestamp:
- Jun 22, 2010, 12:26:15 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotRadiusChecks.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotRadiusChecks.c
r26894 r28418 4 4 static float PSF_FIT_NSIGMA; 5 5 static float PSF_FIT_PADDING; 6 static float PSF_APERTURE = 0; // radius to use in PSF aperture mags7 static float PSF_FIT_RADIUS = 0; // radius to use in fitting (ignored if <= 0,8 // and a per-object radius is calculated)6 static float PSF_APERTURE = 0; // radius to use in PSF aperture mags 7 static float PSF_FIT_RADIUS = 0; // radius to use in fitting (ignored if <= 0, 8 // and a per-object radius is calculated) 9 9 10 10 bool psphotInitRadiusPSF(const psMetadata *recipe, const psMetadata *analysis, const pmModelType type) { … … 17 17 PSF_FIT_RADIUS = psMetadataLookupF32(&status, analysis, "PSF_FIT_RADIUS"); 18 18 if (!status) { 19 PSF_FIT_RADIUS = psMetadataLookupF32(&status, recipe, "PSF_FIT_RADIUS");19 PSF_FIT_RADIUS = psMetadataLookupF32(&status, recipe, "PSF_FIT_RADIUS"); 20 20 } 21 21 22 22 PSF_APERTURE = psMetadataLookupF32(&status, analysis, "PSF_APERTURE"); 23 23 if (!status) { 24 PSF_APERTURE = psMetadataLookupF32(&status, recipe, "PSF_APERTURE"); 24 PSF_APERTURE = psMetadataLookupF32(&status, recipe, "PSF_APERTURE"); 25 } 26 27 // The PSF_FIT_RADIUS and PSF_APERTURE may not be set if the PSF was loaded and not chosen 28 29 if (PSF_FIT_RADIUS == 0.0) { 30 float gaussSigma = psMetadataLookupF32(&status, analysis, "MOMENTS_GAUSS_SIGMA"); 31 if (!status) { 32 gaussSigma = psMetadataLookupF32(&status, recipe, "MOMENTS_GAUSS_SIGMA"); 33 } 34 float fitScale = psMetadataLookupF32(&status, recipe, "PSF_FIT_RADIUS_SCALE"); 35 PSF_FIT_RADIUS = (int)(fitScale*gaussSigma); 36 } 37 38 if (PSF_APERTURE == 0.0) { 39 float gaussSigma = psMetadataLookupF32(&status, analysis, "MOMENTS_GAUSS_SIGMA"); 40 if (!status) { 41 gaussSigma = psMetadataLookupF32(&status, recipe, "MOMENTS_GAUSS_SIGMA"); 42 } 43 float apScale = psMetadataLookupF32(&status, recipe, "PSF_APERTURE_SCALE"); 44 PSF_APERTURE = (int)(apScale*gaussSigma); 25 45 } 26 46 … … 38 58 // set the fit radius based on the object flux limit and the model 39 59 float radiusFit = PSF_FIT_RADIUS; 40 if (radiusFit <= 0) { // use fixed radius41 if (moments == NULL) {42 radiusFit = model->modelRadius(model->params, PSF_FIT_NSIGMA*moments->dSky);43 } else {44 radiusFit = model->modelRadius(model->params, 1.0);45 }46 model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING);60 if (radiusFit <= 0) { // use fixed radius 61 if (moments == NULL) { 62 radiusFit = model->modelRadius(model->params, PSF_FIT_NSIGMA*moments->dSky); 63 } else { 64 radiusFit = model->modelRadius(model->params, 1.0); 65 } 66 model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING); 47 67 } else { 48 model->fitRadius = radiusFit;68 model->fitRadius = radiusFit; 49 69 } 50 70 if (isnan(model->fitRadius)) psAbort("error in radius"); 51 71 52 72 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 53 model->fitRadius *= 2;73 model->fitRadius *= 2; 54 74 } 55 75 … … 73 93 // set the fit radius based on the object flux limit and the model 74 94 float radiusFit = PSF_FIT_RADIUS; 75 if (radiusFit <= 0) { // use fixed radius76 if (moments == NULL) {77 radiusFit = model->modelRadius(model->params, PSF_FIT_NSIGMA*moments->dSky);78 } else {79 radiusFit = model->modelRadius(model->params, 1.0);80 }81 model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING);95 if (radiusFit <= 0) { // use fixed radius 96 if (moments == NULL) { 97 radiusFit = model->modelRadius(model->params, PSF_FIT_NSIGMA*moments->dSky); 98 } else { 99 radiusFit = model->modelRadius(model->params, 1.0); 100 } 101 model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING); 82 102 } else { 83 model->fitRadius = radiusFit;103 model->fitRadius = radiusFit; 84 104 } 85 105 if (isnan(model->fitRadius)) psAbort("error in radius"); … … 89 109 90 110 if (source->mode & PM_SOURCE_MODE_SATSTAR) { 91 model->fitRadius *= 2;111 model->fitRadius *= 2; 92 112 } 93 113 … … 134 154 float radius = 0.0; 135 155 for (int j = 0; j < footprint->spans->n; j++) { 136 pmSpan *span = footprint->spans->data[j];137 138 float dY = span->y - peak->yf;139 float dX0 = span->x0 - peak->xf;140 float dX1 = span->x1 - peak->xf;141 142 radius = PS_MAX (radius, hypot(dY, dX0));143 radius = PS_MAX (radius, hypot(dY, dX1));156 pmSpan *span = footprint->spans->data[j]; 157 158 float dY = span->y - peak->yf; 159 float dX0 = span->x0 - peak->xf; 160 float dX1 = span->x1 - peak->xf; 161 162 radius = PS_MAX (radius, hypot(dY, dX0)); 163 radius = PS_MAX (radius, hypot(dY, dX1)); 144 164 } 145 165
Note:
See TracChangeset
for help on using the changeset viewer.
