* 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
{
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;
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