]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpSlatSegmentation.h
In mapping:
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSlatSegmentation.h
index 23aaf099de8aff872eec431adc82c21d1adb503d..01af41c99cbefe82265ab6dcb4120bf6b60d4230 100644 (file)
@@ -2,13 +2,18 @@
  * See cxx source for full Copyright notice                               */
 
 // $Id$
-// $MpId: AliMpSlatSegmentation.h,v 1.4 2005/09/19 19:01:09 ivana Exp $
+// $MpId: AliMpSlatSegmentation.h,v 1.12 2006/05/24 13:58:24 ivana Exp $
 
 /// \ingroup slat
 /// \class AliMpSlatSegmentation
 /// \brief Implementation of AliMpVSegmentation for St345 slats.
 /// 
-/// Author: Laurent Aphecetche
+/// Note that integer indices start at (0,0) on the bottom-left of the slat,
+/// while floating point positions are relative to the center of the slat
+/// (where the slat is to be understood as N PCBs of fixed size = 40cm
+/// even if not all pads of a given PCBs are actually physically there).
+///
+/// \author Laurent Aphecetche
 
 #ifndef ALI_MP_SLAT_SEGMENTATION_H
 #define ALI_MP_SLAT_SEGMENTATION_H
@@ -33,11 +38,24 @@ class AliMpSlatSegmentation : public AliMpVSegmentation
 {
  public:
   AliMpSlatSegmentation();
-  AliMpSlatSegmentation(const AliMpSlat* slat);
+  AliMpSlatSegmentation(const AliMpSlat* slat, Bool_t own = false);
   virtual ~AliMpSlatSegmentation();
 
   virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
+  virtual AliMpVPadIterator* CreateIterator() const;
 
+  virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+                              Bool_t includeSelf=kFALSE,
+                              Bool_t includeVoid=kFALSE) const;
+  
+  const char* GetName() const;
+  
+  Bool_t HasPad(const AliMpIntPair& indices) const;
+
+  Int_t MaxPadIndexX() const;
+  Int_t MaxPadIndexY() const;
+  Int_t NofPads() const;
+  
   virtual AliMpPad PadByLocation(const AliMpIntPair& location, 
                         Bool_t warning) const;
 
@@ -47,17 +65,44 @@ class AliMpSlatSegmentation : public AliMpVSegmentation
   virtual AliMpPad PadByPosition(const TVector2& position,
                         Bool_t warning) const;
 
-  Int_t MaxPadIndexX();
-  Int_t MaxPadIndexY();
-
-  Bool_t HasPad(const AliMpIntPair& indices) const;
-   
+  virtual void Print(Option_t* opt) const;
+  
   const AliMpSlat* Slat() const;
   
+  void GetAllElectronicCardIDs(TArrayI& ecn) const;
+  
+  virtual AliMp::PlaneType PlaneType() const;
+   
+  virtual AliMp::StationType StationType() const;
+  
+  TVector2 Dimensions() const;
+  
+  virtual Bool_t HasPadByIndices(const AliMpIntPair& indices) const;
+  
+  virtual Bool_t HasPadByLocation(const AliMpIntPair& location) const;
+
+  virtual Int_t GetNofElectronicCards() const;
+  
+  virtual TVector2 Position() const;
+  
+  virtual Bool_t HasMotifPosition(Int_t manuId) const;
+  
+  virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
+  
  private:
-  const AliMpSlat* fkSlat; // Slat
+  /// Not implemented
+  AliMpSlatSegmentation(const AliMpSlatSegmentation& right);
+  /// Not implemented
+  AliMpSlatSegmentation&  operator = (const AliMpSlatSegmentation& right);
 
-  ClassDef(AliMpSlatSegmentation,1) // A slat for stations 3,4,5
+  const AliMpSlat* fkSlat;  ///< Slat
+  Bool_t           fIsOwner;///< Slat ownership     
+
+  ClassDef(AliMpSlatSegmentation,2) // A slat for stations 3,4,5
 };
 
+/// Return station type
+inline AliMp::StationType AliMpSlatSegmentation::StationType() const
+{ return AliMp::kStation345; }
+
 #endif