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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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}
Note: See TracChangeset for help on using the changeset viewer.