Line data Source code
1 : //# VPSkyJones.h: Definitions of interface for VPSkyJones 2 : //# Copyright (C) 1996-2016 3 : //# Associated Universities, Inc. Washington DC, USA. 4 : //# 5 : //# This library is free software; you can redistribute it and/or modify it 6 : //# under the terms of the GNU General Public License as published by 7 : //# the Free Software Foundation; either version 2 of the License, or (at your 8 : //# option) any later version. 9 : //# 10 : //# This library is distributed in the hope that it will be useful, but WITHOUT 11 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 13 : //# License for more details. 14 : //# 15 : //# You should have received a copy of the GNU General Public License 16 : //# along with this library; if not, write to the Free Software Foundation, 17 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 18 : //# 19 : //# Correspondence concerning AIPS++ should be adressed as follows: 20 : //# Internet email: casa-feedback@nrao.edu. 21 : //# Postal address: AIPS++ Project Office 22 : //# National Radio Astronomy Observatory 23 : //# 520 Edgemont Road 24 : //# Charlottesville, VA 22903-2475 USA 25 : //# 26 : //# 27 : //# $Id$ 28 : 29 : #ifndef SYNTHESIS_TRANSFORM2_VPSKYJONES_H 30 : #define SYNTHESIS_TRANSFORM2_VPSKYJONES_H 31 : 32 : #include <casacore/casa/aips.h> 33 : #include <casacore/measures/Measures/Stokes.h> 34 : #include <synthesis/TransformMachines2/BeamSkyJones.h> 35 : 36 : 37 : namespace casacore{ 38 : 39 : class Table; 40 : } 41 : 42 : namespace casa { //# NAMESPACE CASA - BEGIN 43 : 44 : 45 : //# Someday, we'll need these forward declarations for Solve in the Jones Matrices 46 : class SkyEquation; 47 : class SkyModel; 48 : 49 : namespace refim { //REFIM 50 : // <summary> Model the diagonal elements of the Voltage Pattern Sky Jones Matrices </summary> 51 : 52 : // <use visibility=export> 53 : 54 : // <reviewed reviewer="" date="" tests="" demos=""> 55 : 56 : // <prerequisite> 57 : // <li> <linkto class="SkyEquation">SkyEquation</linkto> class 58 : // <li> <linkto class="BeamSkyJones">BeamSkyJones</linkto> class 59 : // </prerequisite> 60 : // 61 : // <etymology> 62 : // VP = Voltage Pattern, SkyJones = Sky-based Jones matrices. 63 : // This class only deals with the diagonal elements of the 64 : // voltage pattern jones matrices. 65 : // </etymology> 66 : // 67 : // <synopsis> 68 : // 69 : // </synopsis> 70 : // 71 : // <example> 72 : // <srcblock> 73 : // </srcblock> 74 : // </example> 75 : // 76 : // <motivation> 77 : // To deal with the non-leakage voltage pattern as applied to all casacore::Stokes, 78 : // and beam squint (ie, errors in casacore::Stokes V caused by differing RR and 79 : // LL beams). Polarization leakage beams are in DBeamSkyJones. 80 : // The motivation for this split is differing storage requirements 81 : // for the unerlying PBMath types, and different methods available 82 : // to VPSkyJones and DBeamSkyJones. 83 : // </motivation> 84 : // 85 : // <todo asof="98/09/01"> 86 : // <li> Solvable part needs implementation: we need to derive an 87 : // image of gradients of the elements of the Jones matrix. See VisJones 88 : // for how to do this. 89 : // </todo> 90 : 91 : class VPSkyJones : public BeamSkyJones { 92 : 93 : public: 94 : 95 : // constructor from a VP Table 96 : VPSkyJones(const casacore::MSColumns& msc, casacore::Table& table, 97 : const casacore::Quantity &parAngleInc, 98 : BeamSquint::SquintType doSquint, 99 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg")); 100 : 101 : // constructor for default PB type associated with MS 102 : VPSkyJones(const casacore::MSColumns& msc, 103 : casacore::Bool makeDefaultPBsFromMS = true, 104 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"), 105 : BeamSquint::SquintType doSquint = BeamSquint::NONE, 106 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg")); 107 : 108 : 109 : // constructor for common PB type 110 : VPSkyJones(const casacore::String& tel, 111 : PBMath::CommonPB commonPBType, 112 0 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"), 113 : BeamSquint::SquintType doSquint = BeamSquint::NONE, 114 0 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg")); 115 : 116 : // constructor for given PBMath type 117 : VPSkyJones(const casacore::String& tel, 118 : PBMath& myPBMath, 119 : const casacore::Quantity ¶llacticAngleIncrement = casacore::Quantity(720.0, "deg"), 120 : BeamSquint::SquintType doSquint = BeamSquint::NONE, 121 : const casacore::Quantity &skyPositionThreshold = casacore::Quantity(180.,"deg")); 122 : 123 : 124 : // destructor needed so it's not an abstract baseclass 125 0 : ~VPSkyJones(){} 126 : 127 : // return SkyJones type 128 0 : ::casa::SkyJones::Type type() {return ::casa::SkyJones::E;}; 129 : 130 : // Is this solveable? 131 0 : virtual casacore::Bool isSolveable() {return false;}; 132 : 133 : 134 : 135 : protected: 136 : 137 : private: 138 : 139 : }; 140 : 141 : } // REFIM END 142 : } //# NAMESPACE CASA - END 143 : 144 : #endif 145 :