MUON + CheckCompiler
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpSlatSegmentation.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpSlatSegmentation.h,v 1.12 2006/05/24 13:58:24 ivana Exp $
6
7 /// \ingroup slat
8 /// \class AliMpSlatSegmentation
9 /// \brief Implementation of AliMpVSegmentation for St345 slats.
10 /// 
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).
15 ///
16 /// \author Laurent Aphecetche
17
18 #ifndef ALI_MP_SLAT_SEGMENTATION_H
19 #define ALI_MP_SLAT_SEGMENTATION_H
20
21 #ifndef ROOT_TString
22 #include "TString.h"
23 #endif
24
25 #ifndef ALI_MP_V_SEGMENTATION_H
26 #include "AliMpVSegmentation.h"
27 #endif
28
29 #ifndef ALI_MP_PAD_H
30 #include "AliMpPad.h"
31 #endif
32
33 class AliMpMotifPosition;
34 class AliMpPCB;
35 class AliMpSlat;
36
37 class AliMpSlatSegmentation : public AliMpVSegmentation
38 {
39  public:
40   AliMpSlatSegmentation();
41   AliMpSlatSegmentation(const AliMpSlat* slat, Bool_t own = false);
42   virtual ~AliMpSlatSegmentation();
43
44   virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
45   virtual AliMpVPadIterator* CreateIterator() const;
46
47   virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
48                               Bool_t includeSelf=kFALSE,
49                               Bool_t includeVoid=kFALSE) const;
50   
51   const char* GetName() const;
52   
53   Int_t MaxPadIndexX() const;
54   Int_t MaxPadIndexY() const;
55   Int_t NofPads() const;
56   
57   virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel, 
58                          Bool_t warning) const;
59
60   virtual AliMpPad PadByIndices(Int_t ix, Int_t iy,  
61                         Bool_t warning) const;
62
63   virtual AliMpPad PadByPosition(Double_t x, Double_t y,
64                          Bool_t warning) const;
65
66   virtual void Print(Option_t* opt) const;
67   
68   const AliMpSlat* Slat() const;
69   
70   void GetAllElectronicCardIDs(TArrayI& ecn) const;
71   
72   virtual AliMp::PlaneType PlaneType() const;
73    
74   virtual AliMp::StationType StationType() const;
75   
76   virtual Double_t  GetDimensionX() const;
77   virtual Double_t  GetDimensionY() const;
78   
79   virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
80   
81   virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
82
83   virtual Int_t GetNofElectronicCards() const;
84   
85   virtual Double_t  GetPositionX() const;
86   virtual Double_t  GetPositionY() const;
87   
88   virtual Bool_t HasMotifPosition(Int_t manuId) const;
89   
90   virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const;
91   
92  private:
93   /// Not implemented
94   AliMpSlatSegmentation(const AliMpSlatSegmentation& right);
95   /// Not implemented
96   AliMpSlatSegmentation&  operator = (const AliMpSlatSegmentation& right);
97
98   const AliMpSlat* fkSlat;  ///< Slat
99   Bool_t           fIsOwner;///< Slat ownership     
100
101   ClassDef(AliMpSlatSegmentation,2) // A slat for stations 3,4,5
102 };
103
104 /// Return station type
105 inline AliMp::StationType AliMpSlatSegmentation::StationType() const
106 { return AliMp::kStation345; }
107
108 #endif