IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 15, 2015, 1:56:42 PM (11 years ago)
Author:
eugene
Message:

fix interpolation of Sigma,Core -> FWHM in PS1_V1 and QGAUSS; test code to prove fix

File:
1 edited

Legend:

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

    r36857 r38280  
    337337}
    338338
    339 // I used the script in models/fwhm.sh to generate the trend of FWHM scaling vs the K value
    340 // FWHM = Scale * Sigma (not that PAR[PM_PAR_SXX] = sigma * sqrt(2)
    341 //  K : z_hm  : FWHM
    342 //  0 : 1.000 : 2.83
    343 //  1 : 0.597 : 2.19
    344 //  2 : 0.396 : 1.78
    345 //  3 : 0.291 : 1.53
    346 //  4 : 0.232 : 1.36
    347 //  5 : 0.198 : 1.26
    348 //  6 : 0.169 : 1.16
    349 //  7 : 0.142 : 1.07
    350 //  8 : 0.124 : 0.99
    351 //  9 : 0.118 : 0.97
    352 // 10 : 0.106 : 0.92
    353 // 11 : 0.092 : 0.86
    354 // 12 : 0.091 : 0.85
    355 // 13 : 0.080 : 0.80
    356 // 14 : 0.078 : 0.79
    357 // 15 : 0.073 : 0.76
    358 // 16 : 0.063 : 0.71
    359 // 17 : 0.068 : 0.74
    360 // 18 : 0.056 : 0.67
    361 // 19 : 0.058 : 0.68
    362 
    363 // static float PS1_V1_Core[] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
    364 static float PS1_V1_Scale[] = {2.83, 2.19, 1.78, 1.53, 1.36, 1.26, 1.16, 1.07, 0.99, 0.97, 0.92, 0.86, 0.85, 0.80, 0.79, 0.76, 0.71, 0.74, 0.67, 0.68};
     339// I used the script in models/fwhm.sh to generate the trend of FWHM scaling vs the K value:
     340# include "ps1v1.fwhm.h"
    365341
    366342psF64 PM_MODEL_SET_FWHM (const psVector *params, psF64 sigma) {
     
    372348    if (!isfinite(core)) return (2.0*M_SQRT2*sigma);
    373349
    374     // if PS1_V1_Core is defined as a set of integer steps, so we can simplify:
    375     int binCore = MAX(0, MIN (19, (int)core));
    376 
    377     float scale = NAN;
    378     if (binCore == 0) {
    379         scale = (core - binCore + 0) * (PS1_V1_Scale[binCore + 1] - PS1_V1_Scale[binCore + 0]) + PS1_V1_Scale[binCore + 0];
    380     } else {
    381         scale = (core - binCore - 1) * (PS1_V1_Scale[binCore + 0] - PS1_V1_Scale[binCore - 1]) + PS1_V1_Scale[binCore - 1];
    382     }
     350    int binCore = MAX(0, MIN (N_FWHM_BIN - 2, (int)((core - MIN_FWHM_BIN)/FWHM_BIN)));
     351    float coreBin = binCore * FWHM_BIN + MIN_FWHM_BIN;
     352
     353    float scale = (core - coreBin) * (PS1_V1_Scale[binCore + 1] - PS1_V1_Scale[binCore]) / FWHM_BIN + PS1_V1_Scale[binCore];
     354
     355    // fprintf (stderr, "core: %f, binCore: %d, scale: %f\n", core, binCore, scale);
    383356
    384357    return (scale * sigma);
Note: See TracChangeset for help on using the changeset viewer.