Changeset 1060 for trunk


Ignore:
Timestamp:
06/07/06 16:24:27 (18 years ago)
Author:
mar637
Message:

Tracking changes in PKSreader/writer for MOPS support.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/STFiller.cpp

    r999 r1060  
    1818#include <casa/Quanta/Unit.h>
    1919#include <casa/Arrays/ArrayMath.h>
     20#include <casa/Arrays/ArrayLogical.h>
    2021#include <casa/Utilities/Regex.h>
    2122
     
    8384  // Create reader and fill in values for arguments
    8485  String format;
    85   Vector<Bool> beams;
    86   if ( (reader_ = getPKSreader(inName, 0, 0, format, beams, nIF_,
    87                               nChan_, nPol_, haveBase, haveSpectra,
    88                               haveXPol_)) == 0 )  {
     86  Vector<Bool> beams, ifs;
     87  Vector<uInt> nchans,npols;
     88  if ( (reader_ = getPKSreader(inName, 0, 0, format, beams, ifs,
     89                              nchans, npols, haveXPol_,haveBase, haveSpectra
     90                              )) == 0 )  {
    8991    throw(AipsError("Creation of PKSreader failed"));
    9092  }
     
    9597    return;
    9698  }
    97 
    9899  nBeam_ = beams.nelements();
     100  nIF_ = ifs.nelements();
    99101  // Get basic parameters.
    100   if ( haveXPol_ ) {
     102  if ( anyEQ(haveXPol_, True) ) {
    101103    pushLog("Cross polarization present");
    102     nPol_ += 2;                          // Convert Complex -> 2 Floats
     104    for (uInt i=0; i< npols.nelements();++i) {
     105      if (npols[i] < 3) npols[i] += 2;// Convert Complex -> 2 Floats
     106    }
    103107  }
    104108  if (header_) delete header_;
    105109  header_ = new STHeader();
    106   header_->nchan = nChan_;
    107   header_->npol = nPol_;
     110  header_->nchan = max(nchans);
     111  header_->npol = max(npols);
    108112  header_->nbeam = nBeam_;
    109113
     
    133137    header_->obstype = String("fswitch");
    134138  }
    135 
    136139  // Determine Telescope and set brightness unit
    137140
     
    147150  // *** header_->frequnit = "Hz"
    148151  // Apply selection criteria.
    149 
    150152  Vector<Int> ref;
    151   Vector<Bool> beamSel(nBeam_,True);
    152   Vector<Bool> IFsel(nIF_,True);
    153 
    154153  ifOffset_ = 0;
    155154  if (whichIF>=0) {
    156155    if (whichIF>=0 && whichIF<nIF_) {
    157       IFsel = False;
    158       IFsel(whichIF) = True;
     156      ifs = False;
     157      ifs(whichIF) = True;
    159158      header_->nif = 1;
    160159      nIF_ = 1;
     
    172171  if (whichBeam>=0) {
    173172    if (whichBeam>=0 && whichBeam<nBeam_) {
    174       beamSel = False;
    175       beamSel(whichBeam) = True;
     173      beams = False;
     174      beams(whichBeam) = True;
    176175      header_->nbeam = 1;
    177176      nBeam_ = 1;
     
    187186  Vector<Int> start(nIF_, 1);
    188187  Vector<Int> end(nIF_, 0);
    189   reader_->select(beamSel, IFsel, start, end, ref, True, haveXPol_);
     188  reader_->select(beams, ifs, start, end, ref, True, haveXPol_[0], False);
    190189  table_->setHeader(*header_);
    191190}
     
    319318      row.put(table_->table().nrow()-1, rec);
    320319    }
    321     if ( haveXPol_ ) {
     320    if ( haveXPol_[0] ) {
    322321      // no tsys given for xpol, so emulate it
    323322      tsysvec = sqrt(tsys[0]*tsys[1]);
  • trunk/src/STFiller.h

    r996 r1060  
    101101  casa::Int nIF_, nBeam_, nPol_, nChan_;
    102102  casa::uInt ifOffset_, beamOffset_;
    103   casa::Bool haveXPol_;
     103  casa::Vector<casa::Bool> haveXPol_;
    104104};
    105105
  • trunk/src/STWriter.cpp

    r999 r1060  
    131131  // Extract the header from the table.
    132132  STHeader hdr = in->getHeader();
    133   const Int nPol  = hdr.npol;
    134   const Int nChan = hdr.nchan;
     133  //const Int nPol  = hdr.npol;
     134  //const Int nChan = hdr.nchan;
     135  int nIF = in->nif();
     136  Vector<uInt> nPol(nIF),nChan(nIF);
     137  Vector<Bool> havexpol(nIF);
     138  for (int i=0;i<nIF;++i) {
     139    nPol(i) = in->npol();
     140    nChan(i) = in->nchan(i);
     141    havexpol(i) = nPol(i) > 2;
     142  }
    135143
    136144  const Table table = in->table();
     
    140148  // Create the output file and write static data.
    141149  Int status;
    142   Bool havexpol = Bool(in->npol() > 2);
    143   status = writer_->create(filename, hdr.observer, hdr.project,
     150  //Bool havexpol = Bool(in->npol() > 2);
     151  status = writer_->create(String(filename), hdr.observer, hdr.project,
    144152                               hdr.antennaname, hdr.antennaposition,
    145153                               hdr.obstype, hdr.equinox, hdr.freqref,
    146                                nChan, nPol, False, havexpol);
     154                               nChan, nPol, havexpol, False);
    147155  if ( status ) {
    148156    throw(AipsError("Failed to create output file"));
Note: See TracChangeset for help on using the changeset viewer.