IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 13, 2006, 12:26:09 PM (19 years ago)
Author:
Paul Price
Message:

Doing fringe processing using the pmFPAfile framework, with FRINGE type for the reference fringes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppImage/src/ppImageLoop.c

    r9871 r9952  
    66#include "ppImage.h"
    77#include "ppImageDetrendFringe.h"
     8
    89
    910bool ppImageLoop (pmConfig *config, ppImageOptions *options) {
     
    4546        if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) return false;
    4647
    47         const char *chipName = psMetadataLookupStr(NULL, chip->concepts, "CHIP.NAME"); // Name of chip
    48         psArray *fringeRef = NULL;      // Array of array of fringe statistics for reference --- for each cell
    49         psArray *fringeSci = NULL;      // Array of fringe statistics for science --- for each cell
    50         if (options->doFringe) {
    51             fringeRef = psArrayAlloc(chip->cells->n);
    52             fringeSci = psArrayAlloc(chip->cells->n);
    53         }
    54 
    5548        while ((cell = pmFPAviewNextCell (view, input->fpa, 1)) != NULL) {
    5649            psLogMsg ("ppImageLoop", 4, "Cell %d: %x %x\n", view->cell, cell->file_exists, cell->process);
    5750            if (!cell->process || !cell->file_exists) { continue; }
    5851            if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) return false;
    59             const char *cellName = psMetadataLookupStr(NULL, cell->concepts, "CELL.NAME"); // Name of cell
    60 
    61             if (options->doFringe) {
    62                 pmFPAfile *fringeFile = psMetadataLookupPtr(&status, config->files, "PPIMAGE.FRINGE");
    63                 if (!status || !fringeFile) {
    64                     psErrorStackPrint(stderr, "Can't find fringe data!\n");
    65                     exit(EXIT_FAILURE);
    66                 }
    67 
    68                 psString fringeExt = NULL; // Fringe extension name
    69                 psStringAppend(&fringeExt, "FRINGE_%s_%s", chipName, cellName);
    70                 fringeRef->data[view->cell] = pmFringesReadFits(NULL, fringeFile->fits, fringeExt);
    71                 psFree(fringeExt);
    72             }
    7352
    7453            // process each of the readouts
     
    8059                if (!ppImageDetrendReadout (config, options, view)) return false;
    8160
    82                 if (options->doFringe) {
    83                     ppImageDetrendFringeMeasure((pmFringeStats**)(&fringeSci->data[view->cell]),
    84                                                 fringeRef->data[view->cell], readout, options);
    85                 }
    8661            }
    8762        }
    8863
    8964        // Solve the fringe system
    90         pmFringeScale *fringeSoln = NULL; // Solution for the fringes
    9165        if (options->doFringe) {
    92             fringeSoln = ppImageDetrendFringeSolve(fringeSci, fringeRef, options);
    93             psFree(fringeSci);
    94             psFree(fringeRef);
     66            pmChip *fringe = pmFPAfileThisChip(config->files, view, "PPIMAGE.FRINGE");
     67            if (!ppImageDetrendFringeSolve(chip, fringe, options)) {
     68                return false;
     69            }
    9570        }
    9671
     
    10378            if (options->doFringe) {
    10479                psTrace("ppImage", 3, "Applying fringe correction...\n");
    105                 bool mdok;                          // Status of MD lookup
    106                 pmFPAfile *fringeFile = psMetadataLookupPtr(&mdok, config->files, "PPIMAGE.FRINGE");
    107                 pmCell *fringeCell = pmFPAviewThisCell(view, fringeFile->fpa);
    108                 psImage *fringe = ppImageDetrendFringeGenerate(cell, fringeCell, fringeSoln);
     80                pmCell *fringeCell = pmFPAfileThisCell(config->files, view, "PPIMAGE.FRINGE");
     81                psImage *fringe = ppImageDetrendFringeGenerate(cell, fringeCell);
    10982                while ((readout = pmFPAviewNextReadout (view, input->fpa, 1)) != NULL) {
    11083                    if (!readout->data_exists) { continue; }
     
    12598            if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) return false;
    12699        }
    127         psFree(fringeSoln);
    128100
    129101        ppImageMosaicChip (config, view, "PPIMAGE.OUTPUT.CHIP", "PPIMAGE.OUTPUT");
     
    163135    if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) return false;
    164136
    165     psFree (view);
     137    psFree(view);
     138
    166139    return true;
    167140}
Note: See TracChangeset for help on using the changeset viewer.