IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 18, 2010, 12:49:05 PM (16 years ago)
Author:
eugene
Message:

merging changes from trunk into branches/pap

Location:
branches/pap
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/pap

  • branches/pap/ppSub/src/ppSubMakePSF.c

    r27698 r28003  
    106106    // save the resulting PSF information on the pmFPAfile PSPHOT.PSF.LOAD
    107107    pmFPAfile *psfFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.PSF.LOAD"); // PSF file
    108     if (!ppSubCopyPSF (psfFile, photFile, view)) {
     108    if (!ppSubCopyPSF(psfFile, photFile, view)) {
    109109        psErrorStackPrint(stderr, "PSF was not generated");
    110110        psWarning("PSF was not generated --- suspect bad data quality.");
     
    121121}
    122122
    123 bool ppSubCopyPSF (pmFPAfile *output, pmFPAfile *input, pmFPAview *view) {
    124 
    125     bool mdok = false;
    126 
     123bool ppSubCopyPSF(pmFPAfile *output, pmFPAfile *input, pmFPAview *view)
     124{
    127125    pmChip *inputChip   = pmFPAviewThisChip(view, input->fpa); // Chip with PSF info
    128126    pmChip *outputChip  = pmFPAviewThisChip(view, output->fpa); // Chip to store PSF info
     
    134132        pmCell *outputCell  = pmFPAviewThisCell(view, output->fpa);
    135133        outputRO = pmReadoutAlloc(outputCell);
    136         outputRO->image = psMemIncrRefCounter (inputRO->image);
     134        outputRO->image = psMemIncrRefCounter(inputRO->image);
    137135    }
    138136
    139     // copy the PSF-related data to PSPHOT.PSF.LOAD for safe-keeping
    140     psMetadata *psfRegions = psMetadataAlloc();
    141 
    142     int nRegions = psMetadataLookupS32 (&mdok, inputRO->analysis, "PSF.CLUMP.NREGIONS");
    143     if (!nRegions) {
    144         psErrorStackPrint(stderr, "No PSF available");
    145         return false;
     137    // Copy the PSF-related data
     138    psMetadataIterator *iter = psMetadataIteratorAlloc(inputRO->analysis, PS_LIST_HEAD, "^PSF\\.CLUMP.*");
     139    psMetadataItem *item;               // Item from iteration
     140    while ((item = psMetadataGetAndIncrement(iter))) {
     141        psMetadataAddItem(outputRO->analysis, item, PS_LIST_TAIL, PS_META_REPLACE);
    146142    }
    147     psMetadataAddS32 (psfRegions, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", nRegions);
    148 
    149     for (int i = 0; i < nRegions; i++) {
    150         char fieldName[80];
    151         snprintf (fieldName, 80, "PSF.CLUMP.REGION.%03d", i);
    152         psMetadata *regionMD = psMetadataLookupPtr (&mdok, inputRO->analysis, fieldName);
    153         if (!regionMD) {
    154             psWarning ("missing psf clump region metadata for entry %d", i);
    155             continue;
    156         }
    157         psMetadataAddMetadata (psfRegions, PS_LIST_TAIL, fieldName, PS_META_REPLACE, "psf clump region", regionMD);
    158     }
    159 
    160     // XXX why am I replacing the entire analysis MD?
    161     psFree(outputRO->analysis);
    162     outputRO->analysis = psfRegions;
     143    psFree(iter);
    163144
    164145    // copy the PSF model data
     
    169150    }
    170151
    171     psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE, "PSF from ppSubMakePSF", psf);
     152    psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE,
     153                     "PSF from ppSubMakePSF", psf);
    172154
    173155    return true;
Note: See TracChangeset for help on using the changeset viewer.