Changeset 10265
- Timestamp:
- Nov 28, 2006, 5:02:18 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/models/pmModel_TEST1.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/models/pmModel_TEST1.c
r9781 r10265 58 58 } 59 59 60 # if (0) 60 61 // define the parameter limits 61 62 bool PM_MODEL_LIMITS (psVector **beta_lim, psVector **params_min, psVector **params_max) … … 92 93 return (TRUE); 93 94 } 95 # endif 96 97 // define the parameter limits 98 bool PM_MODEL_LIMITS (psMinConstraintMode mode, int nParam, float *params, float *beta) 99 { 100 float beta_lim, params_min, params_max; 101 102 switch (mode) { 103 case PS_MINIMIZE_BETA_LIMIT: 104 switch (nParam) { 105 case PM_PAR_SKY: beta_lim = 1000; break; 106 case PM_PAR_I0: beta_lim = 3e6; break; 107 case PM_PAR_XPOS: beta_lim = 5; break; 108 case PM_PAR_YPOS: beta_lim = 5; break; 109 case PM_PAR_SXX: beta_lim = 0.5; break; 110 case PM_PAR_SYY: beta_lim = 0.5; break; 111 case PM_PAR_SXY: beta_lim = 0.5; break; 112 default: 113 psAbort ("psModules.pmModel_GAUSS", "invalid parameter %d for beta test", nParam); 114 } 115 if (fabs(beta[nParam]) > fabs(beta_lim)) { 116 beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim); 117 return false; 118 } 119 return true; 120 case PS_MINIMIZE_PARAM_MIN: 121 switch (nParam) { 122 case PM_PAR_SKY: params_min = -1000; break; 123 case PM_PAR_I0: params_min = 0; break; 124 case PM_PAR_XPOS: params_min = -100; break; 125 case PM_PAR_YPOS: params_min = -100; break; 126 case PM_PAR_SXX: params_min = 0.5; break; 127 case PM_PAR_SYY: params_min = 0.5; break; 128 case PM_PAR_SXY: params_min = -5.0; break; 129 default: 130 psAbort ("psModules.pmModel_GAUSS", "invalid parameter %d for param min test", nParam); 131 } 132 if (params[nParam] < params_min) { 133 params[nParam] = params_min; 134 return false; 135 } 136 return true; 137 case PS_MINIMIZE_PARAM_MAX: 138 switch (nParam) { 139 case PM_PAR_SKY: params_max = 1e5; break; 140 case PM_PAR_I0: params_max = 1e8; break; 141 case PM_PAR_XPOS: params_max = 1e4; break; 142 case PM_PAR_YPOS: params_max = 1e4; break; 143 case PM_PAR_SXX: params_max = 100; break; 144 case PM_PAR_SYY: params_max = 100; break; 145 case PM_PAR_SXY: params_max = +5.0; break; 146 default: 147 psAbort ("psModules.pmModel_GAUSS", "invalid parameter %d for param max test", nParam); 148 } 149 if (params[nParam] > params_max) { 150 params[nParam] = params_max; 151 return false; 152 } 153 return true; 154 default: 155 psAbort ("psModules.pmModel_GAUSS", "invalid choice for limits"); 156 } 157 psAbort ("psModules.pmModel_GAUSS", "should not reach here"); 158 return false; 159 } 94 160 95 161 // make an initial guess for parameters … … 123 189 124 190 // Area is equivalent to 2 pi sigma^2 125 psEllipseAxes axes = psEllipseShapeToAxes (shape );191 psEllipseAxes axes = psEllipseShapeToAxes (shape, 20.0); 126 192 psF64 Area = 2.0 * M_PI * axes.major * axes.minor; 127 193 … … 167 233 168 234 // this estimates the radius assuming f(z) is roughly exp(-z) 169 psEllipseAxes axes = psEllipseShapeToAxes (shape );235 psEllipseAxes axes = psEllipseShapeToAxes (shape, 20.0); 170 236 psF64 radius = axes.major * sqrt (2.0 * log(params->data.F32[PM_PAR_I0] / flux)); 171 237
Note:
See TracChangeset
for help on using the changeset viewer.
