Changeset 754


Ignore:
Timestamp:
11/29/05 14:15:44 (18 years ago)
Author:
mar637
Message:

Bug fix: SDFreqTable did not copy user settings for unit and frame

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/SDContainer.h

    r483 r754  
    7575  // Add a new entry or match an existing one. Returns the index into
    7676  // the table
    77   casa::uInt addFrequency(casa::Double refPix, casa::Double refVal, 
    78                           casa::Double inc);
     77  casa::uInt addFrequency(casa::Double refPix, casa::Double refVal,
     78                          casa::Double inc);
    7979
    8080  casa::Int length() const { return nFreq_;}  // # of stored Frequencies
     
    8787  casa::Float equinox() const { return equinox_; }
    8888  casa::String refFrame() const { return refFrame_; }
    89  
    90   void restFrequencies(casa::Vector<casa::Double>& rfs,
    91                        casa::String& rfunit ) const ;
     89  casa::String baseRefFrame() const { return baseRefFrame_; }
     90  casa::String unit() const { return unit_; }
     91
     92  void restFrequencies(casa::Vector<casa::Double>& rfs,
     93                       casa::String& rfunit ) const ;
    9294
    9395  // Set attributes
    9496  void setEquinox(casa::Float eq) { equinox_ = eq; }
    9597  void setRefFrame(const casa::String& reff) { refFrame_ = reff; }
     98  void setBaseRefFrame(const casa::String& reff) { baseRefFrame_ = reff; }
     99  void setUnit(const casa::String& un) { unit_= un; }
    96100
    97101  void deleteRestFrequencies() {restFreqs_.resize(0);}
    98102  casa::uInt addRestFrequency(casa::Double);
    99   void setRestFrequencyUnit(const casa::String& theunit) 
     103  void setRestFrequencyUnit(const casa::String& theunit)
    100104  { restFreqUnit_ = theunit;}
    101105
     
    106110  casa::Vector<casa::Double> increment_;        // Hz
    107111  casa::Float equinox_;
     112  casa::String unit_;
    108113  casa::String refFrame_;
     114  casa::String baseRefFrame_;
    109115  casa::Vector<casa::Double> restFreqs_;        // Hz
    110116  casa::String restFreqUnit_;
     
    115121
    116122public:
    117   SDContainer(casa::uInt nBeam, casa::uInt nIF, casa::uInt nPol, 
    118               casa::uInt nChan);
     123  SDContainer(casa::uInt nBeam, casa::uInt nIF, casa::uInt nPol,
     124              casa::uInt nChan);
    119125  SDContainer(casa::IPosition shp);
    120126
     
    124130
    125131  casa::Bool setSpectrum(const casa::Matrix<casa::Float>& spec,
    126                    casa::uInt whichBeam, casa::uInt whichIF);
     132                   casa::uInt whichBeam, casa::uInt whichIF);
    127133  casa::Bool setSpectrum(const casa::Matrix<casa::Float>& spec,
    128                          const casa::Vector<casa::Complex>& cSpec,
     134                         const casa::Vector<casa::Complex>& cSpec,
    129135                         casa::uInt whichBeam, casa::uInt whichIF);
    130136  casa::Bool putSpectrum(const casa::Array<casa::Float>& spec);
    131137
    132138  casa::Bool setFlags(const casa::Matrix<casa::uChar>& flgs,
    133                       casa::uInt whichBeam, casa::uInt whichIF,
     139                      casa::uInt whichBeam, casa::uInt whichIF,
    134140                      casa::Bool hasXPol=casa::False);
    135141  casa::Bool putFlags(const casa::Array<casa::uChar>& spec);
    136142
    137   casa::Bool setTsys(const casa::Vector<casa::Float>& ts, 
    138                casa::uInt whichBeam, casa::uInt whichIF,
     143  casa::Bool setTsys(const casa::Vector<casa::Float>& ts,
     144               casa::uInt whichBeam, casa::uInt whichIF,
    139145               casa::Bool hasXpol);
    140146  casa::Bool putTsys(const casa::Array<casa::Float>& spec);
    141147
    142   casa::Bool setDirection(const casa::Vector<casa::Double>& point, 
    143                           casa::uInt whichBeam);
     148  casa::Bool setDirection(const casa::Vector<casa::Double>& point,
     149                          casa::uInt whichBeam);
    144150  casa::Bool putDirection(const casa::Array<casa::Double>& dir);
    145151
     
    149155  casa::Bool setRestFrequencyMap(casa::uInt freqslot, casa::uInt whichIF);
    150156  casa::Bool putRestFreqMap(const casa::Vector<casa::uInt>& freqs);
    151  
    152   casa::Array<casa::Float> getSpectrum(casa::uInt whichBeam, 
    153                                        casa::uInt whichIF);
    154   casa::Array<casa::uChar> getFlags(casa::uInt whichBeam, 
    155                                     casa::uInt whichIF);
    156   casa::Array<casa::Float> getTsys(casa::uInt whichBeam, 
    157                                    casa::uInt whichIF);
     157
     158  casa::Array<casa::Float> getSpectrum(casa::uInt whichBeam,
     159                                       casa::uInt whichIF);
     160  casa::Array<casa::uChar> getFlags(casa::uInt whichBeam,
     161                                    casa::uInt whichIF);
     162  casa::Array<casa::Float> getTsys(casa::uInt whichBeam,
     163                                   casa::uInt whichIF);
    158164  casa::Array<casa::Double> getDirection(casa::uInt whichBeam) const;
    159165
     
    164170
    165171  const casa::Vector<casa::uInt>& getFreqMap() const { return freqidx_; }
    166   const casa::Vector<casa::uInt>& getRestFreqMap() const 
     172  const casa::Vector<casa::uInt>& getRestFreqMap() const
    167173  { return restfreqidx_; }
    168  
     174
    169175  casa::Bool putFitMap(const casa::Array<casa::Int>& arr);
    170176
     
    189195
    190196  // (nBeam,nIF,nPol,nChannel)
    191   casa::Array<casa::Float>    spectrum_; 
     197  casa::Array<casa::Float>    spectrum_;
    192198  casa::Array<casa::uChar>    flags_;
    193199
     
    209215
    210216  void setSlice(casa::IPosition& start, casa::IPosition& end,
    211                 const casa::IPosition& shpIn, const casa::IPosition& shpOut,
    212                 casa::uInt whichBeam, casa::uInt whichIF, casa::Bool checkPol,
    213                 casa::Bool xPol) const;
     217                const casa::IPosition& shpIn, const casa::IPosition& shpOut,
     218                casa::uInt whichBeam, casa::uInt whichIF, casa::Bool checkPol,
     219                casa::Bool xPol) const;
    214220  void setSlice(casa::IPosition& start, casa::IPosition& end,
    215                 const casa::IPosition& shape,
    216                 casa::uInt whichBeam, casa::uInt whichIF) const;
     221                const casa::IPosition& shape,
     222                casa::uInt whichBeam, casa::uInt whichIF) const;
    217223};
    218224
     
    232238  // with the the primary entries
    233239  casa::uInt addEntry(const casa::String& source, casa::uInt ID,
    234                       const casa::MDirection& secDir, casa::uInt secID);
     240                      const casa::MDirection& secDir, casa::uInt secID);
    235241
    236242  // Number of entries
    237243  casa::Int length() const { return n_;}
    238  
     244
    239245  // Get attributes
    240246  casa::String source(casa::uInt which) const {return source_[which];}
     
    242248  casa::uInt secID(casa::uInt which) const {return secID_[which];}
    243249  casa::MDirection secDir(casa::uInt which) const {return secDir_[which];}
    244  
     250
    245251  // Summary
    246252  void summary() const;
  • trunk/src/SDMemTable.cc

    r745 r754  
    533533  dpl = theinfo[2];             // Doppler
    534534  brfrm = theinfo[3];           // Base frame
    535 
    536535  Table t = table_.rwKeywordSet().asTable("FREQUENCIES");
    537536
     
    977976  String rf = sdft.refFrame();
    978977  if (rf.contains("TOPO")) rf = "TOPO";
    979 
    980   aTable.rwKeywordSet().define("BASEREFFRAME", rf);
     978  String brf = sdft.baseRefFrame();
     979  if (brf.contains("TOPO")) brf = "TOPO";
     980
     981  aTable.rwKeywordSet().define("BASEREFFRAME", brf);
    981982  aTable.rwKeywordSet().define("REFFRAME", rf);
    982983  aTable.rwKeywordSet().define("EQUINOX", sdft.equinox());
    983   aTable.rwKeywordSet().define("UNIT", String(""));
     984  aTable.rwKeywordSet().define("UNIT", sdft.unit());
    984985  aTable.rwKeywordSet().define("DOPPLER", String("RADIO"));
    985986  Vector<Double> rfvec;
     
    11811182  // is the correct frame.  It might be 'REFFRAME'
    11821183  // rather than 'BASEREFFRAME' ?
    1183   String baseFrame;
    1184   t.keywordSet().get("BASEREFFRAME",baseFrame);
    1185   sdft.setRefFrame(baseFrame);
     1184  String frame;
     1185  t.keywordSet().get("REFFRAME",frame);
     1186  sdft.setRefFrame(frame);
     1187  t.keywordSet().get("BASEREFFRAME",frame);
     1188  sdft.setBaseRefFrame(frame);
    11861189
    11871190  // Equinox
     
    11891192  t.keywordSet().get("EQUINOX", equinox);
    11901193  sdft.setEquinox(equinox);
     1194
     1195  String unit;
     1196  t.keywordSet().get("UNIT", unit);
     1197  sdft.setUnit(unit);
    11911198
    11921199  // Rest Frequency
  • trunk/src/SDReader.cc

    r717 r754  
    5454  cursor_ = 0;
    5555}
    56 SDReader::SDReader(const std::string& filename, 
     56SDReader::SDReader(const std::string& filename,
    5757                   int whichIF, int whichBeam) :
    5858  reader_(0),
     
    7777SDReader::~SDReader() {
    7878  if (reader_) delete reader_;
    79   if (header_) delete header_; 
     79  if (header_) delete header_;
    8080  if (frequencies_) delete frequencies_;
    8181}
     
    9292}
    9393
    94 void SDReader::open(const std::string& filename, 
     94void SDReader::open(const std::string& filename,
    9595                    int whichIF, int whichBeam) {
    9696  if (reader_) delete reader_; reader_ = 0;
     
    151151    // need robust way here - probably read ahead of next timestamp
    152152    pushLog("Header indicates frequency switched observation.\n"
    153                "setting # of IFs = 1 ");
     153               "setting # of IFs = 1 ");
    154154    nIF_ = 1;
    155155  }
     
    206206  frequencies_ = new SDFrequencyTable();
    207207  frequencies_->setRefFrame(header_->freqref);
     208  frequencies_->setBaseRefFrame(header_->freqref);
    208209  frequencies_->setRestFrequencyUnit("Hz");
    209210  frequencies_->setEquinox(header_->equinox);
     
    252253      // Make sure beam/IF numbers are 0-relative - dealing with
    253254      // possible IF or Beam selection
    254       beamNo = beamNo - beamOffset_ - 1;     
     255      beamNo = beamNo - beamOffset_ - 1;
    255256      IFno = IFno - ifOffset_ - 1;
    256257
     
    258259        if (status == -1) {
    259260          // EOF.
    260           if (row > 0 && row < stepsize-1) 
    261             pushLog("incomplete scan data.\n Probably means not all Beams/IFs/Pols within a scan are present.");
    262 
    263           // flush frequency table
     261          if (row > 0 && row < stepsize-1)
     262            pushLog("incomplete scan data.\n Probably means not all Beams/IFs/Pols within a scan are present.");
     263
     264          // flush frequency table
    264265          table_->putSDFreqTable(*frequencies_);
    265266          return status;
     
    277278          sc.interval = interval;
    278279          sc.sourcename = srcName;
    279           sc.fieldname = fieldName;
    280           sc.azimuth = azimuth;
    281           sc.elevation = elevation;
     280          sc.fieldname = fieldName;
     281          sc.azimuth = azimuth;
     282          sc.elevation = elevation;
    282283        }
    283284        // add specific info
     
    285286        Int refPix = header_->nchan/2;       // 0-rel
    286287        uInt freqID = frequencies_->addFrequency(refPix, refFreq, freqInc);
    287         uInt restFreqID = frequencies_->addRestFrequency(restFreq);
     288        uInt restFreqID = frequencies_->addRestFrequency(restFreq);
    288289
    289290        sc.setFrequencyMap(freqID, IFno);
    290291        sc.setRestFrequencyMap(restFreqID, IFno);
    291292
    292         sc.tcal[0] = tcal[0];sc.tcal[1] = tcal[1];
    293         sc.tcaltime = tcalTime;
    294         sc.parangle = parAngle;
    295         sc.refbeam = -1; //nbeams == 1
    296         if (nBeam_ > 1) // circumvent a bug "asap0000" in read which
    297                         // returns a random refbema number on multiple
    298                         // reads
    299           sc.refbeam = refBeam-1;//make it 0-based;
     293        sc.tcal[0] = tcal[0];sc.tcal[1] = tcal[1];
     294        sc.tcaltime = tcalTime;
     295        sc.parangle = parAngle;
     296        sc.refbeam = -1; //nbeams == 1
     297        if (nBeam_ > 1) // circumvent a bug "asap0000" in read which
     298                        // returns a random refbema number on multiple
     299                        // reads
     300          sc.refbeam = refBeam-1;//make it 0-based;
    300301        sc.scanid = scanNo-1;//make it 0-based
    301302        if (haveXPol_) {
Note: See TracChangeset for help on using the changeset viewer.