IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 17, 2006, 12:03:32 PM (20 years ago)
Author:
Paul Price
Message:

Documenting pmFringeStats. Adding mask to pmFringeRegions{Read,Write}Fits.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmFringeStats.c

    r9541 r9615  
    1 /** @file  pmFringeStats.c
    2  *
    3  *  @author Eugene Magnier, IfA
    4  *
    5  *  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-10-13 22:11:02 $
    7  *
    8  *  Copyright 2004 IfA
    9  */
    10 
    111#ifdef HAVE_CONFIG_H
    122#include <config.h>
     
    130120    // We need to write:
    131121    // Scalars: dX, dY, nX, nY
    132     // Vectors: x, y
     122    // Vectors: x, y, mask
    133123
    134124    psMetadata *scalars = psMetadataAlloc(); // Metadata to hold the scalars; will be the header
     
    149139        psMetadataAddF32(row, PS_LIST_TAIL, "x", PS_META_REPLACE, "Fringe position in x", x->data.F32[i]);
    150140        psMetadataAddF32(row, PS_LIST_TAIL, "y", PS_META_REPLACE, "Fringe position in y", y->data.F32[i]);
     141        psU8 maskValue = 0;
     142        if (mask && mask->data.U8[i]) {
     143            maskValue = 0xff;
     144        }
     145        psMetadataAddU8(row, PS_LIST_TAIL, "mask", PS_META_REPLACE, "Mask", maskValue);
    151146        table->data[i] = row;
    152147    }
     
    202197    psFree(headerCopy);
    203198
    204     // Now the vectors: x, y
     199    // Now the vectors: x, y, mask
    205200    psArray *table = psFitsReadTable(fits); // The table
    206201    long numRows = table->n;            // Number of rows
     
    209204    psVector *x = psVectorAlloc(numRows, PS_TYPE_F32); // x position
    210205    psVector *y = psVectorAlloc(numRows, PS_TYPE_F32); // y position
    211     x->n = y->n = numRows;
     206    psVector *mask = psVectorAlloc(numRows, PS_TYPE_U8); // mask
     207    x->n = y->n = mask->n = numRows;
    212208    regions->x = x;
    213209    regions->y = y;
     210    regions->mask = mask;
    214211
    215212    #define READ_REGIONS_ROW(VECTOR, TYPE, NAME, DESCRIPTION) \
     
    227224        READ_REGIONS_ROW(x, F32, "x", "x position");
    228225        READ_REGIONS_ROW(y, F32, "y", "y position");
     226        READ_REGIONS_ROW(mask, U8, "mask", "mask");
    229227    }
    230228    psFree(table);
     
    260258}
    261259
    262 pmFringeStats *pmFringeStatsMeasure(pmFringeRegions *fringe, pmReadout *readout, psMaskType maskVal)
     260pmFringeStats *pmFringeStatsMeasure(pmFringeRegions *fringe, const pmReadout *readout, psMaskType maskVal)
    263261{
    264262    PS_ASSERT_PTR_NON_NULL(fringe, NULL);
     
    762760        scaleMeasure(scale, science, fringes); // The scales
    763761        psTrace("psModules.detrend", 1, "Fringe scales after iteration %d:\n", iter);
    764         psTrace("psModules.detrend", 1, "Background: %f %f\n", scale->coeff->data.F32[0], scale->coeffErr->data.F32[0]);
     762        psTrace("psModules.detrend", 1, "Background: %f %f\n", scale->coeff->data.F32[0],
     763                scale->coeffErr->data.F32[0]);
    765764        for (int i = 0; i < scale->nFringeFrames; i++) {
    766765            psTrace("psModules.detrend", 1, "%d: %f %f\n", i, scale->coeff->data.F32[i + 1],
     
    771770        iterClip = clipRegions(diff, mask, rej); // Number clipped
    772771        numClipped += iterClip;
    773         psTrace("psModules.detrend", 9, "Clipped: %d\tFrac: %f\n", iterClip, (float)numClipped/(float)numRegions);
     772        psTrace("psModules.detrend", 9, "Clipped: %d\tFrac: %f\n", iterClip,
     773                (float)numClipped/(float)numRegions);
    774774    } while (iterClip > 0 && iter < nIter && (float)numClipped/(float)numRegions <= 1.0 - keepFrac);
    775775    psFree(diff);
Note: See TracChangeset for help on using the changeset viewer.