IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 21087


Ignore:
Timestamp:
Jan 6, 2009, 7:13:34 AM (17 years ago)
Author:
eugene
Message:

update to psImageMaskType and associated (psphot, psastro, ppImage, ppMerge, ppSim, ppStats, ppArith)

Location:
branches/eam_branch_20081230
Files:
70 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20081230/ppArith/src/ppArithReadout.c

    r15597 r21087  
    2626        outImage = output->mask;
    2727        if (!outImage) {
    28             output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_MASK);
     28            output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_IMAGE_MASK);
    2929        }
    3030        if (!output->image) {
     
    3737        outImage = output->image;
    3838        if (!outImage) {
    39             output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_MASK);
     39            output->mask = outImage = psImageAlloc(inImage1->numCols, inImage1->numRows, PS_TYPE_IMAGE_MASK);
    4040        }
    4141    }
  • branches/eam_branch_20081230/ppImage/src/ppImage.h

    r21072 r21087  
    5858
    5959    // make values for abstract concepts of masking
    60     psMaskType maskValue;               // apply this bit-mask to choose masked bits
    61     psMaskType markValue;               // apply this bit-mask to choose masked bits
    62     psMaskType satMask;                 // Mask value to give saturated pixels
    63     psMaskType badMask;                 // Mask value to give bad pixels
    64     psMaskType flatMask;                // Mask value to give bad flat pixels
    65     psMaskType blankMask;               // Mask value to give blank pixels
     60    psImageMaskType maskValue;               // apply this bit-mask to choose masked bits
     61    psImageMaskType markValue;               // apply this bit-mask to choose masked bits
     62    psImageMaskType satMask;                 // Mask value to give saturated pixels
     63    psImageMaskType badMask;                 // Mask value to give bad pixels
     64    psImageMaskType flatMask;                // Mask value to give bad flat pixels
     65    psImageMaskType blankMask;               // Mask value to give blank pixels
    6666
    6767    // non-linear correction parameters
  • branches/eam_branch_20081230/ppImage/src/ppImageReplaceBackground.c

    r21072 r21087  
    3030    // XXX Should this be options->maskValue or options->maskValue & ~options->satMask?
    3131    //     The latter will leave saturated pixels high
    32     psMaskType maskVal = options->maskValue;
     32    psImageMaskType maskVal = options->maskValue;
    3333
    3434    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    35     psMetadataAddU8(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskVal);
     35    psMetadataAddImageMask(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskVal);
    3636
    3737    // Since we are working on a chip-mosaicked image, there should only be a single cell and readout
     
    146146            if (!isfinite(value)) {
    147147                image->data.F32[y][x] = NAN;
    148                 mask->data.PS_TYPE_MASK_DATA[y][x] |= options->badMask;
     148                mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= options->badMask;
    149149            } else {
    150150                image->data.F32[y][x] -= value;
     
    157157    for (int y = 0; y < numRows; y++) {
    158158        for (int x = 0; x < numCols; x++) {
    159             if (mask && mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal) {
     159            if (mask && mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) {
    160160                image->data.F32[y][x] = 0.0;
    161161            } else {
     
    163163                if (!isfinite(value)) {
    164164                    image->data.F32[y][x] = NAN;
    165                     mask->data.PS_TYPE_MASK_DATA[y][x] |= options->badMask;
     165                    mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= options->badMask;
    166166                } else {
    167167                    image->data.F32[y][x] -= value;
  • branches/eam_branch_20081230/ppImage/src/ppImageSetMaskBits.c

    r21072 r21087  
    3838
    3939    // set maskValue and markValue in the psphot recipe
    40     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->maskValue);
    41     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->markValue);
     40    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->maskValue);
     41    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->markValue);
    4242
    4343    return true;
  • branches/eam_branch_20081230/ppMerge/src/ppMergeArguments.c

    r21072 r21087  
    9494        } \
    9595    } \
    96     psMaskType mask = pmConfigMask(str, config); \
    97     psMetadataAddU8(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, mask); \
     96    psImageMaskType mask = pmConfigMask(str, config); \
     97    psMetadataAddImageMask(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, mask); \
    9898}
    9999
  • branches/eam_branch_20081230/ppMerge/src/ppMergeLoop.c

    r18757 r21087  
    3838
    3939    // set the mask and mark bit values based on the named masks
    40     psMaskType maskVal;
    41     psMaskType markVal;
     40    psImageMaskType maskVal;
     41    psImageMaskType markVal;
    4242    if (!pmConfigMaskSetBits (&maskVal, &markVal, config)) {
    4343        psError (PS_ERR_UNKNOWN, true, "Unable to define the mask bit values");
  • branches/eam_branch_20081230/ppMerge/src/ppMergeLoop_Threaded.c

    r21072 r21087  
    5454
    5555    // set the mask and mark bit values based on the named masks
    56     psMaskType maskVal;
    57     psMaskType markVal;
     56    psImageMaskType maskVal;
     57    psImageMaskType markVal;
    5858    if (!pmConfigMaskSetBits (&maskVal, &markVal, config)) {
    5959        psError (PS_ERR_UNKNOWN, true, "Unable to define the mask bit values");
     
    257257                      psArrayAdd(job->args, 1, psScalarAlloc(iter, PS_TYPE_S32));
    258258                      psArrayAdd(job->args, 1, psScalarAlloc(rej, PS_TYPE_F32));
    259                       psArrayAdd(job->args, 1, psScalarAlloc(maskVal, PS_TYPE_U8));
     259                      psArrayAdd(job->args, 1, psScalarAlloc(maskVal, PS_TYPE_IMAGE_MASK));
    260260
    261261                      // call: pmDarkCombine(outCell, fileGroup->readouts, iter, rej, maskVal);
     
    276276                      psArrayAdd(job->args, 1, psScalarAlloc(iter, PS_TYPE_S32));
    277277                      psArrayAdd(job->args, 1, psScalarAlloc(rej, PS_TYPE_F32));
    278                       psArrayAdd(job->args, 1, psScalarAlloc(maskVal, PS_TYPE_U8));
     278                      psArrayAdd(job->args, 1, psScalarAlloc(maskVal, PS_TYPE_IMAGE_MASK));
    279279
    280280                      // call: pmShutterCorrectionGenerate(outRO, pattern, fileGroup->readouts, shutterRef,
  • branches/eam_branch_20081230/ppMerge/src/ppMergeMask.c

    r18756 r21087  
    2626    float smoothScale = psMetadataLookupF32(&mdok, config->arguments, "MASK.SMOOTH.SCALE"); // Radius to grow mask
    2727
    28     psMaskType markVal;
    29     psMaskType maskValRaw;
     28    psImageMaskType markVal;
     29    psImageMaskType maskValRaw;
    3030    if (!pmConfigMaskSetBits (&maskValRaw, &markVal, config)) {
    3131        psError (PS_ERR_UNKNOWN, true, "Unable to define the mask bit values");
     
    3434
    3535    char *maskOutName = psMetadataLookupStr (&mdok, config->arguments, "MASK.SET.VALUE");
    36     psMaskType maskValOut = pmConfigMaskGet (maskOutName, config);
     36    psImageMaskType maskValOut = pmConfigMaskGet (maskOutName, config);
    3737    if (!maskValOut) {
    3838        psError (PS_ERR_UNKNOWN, true, "Undefined output mask bit value");
     
    137137                int x = pixel % numCols;
    138138                int y = pixel / numCols;
    139                 if (mask && (mask->data.PS_TYPE_MASK_DATA[y][x] & maskValRaw)) continue;
    140                 if (outMask && (outMask->data.PS_TYPE_MASK_DATA[y][x] & maskValOut)) continue;
     139                if (mask && (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskValRaw)) continue;
     140                if (outMask && (outMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskValOut)) continue;
    141141                if (!isfinite(image->data.F32[y][x])) continue;
    142142
  • branches/eam_branch_20081230/ppMerge/src/ppMergeScaleZero.c

    r21072 r21087  
    8080                pmReadout *readout = cell->readouts->data[0]; // Readout of interest
    8181
    82                 psMaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask
     82                psImageMaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask
    8383
    8484                switch (type) {
  • branches/eam_branch_20081230/ppMerge/src/ppMergeSetThreads.c

    r19299 r21087  
    2929    psScalar *maskVal           = job->args->data[4];
    3030
    31     bool status = pmDarkCombine(outCell, fileGroup->readouts, iter->data.S32, rej->data.F32, maskVal->data.U8);
     31    bool status = pmDarkCombine(outCell, fileGroup->readouts, iter->data.S32, rej->data.F32, maskVal->data.PS_TYPE_IMAGE_MASK_DATA);
    3232
    3333    // after we are done, tell the I/O system that this file group is done
     
    4949    psScalar *maskVal             = job->args->data[7];
    5050
    51     bool status = pmShutterCorrectionGenerate(output, pattern, fileGroup->readouts, shutterRef->data.F32, data, iter->data.S32, rej->data.F32, maskVal->data.U8);
     51    bool status = pmShutterCorrectionGenerate(output, pattern, fileGroup->readouts, shutterRef->data.F32, data, iter->data.S32, rej->data.F32, maskVal->data.PS_TYPE_IMAGE_MASK_DATA);
    5252
    5353    // after we are done, tell the I/O system that this file group is done
  • branches/eam_branch_20081230/ppMerge/src/ppMergeThreadLauncher.c

    r18839 r21087  
    6060            psScalar *maskVal           = job->args->data[6];
    6161
    62             bool status = pmDarkCombine(outCell, fileGroup->readouts, darkOrdinates, darkNorm, iter->data.S32, rej->data.F32, maskVal->data.U8);
     62            bool status = pmDarkCombine(outCell, fileGroup->readouts, darkOrdinates, darkNorm, iter->data.S32, rej->data.F32, maskVal->data.PS_TYPE_IMAGE_MASK_DATA);
    6363            if (!status) {
    6464                self->fault = true;
     
    8282            psScalar *maskVal             = job->args->data[6];
    8383
    84             bool status = pmShutterCorrectionGenerate(output, NULL, fileGroup->readouts, shutterRef->data.F32, data, iter->data.S32, rej->data.F32, maskVal->data.U8);
     84            bool status = pmShutterCorrectionGenerate(output, NULL, fileGroup->readouts, shutterRef->data.F32, data, iter->data.S32, rej->data.F32, maskVal->data.PS_TYPE_IMAGE_MASK_DATA);
    8585            if (!status) {
    8686                self->fault = true;
  • branches/eam_branch_20081230/ppSim/src/ppSimMosaicChip.c

    r18712 r21087  
    22
    33// XXX this is essentially identical to ppImageMosaicChip
    4 bool ppSimMosaicChip(pmConfig *config, const psMaskType blankMask, const pmFPAview *view,
     4bool ppSimMosaicChip(pmConfig *config, const psImageMaskType blankMask, const pmFPAview *view,
    55                       const char *outFile, const char *inFile)
    66{
  • branches/eam_branch_20081230/ppSim/src/ppSimPhotom.c

    r20410 r21087  
    1515    psphotInit ();
    1616
     17 XXX : should this be a psImageMaskType?
    1718    int blankMask = 0;          // XXX not sure what this should be set to...
    1819    ppSimMosaicChip(config, blankMask, view, "PPSIM.FORCE.CHIP", "PPSIM.INPUT");
  • branches/eam_branch_20081230/ppSim/src/ppSimPhotomReadout.c

    r20403 r21087  
    9696
    9797    // XXX fake sources should measure peak->x,y, force sources should not
    98     psMaskType maskVal = 0xff;
     98    psImageMaskType maskVal = 0xff;
    9999    psImage *significance = psphotSignificanceImage (readout, recipe, 1, maskVal);
    100100    ppSimDetections (significance, recipe, fakeSources);
  • branches/eam_branch_20081230/ppSim/src/ppSimPhotomReadoutFake.c

    r20403 r21087  
    7676
    7777    // XXX fake sources should measure peak->x,y, force sources should not
    78     psMaskType maskVal = 0xff;
     78    psImageMaskType maskVal = 0xff;
    7979    psImage *significance = psphotSignificanceImage (readout, recipe, 1, maskVal);
    8080    ppSimDetections (significance, recipe, fakeSources);
  • branches/eam_branch_20081230/ppSim/src/ppSimPhotomReadoutForce.c

    r20403 r21087  
    6969
    7070    // XXX fake sources should measure peak->x,y, force sources should not
    71     psMaskType maskVal = 0xff;
     71    psImageMaskType maskVal = 0xff;
    7272    psImage *significance = psphotSignificanceImage (readout, recipe, 1, maskVal);
    7373    ppSimDetections (significance, recipe, forceSources);
  • branches/eam_branch_20081230/ppStats/src/ppStats.h

    r21072 r21087  
    2424    bool doFirstReadout3D;              // for 3D data, use the first readout?
    2525    float sample;                       // Fraction of cell to sample for statistics
    26     psMaskType maskVal;                 // Mask value for images
     26    psImageMaskType maskVal;            // Mask value for images
    2727    psList *chips;                      // Chips to look at
    2828    psList *cells;                      // Cells to look at
     
    4545                       pmFPA *fpa,         // FPA for which to get statistics
    4646                       pmFPAview *view,    // View for analysis
    47                        psMaskType maskVal, // Value to mask
     47                       psImageMaskType maskVal, // Value to mask
    4848                       pmConfig *config    // Configuration
    4949    );
     
    7777                          pmFPA *fpa,         // FPA for which to get statistics
    7878                          pmFPAview *view,    // View for analysis
    79                           psMaskType maskVal, // Value to mask
     79                          psImageMaskType maskVal, // Value to mask
    8080                          pmConfig *config    // Configuration
    8181    );
     
    8585                            pmFPA *fpa,         // FPA for which to get statistics
    8686                            pmFPAview *view,    // View for analysis
    87                             psMaskType maskVal, // Value to mask
     87                            psImageMaskType maskVal, // Value to mask
    8888                            pmConfig *config    // Configuration
    8989    );
  • branches/eam_branch_20081230/ppStats/src/ppStatsFPA.c

    r21072 r21087  
    44                       pmFPA *fpa,         // FPA for which to get statistics
    55                       pmFPAview *view,    // View for analysis
    6                        psMaskType maskVal, // Value to mask
     6                       psImageMaskType maskVal, // Value to mask
    77                       pmConfig *config    // Configuration
    88    )
  • branches/eam_branch_20081230/ppStats/src/ppStatsMetadata.c

    r21072 r21087  
    55                            pmFPA *fpa,         // FPA for which to get statistics
    66                            pmFPAview *view,    // View for analysis
    7                             psMaskType maskVal, // Value to mask
     7                            psImageMaskType maskVal, // Value to mask
    88                            pmConfig *config    // Configuration
    99    )
  • branches/eam_branch_20081230/ppStats/src/ppStatsPixels.c

    r21072 r21087  
    55                          pmFPA *fpa,         // FPA for which to get statistics
    66                          pmFPAview *view,    // View for analysis
    7                           psMaskType maskVal, // Value to mask
     7                          psImageMaskType maskVal, // Value to mask
    88                          pmConfig *config    // Configuration
    99    )
  • branches/eam_branch_20081230/ppStats/src/ppStatsReadout.c

    r21072 r21087  
    6363        int sampleSpace = 1.0 / data->sample; // Space between samples
    6464        psVector *sampleValues = psVectorAlloc(numSamples, PS_TYPE_F32); // Vector of samples
    65         psVector *sampleMask = psVectorAlloc(numSamples, PS_TYPE_MASK);  // Corresponding mask
     65        psVector *sampleMask = psVectorAlloc(numSamples, PS_TYPE_VECTOR_MASK);  // Corresponding mask
    6666        if (!mask) {
    6767            psVectorInit(sampleMask, 0);
     
    7272            int x = j % image->numCols;
    7373            sampleValues->data.F32[i] = image->data.F32[y][x];
    74             if ((!mask || !(mask->data.PS_TYPE_MASK_DATA[y][x] & data->maskVal)) &&
    75                 !isfinite(sampleValues->data.F32[i])) {
     74            if ((!mask || !(mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & data->maskVal)) && !isfinite(sampleValues->data.F32[i])) {
    7675                if (!warnNonFinite) {
    77                     psWarning("Unmasked non-finite value detected at %d,%d; suppressing further warnings",
    78                               x, y);
     76                    psWarning("Unmasked non-finite value detected at %d,%d; suppressing further warnings", x, y);
    7977                    warnNonFinite = true;
    8078                }
    81                 sampleMask->data.PS_TYPE_MASK_DATA[i] = data->maskVal;
     79                sampleMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
    8280            } else if (mask) {
    83                 sampleMask->data.PS_TYPE_MASK_DATA[i] = mask->data.PS_TYPE_MASK_DATA[y][x];
     81              sampleMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
    8482            }
    8583        }
    86         if (!psVectorStats(data->stats, sampleValues, NULL, sampleMask, data->maskVal)) {
     84        if (!psVectorStats(data->stats, sampleValues, NULL, sampleMask, 1)) {
    8785            psWarning("Unable to perform statistics on readout %s.\n", readoutName);
    8886            psErrorClear();
     
    179177                for (int j = 0; j < readout->mask->numRows; j++) {
    180178                    for (int i = 0; i < readout->mask->numCols; i++) {
    181                         if (readout->mask->data.PS_TYPE_MASK_DATA[j][i] & data->maskVal) {
     179                        if (readout->mask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] & data->maskVal) {
    182180                            numBad++;
    183181                        }
  • branches/eam_branch_20081230/psastro/src/psastroAstromGuess.c

    r20805 r21087  
    267267    psVector *cornerDn = psVectorAllocEmpty (100, PS_TYPE_F32);
    268268
    269     psVector *cornerMK = psVectorAllocEmpty (100, PS_TYPE_U8);
     269    psVector *cornerMK = psVectorAllocEmpty (100, PS_TYPE_VECTOR_MASK);
    270270
    271271    if (DEBUG) psastroDumpCorners ("corners.up.guess3.dat", "corners.dn.guess3.dat", fpa);
  • branches/eam_branch_20081230/psastro/src/psastroFixChips.c

    r20805 r21087  
    160160    psPlaneTransform *map = psPlaneTransformAlloc (1, 1);
    161161 
    162     psVector *mask = psVectorAlloc (nPts, PS_TYPE_U8);
     162    psVector *mask = psVectorAlloc (nPts, PS_TYPE_VECTOR_MASK);
    163163    psVectorInit (mask, 0);
    164164
  • branches/eam_branch_20081230/psastro/src/psastroLuminosityFunction.c

    r20805 r21087  
    9191    psLogMsg ("psastro", 4, "fitting %d points to luminosity function\n", n);
    9292
    93     psVector *mask = psVectorAlloc (Mag->n, PS_TYPE_MASK);
     93    psVector *mask = psVectorAlloc (Mag->n, PS_TYPE_VECTOR_MASK);
    9494    psVectorInit (mask, 0);
    9595
     
    108108    double mMaxValid = NAN;
    109109    for (int i = 0; i < Mag->n; i++) {
    110         if (mask->data.U8[i]) continue;
     110        if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
    111111        if (isnan(mMinValid) || (Mag->data.F32[i] < mMinValid)) {
    112112            mMinValid = Mag->data.F32[i];
  • branches/eam_branch_20081230/psastro/src/psastroMaskUpdates.Mosaic.c

    r20650 r21087  
    99pmCell *pmCellInChip (pmChip *chip, float x, float y);
    1010bool pmCellCoordsForChip (float *xCell, float *yCell, pmCell *cell, float xChip, float yChip);
    11 bool psastroMaskCircle (psImage *mask, char value, float x0, float y0, float dX, float dY);
    12 bool psastroMaskBox (psImage *mask, char value, float x0, float y0, float dL, float dW, float theta);
    13 void psastroMaskLine (psImage *mask, char value, double x1, double y1, double x2, double y2, int dW);
    14 void psastroMaskLineBresen (psImage *mask, char value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords);
    15 void psastroMaskRectangle (psImage *mask, char value, int x0, int y0, int x1, int y1);
     11bool psastroMaskCircle (psImage *mask, psImageMaskType value, float x0, float y0, float dX, float dY);
     12bool psastroMaskBox (psImage *mask, psImageMaskType value, float x0, float y0, float dL, float dW, float theta);
     13void psastroMaskLine (psImage *mask, psImageMaskType value, double x1, double y1, double x2, double y2, int dW);
     14void psastroMaskLineBresen (psImage *mask, psImageMaskType value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords);
     15void psastroMaskRectangle (psImage *mask, psImageMaskType value, int x0, int y0, int x1, int y1);
    1616
    1717// create a mask or mask regions based on the collection of reference stars that are
     
    2525    float zeropt, exptime;
    2626
    27     psMaskType maskValue  = pmConfigMaskGet("GHOST", config); // Mask value for ghost pixels
    28     psMaskType maskBlank  = pmConfigMaskGet("BLANK", config); // Mask value for blank pixels
     27    psImageMaskType maskValue  = pmConfigMaskGet("GHOST", config); // Mask value for ghost pixels
     28    psImageMaskType maskBlank  = pmConfigMaskGet("BLANK", config); // Mask value for blank pixels
    2929
    3030    // select the current recipe
     
    342342
    343343// XXX should be doing an OR
    344 bool psastroMaskCircle (psImage *mask, char value, float x0, float y0, float dX, float dY) {
     344bool psastroMaskCircle (psImage *mask, psImageMaskType value, float x0, float y0, float dX, float dY) {
    345345
    346346    // XXX need to worry about row0, col0
     
    357357            if (r2 > 1.0) continue;
    358358           
    359             mask->data.U8[jy][jx] |= value;
     359            mask->data.PS_TYPE_IMAGE_MASK_DATA[jy][jx] |= value;
    360360        }
    361361    }
     
    364364
    365365// XXX should be doing an OR
    366 bool psastroMaskBox (psImage *mask, char value, float x0, float y0, float dL, float dW, float theta) {
     366bool psastroMaskBox (psImage *mask, psImageMaskType value, float x0, float y0, float dL, float dW, float theta) {
    367367
    368368    // draw a series of lines (from -0.5*dW to +0.5*dW) of length dL, starting at x0, y0, angle theta
     
    379379
    380380// identify the quadrant and draw the correct line
    381 void psastroMaskLine (psImage *mask, char value, double x1, double y1, double x2, double y2, int dW) {
     381void psastroMaskLine (psImage *mask, psImageMaskType value, double x1, double y1, double x2, double y2, int dW) {
    382382
    383383  int FlipDirect, FlipCoords;
     
    408408// use the Bresenham line drawing technique
    409409// integer-only Bresenham line-draw version which is fast
    410 void psastroMaskLineBresen (psImage *mask, char value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords) {
     410void psastroMaskLineBresen (psImage *mask, psImageMaskType value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords) {
    411411
    412412    int X, Y, dX, dY;
     
    425425                    if (y < 0) continue;
    426426                    if (y >= mask->numCols) continue;
    427                     mask->data.U8[X][y] |= value;
     427                    mask->data.PS_TYPE_IMAGE_MASK_DATA[X][y] |= value;
    428428                }
    429429            } else {
     
    432432                    if (y < 0) continue;
    433433                    if (y >= mask->numRows) continue;
    434                     mask->data.U8[y][X] |= value;
     434                    mask->data.PS_TYPE_IMAGE_MASK_DATA[y][X] |= value;
    435435                }
    436436            }
     
    450450}
    451451
    452 void psastroMaskRectangle (psImage *mask, char value, int x0, int y0, int x1, int y1) {
     452void psastroMaskRectangle (psImage *mask, psImageMaskType value, int x0, int y0, int x1, int y1) {
    453453    for (int iy = PS_MAX(0,y0); iy < PS_MIN(y1,mask->numRows); iy++) {
    454454        for (int ix = PS_MAX(0,x0); ix < PS_MIN(x1,mask->numCols); ix++) {
    455             mask->data.U8[iy][ix] |= value;
    456         }
    457     }
    458 }
    459 
     455            mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= value;
     456        }
     457    }
     458}
     459
  • branches/eam_branch_20081230/psastro/src/psastroMaskUpdates.c

    r21072 r21087  
    1111bool pmChipCoordsForCell (float *xChip, float *yChip, pmCell *cell, float xCell, float yCell);
    1212
    13 bool psastroMaskCircle (psImage *mask, char value, float x0, float y0, float dX, float dY);
    14 bool psastroMaskBox (psImage *mask, char value, float x0, float y0, float dL, float dW, float theta);
    15 void psastroMaskLine (psImage *mask, char value, double x1, double y1, double x2, double y2, int dW);
    16 void psastroMaskLineBresen (psImage *mask, char value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords);
    17 void psastroMaskRectangle (psImage *mask, char value, int x0, int y0, int x1, int y1);
     13bool psastroMaskCircle (psImage *mask, psImageMaskType value, float x0, float y0, float dX, float dY);
     14bool psastroMaskBox (psImage *mask, psImageMaskType value, float x0, float y0, float dL, float dW, float theta);
     15void psastroMaskLine (psImage *mask, psImageMaskType value, double x1, double y1, double x2, double y2, int dW);
     16void psastroMaskLineBresen (psImage *mask, psImageMaskType value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords);
     17void psastroMaskRectangle (psImage *mask, psImageMaskType value, int x0, int y0, int x1, int y1);
    1818
    1919// create a mask or mask regions based on the collection of reference stars that are
     
    2727    float zeropt, exptime;
    2828
    29     psMaskType maskValue  = pmConfigMaskGet("GHOST", config); // Mask value for ghost pixels
    30 
    31     // psMaskType maskBlank  = pmConfigMaskGet("BLANK", config); // Mask value for blank pixels
     29    psImageMaskType maskValue  = pmConfigMaskGet("GHOST", config); // Mask value for ghost pixels
     30
     31    // psImageMaskType maskBlank  = pmConfigMaskGet("BLANK", config); // Mask value for blank pixels
    3232
    3333    // select the current recipe
     
    376376
    377377// XXX should be doing an OR
    378 bool psastroMaskCircle (psImage *mask, char value, float x0, float y0, float dX, float dY) {
     378bool psastroMaskCircle (psImage *mask, psImageMaskType value, float x0, float y0, float dX, float dY) {
    379379
    380380    // XXX need to worry about row0, col0
     
    391391            if (r2 > 1.0) continue;
    392392
    393             mask->data.U8[jy][jx] |= value;
     393            mask->data.PS_TYPE_IMAGE_MASK_DATA[jy][jx] |= value;
    394394        }
    395395    }
     
    398398
    399399// XXX should be doing an OR
    400 bool psastroMaskBox (psImage *mask, char value, float x0, float y0, float dL, float dW, float theta) {
     400bool psastroMaskBox (psImage *mask, psImageMaskType value, float x0, float y0, float dL, float dW, float theta) {
    401401
    402402    // draw a series of lines (from -0.5*dW to +0.5*dW) of length dL, starting at x0, y0, angle theta
     
    413413
    414414// identify the quadrant and draw the correct line
    415 void psastroMaskLine (psImage *mask, char value, double x1, double y1, double x2, double y2, int dW) {
     415void psastroMaskLine (psImage *mask, psImageMaskType value, double x1, double y1, double x2, double y2, int dW) {
    416416
    417417  int FlipDirect, FlipCoords;
     
    442442// use the Bresenham line drawing technique
    443443// integer-only Bresenham line-draw version which is fast
    444 void psastroMaskLineBresen (psImage *mask, char value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords) {
     444void psastroMaskLineBresen (psImage *mask, psImageMaskType value, int X1, int Y1, int X2, int Y2, int dW, int swapcoords) {
    445445
    446446    int X, Y, dX, dY;
     
    459459                    if (y < 0) continue;
    460460                    if (y >= mask->numCols) continue;
    461                     mask->data.U8[X][y] |= value;
     461                    mask->data.PS_TYPE_IMAGE_MASK_DATA[X][y] |= value;
    462462                }
    463463            } else {
     
    466466                    if (y < 0) continue;
    467467                    if (y >= mask->numRows) continue;
    468                     mask->data.U8[y][X] |= value;
     468                    mask->data.PS_TYPE_IMAGE_MASK_DATA[y][X] |= value;
    469469                }
    470470            }
     
    484484}
    485485
    486 void psastroMaskRectangle (psImage *mask, char value, int x0, int y0, int x1, int y1) {
     486void psastroMaskRectangle (psImage *mask, psImageMaskType value, int x0, int y0, int x1, int y1) {
    487487
    488488    int xs = PS_MAX (0, PS_MIN (mask->numCols, PS_MIN (x0, x1)));
     
    493493    for (int iy = ys; iy < ye; iy++) {
    494494        for (int ix = xs; ix < xe; ix++) {
    495             mask->data.U8[iy][ix] |= value;
    496         }
    497     }
    498 }
    499 
     495            mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= value;
     496        }
     497    }
     498}
     499
  • branches/eam_branch_20081230/psastro/src/psastroMosaicFPtoTP.c

    r19314 r21087  
    7474
    7575    // constant errors
    76     psVector *mask = psVectorAlloc (X->n, PS_TYPE_U8);
     76    psVector *mask = psVectorAlloc (X->n, PS_TYPE_VECTOR_MASK);
    7777    psVectorInit (mask, 0);
    7878
  • branches/eam_branch_20081230/psphot/src/psphot.h

    r20938 r21087  
    1818    pmPSF *psf;
    1919    psRegion *region;
    20     psMaskType maskVal;
    21     psMaskType markVal;
     20    psImageMaskType maskVal;
     21    psImageMaskType markVal;
    2222} psphotGuessModelForRegionArgs;
    2323
     
    5353bool            psphotGuessModelForRegion (psphotGuessModelForRegionArgs *args);
    5454bool            psphotBlendFit (pmReadout *readout, psArray *sources, psMetadata *recipe, pmPSF *psf);
    55 bool            psphotReplaceUnfitSources (psArray *sources, psMaskType maskVal);
     55bool            psphotReplaceUnfitSources (psArray *sources, psImageMaskType maskVal);
    5656bool            psphotReplaceAllSources (psArray *sources, psMetadata *recipe);
    5757bool            psphotRemoveAllSources (psArray *sources, psMetadata *recipe);
     
    6464
    6565// used by psphotFindDetections
    66 psImage        *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psMaskType maskVal);
     66psImage        *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal);
    6767psArray        *psphotFindPeaks (psImage *significance, pmReadout *readout, psMetadata *recipe, const float threshold, const int nMax);
    68 bool            psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psMaskType maskVal);
     68bool            psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal);
    6969psErrorCode     psphotCullPeaks(const psImage *img, const psImage *weight, const psMetadata *recipe, psArray *footprints);
    7070
     
    7575// basic support functions
    7676void            psphotModelClassInit (void);
    77 bool            psphotGrowthCurve (pmReadout *readout, pmPSF *psf, bool ignore, psMaskType maskVal);
     77bool            psphotGrowthCurve (pmReadout *readout, pmPSF *psf, bool ignore, psImageMaskType maskVal);
    7878bool            psphotSetMaskAndWeight (pmConfig *config, pmReadout *readout, psMetadata *recipe);
    7979void            psphotSourceFreePixels (psArray *sources);
     
    8181// functions to set the correct source pixels
    8282bool            psphotInitRadiusPSF (const psMetadata *recipe, const pmModelType type);
    83 bool            psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal);
    84 bool            psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal, float dR);
     83bool            psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal);
     84bool            psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal, float dR);
    8585bool            psphotInitRadiusEXT (psMetadata *recipe, pmModelType type);
    86 bool            psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal);
     86bool            psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal);
    8787
    8888// output functions
     
    103103bool            psphotInitLimitsPSF (psMetadata *recipe, pmReadout *readout);
    104104bool            psphotInitLimitsEXT (psMetadata *recipe);
    105 bool            psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal, psMaskType markVal);
    106 bool            psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psMaskType maskVal, psMaskType markVal);
    107 bool            psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal, psMaskType markVal);
    108 pmModel        *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psMaskType maskVal, psMaskType markVal);
    109 psArray        *psphotFitDBL (pmReadout *readout, pmSource *source, psMaskType maskVal, psMaskType markVal);
     105bool            psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal);
     106bool            psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal);
     107bool            psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal);
     108pmModel        *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal);
     109psArray        *psphotFitDBL (pmReadout *readout, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal);
    110110
    111111// functions to support simultaneous multi-source fitting
    112 bool            psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psMaskType maskVal);
     112bool            psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psImageMaskType maskVal);
    113113
    114114// plotting functions (available if libkapa is installed)
     
    131131bool            psphotMosaicSubimage (psImage *outImage, pmSource *source, int Xo, int Yo, int DX, int DY, bool normalize);
    132132
    133 bool            psphotAddWithTest (pmSource *source, bool useState, psMaskType maskVal);
    134 bool            psphotSubWithTest (pmSource *source, bool useState, psMaskType maskVal);
    135 bool            psphotSetState (pmSource *source, bool curState, psMaskType maskVal);
     133bool            psphotAddWithTest (pmSource *source, bool useState, psImageMaskType maskVal);
     134bool            psphotSubWithTest (pmSource *source, bool useState, psImageMaskType maskVal);
     135bool            psphotSetState (pmSource *source, bool curState, psImageMaskType maskVal);
    136136bool            psphotDeblendSatstars (psArray *sources, psMetadata *recipe);
    137137bool            psphotSourceSize (pmConfig *config, pmReadout *readout, psArray *sources, psMetadata *recipe, long first);
    138138
    139 bool            psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psMaskType maskVal);
    140 
    141 pmModel        *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psMaskType maskVal, psMaskType markVal, int psfSize);
     139bool            psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psImageMaskType maskVal);
     140
     141pmModel        *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal, int psfSize);
    142142
    143143psKernel       *psphotKernelFromPSF (pmSource *source, int nPix);
    144144
    145 bool            psphotRadialProfile (pmSource *source, psMetadata *recipe, psMaskType maskVal);
    146 bool            psphotPetrosian (pmSource *source, psMetadata *recipe, psMaskType maskVal);
    147 bool            psphotIsophotal (pmSource *source, psMetadata *recipe, psMaskType maskVal);
    148 bool            psphotAnnuli (pmSource *source, psMetadata *recipe, psMaskType maskVal);
    149 bool            psphotKron (pmSource *source, psMetadata *recipe, psMaskType maskVal);
     145bool            psphotRadialProfile (pmSource *source, psMetadata *recipe, psImageMaskType maskVal);
     146bool            psphotPetrosian (pmSource *source, psMetadata *recipe, psImageMaskType maskVal);
     147bool            psphotIsophotal (pmSource *source, psMetadata *recipe, psImageMaskType maskVal);
     148bool            psphotAnnuli (pmSource *source, psMetadata *recipe, psImageMaskType maskVal);
     149bool            psphotKron (pmSource *source, psMetadata *recipe, psImageMaskType maskVal);
    150150
    151151// psphotVisual functions
     
    162162bool psphotVisualShowSatStars (psMetadata *recipe, pmPSF *psf, psArray *sources);
    163163bool psphotVisualShowPSFModel (pmReadout *readout, pmPSF *psf);
    164 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psMaskType maskVal);
     164bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psImageMaskType maskVal);
    165165bool psphotVisualPlotRadialProfiles (psMetadata *recipe, psArray *sources);
    166166bool psphotVisualShowFlags (psArray *sources);
     
    217217bool psphotMakeFluxScale (psImage *image, psMetadata *recipe, pmPSF *psf);
    218218bool psphotMakeGrowthCurve (pmReadout *readout, psMetadata *recipe, pmPSF *psf);
    219 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psMaskType maskVal, psMaskType markVal);
     219bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psImageMaskType maskVal, psImageMaskType markVal);
    220220
    221221bool psphotCheckStarDistribution (psArray *sources, psArray *stars, pmPSFOptions *options);
  • branches/eam_branch_20081230/psphot/src/psphotAddNoise.c

    r21072 r21087  
    2323
    2424    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    25     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     25    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    2626    assert (maskVal);
    2727
  • branches/eam_branch_20081230/psphot/src/psphotAnnuli.c

    r17396 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotAnnuli (pmSource *source, psMetadata *recipe, psMaskType maskVal) {
     3bool psphotAnnuli (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) {
    44
    55  assert (source->extpars);
  • branches/eam_branch_20081230/psphot/src/psphotApResid.c

    r21072 r21087  
    3333
    3434    // bit-masks to test for good/bad pixels
    35     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     35    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    3636    assert (maskVal);
    3737
    3838    // bit-mask to mark pixels not used in analysis
    39     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     39    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    4040    assert (markVal);
    4141
     
    7070    pmSourceMagnitudesInit (recipe);
    7171
    72     psVector *mask    = psVectorAllocEmpty (300, PS_TYPE_U8);
     72    psVector *mask    = psVectorAllocEmpty (300, PS_TYPE_VECTOR_MASK);
    7373    psVector *mag     = psVectorAllocEmpty (300, PS_TYPE_F32);
    7474    psVector *xPos    = psVectorAllocEmpty (300, PS_TYPE_F32);
     
    118118        yPos->data.F32[Npsf]    = model->params->data.F32[PM_PAR_YPOS];
    119119
    120         mask->data.U8[Npsf] = 0;
     120        mask->data.PS_TYPE_VECTOR_MASK_DATA[Npsf] = 0;
    121121
    122122        dMag->data.F32[Npsf] = model->dparams->data.F32[PM_PAR_I0] / model->params->data.F32[PM_PAR_I0];
     
    197197                     mag->data.F32[i], dMag->data.F32[i], dMagSys->data.F32[i],
    198198                     apResid->data.F32[i], apResidRes->data.F32[i],
    199                      mask->data.U8[i]);
     199                     mask->data.PS_TYPE_VECTOR_MASK_DATA[i]);
    200200        }
    201201        fclose (dumpFile);
     
    263263    psVector *dMSubset = psVectorAllocEmpty (nGroup, PS_TYPE_F32);
    264264    psVector *dASubset = psVectorAllocEmpty (nGroup, PS_TYPE_F32);
    265     psVector *mkSubset = psVectorAllocEmpty (nGroup, PS_TYPE_U8);
     265    psVector *mkSubset = psVectorAllocEmpty (nGroup, PS_TYPE_VECTOR_MASK);
    266266
    267267    int n = 0;
     
    272272            dMSubset->data.F32[j] = dMag->data.F32[N];
    273273            dASubset->data.F32[j] = dap->data.F32[N];
    274             mkSubset->data.U8[j]  = mask->data.U8[N];
     274            mkSubset->data.PS_TYPE_VECTOR_MASK_DATA[j] = mask->data.PS_TYPE_VECTOR_MASK_DATA[N];
    275275        }
    276276        dMSubset->n = j;
  • branches/eam_branch_20081230/psphot/src/psphotBlendFit.c

    r20453 r21087  
    1313
    1414    // bit-masks to test for good/bad pixels
    15     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     15    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    1616    assert (maskVal);
    1717
    1818    // bit-mask to mark pixels not used in analysis
    19     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     19    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    2020    assert (markVal);
    2121
  • branches/eam_branch_20081230/psphot/src/psphotChoosePSF.c

    r20453 r21087  
    2424
    2525    // bit-masks to test for good/bad pixels
    26     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     26    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    2727    assert (maskVal);
    2828
    2929    // bit-mask to mark pixels not used in analysis
    30     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     30    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    3131    assert (markVal);
    3232
     
    258258    for (int i = 0; i < try->sources->n; i++) {
    259259        pmSource *source = try->sources->data[i];
    260         if (try->mask->data.U8[i]) {
     260        if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
    261261            source->mode &= ~PM_SOURCE_MODE_PSFSTAR;
    262262        }
  • branches/eam_branch_20081230/psphot/src/psphotExtendedSourceAnalysis.c

    r19881 r21087  
    1212
    1313    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    14     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     14    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    1515    assert (maskVal);
    1616
  • branches/eam_branch_20081230/psphot/src/psphotExtendedSourceFits.c

    r19881 r21087  
    1313
    1414    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    15     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     15    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    1616    assert (maskVal);
    1717
    18     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT"); // Mask value for bad pixels
     18    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT"); // Mask value for bad pixels
    1919    assert (markVal);
    2020
  • branches/eam_branch_20081230/psphot/src/psphotExtendedSources.c

    r17111 r21087  
    1212
    1313    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    14     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     14    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    1515    assert (maskVal);
    1616
  • branches/eam_branch_20081230/psphot/src/psphotFindDetections.c

    r20453 r21087  
    1010
    1111    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    12     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     12    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    1313    assert (maskVal);
    1414
  • branches/eam_branch_20081230/psphot/src/psphotFindFootprints.c

    r21072 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psMaskType maskVal) {
     3bool psphotFindFootprints (pmDetections *detections, psImage *significance, pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal) {
    44
    55    bool status;
  • branches/eam_branch_20081230/psphot/src/psphotFitSet.c

    r14337 r21087  
    22
    33// This is only used by psphotModelTest.c
    4 bool psphotFitSet (pmSource *source, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psMaskType maskVal) {
     4bool psphotFitSet (pmSource *source, pmModel *oneModel, char *fitset, pmSourceFitMode mode, psImageMaskType maskVal) {
    55
    66    double x, y, Io;
  • branches/eam_branch_20081230/psphot/src/psphotFitSourcesLinear.c

    r20938 r21087  
    1010// the analysis is performed wrt the simulated pixel values
    1111
    12 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psMaskType markVal);
     12static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psImageMaskType markVal);
    1313
    1414bool psphotFitSourcesLinear (pmReadout *readout, psArray *sources, psMetadata *recipe, pmPSF *psf, bool final) {
     
    2323
    2424    // bit-masks to test for good/bad pixels
    25     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     25    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    2626    assert (maskVal);
    2727
    2828    // bit-mask to mark pixels not used in analysis
    29     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     29    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    3030    assert (markVal);
    3131
     
    233233// on the pixels which correspond to all of the sources of interest.  These elements fill in
    234234// the border matrix components in the sparse matrix equation.
    235 static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psMaskType markVal) {
     235static bool SetBorderMatrixElements (psSparseBorder *border, pmReadout *readout, psArray *sources, bool constant_weights, int SKY_FIT_ORDER, psImageMaskType markVal) {
    236236
    237237    // generate the image-wide weight terms
     
    248248        float x = model->params->data.F32[PM_PAR_XPOS];
    249249        float y = model->params->data.F32[PM_PAR_YPOS];
    250         psImageMaskCircle (source->maskView, x, y, model->radiusFit, "AND", PS_NOT_U8(markVal));
     250        psImageMaskCircle (source->maskView, x, y, model->radiusFit, "AND", PS_NOT_IMAGE_MASK(markVal));
    251251    }
    252252
     
    254254    psF32 **image  = readout->image->data.F32;
    255255    psF32 **weight = readout->weight->data.F32;
    256     psU8  **mask   = readout->mask->data.U8;
     256    psImageMaskType  **mask   = readout->mask->data.PS_TYPE_IMAGE_MASK_DATA;
    257257
    258258    double w, x, y, x2, xy, y2, xc, yc, wt, f, fo, fx, fy;
     
    288288
    289289    // turn off MARK for all image pixels
    290     psImageMaskRegion (readout->mask, fullArray, "AND", PS_NOT_U8(markVal));
     290    psImageMaskRegion (readout->mask, fullArray, "AND", PS_NOT_IMAGE_MASK(markVal));
    291291
    292292    // set the Border T elements
  • branches/eam_branch_20081230/psphot/src/psphotGuessModels.c

    r20453 r21087  
    4040
    4141    // bit-masks to test for good/bad pixels
    42     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     42    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    4343    assert (maskVal);
    4444
    4545    // bit-mask to mark pixels not used in analysis
    46     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     46    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    4747    assert (markVal);
    4848
     
    177177    pmPSF *psf = args->psf;
    178178    psRegion *region = args->region;
    179     psMaskType maskVal = args->maskVal;
    180     psMaskType markVal = args->markVal;
     179    psImageMaskType maskVal = args->maskVal;
     180    psImageMaskType markVal = args->markVal;
    181181
    182182    int nSrc = 0;
  • branches/eam_branch_20081230/psphot/src/psphotIsophotal.c

    r17561 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotIsophotal (pmSource *source, psMetadata *recipe, psMaskType maskVal) {
     3bool psphotIsophotal (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) {
    44
    55  assert (source->extpars);
  • branches/eam_branch_20081230/psphot/src/psphotKron.c

    r17396 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotKron (pmSource *source, psMetadata *recipe, psMaskType maskVal) {
     3bool psphotKron (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) {
    44
    55  psLogMsg ("psphot", PS_LOG_INFO, "not implemented\n");
  • branches/eam_branch_20081230/psphot/src/psphotMagnitudes.c

    r20453 r21087  
    1717
    1818    // bit-masks to test for good/bad pixels
    19     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     19    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    2020    assert (maskVal);
    2121
    2222    // bit-mask to mark pixels not used in analysis
    23     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     23    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    2424    assert (markVal);
    2525
  • branches/eam_branch_20081230/psphot/src/psphotMakeGrowthCurve.c

    r20453 r21087  
    1111
    1212    // bit-masks to test for good/bad pixels
    13     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     13    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    1414    assert (maskVal);
    1515
    1616    // bit-mask to mark pixels not used in analysis
    17     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     17    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    1818    assert (markVal);
    1919
  • branches/eam_branch_20081230/psphot/src/psphotMakeResiduals.c

    r20453 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psMaskType maskVal) {
     3XXX this function is probably broken: fmasks is confused between Image and Vector.  it is used by psVectorStats, so it must be Vector, but
     4  is populated by mflux, which seems to be Image..
     5bool psphotMakeResiduals (psArray *sources, psMetadata *recipe, pmPSF *psf, psImageMaskType maskVal) {
    46
    57    bool status, isPSF;
    68    double flux, dflux;
    7     psU8 mflux;
     9    psImageMaskType mflux;
    810
    911    psTimerStart ("psphot.residuals");
     
    6971    // - set output pixel, weight, and mask
    7072
    71     // XXX need to set these correctly!!
     73    XXX need to set these correctly based on the RECIPE values
    7274    const int badMask = 1;              // mask bits
    7375    const int poorMask = 2;             //       from psImageInterpolate
     
    9597        psImage *image  = psImageCopy (NULL, source->pixels,   PS_TYPE_F32);
    9698        psImage *weight = psImageCopy (NULL, source->weight,   PS_TYPE_F32);
    97         psImage *mask   = psImageCopy (NULL, source->maskView, PS_TYPE_U8);
     99        psImage *mask   = psImageCopy (NULL, source->maskView, PS_TYPE_IMAGE_MASK);
    98100        pmModelSub (image, mask, model, PM_MODEL_OP_FUNC, maskVal);
    99101
     
    131133    psVector *fluxes  = psVectorAlloc (input->n, PS_TYPE_F32);
    132134    psVector *dfluxes = psVectorAlloc (input->n, PS_TYPE_F32);
    133     psVector *fmasks  = psVectorAlloc (input->n, PS_TYPE_U8);
     135    psVector *fmasks  = psVectorAlloc (input->n, PS_TYPE_VECTOR_MASK);
    134136
    135137    // statistic to use to determine baseline for clipping
     
    166168                    // This pixel is off the image
    167169                    offImage = true;
    168                     fmasks->data.U8[i] = 1;
     170                    fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
    169171                    // fprintf (stderr, "off image: %f %f : %f %f\n", ix, iy, flux, dflux);
    170172                }
    171173                fluxes->data.F32[i] = flux;
    172174                dfluxes->data.F32[i] = dflux;
    173                 fmasks->data.U8[i] = mflux;
     175                fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = mflux; // XXX is mflux IMAGE or VECTOR type?
    174176                if (isnan(flux)) {
    175                     fmasks->data.U8[i] = 1;
    176                 }
    177                 if (fmasks->data.U8[i] == 0) {
     177                    fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
     178                }
     179                if (fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] == 0) {
    178180                    nGoodPixel ++;
    179181                }
     
    186188                resid->Rx->data.F32[oy][ox] = 0.0;
    187189                resid->Ry->data.F32[oy][ox] = 0.0;
    188                 resid->mask->data.U8[oy][ox] = 1;
     190                resid->mask->data.PS_TYPE_IMAGE_MASK_DATA[oy][ox] = 1;
    189191                continue;
    190192            }
     
    204206                // make this a user option
    205207                if (swing > nSigma) {
    206                     fmasks->data.U8[i] = clippedMask;
    207                 }
    208                 if (!fmasks->data.U8[i]) nKeep++;
     208                    fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = clippedMask;
     209                }
     210                if (!fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i]) nKeep++;
    209211            }
    210212
     
    220222
    221223                if (fabs(resid->Ro->data.F32[oy][ox]) < pixelSN*fluxStats->sampleStdev/sqrt(nKeep)) {
    222                   resid->mask->data.U8[oy][ox] = 1;
    223                 }
    224 
    225                 // fprintf (stderr, "res: %2d %2d : %6.4f  %6.4f  %6.4f   %3d  %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], fluxStats->sampleStdev, fluxStats->sampleStdev/sqrt(nKeep), nKeep, resid->mask->data.U8[oy][ox]);
     224                  resid->mask->data.PS_TYPE_IMAGE_MASK_DATA[oy][ox] = 1;
     225                }
     226
     227                // fprintf (stderr, "res: %2d %2d : %6.4f  %6.4f  %6.4f   %3d  %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], fluxStats->sampleStdev, fluxStats->sampleStdev/sqrt(nKeep), nKeep, resid->mask->data.PS_TYPE_IMAGE_MASK_DATA[oy][ox]);
    226228
    227229            } else {
     
    230232                psVectorInit(B, 0.0);
    231233                for (int i = 0; i < fluxes->n; i++) {
    232                     if (fmasks->data.U8[i]) continue;
     234                    if (fmasks->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
    233235                    B->data.F64[0] += fluxes->data.F32[i]/dfluxes->data.F32[i];
    234236                    B->data.F64[1] += fluxes->data.F32[i]*xC->data.F32[i]/dfluxes->data.F32[i];
     
    260262
    261263                float dRo = sqrt(A->data.F32[0][0]);
    262                 // fprintf (stderr, "res: %2d %2d : %6.4f  %6.4f  %6.4f   %3d  %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], dRo, dRo/sqrt(nKeep), nKeep, resid->mask->data.U8[oy][ox]);
     264                // fprintf (stderr, "res: %2d %2d : %6.4f  %6.4f  %6.4f   %3d  %1d\n", ox, oy, resid->Ro->data.F32[oy][ox], dRo, dRo/sqrt(nKeep), nKeep, resid->mask->data.PS_TYPE_IMAGE_MASK_DATA[oy][ox]);
    263265
    264266                if (fabs(resid->Ro->data.F32[oy][ox]) < pixelSN*dRo/sqrt(nKeep)) {
    265                   resid->mask->data.U8[oy][ox] = 1;
     267                  resid->mask->data.PS_TYPE_IMAGE_MASK_DATA[oy][ox] = 1;
    266268                }
    267269                //resid->weight->data.F32[oy][ox] = XXX;
  • branches/eam_branch_20081230/psphot/src/psphotMaskReadout.c

    r18832 r21087  
    99    // XXX drop the write to recipe and move config into psphotRoughClass?
    1010    // XXX alternatively, define a function to set the psphot recipe masks
    11     psMaskType maskSat  = pmConfigMaskGet("SAT", config); // Mask value for saturated pixels
    12     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MASK.SAT", PS_META_REPLACE, "user-defined mask", maskSat);
     11    psImageMaskType maskSat  = pmConfigMaskGet("SAT", config); // Mask value for saturated pixels
     12    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.SAT", PS_META_REPLACE, "user-defined mask", maskSat);
    1313
    14     psMaskType maskBad  = pmConfigMaskGet("BAD", config); // Mask value for bad pixels
    15     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MASK.BAD", PS_META_REPLACE, "user-defined mask", maskBad);
     14    psImageMaskType maskBad  = pmConfigMaskGet("BAD", config); // Mask value for bad pixels
     15    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.BAD", PS_META_REPLACE, "user-defined mask", maskBad);
    1616
    1717    // generate mask & weight images if they don't already exit
  • branches/eam_branch_20081230/psphot/src/psphotModelBackground.c

    r21072 r21087  
    2323
    2424    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    25     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     25    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    2626    assert (maskVal);
    2727
  • branches/eam_branch_20081230/psphot/src/psphotModelTest.c

    r19881 r21087  
    1313
    1414    // bit-masks to test for good/bad pixels
    15     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     15    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    1616    assert (maskVal);
    1717
    1818    // bit-mask to mark pixels not used in analysis
    19     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     19    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    2020    assert (markVal);
    2121
  • branches/eam_branch_20081230/psphot/src/psphotModelWithPSF.c

    r17396 r21087  
    2020        paramMask = constraint->paramMask;
    2121        if (paramMask != NULL) {
    22             PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_U8, false);
     22          PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_TYPE, false);
    2323            PS_ASSERT_VECTORS_SIZE_EQUAL(params, paramMask, false);
    2424        }
     
    145145        psImageInit (covar, 0.0);
    146146        for (int j = 0, J = 0; j < params->n; j++) {
    147             if (paramMask && (paramMask->data.U8[j])) {
     147            if (paramMask && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[j])) {
    148148                covar->data.F32[j][j] = 1.0;
    149149                continue;
    150150            }
    151151            for (int k = 0, K = 0; k < params->n; k++) {
    152                 if (paramMask && (paramMask->data.U8[k])) continue;
     152                if (paramMask && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[k])) continue;
    153153                covar->data.F32[j][k] = Alpha->data.F32[J][K];
    154154                K++;
     
    197197    PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, false);
    198198    if (paramMask) {
    199         PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_MASK, false);
     199        PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_MASK, false);
    200200    }
    201201
     
    224224            // XXX probably should not skipped masked points:
    225225            // XXX skip if convolution of unmasked pixels will not see this pixel
    226             // if (source->maskObj->data.U8[i][j]) {
     226            // if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) {
    227227            // continue;
    228228            // }
     
    246246
    247247            for (int n = 0; n < params->n; n++) {
    248                 if ((paramMask != NULL) && (paramMask->data.U8[n])) { continue; }
     248                if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; }
    249249                psImage *dmodel = pcm->dmodels->data[n];
    250250                dmodel->data.F32[i][j] = deriv->data.F32[n];
     
    285285            // XXX are we doing the right thing with the mask?
    286286            // skip masked points
    287             if (source->maskObj->data.U8[i][j]) {
     287            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) {
    288288                continue;
    289289            }
     
    308308            // alpha & beta only contain unmasked elements
    309309            for (int n1 = 0, N1 = 0; n1 < params->n; n1++) {
    310                 if ((paramMask != NULL) && (paramMask->data.U8[n1])) continue;
     310                if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n1])) continue;
    311311                psImage *dmodel = pcm->dmodelsConv->data[n1];
    312312                float weight = dmodel->data.F32[i][j] * yweight;
    313313                for (int n2 = 0, N2 = 0; n2 <= n1; n2++) {
    314                     if ((paramMask != NULL) && (paramMask->data.U8[n2])) continue;
     314                    if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n2])) continue;
    315315                    dmodel = pcm->dmodelsConv->data[n2];
    316316                    alpha->data.F32[N1][N2] += weight * dmodel->data.F32[i][j];
     
    357357    for (psS32 n = 0; n < params->n; n++) {
    358358        pcm->dmodels->data[n] = NULL;
    359         if ((paramMask != NULL) && (paramMask->data.U8[n])) { continue; }
     359        if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; }
    360360        pcm->dmodels->data[n] = psImageCopy (NULL, source->pixels, PS_TYPE_F32);
    361361    }
     
    366366    for (psS32 n = 0; n < params->n; n++) {
    367367        pcm->dmodelsConv->data[n] = NULL;
    368         if ((paramMask != NULL) && (paramMask->data.U8[n])) { continue; }
     368        if ((paramMask != NULL) && (paramMask->data.PS_TYPE_VECTOR_MASK_DATA[n])) { continue; }
    369369        pcm->dmodelsConv->data[n] = psImageCopy (NULL, source->pixels, PS_TYPE_F32);
    370370    }
  • branches/eam_branch_20081230/psphot/src/psphotMosaicChip.c

    r18712 r21087  
    2525    }
    2626
    27     psMaskType blankMask = pmConfigMaskGet("BLANK", config);
     27    psImageMaskType blankMask = pmConfigMaskGet("BLANK", config);
    2828
    2929    // mosaic the chip, forcing a deep copy (resulting images are not subimages)
  • branches/eam_branch_20081230/psphot/src/psphotOutput.c

    r20237 r21087  
    7474        for (int j = 0; j < source->pixels->numCols; j++) {
    7575            // skip masked points
    76             if (source->maskObj->data.U8[i][j]) {
     76            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) {
    7777                continue;
    7878            }
     
    8787                     source->pixels->data.F32[i][j],
    8888                     1.0 / source->weight->data.F32[i][j],
    89                      source->maskObj->data.U8[i][j]);
     89                     source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j]);
    9090        }
    9191    }
     
    237237
    238238// XXX add args as needed
    239 bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psMaskType maskVal, psMaskType markVal) {
     239bool psphotDumpPSFStars (pmReadout *readout, pmPSFtry *try, float radius, psImageMaskType maskVal, psImageMaskType markVal) {
    240240
    241241    psphotSaveImage (NULL, readout->image,  "rawstars.fits");
     
    243243    for (int i = 0; i < try->sources->n; i++) {
    244244        // masked for: bad model fit, outlier in parameters
    245         if (try->mask->data.U8[i] & PSFTRY_MASK_ALL)
     245        if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL)
    246246            continue;
    247247
     
    256256        psImageKeepCircle (source->maskObj, x, y, radius, "OR", markVal);
    257257        pmModelSub (source->pixels, source->maskObj, source->modelPSF, PM_MODEL_OP_FULL, maskVal);
    258         psImageKeepCircle (source->maskObj, x, y, radius, "AND", PS_NOT_U8(markVal));
     258        psImageKeepCircle (source->maskObj, x, y, radius, "AND", PS_NOT_IMAGE_MASK(markVal));
    259259    }
    260260
     
    264264
    265265        // masked for: bad model fit, outlier in parameters
    266         if (try->mask->data.U8[i] & PSFTRY_MASK_ALL) continue;
     266        if (try->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] & PSFTRY_MASK_ALL) continue;
    267267
    268268        pmSource *source = try->sources->data[i];
  • branches/eam_branch_20081230/psphot/src/psphotPSFConvModel.c

    r21072 r21087  
    99// modelConv to contain the fitted parameters, and the modelFlux to contain the
    1010// convolved model image.
    11 pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psMaskType maskVal, psMaskType markVal, int psfSize) {
     11pmModel *psphotPSFConvModel (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal, int psfSize) {
    1212   
    1313    // maskVal is used to test for rejected pixels, and must include markVal
     
    7272    // create the minimization constraints
    7373    psMinConstraint *constraint = psMinConstraintAlloc();
    74     constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_U8);
     74    constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK);
    7575    constraint->checkLimits = modelConv->modelLimits;
    7676
     
    7979    int nParams = params->n - 1;
    8080    psVectorInit (constraint->paramMask, 0);
    81     constraint->paramMask->data.U8[PM_PAR_SKY] = 1;
     81    constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[PM_PAR_SKY] = 1;
    8282
    8383    // force the floating parameters to fall within the contraint ranges
     
    9797            fprintf (stderr, "%f ", params->data.F32[i]);
    9898        }
    99         if ((constraint->paramMask != NULL) && constraint->paramMask->data.U8[i])
     99        if ((constraint->paramMask != NULL) && constraint->paramMask->data.PS_TYPE_VECTOR_MASK_DATA[i])
    100100            continue;
    101101        dparams->data.F32[i] = sqrt(covar->data.F32[i][i]);
  • branches/eam_branch_20081230/psphot/src/psphotPetrosian.c

    r17561 r21087  
    11# include "psphotInternal.h"
    22
    3 bool psphotPetrosian (pmSource *source, psMetadata *recipe, psMaskType maskVal) {
     3bool psphotPetrosian (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) {
    44
    55  bool status;
  • branches/eam_branch_20081230/psphot/src/psphotRadialPlot.c

    r15017 r21087  
    6060    for (int iy = 0; iy < source->pixels->numRows; iy++) {
    6161        for (int ix = 0; ix < source->pixels->numCols; ix++) {
    62             if (source->maskObj->data.U8[iy][ix]) {
     62            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) {
    6363                rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ;
    6464                fb->data.F32[nb] = log10(source->pixels->data.F32[iy][ix]);
  • branches/eam_branch_20081230/psphot/src/psphotRadialProfile.c

    r17396 r21087  
    1717}
    1818
    19 bool psphotRadialProfile (pmSource *source, psMetadata *recipe, psMaskType maskVal) {
     19bool psphotRadialProfile (pmSource *source, psMetadata *recipe, psImageMaskType maskVal) {
    2020
    2121    // allocate pmSourceExtendedParameters, if not already defined
     
    5454    for (int iy = 0; iy < source->pixels->numRows; iy++) {
    5555        for (int ix = 0; ix < source->pixels->numCols; ix++) {
    56             if (source->maskObj->data.U8[iy][ix]) continue;
     56            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) continue;
    5757            radius->data.F32[n] = hypot (ix - Xo, iy - Yo) ;
    5858            flux->data.F32[n]   = source->pixels->data.F32[iy][ix];
  • branches/eam_branch_20081230/psphot/src/psphotRadiusChecks.c

    r21072 r21087  
    1919
    2020// call this function whenever you (re)-define the PSF model
    21 bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal)
     21bool psphotCheckRadiusPSF (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal)
    2222{
    2323    psF32 *PAR = model->params->data.F32;
     
    5050}
    5151
    52 bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal, float dR) {
     52bool psphotCheckRadiusPSFBlend (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal, float dR) {
    5353
    5454    psF32 *PAR = model->params->data.F32;
     
    8686
    8787// call this function whenever you (re)-define the EXT model
    88 bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psMaskType markVal) {
     88bool psphotCheckRadiusEXT (pmReadout *readout, pmSource *source, pmModel *model, psImageMaskType markVal) {
    8989
    9090    psF32 *PAR = model->params->data.F32;
  • branches/eam_branch_20081230/psphot/src/psphotReplaceUnfit.c

    r20453 r21087  
    22
    33// replace the flux for sources which failed
    4 bool psphotReplaceUnfitSources (psArray *sources, psMaskType maskVal) {
     4bool psphotReplaceUnfitSources (psArray *sources, psImageMaskType maskVal) {
    55
    66    pmSource *source;
     
    3131
    3232    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    33     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     33    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    3434    assert (maskVal);
    3535
     
    5555
    5656    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    57     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     57    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    5858    assert (maskVal);
    5959
     
    7272
    7373// add source, if the source has been subtracted; do not modify state
    74 bool psphotAddWithTest (pmSource *source, bool useState, psMaskType maskVal) {
     74bool psphotAddWithTest (pmSource *source, bool useState, psImageMaskType maskVal) {
    7575
    7676    // what is current state? (true : add; false : sub)
     
    8383
    8484// sub source, if the source has been added; do not modify state
    85 bool psphotSubWithTest (pmSource *source, bool useState, psMaskType maskVal) {
     85bool psphotSubWithTest (pmSource *source, bool useState, psImageMaskType maskVal) {
    8686
    8787    // what is current state? (true : sub; false : add)
     
    9494
    9595// add or sub source to match recorded state: supply current state as true (add) or false (sub)
    96 bool psphotSetState (pmSource *source, bool curState, psMaskType maskVal) {
     96bool psphotSetState (pmSource *source, bool curState, psImageMaskType maskVal) {
    9797
    9898    // what is desired state? (true : add; false : sub)
  • branches/eam_branch_20081230/psphot/src/psphotRoughClass.c

    r20453 r21087  
    5757
    5858    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    59     psMaskType maskSat = psMetadataLookupU8(&status, recipe, "MASK.SAT"); // Mask value for bad pixels
     59    psImageMaskType maskSat = psMetadataLookupImageMask(&status, recipe, "MASK.SAT"); // Mask value for bad pixels
    6060    assert (maskSat);
    6161
  • branches/eam_branch_20081230/psphot/src/psphotSetMaskBits.c

    r21072 r21087  
    1010bool psphotSetMaskBits (pmConfig *config) {
    1111
    12     psMaskType maskValue;
    13     psMaskType markValue;
     12    psImageMaskType maskValue;
     13    psImageMaskType markValue;
    1414
    1515    if (!pmConfigMaskSetBits (&maskValue, &markValue, config)) {
     
    2626
    2727    // set maskValue and markValue in the psphot recipe
    28     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markValue);
    29     psMetadataAddU8 (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskValue);
     28    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markValue);
     29    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskValue);
    3030
    3131    return true;
  • branches/eam_branch_20081230/psphot/src/psphotSignificanceImage.c

    r21072 r21087  
    44// (S/N)^2.  If FWMH_X,Y have been recorded, use them, otherwise use PEAKS_SMOOTH_SIGMA for the
    55// smoothing kernel.
    6 psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psMaskType maskVal) {
     6psImage *psphotSignificanceImage (pmReadout *readout, psMetadata *recipe, const int pass, psImageMaskType maskVal) {
    77
    88    float SIGMA_SMTH, NSIGMA_SMTH;
     
    110110        for (int i = 0; i < smooth_im->numCols; i++) {
    111111            float value = smooth_im->data.F32[j][i];
    112             if (value < 0 || smooth_wt->data.F32[j][i] <= 0 || (mask->data.U8[j][i] & maskVal)) {
     112            if (value < 0 || smooth_wt->data.F32[j][i] <= 0 || (mask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] & maskVal)) {
    113113                smooth_im->data.F32[j][i] = 0.0;
    114114            } else {
  • branches/eam_branch_20081230/psphot/src/psphotSkyReplace.c

    r20453 r21087  
    1717    // select the corresponding images
    1818    psF32 **image = readout->image->data.F32;
    19     psU8  **mask  = readout->mask->data.U8;
     19    psImageMaskType  **mask  = readout->mask->data.PS_TYPE_IMAGE_MASK_DATA;
    2020    psF32 **back  = background->image->data.F32;
    2121
  • branches/eam_branch_20081230/psphot/src/psphotSourceFits.c

    r19881 r21087  
    2121}
    2222
    23 bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal, psMaskType markVal) {
     23bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) {
    2424
    2525    float x, y, dR;
     
    146146}
    147147
    148 bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal, psMaskType markVal) {
     148bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) {
    149149
    150150    double chiTrend;
     
    207207}
    208208
    209 bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psMaskType maskVal, psMaskType markVal) {
     209bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psImageMaskType maskVal, psImageMaskType markVal) {
    210210
    211211    bool okEXT, okDBL;
     
    317317
    318318// fit a double PSF source to an extended blob
    319 psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psMaskType maskVal, psMaskType markVal) {
     319psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psImageMaskType maskVal, psImageMaskType markVal) {
    320320
    321321    float dx, dy;
     
    369369}
    370370
    371 pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psMaskType maskVal, psMaskType markVal) {
     371pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, pmModelType modelType, psImageMaskType maskVal, psImageMaskType markVal) {
    372372
    373373    NfitEXT ++;
  • branches/eam_branch_20081230/psphot/src/psphotSourcePlots.c

    r19869 r21087  
    77
    88    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    9     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     9    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    1010    assert (maskVal);
    1111
  • branches/eam_branch_20081230/psphot/src/psphotSourceSize.c

    r20938 r21087  
    33
    44static float psphotModelContour(const psImage *image, const psImage *weight, const psImage *mask,
    5                                 psMaskType maskVal, const pmModel *model, float Ro);
    6 
    7 bool psphotMaskCosmicRay_Old (pmSource *source, psMaskType maskVal, psMaskType crMask);
    8 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psMaskType maskVal, psMaskType crMask);
     5                                psImageMaskType maskVal, const pmModel *model, float Ro);
     6
     7bool psphotMaskCosmicRay_Old (pmSource *source, psImageMaskType maskVal, psImageMaskType crMask);
     8bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psImageMaskType maskVal, psImageMaskType crMask);
    99
    1010// we need to call this function after sources have been fitted to the PSF model and
     
    2121
    2222    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    23     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     23    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    2424    assert (maskVal);
    2525
    2626    // bit to mask the cosmic-ray pixels
    27     psMaskType crMask  = pmConfigMaskGet("CR", config); // Mask value for cosmic rays
     27    psImageMaskType crMask  = pmConfigMaskGet("CR", config); // Mask value for cosmic rays
    2828
    2929    float CR_NSIGMA_LIMIT = psMetadataLookupF32 (&status, recipe, "PSPHOT.CR.NSIGMA.LIMIT");
     
    6363        psF32 **resid  = source->pixels->data.F32;
    6464        psF32 **weight = source->weight->data.F32;
    65         psU8 **mask    = source->maskObj->data.U8;
     65        psImageMaskType **mask    = source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA;
    6666
    6767        // check for extendedness: measure the delta flux significance at the 1 sigma contour
     
    191191// deviations?
    192192static float psphotModelContour(const psImage *image, const psImage *weight, const psImage *mask,
    193                                 psMaskType maskVal, const pmModel *model, float Ro)
     193                                psImageMaskType maskVal, const pmModel *model, float Ro)
    194194{
    195195    psF32 *PAR = model->params->data.F32; // Model parameters
     
    260260}
    261261
    262 bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psMaskType maskVal, psMaskType crMask) {
     262bool psphotMaskCosmicRay_New (psImage *mask, pmSource *source, psImageMaskType maskVal, psImageMaskType crMask) {
    263263
    264264    // replace the source flux
     
    294294       
    295295        for (int ix = xs; ix < xe; ix++) {
    296             mask->data.U8[iy][ix] |= crMask;
     296            mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask;
    297297        }
    298298    }
     
    300300}
    301301
    302 bool psphotMaskCosmicRay_Old (pmSource *source, psMaskType maskVal, psMaskType crMask) {
     302bool psphotMaskCosmicRay_Old (pmSource *source, psImageMaskType maskVal, psImageMaskType crMask) {
    303303
    304304    source->mode |= PM_SOURCE_MODE_CR_LIMIT;
     
    320320        float SN = pixels->data.F32[yo][ix] / sqrt(weight->data.F32[yo][ix]);
    321321        if (SN > SN_LIMIT) {
    322             mask->data.U8[yo][ix] |= crMask;
     322            mask->data.PS_TYPE_IMAGE_MASK_DATA[yo][ix] |= crMask;
    323323        }
    324324    }
     
    326326        float SN = pixels->data.F32[yo][ix] / sqrt(weight->data.F32[yo][ix]);
    327327        if (SN > SN_LIMIT) {
    328             mask->data.U8[yo][ix] |= crMask;
     328            mask->data.PS_TYPE_IMAGE_MASK_DATA[yo][ix] |= crMask;
    329329        }
    330330    }
     
    339339
    340340            bool valid = false;
    341             valid |= (mask->data.U8[iy+1][ix] & crMask);
    342             valid |= (ix > 0) ? (mask->data.U8[iy+1][ix-1] & crMask) : 0;
    343             valid |= (ix <= mask->numCols) ? (mask->data.U8[iy+1][ix+1] & crMask) : 0;
     341            valid |= (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix] & crMask);
     342            valid |= (ix > 0) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix-1] & crMask) : 0;
     343            valid |= (ix <= mask->numCols) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy+1][ix+1] & crMask) : 0;
    344344
    345345            if (!valid) continue;
    346             mask->data.U8[iy][ix] |= crMask;
     346            mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask;
    347347        }
    348348    }
     
    355355
    356356            bool valid = false;
    357             valid |= (mask->data.U8[iy-1][ix] & crMask);
    358             valid |= (ix > 0) ? (mask->data.U8[iy-1][ix-1] & crMask) : 0;
    359             valid |= (ix <= mask->numCols) ? (mask->data.U8[iy-1][ix+1] & crMask) : 0;
     357            valid |= (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix] & crMask);
     358            valid |= (ix > 0) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix-1] & crMask) : 0;
     359            valid |= (ix <= mask->numCols) ? (mask->data.PS_TYPE_IMAGE_MASK_DATA[iy-1][ix+1] & crMask) : 0;
    360360
    361361            if (!valid) continue;
    362             mask->data.U8[iy][ix] |= crMask;
     362            mask->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix] |= crMask;
    363363        }
    364364    }
  • branches/eam_branch_20081230/psphot/src/psphotSourceStats.c

    r20453 r21087  
    1010
    1111    // bit-masks to test for good/bad pixels
    12     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT");
     12    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT");
    1313    assert (maskVal);
    1414
    1515    // bit-mask to mark pixels not used in analysis
    16     psMaskType markVal = psMetadataLookupU8(&status, recipe, "MARK.PSPHOT");
     16    psImageMaskType markVal = psMetadataLookupImageMask(&status, recipe, "MARK.PSPHOT");
    1717    assert (markVal);
    1818
  • branches/eam_branch_20081230/psphot/src/psphotSubtractBackground.c

    r20453 r21087  
    2828
    2929    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    30     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     30    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    3131    assert (maskVal);
    3232
  • branches/eam_branch_20081230/psphot/src/psphotTestPSF.c

    r21072 r21087  
    111111        psImageKeepCircle (source->mask, x, y, RADIUS, "OR", markVal);
    112112        status = pmSourceFitModel (source, model, PM_SOURCE_FIT_EXT);
    113         psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_U8(markVal));
     113        psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_IMAGE_MASK(markVal));
    114114
    115115        // write fitted parameters to file
  • branches/eam_branch_20081230/psphot/src/psphotTestSourceOutput.c

    r14655 r21087  
    8080                float oy = yBin*(iy + 0.5 + image->row0 - yCenter) + yResidCenter;
    8181
    82                 psU8 mflux = 0;
     82                psImageMaskType mflux = 0;
    8383                double Fo = 0.0;
    8484                double Fx = 0.0;
  • branches/eam_branch_20081230/psphot/src/psphotVisual.c

    r20938 r21087  
    5151        ALLOCATE (image.data2d[iy], float, image.Nx);
    5252        for (int ix = 0; ix < image.Nx; ix++) {
    53             image.data2d[iy][ix] = inImage->data.U8[iy][ix];
     53            image.data2d[iy][ix] = inImage->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix];
    5454        }
    5555    }
     
    813813
    814814    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    815     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     815    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    816816    assert (maskVal);
    817817
     
    973973
    974974    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    975     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     975    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    976976    assert (maskVal);
    977977
     
    10971097}
    10981098
    1099 bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psMaskType maskVal) {
     1099bool psphotVisualPlotRadialProfile (int myKapa, pmSource *source, psImageMaskType maskVal) {
    11001100
    11011101    Graphdata graphdata;
     
    11181118    for (int iy = 0; iy < source->pixels->numRows; iy++) {
    11191119        for (int ix = 0; ix < source->pixels->numCols; ix++) {
    1120             if (source->maskObj->data.U8[iy][ix]) {
     1120            if (source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[iy][ix]) {
    11211121                // rb->data.F32[nb] = hypot (ix + 0.5 - Xo, iy + 0.5 - Yo) ;
    11221122                rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ;
     
    12271227    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    12281228    bool status;
    1229     psMaskType maskVal = psMetadataLookupU8(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
     1229    psImageMaskType maskVal = psMetadataLookupImageMask(&status, recipe, "MASK.PSPHOT"); // Mask value for bad pixels
    12301230    assert (maskVal);
    12311231
Note: See TracChangeset for help on using the changeset viewer.