Changeset 36106 for trunk/psModules/src/objects/models/pmModel_DEV.c
- Timestamp:
- Sep 11, 2013, 10:56:38 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/objects/models/pmModel_DEV.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/pmModel_DEV.c
r36085 r36106 117 117 118 118 assert (isfinite(q)); 119 assert (isfinite(f0));120 119 121 120 // only worry about the central pixels at most … … 129 128 f0 = pmModelCP_SersicSubpix (X, Y, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], 4.0, Nsub); 130 129 } 130 assert (isfinite(f0)); 131 131 132 132 float f1 = PAR[PM_PAR_I0]*f0; … … 243 243 bool PM_MODEL_GUESS (pmModel *model, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal) 244 244 { 245 // for the moment, we are going to require moments and KronFlux 246 if (!source->moments) return false; 247 pmMoments *moments = source->moments; 248 249 if (!isfinite(moments->KronFlux)) return false; 250 if (!isfinite(moments->Mrf)) return false; 251 if (moments->Mrf < 0.0) return false; 252 245 253 psF32 *PAR = model->params->data.F32; 246 254 … … 248 256 PAR[PM_PAR_SKY] = 0.0; 249 257 250 // set the shape parameters 251 if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, true)) { 252 return false; 253 } 254 255 // set the model normalization 256 if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) { 257 return false; 258 } 258 psEllipseMoments emoments; 259 emoments.x2 = moments->Mxx; 260 emoments.xy = moments->Mxy; 261 emoments.y2 = moments->Myy; 262 263 // force the axis ratio to be < 20.0 264 psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0); 265 266 if (!isfinite(axes.major)) return false; 267 if (!isfinite(axes.minor)) return false; 268 if (!isfinite(axes.theta)) return false; 269 270 // Mxx, Mxy, Myy define the elliptical shape, but Mrf defines the width 271 float scale = moments->Mrf / axes.major; 272 axes.major *= scale; 273 axes.minor *= scale; 274 275 pmModelAxesToParams (&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], axes, true); 276 277 // psEllipseAxes axes; 278 // use the code in SetShape here to avoid doing this 2x 279 // pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], true); 280 281 // float norm = pmSersicNorm (4); // hardwire 282 float norm = 0.00168012; 283 float normFlux = 2.0 * M_PI * axes.major * axes.minor * norm; 284 PAR[PM_PAR_I0] = moments->KronFlux / normFlux; 259 285 260 286 // set the model position
Note:
See TracChangeset
for help on using the changeset viewer.
