Line data Source code
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 3750 : ClassDef(AliMpSlatSegmentation,2) // A slat for stations 3,4,5
102 : };
103 :
104 : /// Return station type
105 : inline AliMp::StationType AliMpSlatSegmentation::StationType() const
106 107608 : { return AliMp::kStation345; }
107 :
108 : #endif
|