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_QGAUSS.c

    r15056 r15834  
    66 * may thus vary depending on the specifics of the model.  All models which are used a PSF
    77 * representations share a few parameters, for which # define names are listed in pmModel.h:
    8  
     8
    99   power-law with fitted linear term
    1010   1 / (1 + kz + z^2.25)
    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
     
    2020   *****************************************************************************/
    2121
    22 # define PM_MODEL_FUNC            pmModelFunc_QGAUSS
    23 # define PM_MODEL_FLUX            pmModelFlux_QGAUSS
    24 # define PM_MODEL_GUESS           pmModelGuess_QGAUSS
    25 # define PM_MODEL_LIMITS          pmModelLimits_QGAUSS
    26 # define PM_MODEL_RADIUS          pmModelRadius_QGAUSS
    27 # define PM_MODEL_FROM_PSF        pmModelFromPSF_QGAUSS
     22# define PM_MODEL_FUNC            pmModelFunc_QGAUSS
     23# define PM_MODEL_FLUX            pmModelFlux_QGAUSS
     24# define PM_MODEL_GUESS           pmModelGuess_QGAUSS
     25# define PM_MODEL_LIMITS          pmModelLimits_QGAUSS
     26# define PM_MODEL_RADIUS          pmModelRadius_QGAUSS
     27# define PM_MODEL_FROM_PSF        pmModelFromPSF_QGAUSS
    2828# define PM_MODEL_PARAMS_FROM_PSF pmModelParamsFromPSF_QGAUSS
    2929# define PM_MODEL_FIT_STATUS      pmModelFitStatus_QGAUSS
     
    8989        f2 = 1.0 / PS_SQR(params[PM_PAR_SYY]) - 1.0 / PS_SQR(params[PM_PAR_SXX]);
    9090        q1 = PS_SQR(f1)*AR_RATIO - PS_SQR(f2);
    91         q1 = (q1 < 0.0) ? 0.0 : q1;
    92         // if q1 < 0.0, f2 ~ f1, we have a very large axis ratio near 45deg..  Saturate at that
    93         // angle and let f2,f1 fight it out
     91        q1 = (q1 < 0.0) ? 0.0 : q1;
     92        // if q1 < 0.0, f2 ~ f1, we have a very large axis ratio near 45deg..  Saturate at that
     93        // angle and let f2,f1 fight it out
    9494        q2  = 0.5*sqrt (q1);
    9595    }
     
    127127        if (fabs(beta[nParam]) > fabs(beta_lim)) {
    128128            beta[nParam] = (beta[nParam] > 0) ? fabs(beta_lim) : -fabs(beta_lim);
    129             psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
    130                      nParam, beta[nParam], beta_lim);
     129            psTrace ("psModules.objects", 5, "|beta[nParam==%d]| > |beta_lim|; %g v. %g",
     130                     nParam, beta[nParam], beta_lim);
    131131            return false;
    132132        }
     
    163163        if (params[nParam] < params_min) {
    164164            params[nParam] = params_min;
    165             psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
    166                      nParam, params[nParam], params_min);
     165            psTrace ("psModules.objects", 5, "params[nParam==%d] < params_min; %g v. %g",
     166                     nParam, params[nParam], params_min);
    167167            return false;
    168168        }
     
    199199        if (params[nParam] > params_max) {
    200200            params[nParam] = params_max;
    201             psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
    202                      nParam, params[nParam], params_max);
     201            psTrace ("psModules.objects", 5, "params[nParam==%d] > params_max; %g v. %g",
     202                     nParam, params[nParam], params_max);
    203203            return false;
    204204        }
     
    344344}
    345345
    346 bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf)
     346bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, const pmPSF *psf)
    347347{
    348348
     
    366366    // convert to shape terms (SXX,SYY,SXY)
    367367    if (!pmPSF_FitToModel (out, 0.1)) {
    368         psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)",
    369                 in[PM_PAR_YPOS], in[PM_PAR_XPOS]);
    370         return false;
     368        psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)",
     369                in[PM_PAR_YPOS], in[PM_PAR_XPOS]);
     370        return false;
    371371    }
    372372
     
    378378            continue;
    379379
    380         bool status = true;
     380        bool status = true;
    381381        status &= PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MIN, i, out, NULL);
    382         status &= PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MAX, i, out, NULL);
    383         if (!status) {
    384             psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
    385                      in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
    386             modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
    387         }
     382        status &= PM_MODEL_LIMITS(PS_MINIMIZE_PARAM_MAX, i, out, NULL);
     383        if (!status) {
     384            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)",
     385                     in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
     386            modelPSF->flags |= PM_MODEL_STATUS_LIMITS;
     387        }
    388388    }
    389389
     
    393393// construct the PSF model from the FLT model and the psf
    394394// XXX is this sufficiently general do be a global function, not a pmModelClass function?
    395 bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io)
     395bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, const pmPSF *psf, float Xo, float Yo, float Io)
    396396{
    397397    psF32 *PAR = model->params->data.F32;
     
    405405    PAR[PM_PAR_XPOS] = Xo;
    406406    PAR[PM_PAR_YPOS] = Yo;
    407    
     407
    408408    // supply the model-fitted parameters, or copy from the input
    409409    for (int i = 0; i < psf->params->n; i++) {
    410         if (i == PM_PAR_SKY) continue;
    411         if (i == PM_PAR_I0) continue;
    412         if (i == PM_PAR_XPOS) continue;
    413         if (i == PM_PAR_YPOS) continue;
    414         pmTrend2D *trend = psf->params->data[i];
    415         PAR[i] = pmTrend2DEval(trend, Xo, Yo);
     410        if (i == PM_PAR_SKY) continue;
     411        if (i == PM_PAR_I0) continue;
     412        if (i == PM_PAR_XPOS) continue;
     413        if (i == PM_PAR_YPOS) continue;
     414        pmTrend2D *trend = psf->params->data[i];
     415        PAR[i] = pmTrend2DEval(trend, Xo, Yo);
    416416    }
    417417
     
    420420    // XXX user-defined value for limit?
    421421    if (!pmPSF_FitToModel (PAR, 0.1)) {
    422         psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
    423         return false;
     422        psError(PM_ERR_PSF, false, "Failed to fit object at (r,c) = (%.1f,%.1f)", Xo, Yo);
     423        return false;
    424424    }
    425425
     
    431431            continue;
    432432
    433         bool status = true;
     433        bool status = true;
    434434        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MIN, i, PAR, NULL);
    435435        status &= PM_MODEL_LIMITS (PS_MINIMIZE_PARAM_MAX, i, PAR, NULL);
    436         if (!status) {
    437             psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
    438             model->flags |= PM_MODEL_STATUS_LIMITS;
    439         }
     436        if (!status) {
     437            psTrace ("psModules.objects", 5, "Hitting parameter limits at (r,c) = (%.1f, %.1f)", Xo, Yo);
     438            model->flags |= PM_MODEL_STATUS_LIMITS;
     439        }
    440440    }
    441441    return(true);
Note: See TracChangeset for help on using the changeset viewer.