* See cxx source for full Copyright notice */
// $Id$
-// $MpId: AliMpVSegmentation.h,v 1.7 2006/01/11 10:07:54 ivana Exp $
+// $MpId: AliMpVSegmentation.h,v 1.12 2006/05/24 13:58:07 ivana Exp $
/// \ingroup basic
/// \class AliMpVSegmentation
/// 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;
+/// Laurent Aphecetche, SUBATECH
#ifndef ALI_MP_V_SEGMENTATION_H
#define ALI_MP_V_SEGMENTATION_H
#include "AliMpPadPair.h"
#include "AliMpPad.h"
-
-class TVector2;
+#include "AliMpPlaneType.h"
class AliMpVPadIterator;
class AliMpIntPair;
class AliMpArea;
+class TArrayI;
+class TVector2;
+class TObjArray;
+
class AliMpVSegmentation : public TObject
{
public:
AliMpVSegmentation();
virtual ~AliMpVSegmentation();
- // factory method
+ // factory methods
+ /// Create iterator over pads in the given area
virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const = 0;
- // methods
+ /// Create a pad iterator over the whole area
+ virtual AliMpVPadIterator* CreateIterator() const = 0;
+
+ /// Fill the array with the pads that are neighbours of pad. Returns
+ /// the number of neighbours.
+ virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+ Bool_t includeSelf=kFALSE,
+ Bool_t includeVoid=kFALSE) const = 0;
+
+ // methods
+ //
+ /// Find pad by location
virtual AliMpPad PadByLocation(const AliMpIntPair& location,
Bool_t warning = true) const = 0;
+ /// Find pad by indices
virtual AliMpPad PadByIndices (const AliMpIntPair& indices,
Bool_t warning = true) const = 0;
+ /// Find pad by position
virtual AliMpPad PadByPosition(const TVector2& position,
Bool_t warning = true) const = 0;
virtual AliMpPadPair PadsLeft(const AliMpPad& pad) const;
virtual AliMpPadPair PadsRight(const AliMpPad& pad) const;
- virtual Int_t MaxPadIndexX() = 0;
- virtual Int_t MaxPadIndexY() = 0;
+ /// Return maximum pad index in X direction
+ virtual Int_t MaxPadIndexX() const = 0;
+ /// Return maximum pad index in Y direction
+ virtual Int_t MaxPadIndexY() const = 0;
+ /// Return the number of pads in the detection element
+ virtual Int_t NofPads() const = 0;
+ /// Return true if the pad with given indices exists
virtual Bool_t HasPad(const AliMpIntPair& indices) const = 0;
+ /// Fill the given array with the electronic card IDs
+ virtual void GetAllElectronicCardIDs(TArrayI& ecn) const = 0;
+
+ /// Return the plane type
+ virtual AliMp::PlaneType PlaneType() const = 0;
+
+ /// Return the half-sizes of the detection element
+ virtual TVector2 Dimensions() const = 0;
+
private:
// methods
AliMpPadPair FindPads(const TVector2& position1,