IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 14, 2007, 2:58:11 PM (18 years ago)
Author:
Paul Price
Message:

Adding const in some appropriate places.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/models/pmModel_PGAUSS.c

    r15056 r15834  
    66 * specifics of the model.  All models which are used a PSF representations share a few
    77 * parameters, for which # define names are listed in pmModel.h:
    8  
     8
    99   Gaussian taylor expansion
    1010   1 / (1 + z + z^2/2 + z^3/6)
    11  
     11
    1212 * PM_PAR_SKY 0   - local sky : note that this is unused and may be dropped in the future
    1313 * PM_PAR_I0 1    - central intensity
     
    1919 *****************************************************************************/
    2020
    21 # define PM_MODEL_FUNC            pmModelFunc_PGAUSS
    22 # define PM_MODEL_FLUX            pmModelFlux_PGAUSS
    23 # define PM_MODEL_GUESS           pmModelGuess_PGAUSS
    24 # define PM_MODEL_LIMITS          pmModelLimits_PGAUSS
    25 # define PM_MODEL_RADIUS          pmModelRadius_PGAUSS
    26 # define PM_MODEL_FROM_PSF        pmModelFromPSF_PGAUSS
     21# define PM_MODEL_FUNC            pmModelFunc_PGAUSS
     22# define PM_MODEL_FLUX            pmModelFlux_PGAUSS
     23# define PM_MODEL_GUESS           pmModelGuess_PGAUSS
     24# define PM_MODEL_LIMITS          pmModelLimits_PGAUSS
     25# define PM_MODEL_RADIUS          pmModelRadius_PGAUSS
     26# define PM_MODEL_FROM_PSF        pmModelFromPSF_PGAUSS
    2727# define PM_MODEL_PARAMS_FROM_PSF pmModelParamsFromPSF_PGAUSS
    2828# define PM_MODEL_FIT_STATUS      pmModelFitStatus_PGAUSS
     
    7777        f2 = 1.0 / PS_SQR(params[PM_PAR_SYY]) - 1.0 / PS_SQR(params[PM_PAR_SXX]);
    7878        q1 = PS_SQR(f1)*AR_RATIO - PS_SQR(f2);
    79         q1 = PS_MAX (0.0, q1);
    80         // if q1 < 0.0, f2 ~ f1, we have a very large axis ratio near 45deg..  Saturate at that
    81         // angle and let f2,f1 fight it out
     79        q1 = PS_MAX (0.0, q1);
     80        // if q1 < 0.0, f2 ~ f1, we have a very large axis ratio near 45deg..  Saturate at that
     81        // angle and let f2,f1 fight it out
    8282        q2  = 0.5*sqrt (q1);
    8383    }
     
    112112        if (fabs(beta[nParam]) > fabs(beta_lim)) {
    113113            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
    114             psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
    115                      nParam, beta[nParam], beta_lim);
     114            psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
     115                     nParam, beta[nParam], beta_lim);
    116116            return false;
    117117        }
     
    143143            psAbort("invalid parameter %d for param min test", nParam);
    144144        }
    145         if (params[nParam] < params_min) {
     145        if (params[nParam] < params_min) {
    146146            params[nParam] = params_min;
    147             psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
    148                      nParam, params[nParam], params_min);
     147            psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
     148                     nParam, params[nParam], params_min);
    149149            return false;
    150150        }
     
    178178        if (params[nParam] > params_max) {
    179179            params[nParam] = params_max;
    180             psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
    181                      nParam, params[nParam], params_max);
     180            psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
     181                     nParam, params[nParam], params_max);
    182182            return false;
    183183        }
     
    292292    while ((Nstep < 10) && (fabs(z1 - z0) > 0.5)) {
    293293        z = 0.5*(z0 + z1);
    294         f = 1.0 / (1 + z + z*z/2.0 + z*z*z/6.0);
     294        f = 1.0 / (1 + z + z*z/2.0 + z*z*z/6.0);
    295295        if (f > limit) {
    296296            z0 = z;
     
    314314}
    315315
    316 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf)
     316bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, const pmPSF *psf)
    317317{
    318318
     
    339339    // convert to shape terms (SXX,SYY,SXY)
    340340    if (!pmPSF_FitToModel (out, 0.1)) {
    341         psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)",
    342                 in[PM_PAR_YPOS], in[PM_PAR_XPOS]);
    343         return false;
     341        psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)",
     342                in[PM_PAR_YPOS], in[PM_PAR_XPOS]);
     343        return false;
    344344    }
    345345
     
    351351            continue;
    352352
    353         bool status = true;
     353        bool status = true;
    354354        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, out, NULL);
    355355        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, out, NULL);
    356         if (!status) {
    357             psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
    358                      in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
    359             modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
    360         }
     356        if (!status) {
     357            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
     358                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     359            modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
     360        }
    361361    }
    362362    return(true);
     
    365365// construct the PSF model from the FLT model and the psf
    366366// XXX is this sufficiently general do be a global function, not a pmModelClass function?
    367 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io)
     367bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, const pmPSF *psf, float Xo, float Yo, float Io)
    368368{
    369369    psF32 *PAR = model->params->data.F32;
     
    377377    PAR[PM_PAR_XPOS] = Xo;
    378378    PAR[PM_PAR_YPOS] = Yo;
    379    
     379
    380380    // supply the model-fitted parameters, or copy from the input
    381381    for (int i = 0; i < psf->params->n; i++) {
    382         if (i == PM_PAR_SKY) continue;
    383         if (i == PM_PAR_I0) continue;
    384         if (i == PM_PAR_XPOS) continue;
    385         if (i == PM_PAR_YPOS) continue;
    386         pmTrend2D *trend = psf->params->data[i];
    387         PAR[i] = pmTrend2DEval(trend, Xo, Yo);
     382        if (i == PM_PAR_SKY) continue;
     383        if (i == PM_PAR_I0) continue;
     384        if (i == PM_PAR_XPOS) continue;
     385        if (i == PM_PAR_YPOS) continue;
     386        pmTrend2D *trend = psf->params->data[i];
     387        PAR[i] = pmTrend2DEval(trend, Xo, Yo);
    388388    }
    389389
     
    392392    // XXX user-defined value for limit?
    393393    if (!pmPSF_FitToModel (PAR, 0.1)) {
    394         psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
    395         return false;
     394        psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
     395        return false;
    396396    }
    397397
     
    403403            continue;
    404404
    405         bool status = true;
     405        bool status = true;
    406406        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, PAR, NULL);
    407407        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, PAR, NULL);
    408         if (!status) {
    409             psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
    410             model->flags |= PM_MODEL_STATUS_LIMITS;
    411         }
     408        if (!status) {
     409            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
     410            model->flags |= PM_MODEL_STATUS_LIMITS;
     411        }
    412412    }
    413413    return(true);
Note: See TracChangeset for help on using the changeset viewer.