Changeset 36106 for trunk/psModules/src/objects/models/pmModel_EXP.c
- Timestamp:
- Sep 11, 2013, 10:56:38 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/objects/models/pmModel_EXP.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/pmModel_EXP.c
r36085 r36106 237 237 bool PM_MODEL_GUESS (pmModel *model, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal) 238 238 { 239 // for the moment, we are going to require moments and KronFlux 240 if (!source->moments) return false; 241 pmMoments *moments = source->moments; 242 243 if (!isfinite(moments->KronFlux)) return false; 244 if (!isfinite(moments->Mrf)) return false; 245 if (moments->Mrf < 0.0) return false; 246 239 247 psF32 *PAR = model->params->data.F32; 240 248 … … 242 250 PAR[PM_PAR_SKY] = 0.0; 243 251 244 // set the shape parameters 245 if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, true)) { 246 return false; 247 } 248 249 // set the model normalization 250 if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) { 251 return false; 252 } 252 psEllipseMoments emoments; 253 emoments.x2 = moments->Mxx; 254 emoments.xy = moments->Mxy; 255 emoments.y2 = moments->Myy; 256 257 // force the axis ratio to be < 20.0 258 psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0); 259 260 if (!isfinite(axes.major)) return false; 261 if (!isfinite(axes.minor)) return false; 262 if (!isfinite(axes.theta)) return false; 263 264 // Mxx, Mxy, Myy define the elliptical shape, but Mrf defines the width 265 float scale = moments->Mrf / axes.major; 266 axes.major *= scale; 267 axes.minor *= scale; 268 269 pmModelAxesToParams (&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], axes, true); 270 271 // psEllipseAxes axes; 272 // use the code in SetShape here to avoid doing this 2x 273 // pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], true); 274 275 // float norm = pmSersicNorm (4); // hardwire 276 float norm = 0.34578; 277 float normFlux = 2.0 * M_PI * axes.major * axes.minor * norm; 278 PAR[PM_PAR_I0] = moments->KronFlux / normFlux; 253 279 254 280 // set the model position … … 259 285 return(true); 260 286 } 261 262 287 // An exponential model is equivalent to a Sersic with index = 1.0 263 288 psF64 PM_MODEL_FLUX (const psVector *params)
Note:
See TracChangeset
for help on using the changeset viewer.
