source: branches/parallel/external-alma/atnf/PKSIO/NROFITSDataset.h @ 2262

Last change on this file since 2262 was 2262, checked in by Takeshi Nakazato, 13 years ago

New Development: No

JIRA Issue: No

Ready for Test: No

Interface Changes: No

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: Describe your changes here...

Preparation for check in tuning on NRO filler.
Merge changes in trunk.

r2154
r2156
r2158
r2198-2203
r2212
r2261


File size: 5.6 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  virtual double getStartIntTime( int i ) ;
98  virtual double getScanTime( int i ) ;
99
100 protected:
101  // fill header information
102  int fillHeader( int sameEndian ) ;
103
104  // Read char data
105  int readHeader( string &v, char *name ) ;
106  int readTable( char *v, char *name ) ;
107  int readTable( char *v, char *name, int clen, int idx ) ;
108  int readTable( vector<char *> &v, char *name, int idx ) ;
109  int readColumn( vector<string> &v, char *name ) ;
110  int readColumn( vector<string> &v, char *name, int idx ) ;
111
112  // Read int data
113  int readHeader( int &v, char *name, int b ) ;
114  int readTable( int &v, char *name, int b ) ;
115  int readTable( int &v, char *name, int b, int idx ) ;
116  int readTable( vector<int> &v, char *name, int b, int idx ) ;
117  int readColumn( vector<int> &v, char *name, int b ) ;
118  int readColumn( vector<int> &v, char *name, int b, int idx ) ;
119
120  // Read float data
121  int readHeader( float &v, char *name, int b ) ;
122  int readTable( float &v, char *name, int b ) ;
123  int readTable( float &v, char *name, int b, int idx ) ;
124  int readTable( vector<float> &v, char *name, int b, int idx ) ;
125  int readColumn( vector<float> &v, char *name, int b ) ;
126  int readColumn( vector<float> &v, char *name, int b, int idx ) ;
127
128  // Read double data
129  int readHeader( double &v, char *name, int b ) ;
130  int readTable( double &v, char *name, int b ) ;
131  int readTable( double &v, char *name, int b, int idx ) ;
132  int readTable( vector<double> &v, char *name, int b, int idx ) ;
133  int readColumn( vector<double> &v, char *name, int b ) ;
134  int readColumn( vector<double> &v, char *name, int b, int idx ) ;
135
136  // read ARRY
137  int readARRY() ;
138
139  // Convert RA character representation to radian
140  double radRA( string ra ) ;
141 
142  // Convert DEC character representation to radian
143  double radDEC( string dec ) ;
144
145  // get field parameters for scan header
146  void getField() ;
147
148  // fill array type
149  void fillARYTP() ;
150
151  // find data for each ARYTP
152  void findData() ;
153
154  // get offset bytes for attributes
155  int getOffset( char *name ) ;
156
157  // convert frequency frame
158//   virtual double toLSR( double v, double t, double x, double y ) ;
159
160  // number of column for scan header
161  int numField_ ;
162
163  // number of HDU
164  int numHdu_ ;
165
166  // array type
167  vector<string> ARYTP ;
168
169  // reference index
170  vector<int> arrayid_ ;
171
172  // field names
173  vector<string> forms_ ;
174 
175  // field types
176  vector<string> names_ ;
177
178  // field units
179  vector<string> units_ ;
180
181  // spectral data
182  vector<int> JDATA ;
183} ;
184
185
186#endif /* NRO_FITS_DATASET_H */
Note: See TracBrowser for help on using the repository browser.