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

    r4954 r8882  
    2323    psF32 *PAR = params->data.F32;
    2424
    25     psF32 X  = x->data.F32[0] - PAR[2];
    26     psF32 Y  = x->data.F32[1] - PAR[3];
    27     psF32 px = PAR[4]*X;
    28     psF32 py = PAR[5]*Y;
    29     psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[6]*X*Y;
     25    psF32 X  = x->data.F32[0] - PAR[PM_PAR_XPOS];
     26    psF32 Y  = x->data.F32[1] - PAR[PM_PAR_YPOS];
     27    psF32 px = PAR[PM_PAR_SXX]*X;
     28    psF32 py = PAR[PM_PAR_SYY]*Y;
     29    psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[PM_PAR_SXY]*X*Y;
    3030
    3131    psF32 pr = PAR8*z;
    32     psF32 p  = pow(z, PAR[7] - 1.0);
     32    psF32 p  = pow(z, PAR[PM_PAR_7] - 1.0);
    3333    psF32 r  = 1.0 / (1 + z*p + SQ(SQ(pr)));
    34     psF32 f  = PAR[1]*r + PAR[0];
     34    psF32 f  = PAR[PM_PAR_FLUX]*r + PAR[PM_PAR_SKY];
    3535
    3636    if (deriv != NULL) {
    3737        // note difference from a pure gaussian: q = params->data.F32[1]*r
    38         psF32 t = PAR[1]*r*r;
    39         psF32 q = t*(PAR[7]*p + 4*PAR8*pr*pr*pr);
     38        psF32 t = PAR[PM_PAR_FLUX]*r*r;
     39        psF32 q = t*(PAR[PM_PAR_7]*p + 4*PAR8*pr*pr*pr);
    4040
    4141        deriv->data.F32[0] = +1.0;
    4242        deriv->data.F32[1] = +r;
    43         deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
    44         deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
     43        deriv->data.F32[2] = q*(2.0*px*PAR[PM_PAR_SXX] + PAR[PM_PAR_SXY]*Y);
     44        deriv->data.F32[3] = q*(2.0*py*PAR[PM_PAR_SYY] + PAR[PM_PAR_SXY]*X);
    4545        deriv->data.F32[4] = -q*px*X;
    4646        deriv->data.F32[5] = -q*py*Y;
     
    5757    psF32 *PAR = params->data.F32;
    5858
    59     psF64 A1   = PS_SQR(PAR[4]);
    60     psF64 A2   = PS_SQR(PAR[5]);
    61     psF64 A3   = PS_SQR(PAR[6]);
     59    psF64 A1   = PS_SQR(PAR[PM_PAR_SXX]);
     60    psF64 A2   = PS_SQR(PAR[PM_PAR_SYY]);
     61    psF64 A3   = PS_SQR(PAR[PM_PAR_SXY]);
    6262    psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3);
    6363    // Area is equivalent to 2 pi sigma^2
     
    6767    psF32 pr = PAR8*z;
    6868    for (z = 0.005; z < 50; z += 0.01) {
    69         f = 1.0 / (1 + pow(z, PAR[7]) + SQ(SQ(pr)));
     69        f = 1.0 / (1 + pow(z, PAR[PM_PAR_7]) + SQ(SQ(pr)));
    7070        norm += f;
    7171    }
    7272    norm *= 0.01;
    7373   
    74     psF64 Flux = PAR[1] * Area * norm;
     74    psF64 Flux = PAR[PM_PAR_FLUX] * Area * norm;
    7575
    7676    return(Flux);
     
    8989
    9090    if (flux <= 0) return (1.0);
    91     if (PAR[1] <= 0) return (1.0);
    92     if (flux >= PAR[1]) return (1.0);
     91    if (PAR[PM_PAR_FLUX] <= 0) return (1.0);
     92    if (flux >= PAR[PM_PAR_FLUX]) return (1.0);
    9393
    9494    // convert Sx,Sy,Sxy to major/minor axes
    95     shape.sx = 1.0 / PAR[4];
    96     shape.sy = 1.0 / PAR[5];
    97     shape.sxy = PAR[6];
     95    shape.sx = 1.0 / PAR[PM_PAR_SXX];
     96    shape.sy = 1.0 / PAR[PM_PAR_SYY];
     97    shape.sxy = PAR[PM_PAR_SXY];
    9898
    9999    axes = EllipseShapeToAxes (shape);
    100100    psF64 dr = 1.0 / axes.major;
    101     psF64 limit = flux / PAR[1];
     101    psF64 limit = flux / PAR[PM_PAR_FLUX];
    102102
    103103    // XXX : we can do this faster with an intelligent starting choice
     
    105105        z = SQ(r);
    106106        pr = PAR8*z;
    107         f = 1.0 / (1 + pow(z, PAR[7]) + SQ(SQ(pr)));
     107        f = 1.0 / (1 + pow(z, PAR[PM_PAR_7]) + SQ(SQ(pr)));
    108108        if (f < limit) break;
    109109    }
Note: See TracChangeset for help on using the changeset viewer.