]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONContour.h
SVN keyword Id is set
[u/mrichter/AliRoot.git] / MUON / AliMUONContour.h
1 #ifndef ALIMUONCONTOUR_H
2 #define ALIMUONCONTOUR_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 AliMUONContour
11 /// \brief 2D contour
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TNamed
16 #  include "TNamed.h"
17 #endif
18
19 #ifndef ALI_MP_AREA_H
20 #  include "AliMpArea.h"
21 #endif
22
23 class AliMUONPolygon;
24 class TGeoHMatrix;
25 class TObjArray;
26
27 class AliMUONContour : public TNamed
28 {
29 public:
30   AliMUONContour(const char* name="");
31   AliMUONContour(const char* name, const AliMpArea& area);
32   AliMUONContour(const AliMUONContour& rhs);
33   AliMUONContour& operator=(const AliMUONContour& rhs);
34   virtual ~AliMUONContour();
35   
36   AliMpArea Area() const;
37   
38   /// Get a full copy of this object.
39   virtual TObject* Clone(const char* /*newname*/="") const { return new AliMUONContour(*this); }
40   
41   /// Add an offset to all points
42   void Offset(Double_t x, Double_t y);
43   
44   /// Apply a global transformation to all points
45   void Transform(const TGeoHMatrix& matrix);
46   
47   void Add(const AliMUONPolygon& polygon);
48   
49   virtual void Copy(TObject& obj) const;
50     
51   Bool_t IsInside(Double_t x, Double_t y) const;
52
53   virtual void Print(Option_t* opt="") const;
54   
55   /// Get the number of vertices of this contour
56   Int_t NumberOfVertices() const { return fNofVertices; }
57   
58   Bool_t IsValid() const;
59   
60   /// Get the list of polygons we have
61   const TObjArray* Polygons() const { return fPolygons; }
62   
63   void AssertOrientation(Bool_t autoCorrect=kFALSE);
64   
65 private:
66   TObjArray* fPolygons; ///< the polygons that this contour is made of
67   Double_t fXmin; ///< min x-value
68   Double_t fXmax; ///< max x-value
69   Double_t fYmin; ///< min y-value
70   Double_t fYmax; ///< max y-value
71   Int_t fNofVertices; ///< total number of vertices
72   
73   ClassDef(AliMUONContour,1) // 2D-contour of an object
74 };
75
76 #endif