Skip to content
Snippets Groups Projects
Rectangle.h 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • //  ************************************************************************************************
    
    //  BornAgain: simulate and fit reflection and scattering
    
    //! @file      Device/Mask/Rectangle.h
    
    //!
    //! @homepage  http://www.bornagainproject.org
    //! @license   GNU General Public License v3 or higher (see COPYING)
    
    //! @copyright Forschungszentrum Jülich GmbH 2018
    //! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
    
    //  ************************************************************************************************
    
    Wuttke, Joachim's avatar
    Wuttke, Joachim committed
    #ifndef BORNAGAIN_DEVICE_MASK_RECTANGLE_H
    #define BORNAGAIN_DEVICE_MASK_RECTANGLE_H
    
    #include "Device/Mask/IShape2D.h"
    
    Wuttke, Joachim's avatar
    Wuttke, Joachim committed
    //! A rectangle, for use in detector masks.
    //!
    //! Edges are along the coordinate axes.
    
    class Rectangle : public IShape2D {
    
    public:
    
        Rectangle(double xlow, double ylow, double xup, double yup, bool inverted = false);
        Rectangle* clone() const { return new Rectangle(m_xlow, m_ylow, m_xup, m_yup, m_inverted); }
    
        void setInverted(bool inverted = true);
    
    
        bool contains(double x, double y) const;
    
        bool contains(const Bin1D& binx, const Bin1D& biny) const;
    
    
        double getArea() const;
    
    
        double getXlow() const { return m_xlow; }
        double getYlow() const { return m_ylow; }
    
        double getXup() const { return m_xup; }
        double getYup() const { return m_yup; }
    
    private:
        double m_xlow, m_ylow, m_xup, m_yup;
    
        bool m_inverted;
    
    Wuttke, Joachim's avatar
    Wuttke, Joachim committed
    #endif // BORNAGAIN_DEVICE_MASK_RECTANGLE_H