Changeset 13515 for trunk/ppStack/src/ppStackReadout.c
- Timestamp:
- May 24, 2007, 2:28:58 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ppStack/src/ppStackReadout.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppStack/src/ppStackReadout.c
r13513 r13515 10 10 11 11 #define ARRAY_BUFFER 16 // Number to add to array at a time 12 13 14 #define WEIGHT 1.0 // Weighting15 12 16 13 bool ppStackReadout(pmConfig *config, const pmFPAview *view) … … 35 32 // Get the input sources 36 33 psArray *stack = psArrayAllocEmpty(ARRAY_BUFFER); // The stack of inputs 37 psMetadataIterator * inputIter = psMetadataIteratorAlloc(config->files, PS_LIST_HEAD,38 "^PPSTACK.INPUT$"); // Iterator over input files39 psMetadataItem * item;// Item from iteration34 psMetadataIterator *fileIter = psMetadataIteratorAlloc(config->files, PS_LIST_HEAD, 35 "^PPSTACK.INPUT$"); // Iterator over input files 36 psMetadataItem *fileItem; // Item from iteration 40 37 psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN); // Statistics 41 38 psRandom *rng = psRandomAlloc(0, PS_RANDOM_TAUS); // Random number generator 42 39 int fileNum = 0; // Number of file 43 40 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 file41 while ((fileItem = psMetadataGetAndIncrement(fileIter))) { 42 assert(fileItem->type == PS_DATA_UNKNOWN); 43 pmFPAfile *inputFile = fileItem->data.V; // An input file 47 44 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 48 49 49 50 // Brain-dead background subtraction … … 52 53 psFree(stats); 53 54 psFree(rng); 54 psFree( inputIter);55 psFree(fileIter); 55 56 psFree(stack); 56 57 psFree(outRO); … … 58 59 } 59 60 (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)); 60 64 61 65 // Normalise each input by the exposure time … … 66 70 psFree(stats); 67 71 psFree(rng); 68 psFree( inputIter);72 psFree(fileIter); 69 73 psFree(outRO); 70 74 psFree(stack); … … 73 77 totExposure += exposure; // Total exposure time 74 78 (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 77 80 psArrayAdd(stack, ARRAY_BUFFER, data); 78 81 psFree(data); // Drop reference 79 82 fileNum++; 80 83 } 81 psFree( inputIter);84 psFree(fileIter); 82 85 psFree(stats); 83 86 psFree(rng);
Note:
See TracChangeset
for help on using the changeset viewer.
