LCOV - code coverage report
Current view: top level - synthesis/TransformMachines2 - CFTerms.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 5 7 71.4 %
Date: 2024-12-11 20:54:31 Functions: 5 8 62.5 %

          Line data    Source code
       1             : //# CFTerms.h: Definition for CFTerms
       2             : //# Copyright (C) 2007
       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 Library 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 Library General Public
      13             : //# License for more details.
      14             : //#
      15             : //# You should have received a copy of the GNU Library 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_CFTERMS_H
      30             : #define SYNTHESIS_TRANSFORM2_CFTERMS_H
      31             : 
      32             : 
      33             : #include <casacore/casa/Arrays/Vector.h>
      34             : #include <casacore/images/Images/ImageInterface.h>
      35             : #include <casacore/images/Images/PagedImage.h>
      36             : #include <casacore/images/Images/TempImage.h>
      37             : #include <msvis/MSVis/VisBuffer2.h>
      38             : #include <casacore/casa/Containers/Block.h>
      39             : 
      40             : namespace casa{
      41             :   namespace refim{
      42             :   using namespace vi;
      43             :   // <summary>  
      44             :   //  The base class to represent the Aperture-Term of the Measurement Equation. 
      45             :   // </summary>
      46             :   
      47             :   // <use visibility=export>
      48             :   // <prerequisite>
      49             :   // </prerequisite>
      50             :   // <etymology>
      51             :   //   A-Term to account for the effects of the antenna primary beam(s).
      52             :   // </etymology>
      53             :   //
      54             :   // <synopsis> 
      55             :   // 
      56             :   //</synopsis>
      57             :   class CFTerms
      58             :   {
      59             :   public:
      60             :     enum OpCodes {NOOP=0,NORMAL};
      61         405 :     CFTerms ():opCode_p(NORMAL) {};
      62         405 :     virtual ~CFTerms () {};
      63             : 
      64         269 :     virtual void setOpCode(OpCodes code) {opCode_p = code;}
      65        2101 :     virtual casacore::Bool isNoOp() {return opCode_p==NOOP;};
      66             : 
      67             :     virtual casacore::String name() = 0;
      68             : 
      69             :     virtual void applySky(casacore::ImageInterface<casacore::Float>& outputImages,
      70             :                           const VisBuffer2& vb, 
      71             :                           const casacore::Bool doSquint=true,
      72             :                           const casacore::Int& cfKey=0,
      73             :                           const casacore::Int& muellerTerms=0,
      74             :                           const casacore::Double freqVal=-1) = 0;
      75             :     virtual void applySky(casacore::ImageInterface<casacore::Complex>& outputImages,
      76             :                           const VisBuffer2& vb, 
      77             :                           const casacore::Bool doSquint=true,
      78             :                           const casacore::Int& cfKey=0,
      79             :                           const casacore::Int& muellerTerms=0,
      80             :                           const casacore::Double freqVal=-1) = 0;
      81             :     //
      82             :     // Not sure if the following method is requried.  Leaving it in
      83             :     // the code for now with an implementation that does nothing.
      84             :     //
      85             :     // virtual void applySky(casacore::Matrix<casacore::Complex>& screen, const casacore::Int wPixel, 
      86             :     //                    const casacore::Vector<casacore::Double>& sampling,
      87             :     //                    const casacore::Int wConvSize, const casacore::Double wScale,
      88             :     //                    const casacore::Int inner) 
      89             :     // {(void)screen; (void)wPixel; (void)sampling; (void)wConvSize; (void)wScale; (void)inner;};
      90             : 
      91             :     //
      92             :     // Returns a vector of integers that map each row in the given
      93             :     // VisBuffer to an index that is used to pick the appropriate
      94             :     // convolution function plane.  It also returns the number of
      95             :     // unique baselines in the nUnique parameter (unique baselines are
      96             :     // defined as the number of baselines each requiring a unique
      97             :     // convolution function).
      98             :     //
      99             :     // This is required for Heterogeneous antenna arrays (like ALMA)
     100             :     // and for all arrays where not all antenna aperture illuminations
     101             :     // can be treated as identical.
     102             :     //
     103             :     virtual casacore::Vector<casacore::Int> vbRow2CFKeyMap(const VisBuffer2& vb, casacore::Int& nUnique) = 0;
     104             :     virtual casacore::Int makePBPolnCoords(const VisBuffer2& vb,
     105             :                                  const casacore::Int& convSize,
     106             :                                  const casacore::Int& convSampling,
     107             :                                  const casacore::CoordinateSystem& skyCoord,
     108             :                                  const casacore::Int& skyNx, const casacore::Int& skyNy,
     109             :                                  casacore::CoordinateSystem& feedCoord) = 0;
     110             : 
     111             :     virtual casacore::Int getConvSize() = 0;
     112             :     virtual void setConvSize(const casacore::Int val) = 0;
     113             :     virtual casacore::Int getOversampling() = 0;
     114             : 
     115             :     virtual casacore::Float getConvWeightSizeFactor() = 0;
     116             :     virtual casacore::Float getSupportThreshold() = 0;
     117             :     
     118             :     virtual void normalizeImage(casacore::Lattice<casacore::Complex>& skyImage,
     119             :                                 const casacore::Matrix<casacore::Float>& weights) = 0;
     120             : 
     121             :     virtual int getVisParams(const VisBuffer2& vb, const casacore::CoordinateSystem& skyCoord=casacore::CoordinateSystem()) = 0;
     122             :     //
     123             :     // The mapping from VisBuffer polarizations map to the Image plane
     124             :     // polarization.  The latter is determined by the user input,
     125             :     // which is passed to the FTMachine in Imager.cc
     126             :     //
     127             :     // The map is available in the FTMachine which uses this method to
     128             :     // set the map for the CFTerms object.
     129             :     //
     130           0 :     virtual void setPolMap(const casacore::Vector<casacore::Int>& polMap) {polMap_p_base.resize(0);polMap_p_base=polMap;}
     131           0 :     virtual void getPolMap(casacore::Vector<casacore::Int>& polMap) {polMap.resize(0); polMap = polMap_p_base;};
     132             : 
     133             :     virtual casacore::Bool rotationallySymmetric() = 0;
     134             : 
     135         118 :     void setBandName(const casacore::String& bandName) {bandName_p = bandName;};
     136             :     casacore::String& getBandName() {return bandName_p;};
     137             : 
     138             :   protected:
     139             :     casacore::LogIO& logIO() {return logIO_p;}
     140             :     casacore::LogIO logIO_p;
     141             :     casacore::Vector<casacore::Int> polMap_p_base;
     142             :     OpCodes opCode_p;
     143             :     casacore::String telescopeName_p, bandName_p;
     144             :   };
     145             : 
     146             :   }///refim
     147             : }//casa
     148             : #endif

Generated by: LCOV version 1.16