//# Copyright (C) 1996,1997,1998,1999,2000,2001,2003 //# 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 addressed 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 //# #ifndef IMAGEANALYSIS_CASACasaImageBeamSet #define IMAGEANALYSIS_CASACasaImageBeamSet #include <casacore/images/Images/ImageBeamSet.h> namespace casa { // <summary> // Represents a set of restoring beams associated with an image. Implements getCommonBeam() // </summary> // <use visibility=export> // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos=""> // </reviewed> // <prerequisite> // </prerequisite> // <etymology> // A Set of Beams associated with an Image. // </etymology> // <synopsis> // </synopsis> // // <example> // </example> // <motivation> // Restoring beams are used many places in image analysis tasks. // </motivation> // <todo> // </todo> class CasaImageBeamSet : public casacore::ImageBeamSet { public: // Construct an empty beam set. CasaImageBeamSet(); // Construct a beam set from an 2-D array of beams representing // the frequency and stokes axis. // Axis length 1 means it is valid for all channels cq. stokes. // If the image has 0 spectral channels or stokes, the corresponding // length of the axis in the provided matrix should be 1. CasaImageBeamSet( const casacore::Matrix<casacore::GaussianBeam>& beams ); // construct an CasaImageBeamSet representing a single beam which is valid for // all channels and stokes CasaImageBeamSet(const casacore::GaussianBeam& beam); // Create an CasaImageBeamSet of the specified shape with all // GaussianBeams initialized to <src>beam</src>. CasaImageBeamSet(casacore::uInt nchan, casacore::uInt nstokes, const casacore::GaussianBeam& beam=casacore::GaussianBeam::NULL_BEAM); // The copy constructor (reference semantics). CasaImageBeamSet(const CasaImageBeamSet& other); CasaImageBeamSet(const casacore::ImageBeamSet& other); ~CasaImageBeamSet(); // Assignment can change the shape (copy semantics). CasaImageBeamSet& operator=(const CasaImageBeamSet& other); static const casacore::String& className(); // Get a beam to which all other beams in the set can be convolved. // If all other beams can be convolved to the maximum area beam in the set, that beam will be returned. // If not, this is guaranteed to be the minimum area beam to which // all beams in the set can be convolved if all but one of the beams in the set can be convolved to the beam in the set with the // largest area. Otherwise, the returned beam may or may not be the smallest possible beam to which all the beams in the set // can be convolved. casacore::GaussianBeam getCommonBeam() const; private: static void _transformEllipseByScaling( casacore::Double& transformedMajor, casacore::Double& transformedMinor, casacore::Double& transformedPa, casacore::Double major, casacore::Double minor, casacore::Double pa, casacore::Double xScaleFactor, casacore::Double yScaleFactor ); }; std::ostream &operator<<(std::ostream &os, const CasaImageBeamSet& beamSet); } #endif