IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 14, 2007, 3:24:38 PM (19 years ago)
Author:
Paul Price
Message:

Adding const in some appropriate places.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/models/pmModel_TEST1.c

    r15000 r15843  
    1616 *****************************************************************************/
    1717
    18 # define PM_MODEL_FUNC            pmModelFunc_TEST1
    19 # define PM_MODEL_FLUX            pmModelFlux_TEST1
    20 # define PM_MODEL_GUESS           pmModelGuess_TEST1
    21 # define PM_MODEL_LIMITS          pmModelLimits_TEST1
    22 # define PM_MODEL_RADIUS          pmModelRadius_TEST1
    23 # define PM_MODEL_FROM_PSF        pmModelFromPSF_TEST1
     18# define PM_MODEL_FUNC            pmModelFunc_TEST1
     19# define PM_MODEL_FLUX            pmModelFlux_TEST1
     20# define PM_MODEL_GUESS           pmModelGuess_TEST1
     21# define PM_MODEL_LIMITS          pmModelLimits_TEST1
     22# define PM_MODEL_RADIUS          pmModelRadius_TEST1
     23# define PM_MODEL_FROM_PSF        pmModelFromPSF_TEST1
    2424# define PM_MODEL_PARAMS_FROM_PSF pmModelParamsFromPSF_TEST1
    2525# define PM_MODEL_FIT_STATUS      pmModelFitStatus_TEST1
     
    2727// the model is a function of the pixel coordinate (pixcoord[0,1] = x,y)
    2828psF32 PM_MODEL_FUNC(psVector *deriv,
    29                     const psVector *params,
    30                     const psVector *pixcoord)
     29                    const psVector *params,
     30                    const psVector *pixcoord)
    3131{
    3232    psF32 *PAR = params->data.F32;
     
    5757
    5858// define the parameter limits
    59 bool PM_MODEL_LIMITS (psMinConstraintMode mode, int nParam, float *params, float *beta) 
     59bool PM_MODEL_LIMITS (psMinConstraintMode mode, int nParam, float *params, float *beta)
    6060{
    6161    float beta_lim = 0;
     
    6565    switch (mode) {
    6666      case PS_MINIMIZE_BETA_LIMIT:
    67         switch (nParam) {
    68           case PM_PAR_SKY:  beta_lim = 1000;  break;
    69           case PM_PAR_I0:   beta_lim = 3e6;   break;
    70           case PM_PAR_XPOS: beta_lim = 5;     break;
    71           case PM_PAR_YPOS: beta_lim = 5;     break;
    72           case PM_PAR_SXX:  beta_lim = 0.5;   break;
    73           case PM_PAR_SYY:  beta_lim = 0.5;   break;
    74           case PM_PAR_SXY:  beta_lim = 0.5;   break;
    75           default:
    76             psAbort("invalid parameter %d for beta test", nParam);
    77         }
    78         if (fabs(beta[nParam]) > fabs(beta_lim)) {
    79             beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
    80             return false;
    81         }
    82         return true;
     67        switch (nParam) {
     68          case PM_PAR_SKY:  beta_lim = 1000;  break;
     69          case PM_PAR_I0:   beta_lim = 3e6;   break;
     70          case PM_PAR_XPOS: beta_lim = 5;     break;
     71          case PM_PAR_YPOS: beta_lim = 5;     break;
     72          case PM_PAR_SXX:  beta_lim = 0.5;   break;
     73          case PM_PAR_SYY:  beta_lim = 0.5;   break;
     74          case PM_PAR_SXY:  beta_lim = 0.5;   break;
     75          default:
     76            psAbort("invalid parameter %d for beta test", nParam);
     77        }
     78        if (fabs(beta[nParam]) > fabs(beta_lim)) {
     79            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
     80            return false;
     81        }
     82        return true;
    8383      case PS_MINIMIZE_PARAM_MIN:
    84         switch (nParam) {
    85           case PM_PAR_SKY:  params_min = -1000; break;
    86           case PM_PAR_I0:   params_min =     0; break;
    87           case PM_PAR_XPOS: params_min =  -100; break;
    88           case PM_PAR_YPOS: params_min =  -100; break;
    89           case PM_PAR_SXX:  params_min =   0.5; break;
    90           case PM_PAR_SYY:  params_min =   0.5; break;
    91           case PM_PAR_SXY:  params_min =  -5.0; break;
    92           default:
    93             psAbort("invalid parameter %d for param min test", nParam);
    94         }
    95         if (params[nParam] < params_min) {
    96             params[nParam] = params_min;
    97             return false;
    98         }
    99         return true;
     84        switch (nParam) {
     85          case PM_PAR_SKY:  params_min = -1000; break;
     86          case PM_PAR_I0:   params_min =     0; break;
     87          case PM_PAR_XPOS: params_min =  -100; break;
     88          case PM_PAR_YPOS: params_min =  -100; break;
     89          case PM_PAR_SXX:  params_min =   0.5; break;
     90          case PM_PAR_SYY:  params_min =   0.5; break;
     91          case PM_PAR_SXY:  params_min =  -5.0; break;
     92          default:
     93            psAbort("invalid parameter %d for param min test", nParam);
     94        }
     95        if (params[nParam] < params_min) {
     96            params[nParam] = params_min;
     97            return false;
     98        }
     99        return true;
    100100      case PS_MINIMIZE_PARAM_MAX:
    101         switch (nParam) {
    102           case PM_PAR_SKY:  params_max =   1e5; break;
    103           case PM_PAR_I0:   params_max =   1e8; break;
    104           case PM_PAR_XPOS: params_max =   1e4; break;
    105           case PM_PAR_YPOS: params_max =   1e4; break;
    106           case PM_PAR_SXX:  params_max =   100; break;
    107           case PM_PAR_SYY:  params_max =   100; break;
    108           case PM_PAR_SXY:  params_max =  +5.0; break;
    109           default:
    110             psAbort("invalid parameter %d for param max test", nParam);
    111         }
    112         if (params[nParam] > params_max) {
    113             params[nParam] = params_max;
    114             return false;
    115         }
    116         return true;
     101        switch (nParam) {
     102          case PM_PAR_SKY:  params_max =   1e5; break;
     103          case PM_PAR_I0:   params_max =   1e8; break;
     104          case PM_PAR_XPOS: params_max =   1e4; break;
     105          case PM_PAR_YPOS: params_max =   1e4; break;
     106          case PM_PAR_SXX:  params_max =   100; break;
     107          case PM_PAR_SYY:  params_max =   100; break;
     108          case PM_PAR_SXY:  params_max =  +5.0; break;
     109          default:
     110            psAbort("invalid parameter %d for param max test", nParam);
     111        }
     112        if (params[nParam] > params_max) {
     113            params[nParam] = params_max;
     114            return false;
     115        }
     116        return true;
    117117      default:
    118         psAbort("invalid choice for limits");
     118        psAbort("invalid choice for limits");
    119119    }
    120120    psAbort("should not reach here");
     
    204204}
    205205
    206 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf)
     206bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, const pmPSF *psf)
    207207{
    208208    psF32 *out = modelPSF->params->data.F32;
     
    214214
    215215    for (int i = 0; i < psf->params->n; i++) {
    216         if (psf->params->data[i] == NULL) {
    217             out[i] = in[i];
    218         } else {           
    219             pmTrend2D *trend = psf->params->data[i];
    220             out[i] = pmTrend2DEval(trend, in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
    221         }
     216        if (psf->params->data[i] == NULL) {
     217            out[i] = in[i];
     218        } else {
     219            pmTrend2D *trend = psf->params->data[i];
     220            out[i] = pmTrend2DEval(trend, in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     221        }
    222222    }
    223223
     
    230230// construct the PSF model from the FLT model and the psf
    231231// XXX is this sufficiently general do be a global function, not a pmModelClass function?
    232 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io)
     232bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, const pmPSF *psf, float Xo, float Yo, float Io)
    233233{
    234234    psF32 *PAR = model->params->data.F32;
     
    242242    PAR[PM_PAR_XPOS] = Xo;
    243243    PAR[PM_PAR_YPOS] = Yo;
    244    
     244
    245245    // supply the model-fitted parameters, or copy from the input
    246246    for (int i = 0; i < psf->params->n; i++) {
    247         if (i == PM_PAR_SKY) continue;
    248         pmTrend2D *trend = psf->params->data[i];
    249         PAR[i] = pmTrend2DEval(trend, Xo, Yo);
     247        if (i == PM_PAR_SKY) continue;
     248        pmTrend2D *trend = psf->params->data[i];
     249        PAR[i] = pmTrend2DEval(trend, Xo, Yo);
    250250    }
    251251
     
    254254    // XXX user-defined value for limit?
    255255    if (!pmPSF_FitToModel (PAR, 0.1)) {
    256         psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
    257         return false;
     256        psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
     257        return false;
    258258    }
    259259
     
    265265            continue;
    266266
    267         bool status = true;
     267        bool status = true;
    268268        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, PAR, NULL);
    269269        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, PAR, NULL);
    270         if (!status) {
    271             psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
    272             model->flags |= PM_MODEL_STATUS_LIMITS;
    273         }
     270        if (!status) {
     271            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
     272            model->flags |= PM_MODEL_STATUS_LIMITS;
     273        }
    274274    }
    275275    return(true);
Note: See TracChangeset for help on using the changeset viewer.