Line data Source code
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 0 : 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 0 : Int_t NumberOfVertices() const { return fNofVertices; }
57 :
58 : Bool_t IsValid() const;
59 :
60 : /// Get the list of polygons we have
61 0 : 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 12 : ClassDef(AliMUONContour,1) // 2D-contour of an object
74 : };
75 :
76 : #endif
|