casa
$Rev:20696$
|
00001 //# EJones.h: Antenna-pattern related calibration term: E Jones 00002 //# Copyright (C) 1996,1997,2000,2001,2002,2003 00003 //# Associated Universities, Inc. Washington DC, USA. 00004 //# 00005 //# This library is free software; you can redistribute it and/or modify it 00006 //# under the terms of the GNU Library General Public License as published by 00007 //# the Free Software Foundation; either version 2 of the License, or (at your 00008 //# option) any later version. 00009 //# 00010 //# This library is distributed in the hope that it will be useful, but WITHOUT 00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00013 //# License for more details. 00014 //# 00015 //# You should have received a copy of the GNU Library General Public License 00016 //# along with this library; if not, write to the Free Software Foundation, 00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00018 //# 00019 //# Correspondence concerning AIPS++ should be adressed as follows: 00020 //# Internet email: aips2-request@nrao.edu. 00021 //# Postal address: AIPS++ Project Office 00022 //# National Radio Astronomy Observatory 00023 //# 520 Edgemont Road 00024 //# Charlottesville, VA 22903-2475 USA 00025 //# 00026 //# 00027 00028 #ifndef SYNTHESIS_EJONES_H 00029 #define SYNTHESIS_EJONES_H 00030 00031 #include <casa/aips.h> 00032 #include <casa/Containers/Record.h> 00033 #include <casa/BasicSL/Complex.h> 00034 #include <synthesis/MeasurementComponents/SolvableVisCal.h> 00035 00036 namespace casa { //# NAMESPACE CASA - BEGIN 00037 00038 // Forward declaration 00039 class VisEquation; 00040 00041 // ********************************************************** 00042 // EGainCurve 00043 // 00044 00045 class EGainCurve : public SolvableVisJones { 00046 public: 00047 00048 // Constructor 00049 EGainCurve(VisSet& vs); 00050 // EGainCurve(const Int& nAnt); // NYI 00051 00052 virtual ~EGainCurve(); 00053 00054 // Return the type enum 00055 virtual Type type() { return VisCal::E; }; 00056 00057 // Return type name as string 00058 virtual String typeName() { return "EGainCurve"; }; 00059 virtual String longTypeName() { return "EGainCurve (Gain(elev) corrections)"; }; 00060 00061 // Gain curve coeffs are Float parameters 00062 virtual VisCalEnum::VCParType parType() { return VisCalEnum::REAL; }; 00063 00064 // Type of Jones matrix ( 00065 Jones::JonesType jonesType() { return Jones::Diagonal; }; 00066 00067 // Local specialization of setApply to extract gain curves from table 00068 void setApply(const Record& applypar); 00069 00070 // Generate gain curves caltable via specify 00071 void setSpecify(const Record& specify); 00072 void specify(const Record& specify); 00073 00074 // Guess (throws error because we don't yet solve for this) 00075 virtual void guessPar(VisBuffer& vb); 00076 00077 // Local implementation of spwOK() 00078 virtual Vector<Bool> spwOK() { return spwOK_; }; 00079 00080 protected: 00081 00082 // EGainCurve has eight Float pars per ant (4 per pol) 00083 virtual Int nPar() { return 8; }; 00084 00085 // Jones matrix elements are NOT trivial 00086 virtual Bool trivialJonesElem() { return False; }; 00087 00088 // Access to z.a. data 00089 Vector<Double>& za() { return za_; }; 00090 00091 // Calculate parameters (in this case, the z.a.) 00092 virtual void calcPar(); 00093 00094 // Calculate the EGainCurve matrix for all ants 00095 virtual void calcAllJones(); 00096 00097 private: 00098 00099 // avoid compiler warnings 00100 using SolvableVisJones::setApply; 00101 00102 // Name of the gain curve source table 00103 String gainCurveSrc_; 00104 00105 // The observation start time (for selecting gain curves) 00106 Double obstime_; 00107 00108 // The ant name list (for selecting gain curves) 00109 Vector<String> antnames_; 00110 00111 // The spw ref frequencies (for selecting gain curves) 00112 Vector<Double> spwfreqs_; 00113 00114 // The spw band names (for selecting gain curves) 00115 Vector<String> spwbands_; 00116 00117 // Zenith angles 00118 Vector<Double> za_; 00119 00120 // Effeciency samples 00121 Vector<Double> eff_; 00122 00123 // Local spwOK_ 00124 Vector<Bool> spwOK_; 00125 00126 }; 00127 00128 00129 } //# NAMESPACE CASA - END 00130 00131 #endif 00132