LCOV - code coverage report
Current view: top level - synthesis/Utilities - PointingDirectionProjector.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 16 16 100.0 %
Date: 2024-12-11 20:54:31 Functions: 7 8 87.5 %

          Line data    Source code
       1             : #ifndef _SYNTHESYS_POINTING_DIRECTION_PROJECTOR_H_
       2             : #define _SYNTHESYS_POINTING_DIRECTION_PROJECTOR_H_
       3             : 
       4             : #include <casacore/casa/Arrays/Matrix.h>
       5             : #include <casacore/casa/Arrays/Vector.h>
       6             : #include <casacore/casa/Logging/LogIO.h>
       7             : 
       8             : namespace casa {
       9             : // Partially projection code from ASAP GenericEdgeDetector
      10             : class Projector {
      11             : public:
      12             :   Projector();
      13          18 :   virtual ~Projector() {
      14          18 :   }
      15             :   void setDirection(const casacore::Matrix<casacore::Double> &dir);
      16             :   void setReferenceCoordinate(casacore::Double const lat, casacore::Double const lon);
      17             :   void setReferencePixel(casacore::Double const refx, casacore::Double const refy);
      18             :   void unsetReferenceCoordinate();
      19             :   void unsetReferencePixel();
      20          18 :   casacore::Bool isReferenceCoordinateSet() const {return user_defined_center_;}
      21          18 :   casacore::Bool isReferencePixelSet() const {return user_defined_pcenter_;}
      22           9 :   void getUserDefinedReferenceCoordinate(casacore::Double &lat, casacore::Double &lon) {
      23           9 :     lat = cenx_user_;
      24           9 :     lon = ceny_user_;
      25           9 :   }
      26           9 :   void getUserDefinedReferencePixel(casacore::Double &refx, casacore::Double &refy) {
      27           9 :     refx = pcenx_user_;
      28           9 :     refy = pceny_user_;
      29           9 :   }
      30             :   virtual const casacore::Matrix<casacore::Double>& project() = 0;
      31             : protected:
      32             :   // From asap/src/MathUtils
      33             :   void rotateRA(casacore::Vector<casacore::Double> &v);
      34             :   // casacore::Input data
      35             :   casacore::Matrix<casacore::Double> dir_;
      36             : 
      37             :   // logging
      38             :   casacore::LogIO os_;
      39             : 
      40             : private:
      41             :   // private attributes
      42             :   casacore::Double cenx_user_;
      43             :   casacore::Double ceny_user_;
      44             :   casacore::Bool user_defined_center_;
      45             :   casacore::Double pcenx_user_;
      46             :   casacore::Double pceny_user_;
      47             :   casacore::Bool user_defined_pcenter_;
      48             : };
      49             : 
      50             : class OrthographicProjector: public Projector {
      51             : public:
      52             :   OrthographicProjector(casacore::Float pixel_scale = 0.5);
      53             :   virtual ~OrthographicProjector();
      54             :   const casacore::Matrix<casacore::Double>& project();
      55             :   const casacore::Vector<casacore::Double>& p_center() const {
      56             :     return p_center_;
      57             :   }
      58          36 :   const casacore::Vector<casacore::Double>& p_size() const {
      59          36 :     return p_size_;
      60             :   }
      61           9 :   casacore::Double pixel_size() const {
      62           9 :     return dy_;
      63             :   }
      64             : 
      65             : private:
      66             :   void scale_and_center();
      67             :   // options
      68             :   casacore::Float pixel_scale_;
      69             :   // pixel info
      70             :   casacore::Double cenx_;
      71             :   casacore::Double ceny_;
      72             :   casacore::Double pcenx_;
      73             :   casacore::Double pceny_;
      74             :   casacore::uInt nx_;
      75             :   casacore::uInt ny_;
      76             :   casacore::Double dx_;
      77             :   casacore::Double dy_;
      78             : 
      79             :   // storage for projection
      80             :   casacore::Matrix<casacore::Double> pdir_;
      81             : 
      82             :   // projection parameters computed from input directions
      83             :   casacore::Vector<casacore::Double> p_center_;
      84             :   casacore::Vector<casacore::Double> p_size_;
      85             : };
      86             : 
      87             : } // end of namespace casa
      88             : 
      89             : #endif /* _SYNTHESYS_POINTING_DIRECTION_PROJECTOR_H_ */

Generated by: LCOV version 1.16