]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONContour.h
Adding classes forgotten in previous commit
[u/mrichter/AliRoot.git] / MUON / AliMUONContour.h
diff --git a/MUON/AliMUONContour.h b/MUON/AliMUONContour.h
new file mode 100644 (file)
index 0000000..6092251
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef ALIMUONCONTOUR_H
+#define ALIMUONCONTOUR_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+* See cxx source for full Copyright notice                               */
+
+// $Id$
+
+/// \ingroup geometry
+/// \class AliMUONContour
+/// \brief 2D contour
+/// 
+// Author Laurent Aphecetche, Subatech
+
+#ifndef ROOT_TNamed
+#  include "TNamed.h"
+#endif
+
+#ifndef ALI_MP_AREA_H
+#  include "AliMpArea.h"
+#endif
+
+class AliMUONPolygon;
+class TGeoHMatrix;
+class TObjArray;
+
+class AliMUONContour : public TNamed
+{
+public:
+  AliMUONContour(const char* name="");
+  AliMUONContour(const char* name, const AliMpArea& area);
+  AliMUONContour(const AliMUONContour& rhs);
+  AliMUONContour& operator=(const AliMUONContour& rhs);
+  virtual ~AliMUONContour();
+  
+  AliMpArea Area() const;
+  
+  /// Get a full copy of this object.
+  virtual TObject* Clone(const char* /*newname*/="") const { return new AliMUONContour(*this); }
+  
+  /// Add an offset to all points
+  void Offset(Double_t x, Double_t y);
+  
+  /// Apply a global transformation to all points
+  void Transform(const TGeoHMatrix& matrix);
+  
+  void Add(const AliMUONPolygon& polygon);
+  
+  virtual void Copy(TObject& obj) const;
+    
+  Bool_t IsInside(Double_t x, Double_t y) const;
+
+  virtual void Print(Option_t* opt="") const;
+  
+  /// Get the number of vertices of this contour
+  Int_t NumberOfVertices() const { return fNofVertices; }
+  
+  Bool_t IsValid() const;
+  
+  /// Get the list of polygons we have
+  const TObjArray* Polygons() const { return fPolygons; }
+  
+  void AssertOrientation(Bool_t autoCorrect=kFALSE);
+  
+private:
+  TObjArray* fPolygons; ///< the polygons that this contour is made of
+  Double_t fXmin; ///< min x-value
+  Double_t fXmax; ///< max x-value
+  Double_t fYmin; ///< min y-value
+  Double_t fYmax; ///< max y-value
+  Int_t fNofVertices; ///< total number of vertices
+  
+  ClassDef(AliMUONContour,1) // 2D-contour of an object
+};
+
+#endif