IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 3, 2010, 8:50:52 AM (16 years ago)
Author:
eugene
Message:

updates from trunk

Location:
branches/simtest_nebulous_branches
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/simtest_nebulous_branches

  • branches/simtest_nebulous_branches/psModules

  • branches/simtest_nebulous_branches/psModules/src/imcombine/pmSubtractionIO.c

    r23378 r27840  
    33#include <string.h>
    44
     5#include "pmErrorCodes.h"
    56#include "pmHDU.h"
    67#include "pmHDUUtils.h"
     
    6667    }
    6768    if (regions->n == 0) {
    68         psError(PS_ERR_BAD_PARAMETER_VALUE, true, "No subtraction regions found.");
     69        // We wrote everything we could find
    6970        psFree(regions);
    70         return false;
     71        return true;
    7172    }
    7273
     
    8081        while ((item = psMetadataGetAndIncrement(iter))) {
    8182            assert(item->type == PS_DATA_UNKNOWN);
    82             // Set the normalisation dimensions, since these will be otherwise unavailable when reading the
    83             // images by scans.
    8483            pmSubtractionKernels *kernel = item->data.V; // Kernel used in subtraction
    85             kernel->numCols = ro->image->numCols;
    86             kernel->numRows = ro->image->numRows;
    87 
    8884            kernels = psArrayAdd(kernels, ARRAY_BUFFER, kernel);
    8985        }
     
    9288
    9389    if (regions->n != kernels->n) {
    94         psError(PS_ERR_BAD_PARAMETER_SIZE, true, "Number of regions (%ld) and kernels (%ld) don't match.\n",
     90        psError(PM_ERR_PROG, true, "Number of regions (%ld) and kernels (%ld) don't match.\n",
    9591                regions->n, kernels->n);
    9692        psFree(regions);
     
    10399    psArray *rows = psArrayAlloc(num); // Array of FITS table rows
    104100    for (int i = 0; i < num; i++) {
    105         psMetadata *row = psMetadataAlloc(); // Row of interest
    106         rows->data[i] = psMemIncrRefCounter(row);
     101        psMetadata *row = rows->data[i] = psMetadataAlloc(); // Row of interest
    107102
    108103        psRegion *region = regions->data[i]; // Region of interest
     
    126121                         kernel->bgOrder);
    127122        psMetadataAddS32(row, PS_LIST_TAIL, NAME_MODE,  0, "Matching mode (enum)", kernel->mode);
    128         psMetadataAddS32(row, PS_LIST_TAIL, NAME_COLS,  0, "Number of columns", kernel->numCols);
    129         psMetadataAddS32(row, PS_LIST_TAIL, NAME_ROWS,  0, "Number of rows", kernel->numRows);
    130123        if (kernel->mode == PM_SUBTRACTION_MODE_1 || kernel->mode == PM_SUBTRACTION_MODE_2) {
    131124            psMetadataAddVector(row, PS_LIST_TAIL, NAME_SOL1, 0, "Solution vector 1", kernel->solution1);
     
    172165
    173166    if (!psFitsWriteTable(fits, header, rows, EXTNAME_KERNEL)) {
    174         psError(PS_ERR_IO, false, "Unable to write subtraction kernel to FITS table.");
     167        psError(psErrorCodeLast(), false, "Unable to write subtraction kernel to FITS table.");
    175168        psFree(header);
    176169        psFree(rows);
     
    182175
    183176    if (image && !psFitsWriteImage(fits, header, image, 0, EXTNAME_IMAGE)) {
    184         psError(PS_ERR_IO, false, "Unable to write subtraction kernel image.");
     177        psError(psErrorCodeLast(), false, "Unable to write subtraction kernel image.");
    185178        psFree(header);
    186179        psFree(rows);
     
    208201        thisView->readout = i;
    209202        if (!pmReadoutWriteSubtractionKernels(readout, file->fits)) {
    210             psError(PS_ERR_IO, false, "Failed to write %dth readout", i);
     203            psError(psErrorCodeLast(), false, "Failed to write %dth readout", i);
    211204            psFree(thisView);
    212205            return false;
     
    231224        thisView->cell = i;
    232225        if (!pmCellWriteSubtractionKernels(cell, thisView, file, config)) {
    233             psError(PS_ERR_IO, false, "Failed to write %dth cell", i);
     226            psError(psErrorCodeLast(), false, "Failed to write %dth cell", i);
    234227            psFree(thisView);
    235228            return false;
     
    254247        thisView->chip = i;
    255248        if (!pmChipWriteSubtractionKernels(chip, thisView, file, config)) {
    256             psError(PS_ERR_IO, false, "Failed to write %dth chip", i);
     249            psError(psErrorCodeLast(), false, "Failed to write %dth chip", i);
    257250            psFree(thisView);
    258251            return false;
     
    272265
    273266    if (!psFitsMoveExtName(fits, EXTNAME_KERNEL)) {
    274         psError(PS_ERR_IO, false, "Unable to move to subtraction kernel table.");
     267        psError(psErrorCodeLast(), false, "Unable to move to subtraction kernel table.");
    275268        return false;
    276269    }
     
    278271    psArray *table = psFitsReadTable(fits); // Table of interest
    279272    if (!table) {
    280         psError(PS_ERR_IO, false, "Unable to read FITS table");
     273        psError(psErrorCodeLast(), false, "Unable to read FITS table");
    281274        return false;
    282275    }
     
    289282        TARGET = psMetadataLookup##SUFFIX(&mdok, row, NAME); \
    290283        if (!mdok) { \
    291             psError(PS_ERR_UNKNOWN, false, "Unable to find column %s in subtraction kernel table.", NAME); \
     284            psError(PM_ERR_PROG, false, "Unable to find column %s in subtraction kernel table.", NAME); \
    292285            psFree(table); \
    293286            return false; \
     
    318311
    319312        TABLE_LOOKUP(int, S32, bg,      NAME_BG);
    320         TABLE_LOOKUP(int, S32, numCols, NAME_COLS);
    321         TABLE_LOOKUP(int, S32, numRows, NAME_ROWS);
    322313
    323314        TABLE_LOOKUP(float, F32, mean,      NAME_MEAN);
     
    325316        TABLE_LOOKUP(int,   S32, numStamps, NAME_NUMSTAMPS);
    326317
    327         pmSubtractionKernels *kernels = pmSubtractionKernelsFromDescription(description, bg, mode);
    328         kernels->numCols = numCols;
    329         kernels->numRows = numRows;
     318        pmSubtractionKernels *kernels = pmSubtractionKernelsFromDescription(description, bg, *region, mode);
    330319        kernels->mean = mean;
    331320        kernels->rms = rms;
     
    336325            kernels->solution1 = psMemIncrRefCounter(psMetadataLookupPtr(&mdok, row, NAME_SOL1));
    337326            if (!mdok) {
    338                 psError(PS_ERR_UNKNOWN, false, "Unable to find column %s in subtraction kernel table.",
     327                psError(PM_ERR_PROG, false, "Unable to find column %s in subtraction kernel table.",
    339328                        NAME_SOL1);
    340329                psFree(kernels);
     
    346335            kernels->solution1 = psMemIncrRefCounter(psMetadataLookupPtr(&mdok, row, NAME_SOL1));
    347336            if (!mdok) {
    348                 psError(PS_ERR_UNKNOWN, false, "Unable to find column %s in subtraction kernel table.",
     337                psError(PM_ERR_PROG, false, "Unable to find column %s in subtraction kernel table.",
    349338                        NAME_SOL1);
    350339                psFree(kernels);
     
    354343            kernels->solution2 = psMemIncrRefCounter(psMetadataLookupPtr(&mdok, row, NAME_SOL2));
    355344            if (!mdok) {
    356                 psError(PS_ERR_UNKNOWN, false, "Unable to find column %s in subtraction kernel table.",
     345                psError(PM_ERR_PROG, false, "Unable to find column %s in subtraction kernel table.",
    357346                        NAME_SOL2);
    358347                psFree(kernels);
     
    390379        pmReadout *readout = cell->readouts->data[i];
    391380        thisView->readout = i;
    392         pmReadoutReadSubtractionKernels(readout, file->fits);
     381        if (!pmReadoutReadSubtractionKernels(readout, file->fits)) {
     382            psError(psErrorCodeLast(), false, "Unable to read subtraction kernels from cell");
     383            psFree(thisView);
     384            return false;
     385        }
    393386        if (!readout->data_exists) {
    394387            continue;
     
    421414        pmCell *cell = chip->cells->data[i];
    422415        thisView->cell = i;
    423         pmCellReadSubtractionKernels(cell, thisView, file, config);
    424         if (!cell->data_exists) {
     416        if (!pmCellReadSubtractionKernels(cell, thisView, file, config)) {
     417            psError(psErrorCodeLast(), false, "Unable to read subtraction kernels from cell");
     418            psFree(thisView);
     419            return false;
     420        }
     421         if (!cell->data_exists) {
    425422            continue;
    426423        }
     
    430427
    431428    if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) {
    432         psError(PS_ERR_IO, false, "Failed to read concepts for chip.\n");
     429        psError(psErrorCodeLast(), false, "Failed to read concepts for chip.\n");
    433430        return false;
    434431    }
     
    451448        pmChip *chip = fpa->chips->data[i];
    452449        thisView->chip = i;
    453         pmChipReadSubtractionKernels(chip, thisView, file, config);
     450        if (!pmChipReadSubtractionKernels(chip, thisView, file, config)) {
     451            psError(psErrorCodeLast(), false, "Unable to read subtraction kernels from chip");
     452            psFree(thisView);
     453            return false;
     454        }
    454455    }
    455456    psFree(thisView);
    456457
    457458    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
    458         psError(PS_ERR_IO, false, "Failed to read concepts for fpa.\n");
     459        psError(psErrorCodeLast(), false, "Failed to read concepts for fpa.\n");
    459460        return false;
    460461    }
     
    475476    if (view->chip == -1) {
    476477        if (!pmFPAWriteSubtractionKernels(fpa, view, file, config)) {
    477             psError(PS_ERR_IO, false, "Failed to write subtraction kernels from fpa");
     478            psError(psErrorCodeLast(), false, "Failed to write subtraction kernels from fpa");
    478479            psFree(fpa);
    479480            return false;
     
    484485
    485486    if (view->chip >= fpa->chips->n) {
    486         psError(PS_ERR_UNKNOWN, false, "Writing chip == %d (>= chips->n == %ld)", view->chip, fpa->chips->n);
     487        psError(PM_ERR_PROG, true, "Writing chip == %d (>= chips->n == %ld)", view->chip, fpa->chips->n);
    487488        psFree(fpa);
    488489        return false;
     
    492493    if (view->cell == -1) {
    493494        if (!pmChipWriteSubtractionKernels(chip, view, file, config)) {
    494             psError(PS_ERR_IO, false, "Failed to write objects from chip");
     495            psError(psErrorCodeLast(), false, "Failed to write objects from chip");
    495496            psFree(fpa);
    496497            return false;
     
    501502
    502503    if (view->cell >= chip->cells->n) {
    503         psError(PS_ERR_UNKNOWN, false, "Writing cell == %d (>= cells->n == %ld)",
     504        psError(PM_ERR_PROG, true, "Writing cell == %d (>= cells->n == %ld)",
    504505                view->cell, chip->cells->n);
    505506        psFree(fpa);
     
    510511    if (view->readout == -1) {
    511512        if (!pmCellWriteSubtractionKernels(cell, view, file, config)) {
    512             psError(PS_ERR_IO, false, "Failed to write objects from cell");
     513            psError(psErrorCodeLast(), false, "Failed to write objects from cell");
    513514            psFree(fpa);
    514515            return false;
     
    519520
    520521    if (view->readout >= cell->readouts->n) {
    521         psError(PS_ERR_UNKNOWN, false, "Writing readout == %d (>= readouts->n == %ld)",
     522        psError(PM_ERR_PROG, true, "Writing readout == %d (>= readouts->n == %ld)",
    522523                view->readout, cell->readouts->n);
    523524        psFree(fpa);
     
    527528
    528529    if (!pmReadoutWriteSubtractionKernels(readout, file->fits)) {
    529         psError(PS_ERR_IO, false, "Failed to write objects from readout %d", view->readout);
     530        psError(psErrorCodeLast(), false, "Failed to write objects from readout %d", view->readout);
    530531        psFree(fpa);
    531532        return false;
Note: See TracChangeset for help on using the changeset viewer.