new functionality and new class added
[u/mrichter/AliRoot.git] / MUON / AliMUONContour.h
CommitLineData
0b936dc0 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
23class AliMUONPolygon;
24class TGeoHMatrix;
25class TObjArray;
26
27class AliMUONContour : public TNamed
28{
29public:
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
65private:
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