#ifndef ALI_MP_AREA_H
#define ALI_MP_AREA_H
#include <TObject.h>
using std::ostream;
class AliMpArea : public TObject
{
public:
AliMpArea(Double_t x, Double_t y,
Double_t dx, Double_t dy);
AliMpArea(const AliMpArea& rhs);
AliMpArea();
virtual ~AliMpArea();
AliMpArea& operator = (const AliMpArea& right);
Double_t LeftBorder() const;
Double_t RightBorder() const;
Double_t UpBorder() const;
Double_t DownBorder() const;
void LeftDownCorner(Double_t& x, Double_t& y) const;
void LeftUpCorner(Double_t& x, Double_t& y) const;
void RightDownCorner(Double_t& x, Double_t& y) const;
void RightUpCorner(Double_t& x, Double_t& y) const;
AliMpArea Intersect(const AliMpArea& area) const;
Bool_t Overlap(const AliMpArea& area) const;
Bool_t Contains(const AliMpArea& area) const;
void Print(Option_t* opt="") const;
void GetParameters(Double_t& x, Double_t& y,
Double_t& dx, Double_t& dy) const;
Double_t GetPositionX() const;
Double_t GetPositionY() const;
Double_t GetDimensionX() const;
Double_t GetDimensionY() const;
Bool_t IsValid() const;
private:
Double_t fPositionX;
Double_t fPositionY;
Double_t fDimensionX;
Double_t fDimensionY;
Bool_t fValidity;
ClassDef(AliMpArea,2)
};
ostream& operator << (ostream &stream,const AliMpArea& area);
inline Double_t AliMpArea::GetPositionX() const { return fPositionX; }
inline Double_t AliMpArea::GetPositionY() const { return fPositionY; }
inline Double_t AliMpArea::GetDimensionX() const { return fDimensionX; }
inline Double_t AliMpArea::GetDimensionY() const { return fDimensionY; }
inline Bool_t AliMpArea::IsValid() const { return fValidity; }
#endif //ALI_MP_AREA_H