Changeset 36859
- Timestamp:
- Jun 13, 2014, 8:35:36 AM (12 years ago)
- Location:
- trunk/psModules/src/objects
- Files:
-
- 12 edited
-
pmModel.c (modified) (5 diffs)
-
pmModel.h (modified) (1 diff)
-
pmModelClass.c (modified) (2 diffs)
-
pmModelClass.h (modified) (1 diff)
-
pmModelUtils.c (modified) (6 diffs)
-
pmPCM_MinimizeChisq.c (modified) (2 diffs)
-
pmPCMdata.c (modified) (6 diffs)
-
pmPSF.c (modified) (6 diffs)
-
pmSourceFitModel.c (modified) (5 diffs)
-
pmSourceFitPCM.c (modified) (3 diffs)
-
pmSourceFitSet.c (modified) (3 diffs)
-
pmSourceUtils.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/pmModel.c
r36834 r36859 33 33 #include "pmMoments.h" 34 34 #include "pmModelFuncs.h" 35 #include "pmModelClass.h" 35 36 #include "pmModel.h" 36 #include "pmModelClass.h"37 37 38 38 static void modelFree(pmModel *tmp) … … 92 92 } 93 93 94 tmp->modelFunc = class->modelFunc; 95 tmp->modelFlux = class->modelFlux; 96 tmp->modelRadius = class->modelRadius; 97 tmp->modelLimits = class->modelLimits; 98 tmp->modelGuess = class->modelGuess; 99 tmp->modelFromPSF = class->modelFromPSF; 100 tmp->modelParamsFromPSF = class->modelParamsFromPSF; 101 tmp->modelFitStatus = class->modelFitStatus; 102 tmp->modelSetLimits = class->modelSetLimits; 94 tmp->class = class; 95 96 // tmp->modelFunc = class->modelFunc; 97 // tmp->modelFlux = class->modelFlux; 98 // tmp->modelRadius = class->modelRadius; 99 // tmp->modelLimits = class->modelLimits; 100 // tmp->modelGuess = class->modelGuess; 101 // tmp->modelFromPSF = class->modelFromPSF; 102 // tmp->modelParamsFromPSF = class->modelParamsFromPSF; 103 // tmp->modelFitStatus = class->modelFitStatus; 104 // tmp->modelSetLimits = class->modelSetLimits; 103 105 104 106 psTrace("psModules.objects", 10, "---- %s() end ----\n", __func__); … … 158 160 psF32 tmpF; 159 161 160 tmpF = model-> modelFunc (NULL, model->params, x);162 tmpF = model->class->modelFunc (NULL, model->params, x); 161 163 psFree(x); 162 164 psTrace("psModules.objects", 10, "---- %s() end ----\n", __func__); … … 178 180 psF32 tmpF; 179 181 180 tmpF = model-> modelFunc (NULL, model->params, x);182 tmpF = model->class->modelFunc (NULL, model->params, x); 181 183 psFree(x); 182 184 psTrace("psModules.objects", 10, "---- %s() end ----\n", __func__); … … 285 287 // add in the desired components for this coordinate 286 288 if (mode & PM_MODEL_OP_FUNC) { 287 pixelValue += model-> modelFunc (NULL, params, x);289 pixelValue += model->class->modelFunc (NULL, params, x); 288 290 } 289 291 -
trunk/psModules/src/objects/pmModel.h
r31153 r36859 47 47 bool isPCM; ///< is this model fitted with PSF-convolution? 48 48 49 pmModelClass *class; 50 49 51 // functions for this model which depend on the model class 50 pmModelFunc modelFunc; 51 pmModelFlux modelFlux; 52 pmModelRadius modelRadius; 53 pmModelLimits modelLimits; 54 pmModelGuessFunc modelGuess; 55 pmModelFromPSFFunc modelFromPSF; 56 pmModelParamsFromPSF modelParamsFromPSF; 57 pmModelFitStatusFunc modelFitStatus; 58 pmModelSetLimitsFunc modelSetLimits; 52 53 // pmModelFunc modelFunc; 54 // pmModelFlux modelFlux; 55 // pmModelRadius modelRadius; 56 // pmModelLimits modelLimits; 57 // pmModelGuessFunc modelGuess; 58 // pmModelFromPSFFunc modelFromPSF; 59 // pmModelParamsFromPSF modelParamsFromPSF; 60 // pmModelFitStatusFunc modelFitStatus; 61 // pmModelSetLimitsFunc modelSetLimits; 59 62 }; 60 63 -
trunk/psModules/src/objects/pmModelClass.c
r36441 r36859 33 33 #include "pmMoments.h" 34 34 #include "pmModelFuncs.h" 35 #include "pmModelClass.h" 35 36 #include "pmModel.h" 36 37 #include "pmModelUtils.h" 37 #include "pmModelClass.h"38 38 39 39 #include "pmErrorCodes.h" … … 54 54 55 55 static pmModelClass defaultModels[] = { 56 {"PS_MODEL_GAUSS", 7, (pmModelFunc)pmModelFunc_GAUSS, (pmModelFlux)pmModelFlux_GAUSS, (pmModelRadius)pmModelRadius_GAUSS, (pmModelLimits)pmModelLimits_GAUSS, (pmModelGuessFunc)pmModelGuess_GAUSS, (pmModelFromPSFFunc)pmModelFromPSF_GAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_GAUSS, (pmModelFitStatusFunc)pmModelFitStatus_GAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_GAUSS },57 {"PS_MODEL_PGAUSS", 7, (pmModelFunc)pmModelFunc_PGAUSS, (pmModelFlux)pmModelFlux_PGAUSS, (pmModelRadius)pmModelRadius_PGAUSS, (pmModelLimits)pmModelLimits_PGAUSS, (pmModelGuessFunc)pmModelGuess_PGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_PGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_PGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_PGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_PGAUSS },58 {"PS_MODEL_QGAUSS", 8, (pmModelFunc)pmModelFunc_QGAUSS, (pmModelFlux)pmModelFlux_QGAUSS, (pmModelRadius)pmModelRadius_QGAUSS, (pmModelLimits)pmModelLimits_QGAUSS, (pmModelGuessFunc)pmModelGuess_QGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_QGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_QGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_QGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_QGAUSS },59 {"PS_MODEL_PS1_V1", 8, (pmModelFunc)pmModelFunc_PS1_V1, (pmModelFlux)pmModelFlux_PS1_V1, (pmModelRadius)pmModelRadius_PS1_V1, (pmModelLimits)pmModelLimits_PS1_V1, (pmModelGuessFunc)pmModelGuess_PS1_V1, (pmModelFromPSFFunc)pmModelFromPSF_PS1_V1, (pmModelParamsFromPSF)pmModelParamsFromPSF_PS1_V1, (pmModelFitStatusFunc)pmModelFitStatus_PS1_V1, (pmModelSetLimitsFunc)pmModelSetLimits_PS1_V1 },60 {"PS_MODEL_RGAUSS", 8, (pmModelFunc)pmModelFunc_RGAUSS, (pmModelFlux)pmModelFlux_RGAUSS, (pmModelRadius)pmModelRadius_RGAUSS, (pmModelLimits)pmModelLimits_RGAUSS, (pmModelGuessFunc)pmModelGuess_RGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_RGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_RGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_RGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_RGAUSS },61 {"PS_MODEL_SERSIC", 8, (pmModelFunc)pmModelFunc_SERSIC, (pmModelFlux)pmModelFlux_SERSIC, (pmModelRadius)pmModelRadius_SERSIC, (pmModelLimits)pmModelLimits_SERSIC, (pmModelGuessFunc)pmModelGuess_SERSIC, (pmModelFromPSFFunc)pmModelFromPSF_SERSIC, (pmModelParamsFromPSF)pmModelParamsFromPSF_SERSIC, (pmModelFitStatusFunc)pmModelFitStatus_SERSIC, (pmModelSetLimitsFunc)pmModelSetLimits_SERSIC },62 {"PS_MODEL_EXP", 7, (pmModelFunc)pmModelFunc_EXP, (pmModelFlux)pmModelFlux_EXP, (pmModelRadius)pmModelRadius_EXP, (pmModelLimits)pmModelLimits_EXP, (pmModelGuessFunc)pmModelGuess_EXP, (pmModelFromPSFFunc)pmModelFromPSF_EXP, (pmModelParamsFromPSF)pmModelParamsFromPSF_EXP, (pmModelFitStatusFunc)pmModelFitStatus_EXP, (pmModelSetLimitsFunc)pmModelSetLimits_EXP },63 {"PS_MODEL_DEV", 7, (pmModelFunc)pmModelFunc_DEV, (pmModelFlux)pmModelFlux_DEV, (pmModelRadius)pmModelRadius_DEV, (pmModelLimits)pmModelLimits_DEV, (pmModelGuessFunc)pmModelGuess_DEV, (pmModelFromPSFFunc)pmModelFromPSF_DEV, (pmModelParamsFromPSF)pmModelParamsFromPSF_DEV, (pmModelFitStatusFunc)pmModelFitStatus_DEV, (pmModelSetLimitsFunc)pmModelSetLimits_DEV },64 {"PS_MODEL_TRAIL", 7, (pmModelFunc)pmModelFunc_TRAIL, (pmModelFlux)pmModelFlux_TRAIL, (pmModelRadius)pmModelRadius_TRAIL, (pmModelLimits)pmModelLimits_TRAIL, (pmModelGuessFunc)pmModelGuess_TRAIL, (pmModelFromPSFFunc)pmModelFromPSF_TRAIL, (pmModelParamsFromPSF)pmModelParamsFromPSF_TRAIL, (pmModelFitStatusFunc)pmModelFitStatus_TRAIL, (pmModelSetLimitsFunc)pmModelSetLimits_TRAIL },56 {"PS_MODEL_GAUSS", 7, 0, (pmModelFunc)pmModelFunc_GAUSS, (pmModelFlux)pmModelFlux_GAUSS, (pmModelRadius)pmModelRadius_GAUSS, (pmModelSetFWHM)pmModelSetFWHM_GAUSS, (pmModelLimits)pmModelLimits_GAUSS, (pmModelGuessFunc)pmModelGuess_GAUSS, (pmModelFromPSFFunc)pmModelFromPSF_GAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_GAUSS, (pmModelFitStatusFunc)pmModelFitStatus_GAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_GAUSS }, 57 {"PS_MODEL_PGAUSS", 7, 0, (pmModelFunc)pmModelFunc_PGAUSS, (pmModelFlux)pmModelFlux_PGAUSS, (pmModelRadius)pmModelRadius_PGAUSS, (pmModelSetFWHM)pmModelSetFWHM_PGAUSS, (pmModelLimits)pmModelLimits_PGAUSS, (pmModelGuessFunc)pmModelGuess_PGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_PGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_PGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_PGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_PGAUSS }, 58 {"PS_MODEL_QGAUSS", 8, 0, (pmModelFunc)pmModelFunc_QGAUSS, (pmModelFlux)pmModelFlux_QGAUSS, (pmModelRadius)pmModelRadius_QGAUSS, (pmModelSetFWHM)pmModelSetFWHM_QGAUSS, (pmModelLimits)pmModelLimits_QGAUSS, (pmModelGuessFunc)pmModelGuess_QGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_QGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_QGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_QGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_QGAUSS }, 59 {"PS_MODEL_PS1_V1", 8, 0, (pmModelFunc)pmModelFunc_PS1_V1, (pmModelFlux)pmModelFlux_PS1_V1, (pmModelRadius)pmModelRadius_PS1_V1, (pmModelSetFWHM)pmModelSetFWHM_PS1_V1, (pmModelLimits)pmModelLimits_PS1_V1, (pmModelGuessFunc)pmModelGuess_PS1_V1, (pmModelFromPSFFunc)pmModelFromPSF_PS1_V1, (pmModelParamsFromPSF)pmModelParamsFromPSF_PS1_V1, (pmModelFitStatusFunc)pmModelFitStatus_PS1_V1, (pmModelSetLimitsFunc)pmModelSetLimits_PS1_V1 }, 60 {"PS_MODEL_RGAUSS", 8, 0, (pmModelFunc)pmModelFunc_RGAUSS, (pmModelFlux)pmModelFlux_RGAUSS, (pmModelRadius)pmModelRadius_RGAUSS, (pmModelSetFWHM)pmModelSetFWHM_RGAUSS, (pmModelLimits)pmModelLimits_RGAUSS, (pmModelGuessFunc)pmModelGuess_RGAUSS, (pmModelFromPSFFunc)pmModelFromPSF_RGAUSS, (pmModelParamsFromPSF)pmModelParamsFromPSF_RGAUSS, (pmModelFitStatusFunc)pmModelFitStatus_RGAUSS, (pmModelSetLimitsFunc)pmModelSetLimits_RGAUSS }, 61 {"PS_MODEL_SERSIC", 8, 1, (pmModelFunc)pmModelFunc_SERSIC, (pmModelFlux)pmModelFlux_SERSIC, (pmModelRadius)pmModelRadius_SERSIC, (pmModelSetFWHM)pmModelSetFWHM_SERSIC, (pmModelLimits)pmModelLimits_SERSIC, (pmModelGuessFunc)pmModelGuess_SERSIC, (pmModelFromPSFFunc)pmModelFromPSF_SERSIC, (pmModelParamsFromPSF)pmModelParamsFromPSF_SERSIC, (pmModelFitStatusFunc)pmModelFitStatus_SERSIC, (pmModelSetLimitsFunc)pmModelSetLimits_SERSIC }, 62 {"PS_MODEL_EXP", 7, 1, (pmModelFunc)pmModelFunc_EXP, (pmModelFlux)pmModelFlux_EXP, (pmModelRadius)pmModelRadius_EXP, (pmModelSetFWHM)pmModelSetFWHM_EXP, (pmModelLimits)pmModelLimits_EXP, (pmModelGuessFunc)pmModelGuess_EXP, (pmModelFromPSFFunc)pmModelFromPSF_EXP, (pmModelParamsFromPSF)pmModelParamsFromPSF_EXP, (pmModelFitStatusFunc)pmModelFitStatus_EXP, (pmModelSetLimitsFunc)pmModelSetLimits_EXP }, 63 {"PS_MODEL_DEV", 7, 1, (pmModelFunc)pmModelFunc_DEV, (pmModelFlux)pmModelFlux_DEV, (pmModelRadius)pmModelRadius_DEV, (pmModelSetFWHM)pmModelSetFWHM_DEV, (pmModelLimits)pmModelLimits_DEV, (pmModelGuessFunc)pmModelGuess_DEV, (pmModelFromPSFFunc)pmModelFromPSF_DEV, (pmModelParamsFromPSF)pmModelParamsFromPSF_DEV, (pmModelFitStatusFunc)pmModelFitStatus_DEV, (pmModelSetLimitsFunc)pmModelSetLimits_DEV }, 64 {"PS_MODEL_TRAIL", 7, 0, (pmModelFunc)pmModelFunc_TRAIL, (pmModelFlux)pmModelFlux_TRAIL, (pmModelRadius)pmModelRadius_TRAIL, (pmModelSetFWHM)pmModelSetFWHM_TRAIL, (pmModelLimits)pmModelLimits_TRAIL, (pmModelGuessFunc)pmModelGuess_TRAIL, (pmModelFromPSFFunc)pmModelFromPSF_TRAIL, (pmModelParamsFromPSF)pmModelParamsFromPSF_TRAIL, (pmModelFitStatusFunc)pmModelFitStatus_TRAIL, (pmModelSetLimitsFunc)pmModelSetLimits_TRAIL }, 65 65 }; 66 66 -
trunk/psModules/src/objects/pmModelClass.h
r36441 r36859 35 35 char *name; 36 36 int nParams; 37 bool useReff; 37 38 pmModelFunc modelFunc; 38 39 pmModelFlux modelFlux; 39 40 pmModelRadius modelRadius; 41 pmModelSetFWHM modelSetFWHM; 40 42 pmModelLimits modelLimits; 41 43 pmModelGuessFunc modelGuess; -
trunk/psModules/src/objects/pmModelUtils.c
r36623 r36859 32 32 #include "pmMoments.h" 33 33 #include "pmModelFuncs.h" 34 #include "pmModelClass.h" 34 35 #include "pmModel.h" 35 36 #include "pmModelUtils.h" 36 #include "pmModelClass.h"37 37 #include "pmSourceMasks.h" 38 38 #include "pmSourceExtendedPars.h" … … 46 46 #include "pmErrorCodes.h" 47 47 48 // XX static bool useModelVar = false;49 // XX50 // XX void pmModelSetModelVarOption (bool option) {51 // XX useModelVar = option;52 // XX }53 // XX bool pmModelGetModelVarOption (void) {54 // XX return useModelVar;55 // XX }56 57 48 /***************************************************************************** 58 49 pmModelFromPSF (*modelEXT, *psf): use the model position parameters to … … 68 59 69 60 // set model parameters for this source based on PSF information 70 if (!modelEXT-> modelFromPSF (modelPSF, modelEXT, psf)) {61 if (!modelEXT->class->modelFromPSF (modelPSF, modelEXT, psf)) { 71 62 psTrace ("psModules.objects", 3, "Failed to set model params from PSF"); 72 63 psFree(modelPSF); … … 89 80 90 81 // set model parameters for this source based on PSF information 91 if (!modelPSF-> modelParamsFromPSF (modelPSF, psf, Xo, Yo, Io)) {82 if (!modelPSF->class->modelParamsFromPSF (modelPSF, psf, Xo, Yo, Io)) { 92 83 psFree(modelPSF); 93 84 return NULL; … … 109 100 110 101 // determine the normalized flux 111 float normFlux = model-> modelFlux (model->params);102 float normFlux = model->class->modelFlux (model->params); 112 103 assert (isfinite(normFlux)); 113 104 assert (normFlux > 0); … … 120 111 121 112 bool pmModelUseReff (pmModelType type) { 122 bool useReff = false; 123 useReff |= (type == pmModelClassGetType ("PS_MODEL_SERSIC"));124 useReff |= (type == pmModelClassGetType ("PS_MODEL_DEV"));125 useReff |= (type == pmModelClassGetType ("PS_MODEL_EXP"));113 114 pmModelClass *class = pmModelClassSelect (type); 115 psAssert (class, "undefined model class?"); 116 bool useReff = class->useReff; 126 117 return useReff; 127 118 } -
trunk/psModules/src/objects/pmPCM_MinimizeChisq.c
r36623 r36859 31 31 #include "pmMoments.h" 32 32 #include "pmModelFuncs.h" 33 #include "pmModelClass.h" 33 34 #include "pmModel.h" 34 35 #include "pmModelUtils.h" 35 #include "pmModelClass.h"36 36 #include "pmSourceMasks.h" 37 37 #include "pmSourceExtendedPars.h" … … 455 455 coord->data.F32[1] = (psF32) (i + 0.5 + source->pixels->row0); 456 456 457 pcm->modelFlux->data.F32[i][j] = pcm->modelConv-> modelFunc (deriv, params, coord);457 pcm->modelFlux->data.F32[i][j] = pcm->modelConv->class->modelFunc (deriv, params, coord); 458 458 459 459 for (int n = 0; n < params->n; n++) { -
trunk/psModules/src/objects/pmPCMdata.c
r36623 r36859 31 31 #include "pmMoments.h" 32 32 #include "pmModelFuncs.h" 33 #include "pmModelClass.h" 33 34 #include "pmModel.h" 34 35 #include "pmModelUtils.h" 35 #include "pmModelClass.h"36 36 #include "pmSourceMasks.h" 37 37 #include "pmSourceExtendedPars.h" … … 293 293 294 294 psEllipseAxes axes; 295 bool useReff = pmModelUseReff (modelPSF->type);295 bool useReff = modelPSF->class->useReff; 296 296 psF32 *PAR = modelPSF->params->data.F32; 297 297 pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff); … … 302 302 // XXX need to do this more carefully 303 303 if (modelPSF->type == modelType_GAUSS) { 304 float FWHM_MAJOR = 2*modelPSF-> modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);304 float FWHM_MAJOR = 2*modelPSF->class->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]); 305 305 float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major); 306 306 *sigma = 0.50 * (FWHM_MAJOR + FWHM_MINOR) / 2.35; … … 330 330 331 331 psEllipseAxes axes; 332 bool useReff = pmModelUseReff (modelPSF->type);332 bool useReff = modelPSF->class->useReff; 333 333 psF32 *PAR = modelPSF->params->data.F32; 334 334 pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff); … … 339 339 // XXX need to do this more carefully 340 340 if (modelPSF->type == modelType_GAUSS) { 341 float FWHM_MAJOR = 2*modelPSF-> modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);341 float FWHM_MAJOR = 2*modelPSF->class->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]); 342 342 float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major); 343 343 *sigma = 0.50 * (FWHM_MAJOR + FWHM_MINOR) / 2.35; … … 393 393 psMinConstraint *constraint = psMinConstraintAlloc(); 394 394 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK); 395 constraint->checkLimits = model-> modelLimits;395 constraint->checkLimits = model->class->modelLimits; 396 396 397 397 int nParams = pmPCMsetParams (constraint, fitOptions->mode); -
trunk/psModules/src/objects/pmPSF.c
r36623 r36859 37 37 #include "pmMoments.h" 38 38 #include "pmModelFuncs.h" 39 #include "pmModelClass.h" 39 40 #include "pmModel.h" 40 41 #include "pmModelUtils.h" 41 #include "pmModelClass.h"42 42 #include "pmSourceMasks.h" 43 43 #include "pmSourceExtendedPars.h" … … 329 329 // convert the parameters used in the fitted source model to the psEllipseAxes representation 330 330 // (major,minor,theta) 331 psEllipseAxes pmPSF_ModelToAxes (psF32 *modelPar, pmModelType type)331 psEllipseAxes pmPSF_ModelToAxes (psF32 *modelPar, bool useReff) 332 332 { 333 333 psEllipseAxes axes; … … 338 338 PS_ASSERT_PTR_NON_NULL(modelPar, axes); 339 339 340 bool useReff = pmModelUseReff (type);341 340 pmModelParamsToAxes (&axes, modelPar[PM_PAR_SXX], modelPar[PM_PAR_SXY], modelPar[PM_PAR_SYY], useReff); 342 341 return axes; … … 345 344 // convert the psEllipseAxes representation (major,minor,theta) to the parameters used in the 346 345 // fitted source model 347 bool pmPSF_AxesToModel (psF32 *modelPar, psEllipseAxes axes, pmModelType type)346 bool pmPSF_AxesToModel (psF32 *modelPar, psEllipseAxes axes, bool useReff) 348 347 { 349 348 PS_ASSERT_PTR_NON_NULL(modelPar, false); … … 357 356 } 358 357 359 bool useReff = pmModelUseReff (type);360 358 pmModelAxesToParams (&modelPar[PM_PAR_SXX], &modelPar[PM_PAR_SXY], &modelPar[PM_PAR_SYY], axes, useReff); 361 359 return true; … … 420 418 421 419 // get the model full-width at half-max 422 float fwhmMajor = 2*model-> modelRadius (model->params, 0.5);420 float fwhmMajor = 2*model->class->modelRadius (model->params, 0.5); 423 421 424 422 # if (0) 425 423 psF32 *params = model->params->data.F32; // Model parameters 426 psEllipseAxes axes = pmPSF_ModelToAxes(params, MAX_AXIS_RATIO, model-> type); // Ellipse axes424 psEllipseAxes axes = pmPSF_ModelToAxes(params, MAX_AXIS_RATIO, model->class->useReff); // Ellipse axes 427 425 428 426 // Curiously, the minor axis can be larger than the major axis, so need to check. -
trunk/psModules/src/objects/pmSourceFitModel.c
r36623 r36859 33 33 #include "pmMoments.h" 34 34 #include "pmModelFuncs.h" 35 #include "pmModelClass.h" 35 36 #include "pmModel.h" 36 37 #include "pmModelUtils.h" 37 #include "pmModelClass.h"38 38 #include "pmSourceMasks.h" 39 39 #include "pmSourceExtendedPars.h" … … 170 170 psMinConstraint *constraint = psMinConstraintAlloc(); 171 171 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK); 172 constraint->checkLimits = model-> modelLimits;172 constraint->checkLimits = model->class->modelLimits; 173 173 174 174 // set parameter mask based on fitting mode … … 233 233 // force the floating parameters to fall within the contraint ranges 234 234 for (int i = 0; i < params->n; i++) { 235 model-> modelLimits (PS_MINIMIZE_PARAM_MIN, i, params->data.F32, NULL);236 model-> modelLimits (PS_MINIMIZE_PARAM_MAX, i, params->data.F32, NULL);235 model->class->modelLimits (PS_MINIMIZE_PARAM_MIN, i, params->data.F32, NULL); 236 model->class->modelLimits (PS_MINIMIZE_PARAM_MAX, i, params->data.F32, NULL); 237 237 } 238 238 … … 254 254 psImage *covar = psImageAlloc (params->n, params->n, PS_TYPE_F32); 255 255 256 fitStatus = psMinimizeLMChi2(myMin, covar, params, constraint, x, y, yErr, model-> modelFunc);256 fitStatus = psMinimizeLMChi2(myMin, covar, params, constraint, x, y, yErr, model->class->modelFunc); 257 257 for (int i = 0; i < dparams->n; i++) { 258 258 if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) … … 306 306 altmask->data.PS_TYPE_VECTOR_MASK_DATA[i] = (constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) ? 0 : 1; 307 307 } 308 psMinimizeGaussNewtonDelta(delta, params, altmask, x, y, yErr, model-> modelFunc);308 psMinimizeGaussNewtonDelta(delta, params, altmask, x, y, yErr, model->class->modelFunc); 309 309 310 310 for (int i = 0; i < dparams->n; i++) { -
trunk/psModules/src/objects/pmSourceFitPCM.c
r36623 r36859 31 31 #include "pmMoments.h" 32 32 #include "pmModelFuncs.h" 33 #include "pmModelClass.h" 33 34 #include "pmModel.h" 34 35 #include "pmModelUtils.h" 35 #include "pmModelClass.h"36 36 #include "pmSourceMasks.h" 37 37 #include "pmSourceExtendedPars.h" … … 63 63 // force the floating parameters to fall within the contraint ranges 64 64 for (int i = 0; i < params->n; i++) { 65 pcm->modelConv-> modelLimits (PS_MINIMIZE_PARAM_MIN, i, params->data.F32, NULL);66 pcm->modelConv-> modelLimits (PS_MINIMIZE_PARAM_MAX, i, params->data.F32, NULL);65 pcm->modelConv->class->modelLimits (PS_MINIMIZE_PARAM_MIN, i, params->data.F32, NULL); 66 pcm->modelConv->class->modelLimits (PS_MINIMIZE_PARAM_MAX, i, params->data.F32, NULL); 67 67 } 68 68 … … 165 165 bool pmSourceModelGuessPCM (pmPCMdata *pcm, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal) { 166 166 167 if (!pcm->modelConv-> modelGuess(pcm->modelConv, source, maskVal, markVal)) {167 if (!pcm->modelConv->class->modelGuess(pcm->modelConv, source, maskVal, markVal)) { 168 168 return false; 169 169 } -
trunk/psModules/src/objects/pmSourceFitSet.c
r36623 r36859 32 32 #include "pmMoments.h" 33 33 #include "pmModelFuncs.h" 34 #include "pmModelClass.h" 34 35 #include "pmModel.h" 35 36 #include "pmModelUtils.h" 36 #include "pmModelClass.h"37 37 #include "pmSourceMasks.h" 38 38 #include "pmSourceExtendedPars.h" … … 223 223 float *paramOne = params + nParamBase; 224 224 float *betaOne = betas + nParamBase; 225 bool status = model-> modelLimits (mode, nParamOne, paramOne, betaOne);225 bool status = model->class->modelLimits (mode, nParamOne, paramOne, betaOne); 226 226 return status; 227 227 } … … 388 388 psVector *derivOne = thisSet->derivSet->data[i]; 389 389 390 chisqOne = model-> modelFunc (derivOne, paramOne, x);390 chisqOne = model->class->modelFunc (derivOne, paramOne, x); 391 391 chisqSum += chisqOne; 392 392 } -
trunk/psModules/src/objects/pmSourceUtils.c
r36623 r36859 34 34 #include "pmMoments.h" 35 35 #include "pmModelFuncs.h" 36 #include "pmModelClass.h" 36 37 #include "pmModel.h" 37 38 #include "pmModelUtils.h" 38 #include "pmModelClass.h"39 39 #include "pmSourceMasks.h" 40 40 #include "pmSourceExtendedPars.h" … … 65 65 pmModel *model = pmModelAlloc(modelType); 66 66 67 if (!model-> modelGuess(model, source, maskVal, markVal)) {67 if (!model->class->modelGuess(model, source, maskVal, markVal)) { 68 68 psFree (model); 69 69 return NULL;
Note:
See TracChangeset
for help on using the changeset viewer.
