Changeset 21272
- Timestamp:
- Feb 2, 2009, 3:32:32 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_20090128/psModules/src/camera/pmFPARead.c
r21269 r21272 195 195 196 196 return naxis3; 197 } 198 199 // Determine whether a FITS file contains covariance matrices 200 static bool hduCovariance(pmHDU *hdu, // Header data unit 201 psFits *fits // FITS file 202 ) 203 { 204 if (!psFitsMoveExtName(fits, hdu->extname)) { 205 psError(PS_ERR_IO, false, "Unable to move to extension %s", hdu->extname); 206 return false; 207 } 208 // Need to explicitly read the header, since the HDU may not contain the variance header 209 psMetadata *header = psFitsReadHeader(NULL, fits); // Header 210 if (!header) { 211 psError(PS_ERR_IO, false, "Unable to read variance header."); 212 return false; 213 } 214 bool mdok; // Status of MD lookup 215 bool covar = psMetadataLookupBool(&mdok, header, PM_HDU_COVARIANCE_KEYWORD); // Got covariance? 216 psFree(header); 217 return covar; 197 218 } 198 219 … … 521 542 switch (type) { 522 543 case FPA_READ_TYPE_MASK: { 523 pmHDU *phu = pmHDUGetHighest(cell->parent->parent, cell->parent, cell); // Primary header 524 if (!pmConfigMaskReadHeader(config, phu->header)) { 525 psError(PS_ERR_IO, false, "Unable to determine mask bits"); 544 // Need to explicitly read the header, since what's in the pmHDU may not correspond to the mask 545 psMetadata *header = psFitsReadHeader(NULL, fits); 546 if (!header) { 547 psError(PS_ERR_IO, false, "Unable to read mask header."); 526 548 return false; 527 549 } 550 if (!pmConfigMaskReadHeader(config, header)) { 551 psError(PS_ERR_IO, false, "Unable to determine mask bits"); 552 psFree(header); 553 return false; 554 } 555 psFree(header); 528 556 bad = pmConfigMaskGet("BAD", config); 529 557 break; … … 1142 1170 return false; 1143 1171 } 1144 return pmCellReadCovariance(cell, fits); 1172 pmHDU *hdu = pmHDUFromCell(cell); // Header data unit 1173 if (hduCovariance(hdu, fits)) { 1174 return pmCellReadCovariance(cell, fits); 1175 } 1176 return true; 1145 1177 } 1146 1178 … … 1153 1185 return false; 1154 1186 } 1155 return pmChipReadCovariance(chip, fits); 1187 pmHDU *hdu = pmHDUFromChip(chip); // Header data unit 1188 if (hduCovariance(hdu, fits)) { 1189 return pmChipReadCovariance(chip, fits); 1190 } 1191 return true; 1156 1192 } 1157 1193 … … 1164 1200 return false; 1165 1201 } 1166 return pmFPAReadCovariance(fpa, fits); 1202 pmHDU *hdu = pmHDUFromFPA(fpa); // Header data unit 1203 if (hduCovariance(hdu, fits)) { 1204 return pmFPAReadCovariance(fpa, fits); 1205 } 1206 return true; 1167 1207 } 1168 1208
Note:
See TracChangeset
for help on using the changeset viewer.
