IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 29, 2006, 10:55:42 AM (20 years ago)
Author:
magnier
Message:

fixed up output logic for files and views

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel10_ifa/psModules/src/objects/pmFPAviewWriteObjects.c

    r6712 r6726  
    33 *  @author EAM, IfA; GLG, MHPCC
    44 *
    5  *  @version $Revision: 1.1.2.4 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-28 02:14:56 $
     5 *  @version $Revision: 1.1.2.5 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-29 20:55:42 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    1414#include <string.h>
    1515#include "pslib.h"
     16#include "psAdditionals.h"
    1617#include "pmHDU.h"
    1718#include "pmFPA.h"
     
    2728#include "pmFPAviewObjectsIO.h"
    2829
    29 bool psFitsWriteHeaderNotImage (psFits *fits, psMetadata *header)
    30 {
    31 
    32     int status = 0;
    33     char fitsErr[1024];
    34 
    35     psMetadataItem *mdi = NULL;
    36     mdi = psMetadataLookup (header, "NAXIS");
    37     if (mdi != NULL) {
    38         mdi->data.S32 = 0;
    39         mdi->type = PS_DATA_S32;
    40     }
    41 
    42     fits_create_img (fits->fd, SHORT_IMG, 0, NULL, &status);
    43 
    44     if (status != 0) {
    45         fits_get_errstatus (status, fitsErr);
    46         psError (PS_ERR_IO, true, PS_ERRORTEXT_psFits_WRITE_FAILED, fitsErr);
    47         exit (2);
    48     }
    49 
    50     psFitsWriteHeader (header, fits);
    51 
    52     return true;
    53 }
    54 
    5530// Given a FITS file pointer, read the table of object data
    56 bool pmFPAviewWriteObjects (pmFPAview *view, pmFPAfile *file)
     31bool pmFPAviewWriteObjects (const pmFPAview *view, pmFPAfile *file)
    5732{
    5833
     
    9469
    9570// read in all chip-level Objects files for this FPA
    96 bool pmFPAWriteObjects (pmFPA *fpa, pmFPAview *view, pmFPAfile *file)
     71bool pmFPAWriteObjects (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file)
    9772{
    9873
     
    10681
    10782// read in all cell-level Objects files for this chip
    108 bool pmChipWriteObjects (pmChip *chip, pmFPAview *view, pmFPAfile *file)
     83bool pmChipWriteObjects (pmChip *chip, const pmFPAview *view, pmFPAfile *file)
    10984{
    11085
     
    11893
    11994// read in all readout-level Objects files for this cell
    120 bool pmCellWriteObjects (pmCell *cell, pmFPAview *view, pmFPAfile *file)
     95bool pmCellWriteObjects (pmCell *cell, const pmFPAview *view, pmFPAfile *file)
    12196{
    12297
     
    130105
    131106// read in all readout-level Objects files for this cell
    132 bool pmReadoutWriteObjects (pmReadout *readout, pmFPAview *view, pmFPAfile *file)
     107bool pmReadoutWriteObjects (pmReadout *readout, const pmFPAview *view, pmFPAfile *file)
    133108{
    134109
     
    139114    pmHDU *hdu;
    140115    pmHDU *phu;
     116    psMetadata *updates;
     117    psMetadata *outhead;
    141118
    142119    psArray *sources = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.SOURCES");
    143     return true;
    144120
    145121    switch (file->type) {
     
    166142        hdu = pmFPAviewThisHDU (view, file->fpa);
    167143        filename = pmFPAfileNameFromRule (file->filerule, file, view);
    168         pmSourcesWriteCMP (sources, filename, hdu->header);
     144
     145        // copy the header to an output header, add the output header data
     146        outhead = psMetadataCopy (NULL, hdu->header);
     147
     148        // check/fix first line (must be SIMPLE = F)
     149        psMetadataItem *item = psMetadataGet (outhead, PS_LIST_HEAD);
     150        if (strcmp (item->name, "SIMPLE") && strcmp (item->name, "XTENSION")) {
     151            psErrorStackPrint(stderr, "invalid header: first line is neither SIMPLE nor XTENSION\n");
     152            exit(EXIT_FAILURE);
     153        }
     154        if (!strcmp (item->name, "XTENSION")) {
     155            psMetadataRemoveIndex (outhead, PS_LIST_HEAD);
     156        }
     157        psMetadataAddBool (outhead, PS_LIST_HEAD, "SIMPLE", PS_META_REPLACE, "CMP file, not simple", false);
     158
     159        // copy over the entries saved in the
     160        updates = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.HEADER");
     161        psMetadataCopy (outhead, updates);
     162
     163        pmSourcesWriteCMP (sources, filename, outhead);
     164        psFree (outhead);
    169165        psFree (filename);
    170166        break;
     
    184180
    185181            // CMF always has extensions
    186             psMetadataAdd (phu->header, PS_LIST_TAIL, "EXTEND", PS_DATA_BOOL | PS_META_REPLACE, "this file has extensions", true);
    187             psFitsWriteHeaderNotImage (file->fits, phu->header);
     182            outhead = psMetadataCopy (NULL, phu->header);
     183            psMetadataAdd (outhead, PS_LIST_TAIL, "EXTEND", PS_DATA_BOOL | PS_META_REPLACE, "this file has extensions", true);
     184            psFitsWriteHeaderNotImage (file->fits, outhead);
    188185            file->phu = phu->header;
    189186            psTrace ("pmFPAfile", 5, "wrote phu %s (type: %d)\n", file->filename, file->type);
    190 
    191             file->phu = phu->header;
     187            psFree (outhead);
    192188        }
    193189
     
    196192            // determine name for header extension
    197193            headname = pmFPAfileNameFromRule (file->extxtra, file, view);
    198             psMetadataAddStr (hdu->header, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "extension name", headname);
    199             psFitsWriteHeaderNotImage (file->fits, hdu->header);
     194            outhead = psMetadataCopy (NULL, hdu->header);
     195            psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "extension name", headname);
     196            psFitsWriteHeaderNotImage (file->fits, outhead);
    200197            psTrace ("pmFPAfile", 5, "wrote ext head %s (type: %d)\n", file->filename, file->type);
    201198            file->header = hdu->header;
     199            psFree (outhead);
    202200            psFree (headname);
    203201        }
     
    205203        // write this table to disk
    206204        dataname = pmFPAfileNameFromRule (file->extrule, file, view);
    207         pmSourcesWriteCMF (file->fits, sources, hdu->header, dataname);
     205        updates = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.HEADER");
     206        pmSourcesWriteCMF (file->fits, sources, updates, dataname);
     207        psTrace ("pmFPAfile", 5, "wrote ext data %s (type: %d)\n", file->filename, file->type);
    208208        psFree (dataname);
    209209        break;
Note: See TracChangeset for help on using the changeset viewer.