source: trunk/src/SDMemTable.h @ 79

Last change on this file since 79 was 78, checked in by mar637, 20 years ago

Added support of source direction. This is reflected in the getAbscissa function. Frame conversions enabled.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.0 KB
RevLine 
[2]1//#---------------------------------------------------------------------------
2//# SDMemTable.h: A MemoryTable container for single dish integrations
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2004
5//# Malte Marquarding, 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 _SDMEMTABLE_H_
32#define _SDMEMTABLE_H_
33
34// STL
35#include <string>
36#include <vector>
37// AIPS++
38#include <aips/aips.h>
39#include <aips/Utilities/String.h>
40#include <aips/Tables/Table.h>
41#include <aips/Arrays/MaskedArray.h>
42
[39]43#include <trial/Coordinates/SpectralCoordinate.h>
44
[2]45namespace atnf_sd {
46
47class SDContainer;
48class SDHeader;
49class SDFrequencyTable;
50
51
52class SDMemTable {
53public:
[19]54  // create a new (empty) SDMemTable
[18]55  SDMemTable();
[50]56  // create a SDMemTable from an (aips++) table on disk
[18]57  SDMemTable(const std::string& name);
[19]58
59  // Copy Construct a SDMemTable, if clear==True only header and
60  // skeleton are copied, otherwise the whole table is copied.
[16]61  SDMemTable(const SDMemTable& other, Bool clear=False);
[2]62
[19]63  // Copy Construct a SDMemTable, give a scanid constraint
64  // see also getScan()
[2]65  SDMemTable(const Table& tab, Int scanID);
[19]66
[2]67  virtual ~SDMemTable();
[19]68
69  // put data from meta conatiner into the table
[39]70  bool putSDContainer(const SDContainer& sdc);
71  bool putSDHeader(const SDHeader& sdh);
72  bool putSDFreqTable(const SDFrequencyTable& sdft);
[21]73
74  //get the dat wrapped up in a meta container
[39]75  SDContainer getSDContainer(uInt whichRow=0) const;
76  SDHeader getSDHeader() const;
77  SDFrequencyTable getSDFreqTable() const;
[19]78  // get spectrum,mask and tsys for the given row, at the selected
[21]79  // cursor - all as stl vectors
[50]80  virtual std::vector<float> getSpectrum(Int whichRow=0) const;
81  virtual std::vector<bool> getMask(Int whichRow=0) const;
[21]82
[50]83  virtual Float getTsys(Int whichRow=0) const;
[21]84  // get all as aips++ Vectors
85  virtual void getSpectrum(Vector<Float>& spectrum, Int whichRow=0);
86  virtual void getMask(Vector<Bool>& mask,Int whichRow=0) const;
[2]87
[21]88  // get info for current row
[50]89  std::string getTime(Int whichRow=0) const ;
90  std::string getSourceName(Int whichRow=0) const;
91  double getInterval(Int whichRow=0) const;
92
[19]93  // set the current value
[2]94  virtual bool setIF(Int whichIF=0);
95  virtual bool setBeam(Int whichBeam=0);
96  virtual bool setPol(Int whichPol=0);   
[18]97  //sets the user mask
[68]98  virtual bool setMask(std::vector<int> whichChans);
[18]99 
[19]100  // return the currently selected values
[2]101  virtual Int getIF() { return IFSel_; }
102  virtual Int getBeam() { return beamSel_; }
103  virtual Int getPol() { return polSel_; }   
[18]104 
[50]105  // number of scans in table
106  virtual Int nScans() const;
107
[19]108  // print a summary to stdout
[2]109  virtual void summary() const;
110 
[19]111  // write to disk as aips++ table
[2]112  void makePersistent(const std::string& filename);
[19]113
114  // get a new SDMemTable containg all rows with the same give SCANID
[2]115  SDMemTable getScan(Int scanID);
[18]116
[21]117  const TableRecord& getHeader() const {return table_.keywordSet();}
[19]118  // get a handle to the "raw" aips++ table
[2]119  const Table& table() { return table_; }
120
[19]121  // return the number of values
[18]122  Int nBeam() const;
123  Int nIF() const;
124  Int nPol() const;
125  Int nChan() const;
126
[22]127  // return the number of rows (integrations) in the table
128  Int nRows() const { return table_.nrow(); }
129
[19]130  // return a row as a Masked array, internally converting uChar flags
131  // to bool mask
132  MaskedArray<Float> rowAsMaskedArray(uInt whichRow,
133                                      Bool useSelection = False);
134
[39]135  SpectralCoordinate getCoordinate(uInt whichIdx) const;
[50]136  Bool setCoordinate(const SpectralCoordinate& speccord, uInt whichIdx);
137
[39]138  std::vector<double> getAbscissa(int whichRow,
139                                  const std::string& whichUnit="GHz",
[78]140                                  const std::string& whichFrame="TOPO",
[39]141                                  double restfreq=0.0);
[2]142private:
[22]143  // set up table structure
[2]144  void setup();
[19]145  // the current cursor into the array
[2]146  Int IFSel_,beamSel_,polSel_;
[19]147  std::vector<bool> chanMask_; 
[50]148  // the underlying memory table
[2]149  Table table_;
150};
151
152}// namespace
153#endif
Note: See TracBrowser for help on using the repository browser.