casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
VPSkyJones.h
Go to the documentation of this file.
00001 //# VPSkyJones.h: Definitions of interface for VPSkyJones 
00002 //# Copyright (C) 1996,1997,1998,1999,2000,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 //# $Id$
00028 
00029 #ifndef SYNTHESIS_VPSKYJONES_H
00030 #define SYNTHESIS_VPSKYJONES_H
00031 
00032 #include <casa/aips.h>
00033 #include <measures/Measures/Stokes.h>
00034 #include <synthesis/TransformMachines/BeamSkyJones.h>
00035 
00036 
00037 namespace casa { //# NAMESPACE CASA - BEGIN
00038 
00039 class Table;
00040 
00041 //# Someday, we'll need these forward declarations for Solve in the Jones Matrices
00042 class SkyEquation;
00043 class SkyModel;
00044 
00045 
00046 // <summary> Model the diagonal elements of the Voltage Pattern Sky Jones Matrices </summary>
00047 
00048 // <use visibility=export>
00049 
00050 // <reviewed reviewer="" date="" tests="" demos="">
00051 
00052 // <prerequisite>
00053 // <li> <linkto class="SkyEquation">SkyEquation</linkto> class
00054 // <li> <linkto class="BeamSkyJones">BeamSkyJones</linkto> class
00055 // </prerequisite>
00056 //
00057 // <etymology>
00058 // VP = Voltage Pattern, SkyJones = Sky-based Jones matrices.
00059 // This class only deals with the diagonal elements of the
00060 // voltage pattern jones matrices.
00061 // </etymology>
00062 //
00063 // <synopsis> 
00064 //
00065 // </synopsis> 
00066 //
00067 // <example>
00068 // <srcblock>
00069 // </srcblock>
00070 // </example>
00071 //
00072 // <motivation>
00073 // To deal with the non-leakage voltage pattern as applied to all Stokes,
00074 // and beam squint (ie, errors in Stokes V caused by differing RR and
00075 // LL beams).  Polarization leakage beams are in DBeamSkyJones.
00076 // The motivation for this split is differing storage requirements
00077 // for the unerlying PBMath types, and different methods available
00078 // to VPSkyJones and DBeamSkyJones.
00079 // </motivation>
00080 //
00081 // <todo asof="98/09/01">
00082 // <li> Solvable part needs implementation: we need to derive an
00083 // image of gradients of the elements of the Jones matrix. See VisJones
00084 // for how to do this.
00085 // </todo>
00086 
00087 class VPSkyJones : public BeamSkyJones {
00088 
00089 public:
00090 
00091   // constructor from a VP Table
00092   VPSkyJones(const ROMSColumns& msc, Table& table,
00093              const Quantity &parAngleInc,
00094              BeamSquint::SquintType doSquint,
00095              const Quantity &skyPositionThreshold = Quantity(180.,"deg"));
00096 
00097   // constructor for default PB type associated with MS
00098   VPSkyJones(const ROMSColumns& msc, 
00099              Bool makeDefaultPBsFromMS = True,
00100              const Quantity &parallacticAngleIncrement = Quantity(720.0, "deg"),
00101              BeamSquint::SquintType doSquint = BeamSquint::NONE,
00102              const Quantity &skyPositionThreshold = Quantity(180.,"deg"));
00103 
00104   
00105   // constructor for common PB type
00106   VPSkyJones(const String& tel,
00107              PBMath::CommonPB commonPBType,
00108              const Quantity &parallacticAngleIncrement = Quantity(720.0, "deg"),
00109              BeamSquint::SquintType doSquint = BeamSquint::NONE,
00110              const Quantity &skyPositionThreshold = Quantity(180.,"deg"));
00111 
00112   // constructor for given PBMath type
00113   VPSkyJones(const String& tel,
00114              PBMath& myPBMath,
00115              const Quantity &parallacticAngleIncrement = Quantity(720.0, "deg"),
00116              BeamSquint::SquintType doSquint = BeamSquint::NONE,
00117              const Quantity &skyPositionThreshold = Quantity(180.,"deg"));
00118 
00119   
00120   // destructor needed so it's not an abstract baseclass
00121   ~VPSkyJones(){}
00122 
00123   // return SkyJones type
00124   Type type() {return SkyJones::E;};
00125 
00126   // Is this solveable?
00127   virtual Bool isSolveable() {return False;};
00128  
00129 
00130 
00131 protected:
00132 
00133 private:    
00134 
00135 };
00136  
00137 
00138 } //# NAMESPACE CASA - END
00139 
00140 #endif
00141