]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpSector.h
Functionality of defunct AliMpManuList is now in AliMpDetElement, filled from DDLStor...
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSector.h
index 303c71c9db072b1762166b54cf9e92a1bdbd645c..1f6e08f7f6ea0423fe4497a5bbc73594439abf5b 100755 (executable)
@@ -2,23 +2,34 @@
  * See cxx source for full Copyright notice                               */
 
 // $Id$
-// $MpId: AliMpSector.h,v 1.8 2005/09/02 10:00:49 ivana Exp $
+// $MpId: AliMpSector.h,v 1.14 2006/05/24 13:58:21 ivana Exp $
 
 /// \ingroup sector
 /// \class AliMpSector
 /// \brief A sector (quadrant) of the MUON chamber of stations 1 and 2.
 ///
-/// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+/// \author David Guez, Ivana Hrivnacova; IPN Orsay
 
 #ifndef ALI_MP_SECTOR_H
 #define ALI_MP_SECTOR_H
 
-#include <TObject.h>
+#include <TNamed.h>
+
+#include "AliMpContainers.h"
+
+#include "AliMpDirection.h"
+#include "AliMpPlaneType.h"
+#include "AliMpIntPair.h"
+
 #include <TString.h>
 #include <TVector2.h>
+#ifdef WITH_ROOT
+#include <TObjArray.h>
+#endif
 
-#include "AliMpSectorTypes.h"
-#include "AliMpDirection.h"
+#ifdef WITH_STL
+#include <vector>
+#endif
 
 class AliMpZone;
 class AliMpRow;
@@ -27,11 +38,27 @@ class AliMpVMotif;
 class AliMpVPadIterator;
 class AliMpMotifMap;
 
-class AliMpSector : public TObject
+class TArrayI;
+
+class AliMpSector : public TNamed
 {
+  public:
+#ifdef WITH_STL
+    /// Row vector type
+    typedef std::vector<AliMpRow*> RowVector;
+    /// Zone vector type
+    typedef std::vector<AliMpZone*> ZoneVector;
+#endif
+#ifdef WITH_ROOT
+    /// Row vector type
+    typedef TObjArray  RowVector;
+    /// Zone vector type
+    typedef TObjArray  ZoneVector;
+#endif
+
   public:
     AliMpSector(const TString& id, Int_t nofZones, Int_t nofRows,
-                AliMpDirection direction, const TVector2& offset);
+                AliMp::Direction direction, const TVector2& offset);
     AliMpSector();
     virtual ~AliMpSector();
   
@@ -56,47 +83,82 @@ class AliMpSector : public TObject
     TVector2  Position() const;
     TVector2  Dimensions() const;
    
+    //
     // get methods
+
     Int_t       GetNofZones() const;
     AliMpZone*  GetZone(Int_t i) const;    
+
     Int_t       GetNofRows() const;
     AliMpRow*   GetRow(Int_t i) const;
-    AliMpDirection  GetDirection() const;  
+
+    AliMp::Direction  GetDirection() const;  
+    AliMp::PlaneType  GetPlaneType() const;  
+
     TVector2        GetMinPadDimensions() const;
+    TVector2        GetMaxPadDimensions() const;
+    AliMpIntPair    GetMaxPadIndices() const;
+    Int_t           GetNofPads() const;
+
     AliMpMotifMap*  GetMotifMap() const;
+    void            GetAllMotifPositionsIDs(TArrayI& ecn) const;
+    
+    virtual void Print(Option_t* opt="") const;
+    
     
-  protected:
+  private:
+    /// Not implemented
     AliMpSector(const AliMpSector& right);
+    /// Not implemented
     AliMpSector&  operator = (const AliMpSector& right);
 
-  private:
     // methods
     AliMpVRowSegment* FindRowSegment(const TVector2& position) const;
     void SetRowOffsets();
     void SetMotifPositions();
     void SetGlobalIndices();
-    void SetMinPadDimensions();
+    void SetMinMaxPadDimensions();
+    void SetMaxPadIndices();
+    void SetNofPads();
 
     // data members        
-    TString    fID;       // sector ID
-    TVector2   fOffset;   // sector position
-    ZoneVector fZones;    // zones
-    RowVector  fRows;     // rows
-    AliMpMotifMap* fMotifMap; // motif map
-    AliMpDirection fDirection;// the direction of constant pad size
-    TVector2       fMinPadDimensions; // minimal pad dimensions
-
-  ClassDef(AliMpSector,1)  //Sector
+    TString    fID;       ///< sector ID
+    TVector2   fOffset;   ///< sector position
+    ZoneVector fZones;    ///< zones
+    RowVector  fRows;     ///< rows
+    AliMpMotifMap*   fMotifMap;         ///< motif map
+    AliMp::Direction fDirection;        ///< the direction of constant pad size
+    TVector2         fMinPadDimensions; ///< minimum pad dimensions
+    TVector2         fMaxPadDimensions; ///< miximum pad dimensions
+    AliMpIntPair     fMaxPadIndices;    ///< maximum pad indices    
+    Int_t            fNofPads;          ///<  total number of pads
+
+  ClassDef(AliMpSector,1)  // Sector
 };
 
 // inline functions
 
-inline AliMpDirection AliMpSector::GetDirection() const 
+/// Return the direction of constant pad size
+inline AliMp::Direction AliMpSector::GetDirection() const 
 { return fDirection; }    
 
+/// Return minimum pad dimensions
 inline TVector2   AliMpSector::GetMinPadDimensions() const
 { return fMinPadDimensions; }
 
+/// Return maxmum pad dimensions
+inline TVector2   AliMpSector::GetMaxPadDimensions() const
+{ return fMaxPadDimensions; }
+
+/// Return maximum pad indices
+inline AliMpIntPair  AliMpSector::GetMaxPadIndices() const
+{ return fMaxPadIndices; }
+
+/// Return total number of pads
+inline Int_t  AliMpSector::GetNofPads() const
+{ return fNofPads; }
+
+/// Return the motif map
 inline AliMpMotifMap* AliMpSector::GetMotifMap() const 
 { return fMotifMap; }