IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6907


Ignore:
Timestamp:
Apr 19, 2006, 10:32:22 AM (20 years ago)
Author:
magnier
Message:

cleaned up model functions, adjusted limits

File:
1 edited

Legend:

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

    r6511 r6907  
    3535}
    3636
    37 psF64 pmModelFlux_GAUSS(const psVector *params)
    38 {
    39     psF64 A1   = PS_SQR(params->data.F32[4]);
    40     psF64 A2   = PS_SQR(params->data.F32[5]);
    41     psF64 A3   = PS_SQR(params->data.F32[6]);
    42     psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3);
    43     // Area is equivalent to 2 pi sigma^2
    44 
    45     psF64 Flux = params->data.F32[1] * Area;
    46 
    47     return(Flux);
    48 }
    49 
    50 // return the radius which yields the requested flux
    51 psF64 pmModelRadius_GAUSS  (const psVector *params, psF64 flux)
    52 {
    53 
    54     if (flux <= 0)
    55         return (1.0);
    56     if (params->data.F32[1] <= 0)
    57         return (1.0);
    58     if (flux >= params->data.F32[1])
    59         return (1.0);
    60 
    61     psF64 sigma  = sqrt(2.0) * hypot (1.0 / params->data.F32[4], 1.0 / params->data.F32[5]);
    62     psF64 radius = sigma * sqrt (2.0 * log(params->data.F32[1] / flux));
    63     return (radius);
    64 }
    65 
    6637// define the parameter limits
    6738bool pmModelLimits_GAUSS (psVector **beta_lim, psVector **params_min, psVector **params_max)
     
    7647
    7748    beta_lim[0][0].data.F32[0] = 1000;
    78     beta_lim[0][0].data.F32[1] = 10000;
     49    beta_lim[0][0].data.F32[1] = 3e6;
    7950    beta_lim[0][0].data.F32[2] = 5;
    8051    beta_lim[0][0].data.F32[3] = 5;
     
    9263
    9364    params_max[0][0].data.F32[0] = 1e5;
    94     params_max[0][0].data.F32[1] = 1e6;
     65    params_max[0][0].data.F32[1] = 1e8;
    9566    params_max[0][0].data.F32[2] = 1e4;  // this should be set by image dimensions!
    9667    params_max[0][0].data.F32[3] = 1e4;  // this should be set by image dimensions!
     
    11788    params[6] = 0.0;
    11889    return(true);
     90}
     91
     92psF64 pmModelFlux_GAUSS(const psVector *params)
     93{
     94    psF64 A1   = PS_SQR(params->data.F32[4]);
     95    psF64 A2   = PS_SQR(params->data.F32[5]);
     96    psF64 A3   = PS_SQR(params->data.F32[6]);
     97    psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3);
     98    // Area is equivalent to 2 pi sigma^2
     99
     100    psF64 Flux = params->data.F32[1] * Area;
     101
     102    return(Flux);
     103}
     104
     105// return the radius which yields the requested flux
     106// this function is never allowed to return <= 0
     107psF64 pmModelRadius_GAUSS  (const psVector *params, psF64 flux)
     108{
     109
     110    if (flux <= 0)
     111        return (1.0);
     112    if (params->data.F32[1] <= 0)
     113        return (1.0);
     114    if (flux >= params->data.F32[1])
     115        return (1.0);
     116
     117    psF64 sigma  = sqrt(2.0) * hypot (1.0 / params->data.F32[4], 1.0 / params->data.F32[5]);
     118    psF64 radius = sigma * sqrt (2.0 * log(params->data.F32[1] / flux));
     119    return (radius);
    119120}
    120121
Note: See TracChangeset for help on using the changeset viewer.