source: trunk/src/SDContainer.h @ 20

Last change on this file since 20 was 18, checked in by mmarquar, 20 years ago

Moved SDHeader from SDReader to SDConatiner. Added header to SDMemTable. Added access funtions to nif,nbema,npol,nchan

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1//#---------------------------------------------------------------------------
2//# SDContainer.h: A container class 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 _SDCONTAINER_H_
32#define _SDCONTAINER_H_
33
34#include <vector>
35
36#include <aips/aips.h>
37#include <aips/Utilities/String.h>
38#include <aips/Arrays/Array.h>
39#include <aips/Arrays/Vector.h>
40
41template<class T> class Matrix;
42
43namespace atnf_sd {
44
45
46struct SDHeader {
47  Int nchan;
48  Int npol;
49  Int nif;
50  Int nbeam;
51  String observer;
52  String project;
53  String obstype;
54  String antennaname;
55  Vector<Double> antennaposition;
56  Float equinox;
57  String freqref;
58  Double reffreq;
59  Double bandwidth;
60  Double utc;
61  void print() const ;
62};
63
64class SDFrequencyTable {
65
66public:
67
68  SDFrequencyTable() {;}
69  // returns the index into the table
70  // this creates a new one or returns an existing one
71  Int addFrequency(Double refPix, Double refVal, Double inc) {;}
72 
73  Int length() const { return nFreq_;};// # of stored Frequencies
74  // returns a Table with nRows == nFreq, and three cols
75 
76private:
77  Int nFreq_;
78  std::vector<double> refPix_;
79  std::vector<double> revVal_;
80  std::vector<double> increment_;
81};
82
83
84class SDContainer {
85
86public:
87  SDContainer(uInt nBeam, uInt nIF, uInt nPol, uInt nChan);
88  SDContainer(IPosition shp);
89
90  virtual ~SDContainer();
91
92  Bool setSpectrum(const Matrix<Float>& spec,
93                   uInt whichBeam, uInt whichIF);
94  Bool putSpectrum(const Array<Float>& spec);
95
96  Bool setFlags(const Matrix<uChar>& flgs,
97                uInt whichBeam, uInt whichIF);
98  Bool putFlags(const Array<uChar>& spec);
99
100  Bool setTsys(const Vector<Float>& ts,
101               uInt whichBeam, uInt whichIF);
102  Bool putTsys(const Array<Float>& spec);
103
104  Bool setPointing(const Vector<Double>& point, uInt whichBeam) {;}
105
106  Bool setFrequencyMap(uInt freqslot, uInt whichIF) {;}
107 
108  const Array<Float>& getSpectrum() const { return spectrum_; }
109  const Array<uChar>& getFlags() const { return flags_; }
110  const Array<Float>& getTsys() const { return tsys_; }
111
112  Double timestamp;
113  String sourcename;
114  Double interval;
115  uInt scanid;
116 
117private:
118  uInt nBeam_,nIF_,nPol_,nChan_;
119
120  // (nBeam,nIF,nPol,nChannel)
121  Array<Float>    spectrum_; 
122  Array<uChar>    flags_;
123  // (nBeam,nIF,nPol,[nChannel]) Tsys is not really a function of
124  // channel, but this makes it easier to work with at the expense of
125  // a little memory
126  Array<Float>    tsys_;
127  Array<Float>    tcal_;
128
129  //(nBeam) maybe use Measures here...
130  //*** Vector<Vector<Double>>  pointing_;
131  //(nIF) indx into "global" frequency table
132  Vector<uInt>            freqidx_;
133
134};
135
136} // namespace
137#endif
Note: See TracBrowser for help on using the repository browser.