IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 17, 2006, 8:01:05 AM (20 years ago)
Author:
magnier
Message:

updates relative to rel10_ifa_1

Location:
trunk/psModules/src/objects/models
Files:
5 edited

Legend:

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

    r6511 r6872  
    2626
    2727    if (deriv != NULL) {
    28         // note difference from a pure gaussian: q = PAR[1]*r
     28        psF32 *dPAR = deriv->data.F32;
    2929        psF32 q = PAR[1]*r*r*t;
    30         deriv->data.F32[0] = +1.0;
    31         deriv->data.F32[1] = +r;
    32         deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
    33         deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
    34         deriv->data.F32[4] = -2.0*q*px*X;
    35         deriv->data.F32[5] = -2.0*q*py*Y;
    36         deriv->data.F32[6] = -q*X*Y;
     30        dPAR[0] = +1.0;
     31        dPAR[1] = +r;
     32        dPAR[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
     33        dPAR[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
     34        dPAR[4] = -2.0*q*px*X;
     35        dPAR[5] = -2.0*q*py*Y;
     36        dPAR[6] = -q*X*Y;
    3737    }
    3838    return(f);
     
    5050
    5151    beta_lim[0][0].data.F32[0] = 1000;
    52     beta_lim[0][0].data.F32[1] = 10000;
     52    beta_lim[0][0].data.F32[1] = 3e6;
    5353    beta_lim[0][0].data.F32[2] = 5;
    5454    beta_lim[0][0].data.F32[3] = 5;
     
    6666
    6767    params_max[0][0].data.F32[0] = 1e5;
    68     params_max[0][0].data.F32[1] = 1e6;
     68    params_max[0][0].data.F32[1] = 1e8;
    6969    params_max[0][0].data.F32[2] = 1e4;  // this should be set by image dimensions!
    7070    params_max[0][0].data.F32[3] = 1e4;  // this should be set by image dimensions!
     
    133133    params[5] = 1.2 / moments->Sy;
    134134    params[6] = 0.0;
     135
    135136    return(true);
    136137}
  • trunk/psModules/src/objects/models/pmModel_QGAUSS.c

    r6511 r6872  
    2626    psF32 py = PAR[5]*Y;
    2727    psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[6]*X*Y;
    28 
    29     psF32 r  = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
    30     psF32 f  = PAR[1]*r + PAR[0];
     28    psF32 zp = pow(z,1.25);
     29
     30    psF32 r  = 1.0 / (1 + PAR[7]*z + z*zp);
     31    // test: psF32 r  = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
     32    psF32 r1 = PAR[1]*r;
     33    psF32 f  = r1 + PAR[0];
    3134
    3235    if (deriv != NULL) {
     36        psF32 *dPAR = deriv->data.F32;
     37
    3338        // note difference from a pure gaussian: q = params->data.F32[1]*r
    34         psF32 t = PAR[1]*r*r;
    35         psF32 q = t*(PAR[7] + 2.25*pow(z, 1.25));
    36 
    37         deriv->data.F32[0] = +1.0;
    38         deriv->data.F32[1] = +r;
    39         deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
    40         deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
    41         deriv->data.F32[4] = -2.0*q*px*X;
    42         deriv->data.F32[5] = -2.0*q*py*Y;
    43         deriv->data.F32[6] = -q*X*Y;
    44         deriv->data.F32[7] = -t*z;
     39        psF32 t = r1*r;
     40        psF32 q = t*(PAR[7] + 2.25*zp);
     41        // test: psF32 q = t*(PAR[7] + 2*z);
     42
     43        dPAR[0] = +1.0;
     44        dPAR[1] = +r;
     45        dPAR[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
     46        dPAR[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
     47        dPAR[4] = -2.0*q*px*X;
     48        dPAR[5] = -2.0*q*py*Y;
     49        dPAR[6] = -q*X*Y;
     50        dPAR[7] = -t*z;
    4551    }
    4652    return(f);
     
    5864
    5965    beta_lim[0][0].data.F32[0] = 1000;
    60     beta_lim[0][0].data.F32[1] = 10000;
     66    beta_lim[0][0].data.F32[1] = 3e6;
    6167    beta_lim[0][0].data.F32[2] = 5;
    6268    beta_lim[0][0].data.F32[3] = 5;
     
    7682
    7783    params_max[0][0].data.F32[0] = 1e5;
    78     params_max[0][0].data.F32[1] = 1e6;
     84    params_max[0][0].data.F32[1] = 1e8;
    7985    params_max[0][0].data.F32[2] = 1e4;  // this should be set by image dimensions!
    8086    params_max[0][0].data.F32[3] = 1e4;  // this should be set by image dimensions!
     
    102108    params[6] = 0.0;
    103109    params[7] = 1.0;
     110
    104111    return(true);
    105112}
     
    119126    // the area needs to be multiplied by the integral of f(z)
    120127    norm = 0.0;
    121     for (z = 0.005; z < 50; z += 0.01) {
     128    for (z = 0.05; z < 50; z += 0.1) {
    122129        f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
     130        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
    123131        norm += f;
    124132    }
    125     norm *= 0.01;
     133    norm *= 0.1;
    126134
    127135    psF64 Flux = PAR[1] * Area * norm;
     
    150158
    151159    // we can do this much better with intelligent choices here
    152     for (z = 0.0; z < 20.0; z += dz) {
     160    for (z = 0.0; z < 30.0; z += dz) {
    153161        f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
     162        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
    154163        if (f < limit)
    155164            break;
     
    201210    status &= ((dPAR[1]/PAR[1]) < 0.5);
    202211
    203     if (status)
    204         return true;
    205     return false;
    206 }
     212    if (!status)
     213        return false;
     214    return true;
     215}
  • trunk/psModules/src/objects/models/pmModel_RGAUSS.c

    r5257 r6872  
    117117    psVector *params = model->params;
    118118
    119     EllipseAxes axes;
    120     EllipseShape shape;
    121     EllipseMoments moments;
     119    psEllipseAxes axes;
     120    psEllipseShape shape;
     121    psEllipseMoments moments;
    122122
    123123    moments.x2 = PS_SQR(source->moments->Sx);
     
    125125    moments.xy = source->moments->Sxy;
    126126
    127     axes = EllipseMomentsToAxes(moments);
    128     shape = EllipseAxesToShape(axes);
     127    axes = psEllipseMomentsToAxes(moments);
     128    shape = psEllipseAxesToShape(axes);
    129129
    130130    params->data.F32[0] = source->moments->Sky;
  • trunk/psModules/src/objects/models/pmModel_SGAUSS.c

    r6511 r6872  
    1717
    1818# define SQ(A)((A)*(A))
    19 psF64 psImageEllipseContour (EllipseAxes axes, double xc, double yc, psImage *image);
     19psF64 psImageEllipseContour (psEllipseAxes axes, double xc, double yc, psImage *image);
    2020psF64 p_psImageGetElementF64(psImage *a, int i, int j);
    2121
     
    102102
    103103// measure the flux for the elliptical contour
    104 psF64 psImageEllipseContour (EllipseAxes axes, double xc, double yc, psImage *image)
     104psF64 psImageEllipseContour (psEllipseAxes axes, double xc, double yc, psImage *image)
    105105{
    106106
     
    149149    psF32     *params   = model->params->data.F32;
    150150
    151     EllipseAxes axes;
    152     EllipseShape shape;
    153     EllipseMoments moments;
     151    psEllipseAxes axes;
     152    psEllipseShape shape;
     153    psEllipseMoments moments;
    154154
    155155    moments.x2 = PS_SQR(sMoments->Sx);
     
    158158
    159159    // solve the math to go from Moments To Shape
    160     axes = EllipseMomentsToAxes(moments);
    161     shape = EllipseAxesToShape(axes);
     160    axes = psEllipseMomentsToAxes(moments);
     161    shape = psEllipseAxesToShape(axes);
    162162
    163163    params[0] = sMoments->Sky;
     
    199199    float f1, f2;
    200200
    201     EllipseAxes axes;
    202     EllipseShape shape;
    203     EllipseMoments moments;
     201    psEllipseAxes axes;
     202    psEllipseShape shape;
     203    psEllipseMoments moments;
    204204
    205205    moments.x2 = PS_SQR(sMoments->Sx);
     
    208208
    209209    // solve the math to go from Moments To Shape
    210     axes = EllipseMomentsToAxes(moments);
    211     shape = EllipseAxesToShape(axes);
     210    axes = psEllipseMomentsToAxes(moments);
     211    shape = psEllipseAxesToShape(axes);
    212212
    213213    params[0] = sMoments->Sky;
     
    265265psF64 pmModelRadius_SGAUSS  (const psVector *params, psF64 flux)
    266266{
    267     psF64 r, z, pr, f;
     267    psF64 r, z = 0.0, pr, f;
    268268    psF32 *PAR = params->data.F32;
    269269
    270     EllipseAxes axes;
    271     EllipseShape shape;
     270    psEllipseAxes axes;
     271    psEllipseShape shape;
    272272
    273273    if (flux <= 0)
     
    283283    shape.sxy = PAR[6];
    284284
    285     axes = EllipseShapeToAxes (shape);
     285    axes = psEllipseShapeToAxes (shape);
    286286    psF64 dr = 1.0 / axes.major;
    287287    psF64 limit = flux / PAR[1];
     
    327327    psF32 dP;
    328328    bool  status;
    329     EllipseAxes axes;
    330     EllipseShape shape;
     329    psEllipseAxes axes;
     330    psEllipseShape shape;
    331331
    332332    psF32 *PAR  = model->params->data.F32;
     
    337337    shape.sxy = PAR[6];
    338338
    339     axes = EllipseShapeToAxes (shape);
     339    axes = psEllipseShapeToAxes (shape);
    340340
    341341    dP = 0;
  • trunk/psModules/src/objects/models/pmModel_ZGAUSS.c

    r5257 r6872  
    8585    psF32 *PAR = params->data.F32;
    8686
    87     EllipseAxes axes;
    88     EllipseShape shape;
     87    psEllipseAxes axes;
     88    psEllipseShape shape;
    8989
    9090    if (flux <= 0)
     
    100100    shape.sxy = PAR[6];
    101101
    102     axes = EllipseShapeToAxes (shape);
     102    axes = psEllipseShapeToAxes (shape);
    103103    psF64 dr = 1.0 / axes.major;
    104104    psF64 limit = flux / PAR[1];
     
    124124    psVector *params = model->params;
    125125
    126     EllipseAxes axes;
    127     EllipseShape shape;
    128     EllipseMoments moments;
     126    psEllipseAxes axes;
     127    psEllipseShape shape;
     128    psEllipseMoments moments;
    129129
    130130    moments.x2 = PS_SQR(source->moments->Sx);
     
    132132    moments.xy = source->moments->Sxy;
    133133
    134     axes = EllipseMomentsToAxes(moments);
    135     shape = EllipseAxesToShape(axes);
     134    axes = psEllipseMomentsToAxes(moments);
     135    shape = psEllipseAxesToShape(axes);
    136136
    137137    params->data.F32[0] = source->moments->Sky;
Note: See TracChangeset for help on using the changeset viewer.