IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 32316


Ignore:
Timestamp:
Sep 5, 2011, 8:49:42 AM (15 years ago)
Author:
eugene
Message:

deal with the cases of small radii (may be an error in the PetRadiusErr)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20110710/psphot/src/psphotPetrosianStats.c

    r31452 r32316  
    143143    // if we failed to reach the PETROSIAN_RATIO, use the lowest significant ratio instead (flag this!)
    144144    if (!anyPetro) {
    145         // interpolate Rvec between i-1 and i to PETROSIAN_RATIO to get flux (Fvec) and radius (rvec)
    146         if (lowestSignificantRadius == 0) {
    147             // assume Fmax @ R = 0.0
    148             petRadius    = InterpolateValues     (1.0, 0.0, petRatio->data.F32[lowestSignificantRadius], refRadius->data.F32[lowestSignificantRadius], PETROSIAN_RATIO);
    149             petRadiusErr = InterpolateValuesErrX (1.0, 0.0, petRatio->data.F32[lowestSignificantRadius], refRadius->data.F32[lowestSignificantRadius], PETROSIAN_RATIO, 0.0, petRatioErr->data.F32[lowestSignificantRadius]);
    150 
    151         } else {
    152             int n0 = lowestSignificantRadius-1;
    153             int n1 = lowestSignificantRadius;
    154             petRadius    = InterpolateValues     (petRatio->data.F32[n0], refRadius->data.F32[n0], petRatio->data.F32[n1], refRadius->data.F32[n1], PETROSIAN_RATIO);
    155             petRadiusErr = InterpolateValuesErrX (petRatio->data.F32[n0], refRadius->data.F32[n0], petRatio->data.F32[n1], refRadius->data.F32[n1], PETROSIAN_RATIO, petRatioErr->data.F32[n0], petRatioErr->data.F32[n1]);
     145        petRadius = refRadius->data.F32[lowestSignificantRadius];
     146        petRadiusErr = NAN;
     147        if (!isfinite(petRadius)) {
     148            fprintf (stderr, "nan pet radius\n");
    156149        }
    157150    }
     
    170163                petArea    = InterpolateValues     (refRadius->data.F32[i-1], areaSum->data.F32[i-1], refRadius->data.F32[i], areaSum->data.F32[i], apRadius);
    171164                petApix    = InterpolateValues     (refRadius->data.F32[i-1], apixSum->data.F32[i-1], refRadius->data.F32[i], apixSum->data.F32[i], apRadius);
     165                if (!isfinite(petFlux)) {
     166                    fprintf (stderr, "nan pet flux\n");
     167                }
    172168                break;
    173169            }
     
    188184        if (!found50 && (fluxSum->data.F32[i] > flux50)) {
    189185            if (i == 0) {
    190                 psWarning ("does this case make any sense? (fluxSum[0] %f > flux50 %f)", fluxSum->data.F32[i], flux50);
    191                 continue;
     186                R50    = InterpolateValues     (fluxSum->data.F32[i], refRadius->data.F32[i], fluxSum->data.F32[i+1], refRadius->data.F32[i+1], flux50);
     187                R50err = InterpolateValuesErrX (fluxSum->data.F32[i], refRadius->data.F32[i], fluxSum->data.F32[i+1], refRadius->data.F32[i+1], flux50, sqrt(fluxSumErr2->data.F32[i]), sqrt(fluxSumErr2->data.F32[i+1]));
     188                found50 = true;
    192189            } else {
    193190                R50    = InterpolateValues     (fluxSum->data.F32[i-1], refRadius->data.F32[i-1], fluxSum->data.F32[i], refRadius->data.F32[i], flux50);
     
    198195        if (!found90 && (fluxSum->data.F32[i] > flux90)) {
    199196            if (i == 0) {
    200                 psWarning ("does this case make any sense? (fluxSum[0] %f > flux90 %f)", fluxSum->data.F32[i], flux90);
    201                 continue;
     197                R90    = InterpolateValues     (fluxSum->data.F32[i], refRadius->data.F32[i], fluxSum->data.F32[i+1], refRadius->data.F32[i+1], flux90);
     198                R90err = InterpolateValuesErrX (fluxSum->data.F32[i], refRadius->data.F32[i], fluxSum->data.F32[i+1], refRadius->data.F32[i+1], flux90, sqrt(fluxSumErr2->data.F32[i]), sqrt(fluxSumErr2->data.F32[i+1]));
     199                found90 = true;
    202200            } else {
    203201                R90    = InterpolateValues     (fluxSum->data.F32[i-1], refRadius->data.F32[i-1], fluxSum->data.F32[i], refRadius->data.F32[i], flux90);
Note: See TracChangeset for help on using the changeset viewer.