- Timestamp:
- May 3, 2010, 8:41:49 AM (16 years ago)
- Location:
- branches/tap_branches
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/tap_branches
- Property svn:mergeinfo changed
-
branches/tap_branches/ppSub/src
- Property svn:ignore
-
old new 13 13 ppSubErrorCodes.c 14 14 ppSubVersionDefinitions.h 15 ppSubConvolve
-
- Property svn:ignore
-
branches/tap_branches/ppSub/src/ppSubReadoutPhotometry.c
r24932 r27838 24 24 bool ppSubReadoutPhotometry(const char *name, ppSubData *data) 25 25 { 26 bool mdok = false; 27 26 28 psAssert(data, "Require processing data"); 27 29 pmConfig *config = data->config; // Configuration … … 42 44 } 43 45 44 // The PSF (measured in ppSubMakePSF) is stored on the chip->analysis of PSPHOT.INPUT 45 // In order to use an incoming PSF, it must be stored on the chip->analysis of PSPHOT.PSF.LOAD 46 // select the view of interest 46 47 pmFPAview *view = ppSubViewReadout(); // View to readout 47 pmChip *psfInputChip = pmFPAfileThisChip(config->files, view, "PSPHOT.INPUT"); // Chip with PSF48 psAssert (psfInputChip, "should have been generated for ppSubMakePSF");49 pmChip *psfLoadChip = pmFPAfileThisChip(config->files, view, "PSPHOT.PSF.LOAD"); // Chip to have PSF50 psAssert (psfLoadChip, "PSPHOT.PSF.LOAD should have been defined in ppSubCamera");51 pmPSF *psf = psMetadataLookupPtr(NULL, psfInputChip->analysis, "PSPHOT.PSF"); // PSF for photometry52 if (!psf) {53 psErrorStackPrint(stderr, "No PSF available");54 psWarning("No PSF available --- suspect bad data quality.");55 ppSubDataQuality(data, psErrorCodeLast(), PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV);56 return true;57 }58 psMetadataAddPtr(psfLoadChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE,59 "PSF from ppSubMakePSF", psf);60 61 bool mdok = false;62 48 63 49 // psphotReadoutMinimal performs the photometry analysis on PSPHOT.INPUT; we need to move 64 // around the pointers so PSPHOT.INPUT corresponds to the output image; previously, it was 65 // equivalent to the minuend image. 66 pmReadout *inRO = pmFPAfileThisReadout(config->files, view, name); // Readout with image and sources 67 if (psMetadataLookup(inRO->analysis, "PSPHOT.SOURCES")) { 68 psMetadataRemoveKey(inRO->analysis, "PSPHOT.SOURCES"); 69 } 70 50 // around the pointers so PSPHOT.INPUT corresponds to the output image of interest (on one 51 // pass this is the subtraction image, in another it is negative of the subtraction 71 52 pmFPAfile *photFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.INPUT"); // Photometry file 72 53 pmFPAfile *inFile = psMetadataLookupPtr(&mdok, config->files, name); // Input file 73 54 if (!pmFPACopy(photFile->fpa, inFile->fpa)) { 74 psError(P S_ERR_UNKNOWN, false, "Unable to copy FPA for photometry");55 psError(PPSUB_ERR_CONFIG, false, "Unable to copy FPA for photometry"); 75 56 psFree(view); 76 57 return false; 77 58 } 59 60 // drop references to PSPHOT.DETECTIONS on both of these (why is this needed for both??) 78 61 pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout to photometer 79 if (psMetadataLookup(photRO->analysis, "PSPHOT.SOURCES")) { 80 psMetadataRemoveKey(photRO->analysis, "PSPHOT.SOURCES"); 62 if (psMetadataLookup(photRO->analysis, "PSPHOT.DETECTIONS")) { 63 psMetadataRemoveKey(photRO->analysis, "PSPHOT.DETECTIONS"); 64 } 65 pmReadout *inRO = pmFPAfileThisReadout(config->files, view, name); // Readout with image and sources 66 if (psMetadataLookup(inRO->analysis, "PSPHOT.DETECTIONS")) { 67 psMetadataRemoveKey(inRO->analysis, "PSPHOT.DETECTIONS"); 81 68 } 82 69 83 psMetadataAddPtr(photRO->parent->parent->analysis, PS_LIST_TAIL, "PSPHOT.PSF", 84 PS_META_REPLACE | PS_DATA_UNKNOWN, "Point-spread function", data->psf); 70 // grab the PSF information from the pmFPAfile PSPHOT.PSF.LOAD 71 pmFPAfile *psfFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.PSF.LOAD"); // PSF file 72 ppSubCopyPSF (photFile, psfFile, view); 85 73 86 psFree(photRO->analysis); 87 photRO->analysis = psMetadataAlloc(); 74 // psphotSaveImage (photFile->fpa->hdu->header, photRO->image, "findsrc.im.fits"); 75 // psphotSaveImage (photFile->fpa->hdu->header, photRO->variance, "findsrc.wt.fits"); 76 // psphotSaveImage (photFile->fpa->hdu->header, photRO->mask, "findsrc.mk.fits"); 77 78 // erase the overlays from a previous psphot-related step 79 if (pmVisualIsVisual()) { 80 // psphotVisualEraseOverlays (1, "all"); 81 } 88 82 89 83 if (!psphotReadoutMinimal(config, view)) { … … 96 90 97 91 // If no sources were found, there's no error, but we want to trigger 'bad quality' 98 p sArray *sources = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.SOURCES"); // Sources99 if (! sources) {92 pmDetections *detections = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.DETECTIONS"); // Sources 93 if (!detections) { 100 94 ppSubDataQuality(data, PSPHOT_ERR_DATA, PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV); 101 95 } 96 psArray *sources = detections->allSources; 97 psAssert (sources, "missing sources?"); 102 98 103 99 if (data->stats) { … … 114 110 115 111 if (!data->quality) { 116 if (!psMetadataCopySingle(inRO->analysis, photRO->analysis, "PSPHOT. SOURCES")) {117 psError(P S_ERR_UNEXPECTED_NULL, false, "Unable to copy PSPHOT.SOURCES");112 if (!psMetadataCopySingle(inRO->analysis, photRO->analysis, "PSPHOT.DETECTIONS")) { 113 psError(PPSUB_ERR_PROG, false, "Unable to copy PSPHOT.DETECTIONS"); 118 114 return false; 119 115 } 120 116 if (!psMetadataCopySingle(inRO->analysis, photRO->analysis, "PSPHOT.HEADER")) { 121 psError(P S_ERR_UNEXPECTED_NULL, false, "Unable to copy PSPHOT.HEADER");117 psError(PPSUB_ERR_PROG, false, "Unable to copy PSPHOT.HEADER"); 122 118 return false; 119 } 120 if (!psMetadataCopySingle(inRO->analysis, photRO->analysis, PM_DETEFF_ANALYSIS)) { 121 psError(PPSUB_ERR_PROG, false, "Unable to copy Detection Efficiency"); 122 return false; 123 } 124 125 // Ensure photometry information is put in the header 126 pmHDU *hdu = pmHDUFromReadout(inRO); // HDU for readout 127 if (hdu) { 128 psMetadata *photHeader = psMetadataLookupMetadata(NULL, inRO->analysis, "PSPHOT.HEADER"); // Header 129 hdu->header = psMetadataCopy(hdu->header, photHeader); 123 130 } 124 131 } … … 130 137 } 131 138 132 133 134 135 136 139 #ifdef TESTING 137 140 // Record data about sources: not everything gets into the output CMF files 138 141 { 139 142 pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout with the sources 140 psArray *sources = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.SOURCES"); // Sources 143 pmDetections *detections = psMetadataLookupPtr(NULL, photRO->analysis, "PSPHOT.DETECTIONS"); // Sources 144 psArray *sources = detections->allSources; 141 145 FILE *sourceFile = fopen("sources.dat", "w"); // File for sources 142 146 fprintf(sourceFile,
Note:
See TracChangeset
for help on using the changeset viewer.
