source: trunk/src/SDMemTableWrapper.h @ 465

Last change on this file since 465 was 465, checked in by mar637, 19 years ago

Added SDFitTable to handle fits and expose them to python vi the sdfit class.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.7 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 "MathUtils.h"
39#include "SDFitTable.h"
40#include "SDMemTable.h"
41
42namespace asap {
43
44class SDMemTableWrapper {
45
46public:
47  SDMemTableWrapper(const std::string& name) :
48    table_(new SDMemTable(name)) {;}
49  SDMemTableWrapper() :
50    table_(new SDMemTable()) {;}
51
52  SDMemTableWrapper(casa::CountedPtr<SDMemTable> cp) : table_(cp) {;}
53  //SDMemTableWrapper(SDMemTable* sdmt) : table_(sdmt) {;}
54  SDMemTableWrapper(const SDMemTableWrapper& mt) :
55    table_(mt.getCP()) {;}
56
57  SDMemTableWrapper(const SDMemTableWrapper& mt, const std::string& expr) :
58    table_(new SDMemTable(mt.getCP()->table(), expr)) {;}
59
60  SDMemTableWrapper copy() {
61    //CountedPtr<SDMemTable> cp = new SDMemTable(*this, False);
62    return SDMemTableWrapper(new SDMemTable(*(this->getCP()), casa::False));
63  }
64
65  //SDMemTableWrapper getScan(int scan) {
66  SDMemTableWrapper getScan(std::vector<int> scan) {
67    casa::String cond("SELECT FROM $1 WHERE SCANID IN ");
68    casa::Vector<casa::Int> v(scan);
69    casa::ostringstream oss;
70    oss << v;
71    cond += casa::String(oss);
72    return SDMemTableWrapper(*this, cond);
73  }
74
75  SDMemTableWrapper getSource(const std::string& source) {
76    casa::String cond("SELECT * from $1 WHERE SRCNAME == pattern('");
77    cond += source;cond += "')";
78    return SDMemTableWrapper(*this, cond);
79  }
80
81  std::vector<float> getSpectrum(int whichRow=0) const {
82    return table_->getSpectrum(whichRow);
83  }
84
85  std::vector<float> getStokesSpectrum(int whichRow=0, bool doPol=false,
86                                       float paOff=0.0) const {
87    return table_->getStokesSpectrum(whichRow, doPol, paOff);
88  }
89
90  std::vector<float> getCircularSpectrum(int whichRow=0,
91                                         bool doRR=true) const {
92    return table_->getCircularSpectrum(whichRow, doRR);
93  }
94
95  std::vector<double> getAbcissa(int whichRow=0) const {
96    return table_->getAbcissa(whichRow);
97  }
98  std::string getAbcissaString(int whichRow=0) const {
99    return table_->getAbcissaString(whichRow);
100  }
101
102  std::vector<float> getTsys() {
103     int nRow = table_->nRow();
104     std::vector<float> result(nRow);
105     for (uint i=0; i<nRow; i++) {
106        result[i] = table_->getTsys(i);
107     }
108     return result;
109  }
110
111  std::string getTime(int whichRow=0) {return table_->getTime(whichRow);}
112
113  std::string getFluxUnit() const {return table_->getFluxUnit();}
114  void setFluxUnit(const std::string& unit) {table_->setFluxUnit(unit);}
115
116  void setInstrument(const std::string& name) {table_->setInstrument(name);}
117
118  std::vector<bool> getMask(int whichRow=0) const {
119    return table_->getMask(whichRow);
120  }
121  bool setMask(const std::vector<int> mvals) const {
122    return table_->setMask(mvals);
123  }
124
125  void flag(int whichRow=-1) {
126    table_->flag(whichRow);
127  }
128  std::string getSourceName(int whichRow=0) {
129    return table_->getSourceName(whichRow);
130  }
131
132  void setSpectrum(std::vector<float> spectrum, int whichRow=0) {
133      table_->setSpectrum(spectrum, whichRow);
134  }
135
136  bool setIF(int whichIF=0) {return table_->setIF(whichIF);}
137  bool setBeam(int whichBeam=0) {return table_->setBeam(whichBeam);}
138  bool setPol(int whichPol=0) {return table_->setPol(whichPol);}
139
140  int getIF() {return table_->getIF();}
141  int getBeam() {return table_->getBeam();}
142  int getPol() {return table_->getPol();}
143
144  int nIF() {return table_->nIF();}
145  int nBeam() {return table_->nBeam();}
146  int nPol() {return table_->nPol();}
147  int nChan() {return table_->nChan();}
148  int nScan() {return table_->nScan();}
149  int nRow() {return table_->nRow();}
150
151  //sets the mask
152  bool setChannels(const std::vector<int>& whichChans) {
153    return setChannels(whichChans);
154  }
155  void makePersistent(const std::string& fname) {
156    table_->makePersistent(fname);
157  }
158
159  bool setRestFreqs(const std::vector<double>& restfreqs,
160                    const std::string& unit,
161                    const std::vector<std::string>& lines,
162                    const std::string& source, int whichIF) {
163    casa::Vector<casa::Double> restFreqs2(restfreqs);
164    return table_->setRestFreqs(restFreqs2, casa::String(unit),
165                                lines, casa::String(source),
166                                casa::Int(whichIF));
167  }
168
169  void spectralLines() const {table_->spectralLines();}
170
171  std::vector<double> getRestFreqs() {
172    return table_->getRestFreqs();
173  }
174
175  void setCoordInfo(std::vector<string> theinfo) {
176    table_->setCoordInfo(theinfo);
177  }
178  std::vector<string> getCoordInfo() const {
179    return table_->getCoordInfo();
180  }
181
182  casa::CountedPtr<SDMemTable> getCP() const {return table_;}
183  SDMemTable* getPtr() {return &(*table_);}
184
185  std::string summary(bool verbose=false) const {
186    return table_->summary(verbose);
187  }
188 
189  std::vector<std::string> history(int whichRow=0) {
190    return table_->history(whichRow);
191  }
192
193  void addFit(int whichRow, const std::vector<double>& p,
194              const std::vector<bool>& m, const std::vector<string>& f,
195              const std::vector<int>& c) {
196   
197    casa::Vector<casa::Double> p2(p);
198    casa::Vector<casa::Bool> m2(m);
199    casa::Vector<casa::String> f2 = mathutil::toVectorString(f);
200    casa::Vector<casa::Int> c2(c);
201    table_->addFit(casa::uInt(whichRow), p2,m2,f2,c2);
202  }
203  SDFitTable getSDFitTable(int whichRow) {
204    return table_->getSDFitTable(casa::uInt(whichRow));
205  }
206
207
208private:
209  casa::CountedPtr<SDMemTable> table_;
210};
211
212} // namespace
213#endif
214
Note: See TracBrowser for help on using the repository browser.