source: trunk/src/SDMemTableWrapper.h @ 401

Last change on this file since 401 was 401, checked in by kil064, 19 years ago

add rest freq specification by line name
add function spectraLines to list known lines

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 KB
Line 
1//#---------------------------------------------------------------------------
2//# SDMemTableWrapper.h: Wrapper classes to use CountedPtr
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2004
5//# ATNF
6//#
7//# This program is free software; you can redistribute it and/or modify it
8//# under the terms of the GNU General Public License as published by the Free
9//# Software Foundation; either version 2 of the License, or (at your option)
10//# any later version.
11//#
12//# This program is distributed in the hope that it will be useful, but
13//# WITHOUT ANY WARRANTY; without even the implied warranty of
14//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
15//# Public License for more details.
16//#
17//# You should have received a copy of the GNU General Public License along
18//# with this program; if not, write to the Free Software Foundation, Inc.,
19//# 675 Massachusetts Ave, Cambridge, MA 02139, USA.
20//#
21//# Correspondence concerning this software should be addressed as follows:
22//#        Internet email: Malte.Marquarding@csiro.au
23//#        Postal address: Malte Marquarding,
24//#                        Australia Telescope National Facility,
25//#                        P.O. Box 76,
26//#                        Epping, NSW, 2121,
27//#                        AUSTRALIA
28//#
29//# $Id:
30//#---------------------------------------------------------------------------
31#ifndef SDMEMTABLEWRAPPER_H
32#define SDMEMTABLEWRAPPER_H
33
34#include <vector>
35#include <string>
36#include <casa/Arrays/Vector.h>
37
38#include "SDMemTable.h"
39
40namespace asap {
41
42class SDMemTableWrapper {
43
44public:
45  SDMemTableWrapper(const std::string& name) :
46    table_(new SDMemTable(name)) {;}
47  SDMemTableWrapper() :
48    table_(new SDMemTable()) {;}
49
50  SDMemTableWrapper(casa::CountedPtr<SDMemTable> cp) : table_(cp) {;}
51  //SDMemTableWrapper(SDMemTable* sdmt) : table_(sdmt) {;}
52  SDMemTableWrapper(const SDMemTableWrapper& mt) :
53    table_(mt.getCP()) {;}
54
55  SDMemTableWrapper(const SDMemTableWrapper& mt, const std::string& expr) :
56    table_(new SDMemTable(mt.getCP()->table(), expr)) {;}
57
58  SDMemTableWrapper copy() {
59    //CountedPtr<SDMemTable> cp = new SDMemTable(*this, False);
60    return SDMemTableWrapper(new SDMemTable(*(this->getCP()), casa::False));
61  }
62
63  //SDMemTableWrapper getScan(int scan) {
64  SDMemTableWrapper getScan(std::vector<int> scan) {
65    casa::String cond("SELECT FROM $1 WHERE SCANID IN ");
66    casa::Vector<casa::Int> v(scan);
67    casa::ostringstream oss;
68    oss << v;
69    cond += casa::String(oss);
70    return SDMemTableWrapper(*this, cond);
71  }
72
73  SDMemTableWrapper getSource(const std::string& source) {
74    casa::String cond("SELECT * from $1 WHERE SRCNAME == pattern('");
75    cond += source;cond += "')";
76    return SDMemTableWrapper(*this, cond);
77  }
78
79  std::vector<float> getSpectrum(int whichRow=0) const {
80    return table_->getSpectrum(whichRow);
81  }
82
83  std::vector<double> getAbcissa(int whichRow=0) const {
84    return table_->getAbcissa(whichRow);
85  }
86  std::string getAbcissaString(int whichRow=0) const {
87    return table_->getAbcissaString(whichRow);
88  }
89
90  std::vector<float> getTsys() {
91     int nRow = table_->nRow();
92     std::vector<float> result(nRow);
93     for (uint i=0; i<nRow; i++) {
94        result[i] = table_->getTsys(i);
95     }
96     return result;
97  }
98
99  std::string getTime(int whichRow=0) {return table_->getTime(whichRow);}
100
101  std::string getFluxUnit() const {return table_->getFluxUnit();}
102  void setFluxUnit(const std::string& unit) {table_->setFluxUnit(unit);}
103
104  void setInstrument(const std::string& name) {table_->setInstrument(name);}
105
106  std::vector<bool> getMask(int whichRow=0) const {
107    return table_->getMask(whichRow);
108  }
109  bool setMask(const std::vector<int> mvals) const {
110    return table_->setMask(mvals);
111  }
112
113  void flag(int whichRow=-1) {
114    table_->flag(whichRow);
115  }
116  std::string getSourceName(int whichRow=0) {
117    return table_->getSourceName(whichRow);
118  }
119
120  void setSpectrum(std::vector<float> spectrum, int whichRow=0) {
121      table_->setSpectrum(spectrum, whichRow);
122  }
123
124  bool setIF(int whichIF=0) {return table_->setIF(whichIF);}
125  bool setBeam(int whichBeam=0) {return table_->setBeam(whichBeam);}
126  bool setPol(int whichPol=0) {return table_->setPol(whichPol);}
127
128  int getIF() {return table_->getIF();}
129  int getBeam() {return table_->getBeam();}
130  int getPol() {return table_->getPol();}
131
132  int nIF() {return table_->nIF();}
133  int nBeam() {return table_->nBeam();}
134  int nPol() {return table_->nPol();}
135  int nChan() {return table_->nChan();}
136  int nScan() {return table_->nScan();}
137  int nRow() {return table_->nRow();}
138
139  //sets the mask
140  bool setChannels(const std::vector<int>& whichChans) {
141    return setChannels(whichChans);
142  }
143  void makePersistent(const std::string& fname) {
144    table_->makePersistent(fname);
145  }
146
147  bool setRestFreqs(const std::vector<double>& restfreqs,
148                    const std::string& unit,
149                    const std::vector<std::string>& lines,
150                    const std::string& source, int whichIF) {
151    casa::Vector<casa::Double> restFreqs2(restfreqs);
152    return table_->setRestFreqs(restFreqs2, casa::String(unit),
153                                lines, casa::String(source),
154                                casa::Int(whichIF));
155  }
156
157  void spectralLines() const {table_->spectralLines();}
158
159  std::vector<double> getRestFreqs() {
160    return table_->getRestFreqs();
161  }
162
163  void setCoordInfo(std::vector<string> theinfo) {
164    table_->setCoordInfo(theinfo);
165  }
166  std::vector<string> getCoordInfo() const {
167    return table_->getCoordInfo();
168  }
169
170  casa::CountedPtr<SDMemTable> getCP() const {return table_;}
171  SDMemTable* getPtr() {return &(*table_);}
172
173  std::string summary(bool verbose=false) const {
174    return table_->summary(verbose);
175  }
176 
177  std::vector<std::string> history(int whichRow=0) {
178    return table_->history(whichRow);
179  }
180
181private:
182  casa::CountedPtr<SDMemTable> table_;
183};
184
185} // namespace
186#endif
Note: See TracBrowser for help on using the repository browser.