source: trunk/src/SDAttr.h@ 476

Last change on this file since 476 was 475, checked in by kil064, 20 years ago

move function convertInstrument into here from SDMemTable
fix error in apertureEfficiency function (missing break)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1//#---------------------------------------------------------------------------
2//# SDAttr.h: Return known attributes about telescopes
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2004
5//# 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 SDATTR_H
32#define SDATTR_H
33
34#include "SDDefs.h"
35#include <casa/aips.h>
36#include <measures/Measures/MEpoch.h>
37
38template<class T> class casa::Vector;
39//class casa::MEpoch;
40
41
42
43namespace asap {
44
45class SDAttr {
46
47 public:
48
49// Constructor
50 SDAttr();
51
52// Destructor
53 ~SDAttr();
54
55// Copy Constructor (copy semantics)
56 SDAttr (const SDAttr& other);
57
58// Assignment (copy semantics)
59 SDAttr &operator=(const SDAttr& other);
60
61// Telescope diameter (m). Throws exception if unknown.
62 casa::Float diameter (Instrument inst) const;
63
64// Beam efficiency. Frequency in Hz. Returns 1 if unknown.
65 casa::Vector<casa::Float> beamEfficiency (Instrument instr, const casa::MEpoch& dateObs,
66 const casa::Vector<casa::Float>& freqs) const;
67
68// Aperture efficiency. Frequency in Hz. Returns 1 if unknown.
69 casa::Vector<casa::Float> apertureEfficiency (Instrument instr, const casa::MEpoch& dateObs,
70 const casa::Vector<casa::Float>& freqs) const;
71
72// Find factor to convert Jy -> K for this telescope, date of observation and frequency (Hz)
73 casa::Vector<casa::Float> JyPerK (Instrument instr, const casa::MEpoch& dateObs,
74 const casa::Vector<casa::Float>& freqs) const;
75
76// Gain Elevation polynomial correction coefficients (elevation in degrees)
77// Returns length 0 if not known.
78 casa::Vector<casa::Float> gainElevationPoly (Instrument instr) const;
79
80
81// Helper function to check instrument (antenna) name and give enum
82 static Instrument convertInstrument(const casa::String& instrument,
83 casa::Bool throwIt);
84
85// Helper function. Finds factor to convert K -> Jy. Provide aperture efficiency and dish geometric diameter (m)
86 static casa::Float findJyPerK (casa::Float etaAp, casa::Float D);
87
88 private:
89
90// Static data
91
92 casa::Vector<casa::Float> MopEtaBeamX_; // Beam efficiency
93 casa::Vector<casa::Float> MopEtaBeam2003Y_;
94 casa::Vector<casa::Float> MopEtaBeam2004Y_;
95//
96 casa::Vector<casa::Float> MopEtaApX_; // Aperture efficiency
97 casa::Vector<casa::Float> MopEtaAp2004Y_;
98//
99 casa::Vector<casa::Float> TidEtaApX_; // Aperture efficiency
100 casa::Vector<casa::Float> TidEtaApY_;
101//
102 casa::Vector<casa::Float> TidGainElPoly_; // Gain-el correction poly coeffs
103
104// Init private data
105 void initData();
106
107// Linear interpolation
108 casa::Vector<casa::Float> interp (const casa::Vector<casa::Float>& xOut, const casa::Vector<casa::Float>& xIn,
109 const casa::Vector<casa::Float>& yIn) const;
110};
111
112} // namespace
113
114#endif
Note: See TracBrowser for help on using the repository browser.