IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 24, 2007, 2:28:58 PM (19 years ago)
Author:
Paul Price
Message:

Get arguments from a single MDC file instead of an annoying number of files with vectors and filenames.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackReadout.c

    r13513 r13515  
    1010
    1111#define ARRAY_BUFFER 16                 // Number to add to array at a time
    12 
    13 
    14 #define WEIGHT 1.0                      // Weighting
    1512
    1613bool ppStackReadout(pmConfig *config, const pmFPAview *view)
     
    3532    // Get the input sources
    3633    psArray *stack = psArrayAllocEmpty(ARRAY_BUFFER); // The stack of inputs
    37     psMetadataIterator *inputIter = psMetadataIteratorAlloc(config->files, PS_LIST_HEAD,
    38                                                             "^PPSTACK.INPUT$"); // Iterator over input files
    39     psMetadataItem *item;               // Item from iteration
     34    psMetadataIterator *fileIter = psMetadataIteratorAlloc(config->files, PS_LIST_HEAD,
     35                                                           "^PPSTACK.INPUT$"); // Iterator over input files
     36    psMetadataItem *fileItem;           // Item from iteration
    4037    psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN); // Statistics
    4138    psRandom *rng = psRandomAlloc(0, PS_RANDOM_TAUS); // Random number generator
    4239    int fileNum = 0;                    // Number of file
    4340    float totExposure = 0.0;            // Total exposure time
    44     while ((item = psMetadataGetAndIncrement(inputIter))) {
    45         assert(item->type == PS_DATA_UNKNOWN);
    46         pmFPAfile *inputFile = item->data.V; // An input file
     41    while ((fileItem = psMetadataGetAndIncrement(fileIter))) {
     42        assert(fileItem->type == PS_DATA_UNKNOWN);
     43        pmFPAfile *inputFile = fileItem->data.V; // An input file
    4744        pmReadout *ro = pmFPAviewThisReadout(view, inputFile->fpa); // Corresponding readout
     45
     46        float seeing = psMetadataLookupF32(NULL, inputFile->fpa->analysis, "PPSTACK.SEEING"); // Seeing FWHM
     47        float weight = psMetadataLookupF32(NULL, inputFile->fpa->analysis, "PPSTACK.WEIGHT"); // Rel. weight
     48        float scale = psMetadataLookupF32(NULL, inputFile->fpa->analysis, "PPSTACK.SCALE"); // Rel. scale
    4849
    4950        // Brain-dead background subtraction
     
    5253            psFree(stats);
    5354            psFree(rng);
    54             psFree(inputIter);
     55            psFree(fileIter);
    5556            psFree(stack);
    5657            psFree(outRO);
     
    5859        }
    5960        (void)psBinaryOp(ro->image, ro->image, "-", psScalarAlloc(stats->robustMedian, PS_TYPE_F32));
     61
     62        // Apply scaling
     63        (void)psBinaryOp(ro->image, ro->image, "*", psScalarAlloc(1.0 / scale, PS_TYPE_F32));
    6064
    6165        // Normalise each input by the exposure time
     
    6670            psFree(stats);
    6771            psFree(rng);
    68             psFree(inputIter);
     72            psFree(fileIter);
    6973            psFree(outRO);
    7074            psFree(stack);
     
    7377        totExposure += exposure;        // Total exposure time
    7478        (void)psBinaryOp(ro->image, ro->image, "/", psScalarAlloc(exposure, PS_TYPE_F32));
    75         pmStackData *data = pmStackDataAlloc(ro, seeing ? seeing->data.F32[fileNum] : 0.0,
    76                                              WEIGHT); // Data to stack
     79        pmStackData *data = pmStackDataAlloc(ro, seeing, weight); // Data to stack
    7780        psArrayAdd(stack, ARRAY_BUFFER, data);
    7881        psFree(data);                   // Drop reference
    7982        fileNum++;
    8083    }
    81     psFree(inputIter);
     84    psFree(fileIter);
    8285    psFree(stats);
    8386    psFree(rng);
Note: See TracChangeset for help on using the changeset viewer.