//#--------------------------------------------------------------------------- //# PKSreader.h: Class to read Parkes multibeam data. //#--------------------------------------------------------------------------- //# Copyright (C) 2000-2008 //# Associated Universities, Inc. Washington DC, USA. //# //# This library is free software; you can redistribute it and/or modify it //# under the terms of the GNU Library General Public License as published by //# the Free Software Foundation; either version 2 of the License, or (at your //# option) any later version. //# //# This library is distributed in the hope that it will be useful, but WITHOUT //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public //# License for more details. //# //# You should have received a copy of the GNU Library General Public License //# along with this library; if not, write to the Free Software Foundation, //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. //# //# Correspondence concerning AIPS++ should be addressed as follows: //# Internet email: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# $Id: PKSreader.h,v 19.22 2008-11-17 06:44:34 cal103 Exp $ //#--------------------------------------------------------------------------- //# Original: 2000/08/02, Mark Calabretta, ATNF //#--------------------------------------------------------------------------- #ifndef ATNF_PKSREADER_H #define ATNF_PKSREADER_H #include #include #include #include #include #include #include // // Class to read Parkes multibeam data. // // Return an appropriate PKSreader for a Parkes Multibeam dataset. class PKSreader* getPKSreader( const String name, const Int retry, const Int interpolate, String &format); // As above, but search a list of directories for it. class PKSreader* getPKSreader( const String name, const Vector directories, const Int retry, const Int interpolate, Int &iDir, String &format); // Open an appropriate PKSreader for a Parkes Multibeam dataset. class PKSreader* getPKSreader( const String name, const Int retry, const Int interpolate, String &format, Vector &beams, Vector &IFs, Vector &nChan, Vector &nPol, Vector &haveXPol, Bool &haveBase, Bool &haveSpectra); // As above, but search a list of directories for it. class PKSreader* getPKSreader( const String name, const Vector directories, const Int retry, const Int interpolate, Int &iDir, String &format, Vector &beams, Vector &IFs, Vector &nChan, Vector &nPol, Vector &haveXPol, Bool &haveBase, Bool &haveSpectra); class PKSreader : public PKSmsg { public: // Destructor. virtual ~PKSreader() {}; // Open the dataset. virtual Int open( const String inName, Vector &beams, Vector &IFs, Vector &nChan, Vector &nPol, Vector &haveXPol, Bool &haveBase, Bool &haveSpectra) = 0; // Get parameters describing the data. virtual Int getHeader( String &observer, String &project, String &antName, Vector &antPosition, String &obsType, String &bunit, Float &equinox, String &dopplerFrame, Double &mjd, Double &refFreq, Double &bandwidth) = 0; // Get frequency parameters for each IF. virtual Int getFreqInfo( Vector &startFreq, Vector &endFreq) = 0; // Set data selection criteria. Channel numbering is 1-relative, zero or // negative channel numbers are taken to be offsets from the last channel. // Coordinate system selection (only supported for SDFITS input): // 0: equatorial (RA,Dec), // 1: vertical (Az,El), // 2: feed-plane. virtual uInt select( const Vector beamSel, const Vector IFsel, const Vector startChan, const Vector endChan, const Vector refChan, const Bool getSpectra = True, const Bool getXPol = False, const Int coordSys = 0) = 0; // Find the range of the data selected in time and position. virtual Int findRange( Int &nRow, Int &nSel, Vector &timeSpan, Matrix &positions) = 0; // Read the next data record. virtual Int read(PKSrecord &pksrec) = 0; // Close the input file. virtual void close() = 0; protected: Bool cGetSpectra, cGetXPol; Int cCoordSys; Vector cNChan, cNPol; Vector cHaveXPol; }; #endif