source: branches/alma/external/atnf/PKSIO/NROReader.h @ 1757

Last change on this file since 1757 was 1757, checked in by Kana Sugimoto, 14 years ago

New Development: Yes

JIRA Issue: Yes (CAS-2211)

Ready for Test: Yes

Interface Changes: Yes

What Interface Changed: ASAP 3.0.0 interface changes

Test Programs:

Put in Release Notes: Yes

Module(s): all the CASA sd tools and tasks are affected.

Description: Merged ATNF-ASAP 3.0.0 developments to CASA (alma) branch.

Note you also need to update casa/code/atnf.


File size: 6.9 KB
Line 
1//#---------------------------------------------------------------------------
2//# NROReader.h: Base class to read NRO 45m and ASTE data.
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2000-2006
5//# Associated Universities, Inc. Washington DC, USA.
6//#
7//# This library is free software; you can redistribute it and/or modify it
8//# under the terms of the GNU Library General Public License as published by
9//# the Free Software Foundation; either version 2 of the License, or (at your
10//# option) any later version.
11//#
12//# This library is distributed in the hope that it will be useful, but WITHOUT
13//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14//# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
15//# License for more details.
16//#
17//# You should have received a copy of the GNU Library General Public License
18//# along with this library; if not, write to the Free Software Foundation,
19//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
20//#
21//# Correspondence concerning AIPS++ should be addressed as follows:
22//#        Internet email: aips2-request@nrao.edu.
23//#        Postal address: AIPS++ Project Office
24//#                        National Radio Astronomy Observatory
25//#                        520 Edgemont Road
26//#                        Charlottesville, VA 22903-2475 USA
27//#
28//# $Id$
29//#---------------------------------------------------------------------------
30//# Original: 2008/10/30, Takeshi Nakazato, NAOJ
31//#---------------------------------------------------------------------------
32
33#ifndef NRO_READER_H
34#define NRO_READER_H
35
36#include <string>
37#include <stdio.h>
38#include <vector>
39
40#include <casa/aips.h>
41#include <casa/Arrays/Vector.h>
42#include <casa/BasicSL/String.h>
43#include <measures/Measures/MPosition.h>
44#include <measures/Measures/MCPosition.h>
45#include <measures/Measures/MDirection.h>
46#include <measures/Measures/MCDirection.h>
47#include <measures/Measures/MeasConvert.h>
48#include <measures/Measures/MeasFrame.h>
49#include <casa/Logging/LogIO.h>
50
51//#include <fitsio.h>
52
53#include <casa/namespace.h>
54
55#include <atnf/PKSIO/NRODataset.h>
56#include <atnf/PKSIO/NRODataRecord.h>
57
58using namespace std ;
59
60// <summary>
61// Base class to read NRO 45m and ASTE data.
62// </summary>
63// <use visibility=global>
64//
65// <prerequisite>
66//   <li> <linkto class=NRODataset>NRODataset</linkto>
67// </prerequisite>
68//
69// <reviewed reviewer="" date="" tests="" demos="">
70// </reviewed>
71//
72// <etymology>
73// <linkto class=NROReader>NROReader</linkto> is a base class for all NRO reader classes.
74// Reader classes have <linkto class=NRODataset>NRODataset</linkto> object to access
75// actual data. These classes are a kind of interface for Scantable data filler.
76// </etymology>
77//
78// <synopsis>
79// Abstract class that is designed as a base class for NRO reader classes.
80// </synopsis>
81//
82
83// Open an appropriate NROreader for a NRO 45m and ASTE dataset.
84class NROReader *getNROReader( const String filename,
85                               String &datatype );
86
87// As above, but search a list of directories for it.
88class NROReader *getNROReader( const String filename,
89                               const Vector<String> directories,
90                               int &iDir,
91                               String &datatype ) ;
92
93//
94// NROReader
95//
96class NROReader
97{
98 public:
99  // Constructor
100  NROReader( string name ) ;
101
102  // Destructor.
103  virtual ~NROReader() ;
104
105  // Read data header
106  virtual Int read() = 0 ;
107
108  // Get header information
109  virtual int getHeaderInfo( Int &nchan,
110                             Int &npol,
111                             Int &nif,
112                             Int &nbeam,
113                             String &observer,
114                             String &project,
115                             String &obstype,
116                             String &antname,
117                             Vector<Double> &antpos,
118                             Float &equinox,
119                             String &freqref,
120                             Double &reffreq,
121                             Double &bw,
122                             Double &utc,
123                             String &fluxunit,
124                             String &epoch,
125                             String &poltype ) ;
126                         
127  // Get scan information
128  virtual int getScanInfo( int irow,
129                           uInt &scanno,
130                           uInt &cycleno,
131                           uInt &beamno,
132                           uInt &polno,
133                           vector<double> &freqs,   
134                           Vector<Double> &restfreq, 
135                           uInt &refbeamno,
136                           Double &scantime,
137                           Double &interval,
138                           String &srcname,
139                           String &fieldname,
140                           Array<Float> &spectra,
141                           Array<uChar> &flagtra,
142                           Array<Float> &tsys,
143                           Array<Double> &direction,
144                           Float &azimuth,
145                           Float &elevation,
146                           Float &parangle,
147                           Float &opacity,
148                           uInt &tcalid,
149                           Int &fitid,
150                           uInt &focusid,
151                           Float &temperature, 
152                           Float &pressure,     
153                           Float &humidity,     
154                           Float &windvel,     
155                           Float &winddir,     
156                           Double &srcvel,
157                           Array<Double> &propermotion,
158                           Vector<Double> &srcdir,
159                           Array<Double> &scanrate ) ;
160
161  // Get scan type
162  virtual string getScanType( int i ) ;
163
164  // Get dataset
165  virtual NRODataset *getDataset() { return dataset_ ; } ;
166
167  // Get number of rows
168  virtual Int getRowNum() ;
169
170  // Get IF settings
171  virtual vector<Bool> getIFs() ;
172
173  // Get Beam settings
174  virtual vector<Bool> getBeams() ;
175
176 protected:
177  // convert time in character representation to MJD representation
178  virtual double getMJD( char *time ) ;
179  virtual double getMJD( string strStartTime ) ;
180
181  // Get spectrum
182  virtual vector< vector<double> > getSpectrum() ;
183
184  // Get number of polarization
185  virtual Int getPolarizationNum() ;
186
187  // Get MJD time
188  virtual double getStartTime() ;
189  virtual double getEndTime() ;
190  virtual vector<double> getStartIntTime() ;
191  //virtual double getStartIntTime( int i ) ;
192
193  // Get Antenna Position in ITRF coordinate
194  virtual vector<double> getAntennaPosition() = 0 ;
195
196  // Get SRCDIRECTION in RADEC(J2000)
197  virtual Vector<Double> getSourceDirection() ;
198
199  // Get DIRECTION in RADEC(J2000)
200  virtual Vector<Double> getDirection( int i ) ;
201
202  // filename
203  string filename_ ;
204
205  // dataset
206  NRODataset *dataset_ ;
207
208  // Logger
209  //LogIO os ;
210};
211
212#endif /* NRO_READER_H */
Note: See TracBrowser for help on using the repository browser.