source: trunk/src/SDContainer.h@ 25

Last change on this file since 25 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.