1 #ifndef ALIMUONPOLYGON_H
2 #define ALIMUONPOLYGON_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 /// \class AliMUONPolygon
11 /// \brief A planar polygon
13 // author Laurent Aphecetche
19 class AliMUONPolygon : public TObject
22 AliMUONPolygon(Int_t nvertices=5);
23 AliMUONPolygon(Double_t xpos, Double_t ypos, Double_t halfsizex, Double_t halfsizey);
24 AliMUONPolygon(const AliMUONPolygon& rhs);
25 AliMUONPolygon& operator=(const AliMUONPolygon& rhs);
26 virtual ~AliMUONPolygon();
28 virtual TObject* Clone(const char* /*newname*/="") const { return new AliMUONPolygon(*this); }
30 Bool_t Contains(Double_t x, Double_t y) const;
32 Double_t SignedArea() const;
34 /// Whether this polygon is oriented counter clockwise
35 Bool_t IsCounterClockwiseOriented() const { return SignedArea() > 0.0; }
37 void ReverseOrientation();
39 void SetVertex(Int_t i, Double_t x, Double_t y);
41 Double_t X(Int_t i) const { return fX[i]; }
43 Double_t Y(Int_t i) const { return fY[i]; }
45 Int_t NumberOfVertices() const { return fN; }
47 void Print(Option_t* opt="") const;
49 void Copy(TObject& obj) const;
54 Int_t fN; ///< Number of vertices
58 ClassDef(AliMUONPolygon,1) // A simple polygon