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 /// Create a full copy of this object
29 virtual TObject* Clone(const char* /*newname*/="") const { return new AliMUONPolygon(*this); }
31 Bool_t Contains(Double_t x, Double_t y) const;
33 Double_t SignedArea() const;
35 /// Whether this polygon is oriented counter clockwise
36 Bool_t IsCounterClockwiseOriented() const { return SignedArea() > 0.0; }
38 void ReverseOrientation();
40 void SetVertex(Int_t i, Double_t x, Double_t y);
42 /// Return the x-coordinate of the i-th vertex
43 Double_t X(Int_t i) const { return fX[i]; }
45 /// Return the y-coordinate of the i-th vertex
46 Double_t Y(Int_t i) const { return fY[i]; }
48 /// Get the number of vertices of this polygon
49 Int_t NumberOfVertices() const { return fN; }
51 void Print(Option_t* opt="") const;
56 Int_t fN; ///< Number of vertices
58 /// Vertices x coordinates
61 /// Vertices y coordinates
64 ClassDef(AliMUONPolygon,1) // A simple polygon