1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpSlatSegmentation.h,v 1.12 2006/05/24 13:58:24 ivana Exp $
8 /// \class AliMpSlatSegmentation
9 /// \brief Implementation of AliMpVSegmentation for St345 slats.
11 /// Note that integer indices start at (0,0) on the bottom-left of the slat,
12 /// while floating point positions are relative to the center of the slat
13 /// (where the slat is to be understood as N PCBs of fixed size = 40cm
14 /// even if not all pads of a given PCBs are actually physically there).
16 /// \author Laurent Aphecetche
18 #ifndef ALI_MP_SLAT_SEGMENTATION_H
19 #define ALI_MP_SLAT_SEGMENTATION_H
25 #ifndef ALI_MP_V_SEGMENTATION_H
26 #include "AliMpVSegmentation.h"
33 class AliMpMotifPosition;
37 class AliMpSlatSegmentation : public AliMpVSegmentation
40 AliMpSlatSegmentation();
41 AliMpSlatSegmentation(const AliMpSlat* slat, Bool_t own = false);
42 virtual ~AliMpSlatSegmentation();
44 virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
45 virtual AliMpVPadIterator* CreateIterator() const;
47 virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
48 Bool_t includeSelf=kFALSE,
49 Bool_t includeVoid=kFALSE) const;
51 const char* GetName() const;
53 Int_t MaxPadIndexX() const;
54 Int_t MaxPadIndexY() const;
55 Int_t NofPads() const;
57 virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel,
58 Bool_t warning) const;
60 virtual AliMpPad PadByIndices(Int_t ix, Int_t iy,
61 Bool_t warning) const;
63 virtual AliMpPad PadByPosition(Double_t x, Double_t y,
64 Bool_t warning) const;
66 virtual void Print(Option_t* opt) const;
68 const AliMpSlat* Slat() const;
70 void GetAllElectronicCardIDs(TArrayI& ecn) const;
72 virtual AliMp::PlaneType PlaneType() const;
74 virtual AliMp::StationType StationType() const;
76 virtual Double_t GetDimensionX() const;
77 virtual Double_t GetDimensionY() const;
79 virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
81 virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
83 virtual Int_t GetNofElectronicCards() const;
85 virtual Double_t GetPositionX() const;
86 virtual Double_t GetPositionY() const;
88 virtual Bool_t HasMotifPosition(Int_t manuId) const;
90 virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
94 AliMpSlatSegmentation(const AliMpSlatSegmentation& right);
96 AliMpSlatSegmentation& operator = (const AliMpSlatSegmentation& right);
98 const AliMpSlat* fkSlat; ///< Slat
99 Bool_t fIsOwner;///< Slat ownership
101 ClassDef(AliMpSlatSegmentation,2) // A slat for stations 3,4,5
104 /// Return station type
105 inline AliMp::StationType AliMpSlatSegmentation::StationType() const
106 { return AliMp::kStation345; }