]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpSectorSegmentation.h
bugfix: stopwatches for HLT benchmarks had been resumed at wrong point and measuremen...
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSectorSegmentation.h
index 98ee1d6e57287b9870d3e4d8305f91e608850ec9..7c4bdfa29b5ad4ee9e0cbaf6d998495a415a7a14 100755 (executable)
@@ -2,7 +2,7 @@
  * See cxx source for full Copyright notice                               */
 
 // $Id$
-// $MpId: AliMpSectorSegmentation.h,v 1.12 2006/03/14 09:03:48 ivana Exp $
+// $MpId: AliMpSectorSegmentation.h,v 1.15 2006/05/24 13:58:21 ivana Exp $
 
 /// \ingroup sector
 /// \class AliMpSectorSegmentation
 /// conversion between pad indices, pad location, pad position;
 /// finding pad neighbour.
 ///
-/// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+/// \author David Guez, Ivana Hrivnacova; IPN Orsay
 
 #ifndef ALI_MP_SECTOR_SEGMENTATION_H
 #define ALI_MP_SECTOR_SEGMENTATION_H
 
-
 #include "AliMpContainers.h"
 
-#ifdef WITH_STL
-#include <map>
-#endif
+#include "AliMpVSegmentation.h"
+#include "AliMpPad.h"
 
+#include <TVector2.h>
 #ifdef WITH_ROOT
 #include <TExMap.h>
 #endif
 
-#include <TVector2.h>
-
-#include "AliMpVSegmentation.h"
-#include "AliMpPad.h"
+#ifdef WITH_STL
+#include <map>
+#endif
 
 class AliMpSector;
 class AliMpMotifPosition;
@@ -43,24 +41,34 @@ class AliMpSectorSegmentation : public AliMpVSegmentation
 {
   public:
 #ifdef WITH_STL
+    /// Pad dimensions map type
     typedef std::map<Int_t, TVector2>         PadDimensionsMap;
+    /// Pad dimensions map iterator type
     typedef PadDimensionsMap::const_iterator  PadDimensionsMapCIterator;
 #endif
 #ifdef WITH_ROOT
+    /// Pad dimensions map type
     typedef  TExMap      PadDimensionsMap;
+    /// Pad dimensions map iterator type
     typedef  TExMapIter  PadDimensionsMapCIterator;
 #endif
 
   public:
-    AliMpSectorSegmentation(const AliMpSector* sector);
+    AliMpSectorSegmentation(const AliMpSector* sector, Bool_t own = false);
     AliMpSectorSegmentation();
     virtual ~AliMpSectorSegmentation();
     
     // factory methods  
     virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
+    virtual AliMpVPadIterator* CreateIterator() const;
+    
     AliMpVPadIterator* CreateIterator(const AliMpPad& centerPad,
-                                  Bool_t includeCenter=kFALSE) const;
+                                      Bool_t includeCenter=kFALSE) const;
 
+     Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+                         Bool_t includeSelf = kFALSE,
+                         Bool_t includeVoid = kFALSE) const;
+    
     // methods  
     virtual AliMpPad PadByLocation(const AliMpIntPair& location,
                                Bool_t warning = kTRUE) const;
@@ -90,18 +98,19 @@ class AliMpSectorSegmentation : public AliMpVSegmentation
     
     virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
 
-    AliMpPlaneType PlaneType() const;
+    AliMp::PlaneType PlaneType() const;
     
     TVector2 Dimensions() const;
     
-protected:
+  private:
+    /// Not implemented
     AliMpSectorSegmentation(const AliMpSectorSegmentation& right);
+    /// Not implemented
     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
+    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;
@@ -116,26 +125,27 @@ protected:
     virtual AliMpPad PadByYDirection(const TVector2& startPosition, 
                                      Double_t maxY) const;
  
-    // data members        
-    const AliMpSector*  fkSector;   // Sector
-    AliMpPad*           fPadBuffer; // The pad buffer
+    // data members   
+    const AliMpSector*  fkSector;   ///< Sector
+    Bool_t              fIsOwner;   ///< Sector ownership     
+    AliMpPad*           fPadBuffer; ///< The pad buffer
 #ifdef WITH_STL
-    PadDimensionsMap    fPadDimensionsMap; // Map between zone IDs and pad dimensions
-                              // EXCLUDED FOR CINT (does not compile on HP)    
+    PadDimensionsMap    fPadDimensionsMap; ///< Map between zone IDs and pad dimensions
 #endif    
 #ifdef WITH_ROOT
-    mutable PadDimensionsMap  fPadDimensionsMap; //  Map between zone IDs and pad dimensions
+    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    
+    Int_t  fMaxIndexInX;  ///< maximum pad index in x    
+    Int_t  fMaxIndexInY;  ///< maximum pad index in y    
 
-  ClassDef(AliMpSectorSegmentation,1)  // Segmentation
+  ClassDef(AliMpSectorSegmentation,2)  // Segmentation
 };
 
 
 // inline functions
 
+/// Return the sector
 inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
 { return fkSector; }