Changeset 8882 for trunk/psphot/src/models/pmModel_PGAUSS.c
- Timestamp:
- Sep 22, 2006, 2:29:31 AM (20 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/models/pmModel_PGAUSS.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/models/pmModel_PGAUSS.c
r5593 r8882 16 16 psF32 *PAR = params->data.F32; 17 17 18 psF32 X = x->data.F32[0] - PAR[ 2];19 psF32 Y = x->data.F32[1] - PAR[ 3];20 psF32 px = PAR[ 4]*X;21 psF32 py = PAR[ 5]*Y;22 psF32 z = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[ 6]*X*Y;18 psF32 X = x->data.F32[0] - PAR[PM_PAR_XPOS]; 19 psF32 Y = x->data.F32[1] - PAR[PM_PAR_YPOS]; 20 psF32 px = PAR[PM_PAR_SXX]*X; 21 psF32 py = PAR[PM_PAR_SYY]*Y; 22 psF32 z = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[PM_PAR_SXY]*X*Y; 23 23 psF32 t = 1 + z + z*z/2.0; 24 24 psF32 r = 1.0 / (t + z*z*z/6.0); /* exp (-Z) */ 25 psF32 f = PAR[ 1]*r + PAR[0];25 psF32 f = PAR[PM_PAR_FLUX]*r + PAR[PM_PAR_SKY]; 26 26 27 27 if (deriv != NULL) { 28 // note difference from a pure gaussian: q = PAR[ 1]*r29 psF32 q = PAR[ 1]*r*r*t;28 // note difference from a pure gaussian: q = PAR[PM_PAR_FLUX]*r 29 psF32 q = PAR[PM_PAR_FLUX]*r*r*t; 30 30 deriv->data.F32[0] = +1.0; 31 31 deriv->data.F32[1] = +r; 32 deriv->data.F32[2] = q*(2.0*px*PAR[ 4] + PAR[6]*Y);33 deriv->data.F32[3] = q*(2.0*py*PAR[ 5] + PAR[6]*X);32 deriv->data.F32[2] = q*(2.0*px*PAR[PM_PAR_SXX] + PAR[PM_PAR_SXY]*Y); 33 deriv->data.F32[3] = q*(2.0*py*PAR[PM_PAR_SYY] + PAR[PM_PAR_SXY]*X); 34 34 deriv->data.F32[4] = -2.0*q*px*X; 35 35 deriv->data.F32[5] = -2.0*q*py*Y; … … 78 78 psF32 *PAR = params->data.F32; 79 79 80 psF64 A1 = PS_SQR(PAR[ 4]);81 psF64 A2 = PS_SQR(PAR[ 5]);82 psF64 A3 = PS_SQR(PAR[ 6]);80 psF64 A1 = PS_SQR(PAR[PM_PAR_SXX]); 81 psF64 A2 = PS_SQR(PAR[PM_PAR_SYY]); 82 psF64 A3 = PS_SQR(PAR[PM_PAR_SXY]); 83 83 psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3); 84 84 // Area is equivalent to 2 pi sigma^2 … … 92 92 norm *= 0.01; 93 93 94 psF64 Flux = params->data.F32[ 1] * Area * norm;94 psF64 Flux = params->data.F32[PM_PAR_FLUX] * Area * norm; 95 95 96 96 return(Flux); … … 154 154 155 155 dP = 0; 156 dP += PS_SQR(dPAR[ 4] / PAR[4]);157 dP += PS_SQR(dPAR[ 5] / PAR[5]);156 dP += PS_SQR(dPAR[PM_PAR_SXX] / PAR[PM_PAR_SXX]); 157 dP += PS_SQR(dPAR[PM_PAR_SYY] / PAR[PM_PAR_SYY]); 158 158 dP = sqrt (dP); 159 159 160 160 status = true; 161 161 status &= (dP < 0.5); 162 status &= (PAR[ 1] > 0);163 status &= ((dPAR[ 1]/PAR[1]) < 0.5);162 status &= (PAR[PM_PAR_FLUX] > 0); 163 status &= ((dPAR[PM_PAR_FLUX]/PAR[PM_PAR_FLUX]) < 0.5); 164 164 165 165 if (status) return true;
Note:
See TracChangeset
for help on using the changeset viewer.
