source: branches/newfiller/external-alma/atnf/PKSIO/NROFITSDataset.h@ 2800

Last change on this file since 2800 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: 5.5 KB
Line 
1//#---------------------------------------------------------------------------
2//# NROFITSDataset.h: Class for NRO 45m FITS dataset.
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: 2009/02/27, Takeshi Nakazato, NAOJ
31//#---------------------------------------------------------------------------
32
33#ifndef NRO_FITS_DATASET_H
34#define NRO_FITS_DATASET_H
35
36#define NRO_FITS_ARYMAX 75
37
38#include <atnf/PKSIO/NRODataset.h>
39
40#include <string>
41
42using namespace std ;
43
44// <summary>
45// Accessor class for NRO 45m FITS data.
46// </summary>
47//
48// <prerequisite>
49// <li> <linkto class=NRO45FITSReader>NRO45FITSReader</linkto>
50// <li> <linkto class=NRODataset>NRODataset</linkto>
51// </prerequisite>
52//
53// <reviewed reviewer="" date="" tests="" demos="">
54// </reviewed>
55//
56// <etymology>
57// This class actually accesses data from NRO telescopes. This is specialized class
58// for NRO 45m telescope with non-OTF observing mode. In contrast to other concrete classes,
59// both fillHeader and fillRecord methods are implemented here.
60// This is because that the output of non-OTF observing mode is in FITS format and is
61// quite different format from that of OTF observing mode.
62// </etymology>
63//
64// <note>
65// Although the input data is FITS format, the class does not depend on cfitsio library.
66// </note>
67//
68// <synopsis>
69// Accessor class for NRO 45m FITS data.
70// </synopsis>
71//
72
73class NROFITSDataset : public NRODataset
74{
75 public:
76 // constructor
77 NROFITSDataset( string name ) ;
78
79 // destructor
80 virtual ~NROFITSDataset() ;
81
82 // data initialization
83 virtual void initialize() ;
84
85 // fill header from file
86 virtual int fillHeader() ;
87
88 // fill data record
89 virtual int fillRecord( int i ) ;
90
91 // get various parameters
92 virtual vector< vector<double> > getSpectrum() ;
93 virtual vector<double> getSpectrum( int i ) ;
94 virtual int getIndex( int irow ) ;
95 virtual int getPolarizationNum() ;
96 virtual uInt getArrayId( string type ) ;
97
98 protected:
99 // fill header information
100 int fillHeader( int sameEndian ) ;
101
102 // Read char data
103 int readHeader( string &v, char *name ) ;
104 int readTable( char *v, char *name ) ;
105 int readTable( char *v, char *name, int clen, int idx ) ;
106 int readTable( vector<char *> &v, char *name, int idx ) ;
107 int readColumn( vector<string> &v, char *name ) ;
108 int readColumn( vector<string> &v, char *name, int idx ) ;
109
110 // Read int data
111 int readHeader( int &v, char *name, int b ) ;
112 int readTable( int &v, char *name, int b ) ;
113 int readTable( int &v, char *name, int b, int idx ) ;
114 int readTable( vector<int> &v, char *name, int b, int idx ) ;
115 int readColumn( vector<int> &v, char *name, int b ) ;
116 int readColumn( vector<int> &v, char *name, int b, int idx ) ;
117
118 // Read float data
119 int readHeader( float &v, char *name, int b ) ;
120 int readTable( float &v, char *name, int b ) ;
121 int readTable( float &v, char *name, int b, int idx ) ;
122 int readTable( vector<float> &v, char *name, int b, int idx ) ;
123 int readColumn( vector<float> &v, char *name, int b ) ;
124 int readColumn( vector<float> &v, char *name, int b, int idx ) ;
125
126 // Read double data
127 int readHeader( double &v, char *name, int b ) ;
128 int readTable( double &v, char *name, int b ) ;
129 int readTable( double &v, char *name, int b, int idx ) ;
130 int readTable( vector<double> &v, char *name, int b, int idx ) ;
131 int readColumn( vector<double> &v, char *name, int b ) ;
132 int readColumn( vector<double> &v, char *name, int b, int idx ) ;
133
134 // read ARRY
135 int readARRY() ;
136
137 // Convert RA character representation to radian
138 double radRA( string ra ) ;
139
140 // Convert DEC character representation to radian
141 double radDEC( string dec ) ;
142
143 // get field parameters for scan header
144 void getField() ;
145
146 // fill array type
147 void fillARYTP() ;
148
149 // find data for each ARYTP
150 void findData() ;
151
152 // get offset bytes for attributes
153 int getOffset( char *name ) ;
154
155 // number of column for scan header
156 int numField_ ;
157
158 // number of HDU
159 int numHdu_ ;
160
161 // array type
162 vector<string> ARYTP ;
163
164 // reference index
165 vector<int> arrayid_ ;
166
167 // field names
168 vector<string> forms_ ;
169
170 // field types
171 vector<string> names_ ;
172
173 // field units
174 vector<string> units_ ;
175
176 // spectral data
177 vector<int> JDATA ;
178} ;
179
180
181#endif /* NRO_FITS_DATASET_H */
Note: See TracBrowser for help on using the repository browser.