IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 9, 2006, 6:46:03 PM (20 years ago)
Author:
magnier
Message:

updated objects code with ApTrend concept (was in eam_rel9_b0)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_rel9_p0/psModules/src/objects/pmModelGroup.c

    r5255 r5958  
    1010#include "models/pmModel_SGAUSS.c"
    1111
    12 static pmModelGroup models[] = {
    13                                    {"PS_MODEL_GAUSS",        7, pmModelFunc_GAUSS,   pmModelFlux_GAUSS,   pmModelRadius_GAUSS,   pmModelLimits_GAUSS,   pmModelGuess_GAUSS,  pmModelFromPSF_GAUSS,  pmModelFitStatus_GAUSS},
    14                                    {"PS_MODEL_PGAUSS",       7, pmModelFunc_PGAUSS,  pmModelFlux_PGAUSS,  pmModelRadius_PGAUSS,  pmModelLimits_PGAUSS,  pmModelGuess_PGAUSS, pmModelFromPSF_PGAUSS, pmModelFitStatus_PGAUSS},
    15                                    {"PS_MODEL_QGAUSS",       8, pmModelFunc_QGAUSS,  pmModelFlux_QGAUSS,  pmModelRadius_QGAUSS,  pmModelLimits_QGAUSS,  pmModelGuess_QGAUSS, pmModelFromPSF_QGAUSS, pmModelFitStatus_QGAUSS},
    16                                    {"PS_MODEL_SGAUSS",       9, pmModelFunc_SGAUSS,  pmModelFlux_SGAUSS,  pmModelRadius_SGAUSS,  pmModelLimits_SGAUSS,  pmModelGuess_SGAUSS, pmModelFromPSF_SGAUSS, pmModelFitStatus_SGAUSS},
    17                                };
     12static pmModelGroup defaultModels[] = {
     13                                          {"PS_MODEL_GAUSS",        7, pmModelFunc_GAUSS,   pmModelFlux_GAUSS,   pmModelRadius_GAUSS,   pmModelLimits_GAUSS,   pmModelGuess_GAUSS,  pmModelFromPSF_GAUSS,  pmModelFitStatus_GAUSS},
     14                                          {"PS_MODEL_PGAUSS",       7, pmModelFunc_PGAUSS,  pmModelFlux_PGAUSS,  pmModelRadius_PGAUSS,  pmModelLimits_PGAUSS,  pmModelGuess_PGAUSS, pmModelFromPSF_PGAUSS, pmModelFitStatus_PGAUSS},
     15                                          {"PS_MODEL_QGAUSS",       8, pmModelFunc_QGAUSS,  pmModelFlux_QGAUSS,  pmModelRadius_QGAUSS,  pmModelLimits_QGAUSS,  pmModelGuess_QGAUSS, pmModelFromPSF_QGAUSS, pmModelFitStatus_QGAUSS},
     16                                          {"PS_MODEL_SGAUSS",       9, pmModelFunc_SGAUSS,  pmModelFlux_SGAUSS,  pmModelRadius_SGAUSS,  pmModelLimits_SGAUSS,  pmModelGuess_SGAUSS, pmModelFromPSF_SGAUSS, pmModelFitStatus_SGAUSS},
     17                                      };
     18
     19static pmModelGroup *models = NULL;
     20static int Nmodels = 0;
     21
     22static void ModelGroupFree (pmModelGroup *modelGroup)
     23{
     24
     25    if (modelGroup == NULL)
     26        return;
     27    psFree (modelGroup);
     28    return;
     29}
     30
     31pmModelGroup *pmModelGroupAlloc (int nModels)
     32{
     33
     34    pmModelGroup *modelGroup = (pmModelGroup *) psAlloc (nModels * sizeof(pmModelGroup));
     35    psMemSetDeallocator(modelGroup, (psFreeFunc) ModelGroupFree);
     36    return (modelGroup);
     37}
     38
     39void pmModelGroupAdd (pmModelGroup *model)
     40{
     41
     42    if (models == NULL) {
     43        pmModelGroupInit ();
     44    }
     45
     46    Nmodels ++;
     47    models = (pmModelGroup *) psRealloc (models, Nmodels*sizeof(pmModelGroup));
     48    models[Nmodels-1] = model[0];
     49    return;
     50}
     51
     52void pmModelGroupInit (void)
     53{
     54
     55    int Nnew = sizeof (defaultModels) / sizeof (pmModelGroup);
     56
     57    models = pmModelGroupAlloc (Nnew);
     58    for (int i = 0; i < Nnew; i++) {
     59        models[i] = defaultModels[i];
     60    }
     61    Nmodels = Nnew;
     62    return;
     63}
    1864
    1965pmModelFunc pmModelFunc_GetFunction (pmModelType type)
    2066{
    21     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    2267    if ((type < 0) || (type >= Nmodels)) {
    2368        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    2974pmModelFlux pmModelFlux_GetFunction (pmModelType type)
    3075{
    31     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    3276    if ((type < 0) || (type >= Nmodels)) {
    3377        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    3983pmModelRadius pmModelRadius_GetFunction (pmModelType type)
    4084{
    41     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    4285    if ((type < 0) || (type >= Nmodels)) {
    4386        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    4992pmModelLimits pmModelLimits_GetFunction (pmModelType type)
    5093{
    51     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    5294    if ((type < 0) || (type >= Nmodels)) {
    5395        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    59101pmModelGuessFunc pmModelGuessFunc_GetFunction (pmModelType type)
    60102{
    61     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    62103    if ((type < 0) || (type >= Nmodels)) {
    63104        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    69110pmModelFitStatusFunc pmModelFitStatusFunc_GetFunction (pmModelType type)
    70111{
    71     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    72112    if ((type < 0) || (type >= Nmodels)) {
    73113        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    79119pmModelFromPSFFunc pmModelFromPSFFunc_GetFunction (pmModelType type)
    80120{
    81     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    82121    if ((type < 0) || (type >= Nmodels)) {
    83122        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    89128psS32 pmModelParameterCount (pmModelType type)
    90129{
    91     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    92130    if ((type < 0) || (type >= Nmodels)) {
    93131        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
     
    99137psS32 pmModelSetType (char *name)
    100138{
    101 
    102     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    103139    for (int i = 0; i < Nmodels; i++) {
    104140        if (!strcmp(models[i].name, name)) {
     
    111147char *pmModelGetType (pmModelType type)
    112148{
    113 
    114     int Nmodels = sizeof (models) / sizeof (pmModelGroup);
    115149    if ((type < 0) || (type >= Nmodels)) {
    116150        psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
Note: See TracChangeset for help on using the changeset viewer.