]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpSectorSegmentation.h
Updated comments for Doxygen - corrected warnings
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorSegmentation.h
index 3b75b79108862a0b92b7e45054bb09b000aa1d76..63de35027cb66d9da97fb1fd120207a069a4d56c 100755 (executable)
@@ -1,24 +1,36 @@
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
 // $Id$
-// Category: sector
-//
-// Class AliMpSectorSegmentation
-// -----------------------------
-// Class describing the segmentation of the sector.        
-// Provides methods related to pads:
-// conversion between pad indices, pad location, pad position;
-// finding pad neighbour.
-//
-// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+// $MpId: AliMpSectorSegmentation.h,v 1.15 2006/05/24 13:58:21 ivana Exp $
+
+/// \ingroup sector
+/// \class AliMpSectorSegmentation
+/// \brief A segmentation of the sector.        
+///
+/// Provides methods related to pads:                                     \n
+/// conversion between pad indices, pad location, pad position;
+/// finding pad neighbour.
+///
+/// \author David Guez, Ivana Hrivnacova; IPN Orsay
 
 #ifndef ALI_MP_SECTOR_SEGMENTATION_H
 #define ALI_MP_SECTOR_SEGMENTATION_H
 
-#include <TVector2.h>
+#include "AliMpContainers.h"
 
-#include "AliMpSectorTypes.h"
 #include "AliMpVSegmentation.h"
 #include "AliMpPad.h"
 
+#include <TVector2.h>
+#ifdef WITH_ROOT
+#include <TExMap.h>
+#endif
+
+#ifdef WITH_STL
+#include <map>
+#endif
+
 class AliMpSector;
 class AliMpMotifPosition;
 class AliMpVPadIterator;
@@ -27,6 +39,16 @@ class AliMpArea;
 
 class AliMpSectorSegmentation : public AliMpVSegmentation
 {
+  public:
+#ifdef WITH_STL
+    typedef std::map<Int_t, TVector2>         PadDimensionsMap;
+    typedef PadDimensionsMap::const_iterator  PadDimensionsMapCIterator;
+#endif
+#ifdef WITH_ROOT
+    typedef  TExMap      PadDimensionsMap;
+    typedef  TExMapIter  PadDimensionsMapCIterator;
+#endif
+
   public:
     AliMpSectorSegmentation(const AliMpSector* sector);
     AliMpSectorSegmentation();
@@ -46,6 +68,10 @@ class AliMpSectorSegmentation : public AliMpVSegmentation
                                Bool_t warning = kTRUE) const;
     virtual AliMpPad PadByDirection(const TVector2& startPosition, 
                                Double_t distance) const;
+    virtual Int_t  MaxPadIndexX() const;
+    virtual Int_t  MaxPadIndexY() const;
+    virtual Int_t  NofPads() const;
 
     virtual Int_t    Zone(const AliMpPad& pad, Bool_t warning = kTRUE) const;
     virtual TVector2 PadDimensions(Int_t zone, Bool_t warning = kTRUE) const;
@@ -54,8 +80,32 @@ class AliMpSectorSegmentation : public AliMpVSegmentation
     Bool_t HasMotifPosition(Int_t motifPositionID) const;
     TVector2 GetMinPadDimensions() const;
     Bool_t CircleTest(const AliMpIntPair& indices) const;
+    void   PrintZones() const;
+   
+    const AliMpSector* GetSector() const;
+
+    virtual void Print(Option_t* opt="") const;
+    
+    virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
+
+    AliMpPlaneType PlaneType() const;
+    
+    TVector2 Dimensions() const;
+    
+protected:
+    AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
+    AliMpSectorSegmentation&  operator = (const AliMpSectorSegmentation& right);
 
   private:
+#ifdef WITH_ROOT
+    static const Double_t   fgkS1;  // the separators used for conversion
+    static const Double_t   fgkS2;  // of TVector2 to Long_t
+    
+    // methods
+    Long_t    GetIndex(const TVector2& vector2) const;
+    TVector2  GetVector(Long_t index) const;
+#endif
+
     // methods
     void  FillPadDimensionsMap();
     AliMpMotifPosition*  FindMotifPosition(const AliMpIntPair& indices) const;
@@ -63,16 +113,28 @@ class AliMpSectorSegmentation : public AliMpVSegmentation
                                      Double_t maxX) const;
     virtual AliMpPad PadByYDirection(const TVector2& startPosition, 
                                      Double_t maxY) const;
-    virtual AliMpVPadIterator* CreateIterator() const;
  
     // data members        
-    const AliMpSector*  fkSector;   // Sector
-    AliMpPad*           fPadBuffer; // The pad buffer
-    PadDimensionsMap    fPadDimensionsMap; //! Map between zone IDs and pad dimensions
-                              // EXCLUDED FOR CINT (does not compile on HP)    
+    const AliMpSector*  fkSector;   ///< Sector
+    AliMpPad*           fPadBuffer; ///< The pad buffer
+#ifdef WITH_STL
+    PadDimensionsMap    fPadDimensionsMap; ///< Map between zone IDs and pad dimensions
+#endif    
+#ifdef WITH_ROOT
+    mutable PadDimensionsMap  fPadDimensionsMap; ///< Map between zone IDs and pad dimensions
+#endif 
+
+    Int_t  fMaxIndexInX;  ///< maximum pad index in x    
+    Int_t  fMaxIndexInY;  ///< maximum pad index in y    
 
   ClassDef(AliMpSectorSegmentation,1)  // Segmentation
 };
 
+
+// inline functions
+
+inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
+{ return fkSector; }
+
 #endif //ALI_MP_SECTOR_SEGMENTATION_H