- Timestamp:
- Mar 12, 2010, 9:30:14 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20100225/psModules/src/objects/pmPSF_IO.c
r25979 r27263 470 470 psMetadataAddS32 (header, PS_LIST_TAIL, "YCENTER", 0, "", psf->residuals->yCenter); 471 471 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 474 476 if (psf->residuals->Rx) { 475 // this call creates an extension with NAXIS3 = 3476 psArray *images = psArrayAllocEmpty (3);477 psArrayAdd (images, 1, psf->residuals->Ro);478 477 psArrayAdd (images, 1, psf->residuals->Rx); 479 478 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); 487 490 psFree (residName); 488 491 psFree (header); … … 937 940 psRegion fullImage = {0, 0, 0, 0}; 938 941 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 941 956 psFitsReadImageBuffer(psf->residuals->Rx, file->fits, fullImage, 1); // Desired pixels 942 957 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); 945 967 } 946 968
Note:
See TracChangeset
for help on using the changeset viewer.
