IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27263


Ignore:
Timestamp:
Mar 12, 2010, 9:30:14 AM (16 years ago)
Author:
eugene
Message:

psf io needs to include mask if defined

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20100225/psModules/src/objects/pmPSF_IO.c

    r25979 r27263  
    470470        psMetadataAddS32 (header, PS_LIST_TAIL, "YCENTER", 0, "", psf->residuals->yCenter);
    471471
    472         // write the residuals as three planes of the image
    473         // this call creates an extension with NAXIS3 = 3
     472        // write the residuals as planes of the image
     473        psArray *images = psArrayAllocEmpty (1);
     474        psArrayAdd (images, 1, psf->residuals->Ro);  // z = 0 is Ro
     475
    474476        if (psf->residuals->Rx) {
    475             // this call creates an extension with NAXIS3 = 3
    476             psArray *images = psArrayAllocEmpty (3);
    477             psArrayAdd (images, 1, psf->residuals->Ro);
    478477            psArrayAdd (images, 1, psf->residuals->Rx);
    479478            psArrayAdd (images, 1, psf->residuals->Ry);
    480 
    481             psFitsWriteImageCube (file->fits, header, images, residName);
    482             psFree (images);
    483         } else {
    484             // this call creates an extension with NAXIS3 = 1
    485             psFitsWriteImage(file->fits, header, psf->residuals->Ro, 0, residName);
    486         }
     479        }
     480
     481        // note that all N plane are implicitly of the same type, so we convert the mask
     482        if (psf->residuals->mask) {
     483            psImage *mask = psImageCopy (NULL, psf->residuals->mask, psf->residuals->Ro->type.type);
     484            psArrayAdd (images, 1, mask);
     485            psFree (mask);
     486        }
     487
     488        psFitsWriteImageCube (file->fits, header, images, residName);
     489        psFree (images);
    487490        psFree (residName);
    488491        psFree (header);
     
    937940        psRegion fullImage = {0, 0, 0, 0};
    938941        psFitsReadImageBuffer(psf->residuals->Ro, file->fits, fullImage, 0); // Desired pixels
    939         if (Nz > 1) {
    940             assert (Nz == 3);
     942
     943        // note that all N plane are implicitly of the same type, so we convert the mask
     944        psImage *mask = psImageCopy(NULL, psf->residuals->mask, psf->residuals->Ro->type.type);
     945        psImageInit (psf->residuals->mask, 0);
     946        psImageInit (psf->residuals->Rx, 0.0);
     947        psImageInit (psf->residuals->Ry, 0.0);
     948        switch (Nz) {
     949          case 1: // Ro only
     950            break;
     951          case 2: // Ro and mask
     952            psFitsReadImageBuffer(mask, file->fits, fullImage, 1); // Desired pixels
     953            psImageCopy (psf->residuals->mask, mask, PM_TYPE_RESID_MASK);
     954            break;
     955          case 3: // Ro, Rx and Ry, no mask
    941956            psFitsReadImageBuffer(psf->residuals->Rx, file->fits, fullImage, 1); // Desired pixels
    942957            psFitsReadImageBuffer(psf->residuals->Ry, file->fits, fullImage, 2); // Desired pixels
    943         }
    944         // XXX notice that we are not saving the resid->mask
     958            break;
     959          case 4: // Ro, Rx, Ry, and mask:
     960            psFitsReadImageBuffer(psf->residuals->Rx, file->fits, fullImage, 1); // Desired pixels
     961            psFitsReadImageBuffer(psf->residuals->Ry, file->fits, fullImage, 2); // Desired pixels
     962            psFitsReadImageBuffer(mask, file->fits, fullImage, 3); // Desired pixels
     963            psImageCopy (psf->residuals->mask, mask, PM_TYPE_RESID_MASK);
     964            break;
     965        }
     966        psFree (mask);
    945967    }
    946968
Note: See TracChangeset for help on using the changeset viewer.