Line data Source code
1 : #ifndef ALIMUONPOLYGON_H
2 : #define ALIMUONPOLYGON_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 : // $Id$
8 :
9 : /// \ingroup geometry
10 : /// \class AliMUONPolygon
11 : /// \brief A planar polygon
12 : ///
13 : // author Laurent Aphecetche
14 :
15 : #ifndef ROOT_TObject
16 : # include "TObject.h"
17 : #endif
18 :
19 : class AliMUONPolygon : public TObject
20 : {
21 : public:
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();
27 :
28 : /// Create a full copy of this object
29 0 : virtual TObject* Clone(const char* /*newname*/="") const { return new AliMUONPolygon(*this); }
30 :
31 : Bool_t Contains(Double_t x, Double_t y) const;
32 :
33 : Double_t SignedArea() const;
34 :
35 : /// Whether this polygon is oriented counter clockwise
36 0 : Bool_t IsCounterClockwiseOriented() const { return SignedArea() > 0.0; }
37 :
38 : void ReverseOrientation();
39 :
40 : void SetVertex(Int_t i, Double_t x, Double_t y);
41 :
42 : /// Return the x-coordinate of the i-th vertex
43 0 : Double_t X(Int_t i) const { return fX[i]; }
44 :
45 : /// Return the y-coordinate of the i-th vertex
46 0 : Double_t Y(Int_t i) const { return fY[i]; }
47 :
48 : /// Get the number of vertices of this polygon
49 0 : Int_t NumberOfVertices() const { return fN; }
50 :
51 : void Print(Option_t* opt="") const;
52 :
53 : void Close();
54 :
55 : private:
56 : Int_t fN; ///< Number of vertices
57 :
58 : /// Vertices x coordinates
59 : Double_t* fX; //[fN]
60 :
61 : /// Vertices y coordinates
62 : Double_t* fY; //[fN]
63 :
64 12 : ClassDef(AliMUONPolygon,1) // A simple polygon
65 : };
66 :
67 : #endif
|