IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 22, 2006, 2:29:31 AM (20 years ago)
Author:
rhl
Message:

[Start to] provide symbolic names for parameters

File:
1 edited

Legend:

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

    r5593 r8882  
    2727    psF32 *PAR = params->data.F32;
    2828
    29     psF32 X  = x->data.F32[0] - PAR[2];
    30     psF32 Y  = x->data.F32[1] - PAR[3];
    31     psF32 px = PAR[4]*X;
    32     psF32 py = PAR[5]*Y;
    33     psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[6]*X*Y;
     29    psF32 X  = x->data.F32[0] - PAR[PM_PAR_XPOS];
     30    psF32 Y  = x->data.F32[1] - PAR[PM_PAR_YPOS];
     31    psF32 px = PAR[PM_PAR_SXX]*X;
     32    psF32 py = PAR[PM_PAR_SYY]*Y;
     33    psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[PM_PAR_SXY]*X*Y;
    3434    psF32 er = exp(TRF*z);
    3535
    36     psF32 r  = 1.0 / (er + PAR[7]*z + pow(z, TG_S));    // (1/R)
    37     psF32 f  = PAR[1]*r + PAR[0];
     36    psF32 r  = 1.0 / (er + PAR[PM_PAR_7]*z + pow(z, TG_S));    // (1/R)
     37    psF32 f  = PAR[PM_PAR_FLUX]*r + PAR[PM_PAR_SKY];
    3838
    3939    if (deriv != NULL) {
    40         psF32 t = PAR[1]*r*r;                            // df/dR
    41         psF32 q = t*(TRF*er + PAR[7] + TG_S*pow(z, dTG_S));  // (df/dR)(dR/dz)
     40        psF32 t = PAR[PM_PAR_FLUX]*r*r; // df/dR
     41        psF32 q = t*(TRF*er + PAR[PM_PAR_7] + TG_S*pow(z, dTG_S));  // (df/dR)(dR/dz)
    4242
    4343        deriv->data.F32[0] = +1.0;
    4444        deriv->data.F32[1] = +r;
    45         deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
    46         deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
     45        deriv->data.F32[2] = q*(2.0*px*PAR[PM_PAR_SXX] + PAR[PM_PAR_SXY]*Y);
     46        deriv->data.F32[3] = q*(2.0*py*PAR[PM_PAR_SYY] + PAR[PM_PAR_SXY]*X);
    4747        deriv->data.F32[4] = -2.0*q*px*X;
    4848        deriv->data.F32[5] = -2.0*q*py*Y;
     
    112112    psF32 *PAR = params->data.F32;
    113113
    114     psF64 A1   = PS_SQR(PAR[4]);
    115     psF64 A2   = PS_SQR(PAR[5]);
    116     psF64 A3   = PS_SQR(PAR[6]);
     114    psF64 A1   = PS_SQR(PAR[PM_PAR_SXX]);
     115    psF64 A2   = PS_SQR(PAR[PM_PAR_SYY]);
     116    psF64 A3   = PS_SQR(PAR[PM_PAR_SXY]);
    117117    psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3);
    118118    // Area is equivalent to 2 pi sigma^2
     
    122122    for (z = 0.005; z < 50; z += 0.01) {
    123123        psF32 er = exp(TRF*z);
    124         f = 1.0 / (er + PAR[7]*z + pow(z, TG_S));
     124        f = 1.0 / (er + PAR[PM_PAR_7]*z + pow(z, TG_S));
    125125        norm += f;
    126126    }
    127127    norm *= 0.01;
    128128   
    129     psF64 Flux = PAR[1] * Area * norm;
     129    psF64 Flux = PAR[PM_PAR_FLUX] * Area * norm;
    130130
    131131    return(Flux);
     
    140140
    141141    if (flux <= 0) return (1.0);
    142     if (PAR[1] <= 0) return (1.0);
    143     if (flux >= PAR[1]) return (1.0);
     142    if (PAR[PM_PAR_FLUX] <= 0) return (1.0);
     143    if (flux >= PAR[PM_PAR_FLUX]) return (1.0);
    144144
    145145    // if Sx == Sy, sigma = Sx == Sy
    146     psF64 sigma = hypot (1.0 / PAR[4], 1.0 / PAR[5]) / sqrt(2.0);
     146    psF64 sigma = hypot (1.0 / PAR[PM_PAR_SXX], 1.0 / PAR[PM_PAR_SYY]) / sqrt(2.0);
    147147    psF64 dz = 1.0 / (2.0 * sigma*sigma);
    148     psF64 limit = flux / PAR[1];
     148    psF64 limit = flux / PAR[PM_PAR_FLUX];
    149149
    150150    // we can do this much better with intelligent choices here
    151151    for (z = 0.0; z < 20.0; z += dz) {
    152152        psF32 er = exp(TRF*z);
    153         f = 1.0 / (er + PAR[7]*z + pow(z, TG_S));
     153        f = 1.0 / (er + PAR[PM_PAR_7]*z + pow(z, TG_S));
    154154        if (f < limit) break;
    155155    }
     
    187187
    188188    dP = 0;
    189     dP += PS_SQR(dPAR[4] / PAR[4]);
    190     dP += PS_SQR(dPAR[5] / PAR[5]);
     189    dP += PS_SQR(dPAR[PM_PAR_SXX] / PAR[PM_PAR_SXX]);
     190    dP += PS_SQR(dPAR[PM_PAR_SYY] / PAR[PM_PAR_SYY]);
    191191    dP = sqrt (dP);
    192192
    193193    status = true;
    194194    status &= (dP < 0.5);
    195     status &= (PAR[1] > 0);
    196     status &= ((dPAR[1]/PAR[1]) < 0.5);
     195    status &= (PAR[PM_PAR_FLUX] > 0);
     196    status &= ((dPAR[PM_PAR_FLUX]/PAR[PM_PAR_FLUX]) < 0.5);
    197197
    198198    if (status) return true;
Note: See TracChangeset for help on using the changeset viewer.