LCOV - code coverage report
Current view: top level - imageanalysis/ImageAnalysis - ImageCollapser.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 0 7 0.0 %
Date: 2024-12-11 20:54:31 Functions: 0 6 0.0 %

          Line data    Source code
       1             : #ifndef IMAGES_IMAGECOLLAPSER_H
       2             : #define IMAGES_IMAGECOLLAPSER_H
       3             : 
       4             : #include <imageanalysis/ImageAnalysis/ImageTask.h>
       5             : 
       6             : #include <imageanalysis/ImageAnalysis/ImageCollapserData.h>
       7             : 
       8             : #include <casacore/casa/namespace.h>
       9             : 
      10             : namespace casacore{
      11             : 
      12             : template <class T> class TempImage;
      13             : template <class T> class SubImage;
      14             : }
      15             : 
      16             : namespace casa {
      17             : 
      18             : 
      19             : template <class T> class ImageCollapser : public ImageTask<T> {
      20             :     // <summary>
      21             :     // Top level interface which allows collapsing of images along a single axis. An aggregate method
      22             :     // (average, sum, etc) is applied to the collapsed pixels.
      23             :     // </summary>
      24             : 
      25             :     // <reviewed reviewer="" date="" tests="" demos="">
      26             :     // </reviewed>
      27             : 
      28             :     // <prerequisite>
      29             :     // </prerequisite>
      30             : 
      31             :     // <etymology>
      32             :     // Collapses image.
      33             :     // </etymology>
      34             : 
      35             :     // <synopsis>
      36             :     // High level interface for collapsing an image along a single axis.
      37             :     // </synopsis>
      38             : 
      39             :     // <example>
      40             :     // <srcblock>
      41             :     // ImageCollapser collapser(...);
      42             :     // collapser.collapse();
      43             :     // </srcblock>
      44             :     // </example>
      45             : 
      46             : public:
      47             : 
      48             :     // if <src>outname</src> is empty, no image will be written
      49             :     // if <src>overwrite</src> is True, if image already exists it will be removed
      50             :     // if <src>overwrite</src> is False, if image already exists exception will be thrown
      51             :     //
      52             :     // <group>
      53             : 
      54             :     ImageCollapser(
      55             :         const casacore::String& aggString, SPCIIT image,
      56             :         const casacore::Record *const regionRec,
      57             :         const casacore::String& maskInp, const casacore::IPosition& axes,
      58             :         casacore::Bool invertAxesSelection,
      59             :         const casacore::String& outname, casacore::Bool overwrite
      60             :     );
      61             : 
      62             :     ImageCollapser(
      63             :         const SPCIIT image,
      64             :                 const casacore::IPosition& axes, casacore::Bool invertAxesSelection,
      65             :         const ImageCollapserData::AggregateType aggregateType,
      66             :                 const casacore::String& outname, casacore::Bool overwrite
      67             :     );
      68             :     // </group>
      69             : 
      70           0 :     ~ImageCollapser() {}
      71             : 
      72             :     // perform the collapse and return the resulting image.
      73             :     SPIIT collapse() const;
      74             : 
      75           0 :         casacore::String getClass() const { const static casacore::String name = "ImageCollapser"; return name; }
      76             : 
      77             : protected:
      78           0 :     inline  CasacRegionManager::StokesControl _getStokesControl() const {
      79           0 :         return CasacRegionManager::USE_ALL_STOKES;
      80             :     }
      81             : 
      82           0 :         inline std::vector<casacore::Coordinate::Type> _getNecessaryCoordinates() const {
      83           0 :                 return std::vector<casacore::Coordinate::Type>();
      84             :     }
      85             : 
      86           0 :         casacore::Bool _supportsMultipleRegions() const {return true;}
      87             : 
      88             : private:
      89             :         casacore::Bool _invertAxesSelection;
      90             :         casacore::IPosition _axes;
      91             :     ImageCollapserData::AggregateType _aggType;
      92             : 
      93             :     // disallow default constructor
      94             :     ImageCollapser();
      95             : 
      96             :     void _doFluxUnits(
      97             :         casacore::TempImage<T>& tmpIm,
      98             :         const std::shared_ptr<const casacore::SubImage<T>> subImage
      99             :     ) const;
     100             : 
     101             :     void _invert();
     102             : 
     103             :     void _finishConstruction();
     104             : 
     105             :     void _checkFlux(SPCIIT subImage) const;
     106             : 
     107             :     void _doDegenerateAxesCase(
     108             :         casacore::TempImage<T>& tmpIm, SPCIIT subImage
     109             :     ) const;
     110             : 
     111             :     void _doLowPerf(
     112             :         TempImage<T>& tmpIm, SPCIIT subImage, T npixPerBeam
     113             :     ) const;
     114             : 
     115             :     // necessary to improve performance
     116             :     void _doHighPerf(SPCIIT image, casacore::TempImage<T>& outImage) const;
     117             : 
     118             :     // returns true if miscellaneous info was copied
     119             :     Bool _doMultipleBeams(
     120             :         TempImage<T>& tmpIm, SPCIIT subImage, Bool hasDir,
     121             :         const CoordinateSystem& outCoords
     122             :     ) const;
     123             : 
     124             :     void _doOtherStats(TempImage<T>& tmpIm, SPCIIT subImage) const;
     125             : 
     126             :     LatticeStatsBase::StatisticsTypes _getStatsType() const;
     127             : 
     128             :     static void _zeroNegatives(casacore::Array<T>& arr);
     129             : 
     130             : };
     131             : }
     132             : 
     133             : #ifndef AIPS_NO_TEMPLATE_SRC
     134             : #include <imageanalysis/ImageAnalysis/ImageCollapser.tcc>
     135             : #endif //# AIPS_NO_TEMPLATE_SRC
     136             : 
     137             : #endif

Generated by: LCOV version 1.16