Ignore:
Timestamp:
02/08/05 15:48:11 (19 years ago)
Author:
kil064
Message:

merge SDMemTable::{selectRestFrequcy,setRestFrequencies} into one function,
setRestFrequencies

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/SDMemTable.cc

    r387 r392  
    795795}
    796796
    797 void SDMemTable::setRestFreqs(std::vector<double> freqs,
    798                               const std::string& theunit)
    799 {
    800   Vector<Double> tvec(freqs);
    801   Quantum<Vector<Double> > q(tvec, String(theunit));
    802   tvec.resize();
    803   tvec = q.getValue("Hz");
    804   Table t = table_.keywordSet().asTable("FREQUENCIES");
    805   t.rwKeywordSet().define("RESTFREQS",tvec);
    806 }
    807797
    808798std::vector<double> SDMemTable::getRestFreqs() const
     
    13361326}
    13371327
    1338 casa::Bool SDMemTable::selectRestFreq (casa::Double restFreq, const String& unit,
    1339                                        const casa::String& source,
    1340                                        casa::Int whichIF)
     1328casa::Bool SDMemTable::setRestFreqs (const casa::Vector<Double>& restFreqs, const String& sUnit,
     1329                                     const casa::String& source,
     1330                                     casa::Int whichIF)
    13411331{
    13421332   const Int nIFs = nIF();
     
    13451335   }
    13461336
    1347 // Find rest frequency.  Add it if necessary
    1348 
     1337// If multiple restfreqs, must be length nIF. In this
     1338// case we will just replace the rest frequencies
     1339//
     1340
     1341   const uInt nRestFreqs = restFreqs.nelements();
     1342   Unit unit(sUnit);
     1343   Int idx = -1;
    13491344   SDFrequencyTable sdft = getSDFreqTable();
    1350    Quantum<Double> rf(restFreq, Unit(unit));
    1351    uInt idx = sdft.addRestFrequency(rf.getValue("Hz"));
     1345
     1346   if (nRestFreqs>1) {
     1347
     1348// Replace restFreqs, one per IF
     1349
     1350      if (nRestFreqs != nIFs) {
     1351         throw (AipsError("Number of rest frequencies must be equal to the number of IFs"));
     1352      }
     1353//
     1354      sdft.deleteRestFrequencies();
     1355      for (uInt i=0; i<nRestFreqs; i++) {
     1356         Quantum<Double> rf(restFreqs[i], unit);
     1357         sdft.addRestFrequency(rf.getValue("Hz"));
     1358      }
     1359   } else {
     1360
     1361// Add new rest freq
     1362
     1363      Quantum<Double> rf(restFreqs[0], unit);
     1364      idx = sdft.addRestFrequency(rf.getValue("Hz"));
     1365   }
    13521366
    13531367// Replace
     
    13621376         srcnCol_.get(i, srcName);
    13631377         restfreqidCol_.get(i,restFreqIDs);       
    1364 //
    1365          if (empty || source==srcName) {
    1366             if (whichIF<0) {
    1367                restFreqIDs = idx;
    1368             } else {             
    1369                restFreqIDs(whichIF) = idx;
     1378//
     1379         if (idx==-1) {
     1380
     1381// Replace vector of restFreqs; one per IF.
     1382// No selection possible
     1383
     1384            for (uInt i=0; i<nIFs; i++) restFreqIDs[i] = i;
     1385         } else {
     1386
     1387// Set RestFreqID for selected data
     1388
     1389            if (empty || source==srcName) {
     1390               if (whichIF<0) {
     1391                  restFreqIDs = idx;
     1392               } else {             
     1393                  restFreqIDs[whichIF] = idx;
     1394               }
    13701395            }
    13711396         }
Note: See TracChangeset for help on using the changeset viewer.