* 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
-
-#ifdef WITH_ROOT
-#include <TExMap.h>
-#endif
-
-#include <TVector2.h>
-
#include "AliMpVSegmentation.h"
#include "AliMpPad.h"
+#include <TExMap.h>
+
class AliMpSector;
class AliMpMotifPosition;
class AliMpVPadIterator;
-class AliMpIntPair;
class AliMpArea;
class AliMpSectorSegmentation : public AliMpVSegmentation
{
public:
-#ifdef WITH_STL
- typedef std::map<Int_t, TVector2> PadDimensionsMap;
- typedef PadDimensionsMap::const_iterator PadDimensionsMapCIterator;
-#endif
-#ifdef WITH_ROOT
- typedef TExMap PadDimensionsMap;
- 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;
- AliMpVPadIterator* CreateIterator(const AliMpPad& centerPad,
- Bool_t includeCenter=kFALSE) const;
+ virtual AliMpVPadIterator* CreateIterator() const;
+ virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+ Bool_t includeSelf = kFALSE,
+ Bool_t includeVoid = kFALSE) const;
+
// methods
- virtual AliMpPad PadByLocation(const AliMpIntPair& location,
+ virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel,
Bool_t warning = kTRUE) const;
- virtual AliMpPad PadByIndices (const AliMpIntPair& indices,
+ virtual AliMpPad PadByIndices (Int_t ix, Int_t iy,
Bool_t warning = kTRUE) const;
- virtual AliMpPad PadByPosition(const TVector2& position ,
+ virtual AliMpPad PadByPosition(Double_t x, Double_t y,
Bool_t warning = kTRUE) const;
- virtual AliMpPad PadByDirection(const TVector2& startPosition,
+ virtual AliMpPad PadByDirection(Double_t startx, Double_t starty,
Double_t distance) const;
+ virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
+ virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
+
virtual Int_t MaxPadIndexX() const;
virtual Int_t MaxPadIndexY() const;
virtual Int_t NofPads() const;
- virtual Int_t Zone(const AliMpPad& pad, Bool_t warning = kTRUE) const;
- virtual TVector2 PadDimensions(Int_t zone, Bool_t warning = kTRUE) const;
+ virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
+ virtual Int_t GetNofElectronicCards() const;
+ virtual Bool_t HasMotifPosition(Int_t motifPositionID) const;
+ virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
- virtual Bool_t HasPad(const AliMpIntPair& indices) const;
- Bool_t HasMotifPosition(Int_t motifPositionID) const;
- TVector2 GetMinPadDimensions() const;
- Bool_t CircleTest(const AliMpIntPair& indices) const;
- void PrintZones() const;
-
- const AliMpSector* GetSector() const;
+ virtual AliMp::PlaneType PlaneType() const;
+ virtual AliMp::StationType StationType() const;
+ virtual Double_t GetDimensionX() const;
+ virtual Double_t GetDimensionY() const;
+
+ virtual Double_t GetPositionX() const;
+ virtual Double_t GetPositionY() const;
+
virtual void Print(Option_t* opt="") const;
- virtual void GetAllElectronicCardIDs(TArrayI& ecn) const;
+ Double_t GetMinPadDimensionX() const;
+ Double_t GetMinPadDimensionY() const;
- AliMpPlaneType PlaneType() const;
-
- TVector2 Dimensions() const;
-
-protected:
+ Bool_t CircleTest(Int_t ix, Int_t iy) const;
+
+ const AliMpSector* GetSector() const;
+
+ 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
-
- // methods
- Long_t GetIndex(const TVector2& vector2) const;
- TVector2 GetVector(Long_t index) const;
-#endif
-
// methods
- void FillPadDimensionsMap();
- AliMpMotifPosition* FindMotifPosition(const AliMpIntPair& indices) const;
- virtual AliMpPad PadByXDirection(const TVector2& startPosition,
+ AliMpMotifPosition* FindMotifPosition(Int_t ix, Int_t iy) const;
+ virtual AliMpPad PadByXDirection(Double_t startx, Double_t starty,
Double_t maxX) const;
- virtual AliMpPad PadByYDirection(const TVector2& startPosition,
+ virtual AliMpPad PadByYDirection(Double_t startx, Double_t starty,
Double_t maxY) const;
- // data members
- const AliMpSector* fkSector; // Sector
- 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)
-#endif
-#ifdef WITH_ROOT
- 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
-
- ClassDef(AliMpSectorSegmentation,1) // Segmentation
+ // data members
+ const AliMpSector* fkSector; ///< Sector
+ Bool_t fIsOwner; ///< Sector ownership
+ AliMpPad* fPadBuffer; ///< The pad buffer
+ Int_t fMaxIndexInX; ///< maximum pad index in x
+ Int_t fMaxIndexInY; ///< maximum pad index in y
+
+ ClassDef(AliMpSectorSegmentation,3) // Segmentation
};
// inline functions
+/// Return the sector
inline const AliMpSector* AliMpSectorSegmentation::GetSector() const
{ return fkSector; }
+/// Return station type
+inline AliMp::StationType AliMpSectorSegmentation::StationType() const
+{ return AliMp::kStation12; }
+
+
#endif //ALI_MP_SECTOR_SEGMENTATION_H