IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25204


Ignore:
Timestamp:
Aug 26, 2009, 7:49:18 AM (17 years ago)
Author:
eugene
Message:

adding errors to the stats

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20090715/psphot/src/psphotPetrosianStats.c

    r25178 r25204  
    1818
    1919    psVector *fluxSum     = psVectorAllocEmpty(binSB->n, PS_TYPE_F32);
     20    psVector *fluxSumErr2 = psVectorAllocEmpty(binSB->n, PS_TYPE_F32);
    2021    psVector *refRadius   = psVectorAllocEmpty(binSB->n, PS_TYPE_F32);
    2122    psVector *petRatio    = psVectorAllocEmpty(binSB->n, PS_TYPE_F32);
     
    2728    bool manyPetro = false;
    2829    bool above = true;
     30    float Asum = 0.0;
    2931    float Fsum = 0.0;
    30     float Asum = 0.0;
     32    float dFsum2 = 0.0;
    3133
    3234    int nOut = 0;
     
    3638
    3739        float Area = area->data.F32[i];
     40        Asum += Area;
    3841        Fsum += binSB->data.F32[i] * Area;
    39         Asum += Area;
     42        dFsum2 += PS_SQR(binSBstdev->data.F32[i] * Area);
    4043
     44        float areaInner = 0.5 * Area;
    4145        float fluxInner = 0.5 * Area * binSB->data.F32[i];
    42         float areaInner = 0.5 * Area;
     46        float fluxInnerErr2 = PS_SQR(binSBstdev->data.F32[i] * 0.5 * Area);
    4347        if (nOut > 0) {
     48            areaInner += areaSum->data.F32[nOut-1];
    4449            fluxInner += fluxSum->data.F32[nOut-1];
    45             areaInner += areaSum->data.F32[nOut-1];
     50            fluxInnerErr2 = PS_SQR(fluxSumErr2->data.F32[nOut-1] * areaSum->data.F32[nOut-1]);
    4651        }
    4752
     53        // ratio = binSB / meanSB
     54        // meanSB = flux / area
     55        // flux = sum(binSB(i) * area(i)
     56        // fluxErr^2 = sum(binSBerr(i)^2 area(i)^2)
     57        // meanSBerr^2 = fluxErr^2 / area^2
     58        // (ratioErr/ratio)^2 = (binSBerr/binSB)^2 + (meanSBerr/meanSB)^2
     59
    4860        psVectorAppend(meanSB, (fluxInner / areaInner));
    49         psVectorAppend(petRatio, binSB->data.F32[i] / meanSB->data.F32[nOut]);
    50         psVectorAppend(petRatioErr, binSBstdev->data.F32[i] / meanSB->data.F32[nOut]);
     61
     62        float ratio = binSB->data.F32[i] / meanSB->data.F32[nOut];
     63        psVectorAppend(petRatio, ratio);
     64
     65        float meanSBerr = sqrt(fluxInnerErr2) / areaInner;
     66        float ratioErr = ratio * sqrt(PS_SQR(binSBstdev->data.F32[i]/binSB->data.F32[i]) + PS_SQR(meanSBerr/meanSB->data.F32[nOut]));
     67
     68        psVectorAppend(petRatioErr, ratioErr);
     69
     70        psVectorAppend(areaSum, Asum);
    5171        psVectorAppend(fluxSum, Fsum);
    52         psVectorAppend(areaSum, Asum);
     72        psVectorAppend(fluxSumErr2, dFsum2);
    5373        psVectorAppend(refRadius, binRad->data.F32[i]);
    5474
Note: See TracChangeset for help on using the changeset viewer.