Source
xxxxxxxxxx
//# AWProjectWBFT.h: Definition for AWProjectWBFT
//# Copyright (C) 1996,1997,1998,1999,2000,2002
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be adressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//#
//# $Id$
namespace casa { //# NAMESPACE CASA - BEGIN
class EPJones;
class AWProjectWBFT : public AWProjectFT {
public:
//
// Constructor: cachesize is the size of the cache in words
// (e.g. a few million is a good number), tilesize is the size of
// the tile used in gridding (cannot be less than 12, 16 works in
// most cases).
// <group>
//
AWProjectWBFT(casacore::Int nFacets, casacore::Long cachesize,
casacore::CountedPtr<CFCache>& cfcache,
casacore::CountedPtr<ConvolutionFunction>& cf,
casacore::CountedPtr<VisibilityResamplerBase>& visResampler,
casacore::Bool applyPointingOffset=true,
casacore::Bool doPBCorr=true,
casacore::Int tilesize=16,
casacore::Float paSteps=5.0,
casacore::Float pbLimit=5e-4,
casacore::Bool usezero=false,
casacore::Bool conjBeams_p=true,
casacore::Bool doublePrecGrid=false);
// </group>
// Construct from a casacore::Record containing the AWProjectWBFT state
AWProjectWBFT(const casacore::RecordInterface& stateRec);
// Copy constructor
AWProjectWBFT(const AWProjectWBFT &other):AWProjectFT() {operator=(other);};
// Assignment operator
AWProjectWBFT &operator=(const AWProjectWBFT &other);
~AWProjectWBFT() {};
virtual casacore::String name() const {return "AWProjectWBFT";};
casacore::Int findPointingOffsets(const VisBuffer& vb, casacore::Array<casacore::Float> &l_off, casacore::Array<casacore::Float> &m_off,
casacore::Bool Evaluate);
void normalizeAvgPB();
void normalizeAvgPB(casacore::ImageInterface<casacore::Complex>& /*inImage*/, casacore::ImageInterface<casacore::Float>& /*outImage*/)
{throw(casacore::AipsError("AWPWBFT::normalizeAvgPB(Complex,Float)"));}
//
// This method is called from AWProjectFT to compute the
// sensitivity image by accumulating in the image domain
// (i.e. directly accumulate the Primay Beam functions). This is
// called from findConvFunction() so that sensitivity pattern is
// also pre-computed along with the convolution functions. This
// in-turn calls the ATerm::makeAverageResponse().