Changeset 28243
- Timestamp:
- Jun 7, 2010, 9:45:30 AM (16 years ago)
- Location:
- trunk/ppTranslate/src
- Files:
-
- 4 edited
-
ppMops.h (modified) (2 diffs)
-
ppMopsDetections.c (modified) (4 diffs)
-
ppMopsRead.c (modified) (6 diffs)
-
ppMopsWrite.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppTranslate/src/ppMops.h
r28212 r28243 28 28 29 29 typedef struct { 30 psMetadata *header; // FITS header 30 psString component; // Component name 31 psMetadata *header; // FITS header (extension names *.hdr) 31 32 psString raBoresight, decBoresight; // RA,Dec of telescope boresight 32 33 psString filter; // Filter for exposure … … 39 40 int naxis1, naxis2; // Size of image 40 41 long num; // Number of detections 42 psMetadata *psfHeader; // FITS header (extension names *.psf) 41 43 psMetadata *table; // Columns of data 42 44 psVector *x, *y; // Image coordinates 43 45 psVector *ra, *dec; // Sky coordinates 46 psMetadata *deteffHeader; // Detection efficiency header (extension names *.deteff) 47 psMetadata *deteffTable; // Detection efficiency table 44 48 } ppMopsDetections; 45 49 -
trunk/ppTranslate/src/ppMopsDetections.c
r28212 r28243 10 10 static void mopsDetectionsFree(ppMopsDetections *det) 11 11 { 12 psFree(det->component); 12 13 psFree(det->raBoresight); 13 14 psFree(det->decBoresight); … … 19 20 psFree(det->ra); 20 21 psFree(det->dec); 22 psFree(det->deteffHeader); 23 psFree(det->deteffTable); 21 24 22 25 return; … … 28 31 psMemSetDeallocator(det, (psFreeFunc)mopsDetectionsFree); 29 32 33 det->component = NULL; 30 34 det->raBoresight = NULL; 31 35 det->decBoresight = NULL; … … 45 49 det->ra = NULL; 46 50 det->dec = NULL; 51 det->deteffHeader = NULL; 52 det->deteffTable = NULL; 47 53 48 54 return det; -
trunk/ppTranslate/src/ppMopsRead.c
r28218 r28243 4 4 5 5 #include <stdio.h> 6 #include <string.h> 6 7 #include <pslib.h> 7 8 … … 16 17 psArray *detections = psArrayAlloc(num); // Array of detections, to return 17 18 for (int i = 0; i < num; i++) { 18 psFits *fits = psFitsOpen(inNames->data[i], "r"); // FITS file 19 const char *name = inNames->data[i]; // File name 20 psFits *fits = psFitsOpen(name, "r"); // FITS file 19 21 if (!fits) { 20 22 psError(PS_ERR_IO, false, "Unable to open input %d", i); … … 41 43 continue; 42 44 } 43 ppMopsDetections *det = ppMopsDetectionsAlloc(); 45 ppMopsDetections *det = detections->data[i] = ppMopsDetectionsAlloc(); 46 det->component = psStringNCopy(name, strrchr(name, '.') - name); // Strip off extension 44 47 det->header = header; 45 48 det->num = size; … … 61 64 det->naxis2 = psMetadataLookupS32(NULL, header, "IMNAXIS2"); 62 65 66 det->psfHeader = psFitsReadHeader(NULL, fits); 67 if (!det->psfHeader) { 68 psError(psErrorCodeLast(), false, "Unable to read header %d", i); 69 return false; 70 } 63 71 psMetadata *table = det->table = psFitsReadTableAllColumns(fits); // Table of interest 64 72 if (!table) { … … 66 74 return false; 67 75 } 68 psFitsClose(fits);69 76 70 77 psVector *ra = psMetadataLookupVector(NULL, table, "RA_PSF"); … … 80 87 } 81 88 82 psTrace("ppMops.read", 2, "Read %ld rows from %s\n", det->num, (const char*)inNames->data[i]);89 psTrace("ppMops.read", 2, "Read %ld rows from %s\n", det->num, det->component); 83 90 84 detections->data[i] = det; 91 if (!psFitsMoveExtName(fits, "SkyChip.deteff")) { 92 psWarning("No detection efficiencies included in %s", det->component); 93 psErrorStackPrint(stderr, "No detection efficiencies included in %s", det->component); 94 psErrorClear(); 95 continue; 96 } 97 98 det->deteffHeader = psFitsReadHeader(NULL, fits); 99 if (!det->deteffHeader) { 100 psWarning("Unable to read detection efficiency header in %s", det->component); 101 psErrorClear(); 102 continue; 103 } 104 det->deteffTable = psFitsReadTableAllColumns(fits); 105 if (!det->deteffTable) { 106 psFree(det->deteffHeader); 107 det->deteffHeader = NULL; 108 psWarning("Unable to read detection efficiency table in %s", det->component); 109 psErrorClear(); 110 continue; 111 } 112 psTrace("ppMops.read", 2, "Read detection efficiency from %s\n", det->component); 113 psFitsClose(fits); 85 114 } 86 115 -
trunk/ppTranslate/src/ppMopsWrite.c
r28212 r28243 46 46 ppMopsDetections *det = detections->data[i]; // Detections for extension 47 47 psTrace("ppMops.write", 1, "Writing extension %d to %s", i, args->output); 48 if (!psFitsWriteTableAllColumns(fits, det->header, det->table, NULL)) { 49 psError(psErrorCodeLast(), false, "Unable to write extension %d", i); 48 psString hdrName = NULL, psfName = NULL, deteffName = NULL; 49 psStringAppend(&hdrName, "%s.hdr", det->component); 50 psStringAppend(&psfName, "%s.psf", det->component); 51 psStringAppend(&deteffName, "%s.deteff", det->component); 52 53 if (!psFitsWriteBlank(fits, det->header, hdrName)) { 54 psError(psErrorCodeLast(), false, "Unable to write header %d", i); 50 55 return false; 51 56 } 57 if (!psFitsWriteTableAllColumns(fits, det->psfHeader, det->table, psfName)) { 58 psError(psErrorCodeLast(), false, "Unable to write table %d", i); 59 return false; 60 } 61 if (det->deteffHeader && det->deteffTable && 62 !psFitsWriteTableAllColumns(fits, det->deteffHeader, det->deteffTable, deteffName)) { 63 psError(psErrorCodeLast(), false, "Unable to write detection efficiency %d", i); 64 return false; 65 } 66 psFree(hdrName); 67 psFree(psfName); 68 psFree(deteffName); 52 69 } 53 70 psFitsClose(fits);
Note:
See TracChangeset
for help on using the changeset viewer.
