]>
Commit | Line | Data |
---|---|---|
dee1d5f1 | 1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
4 | // $Id$ | |
13985652 | 5 | // $MpId: AliMpSlat.h,v 1.8 2006/05/24 13:58:24 ivana Exp $ |
dee1d5f1 | 6 | |
7 | /// \ingroup slat | |
8 | /// \class AliMpSlat | |
9 | /// \brief A slat (building block of stations 3, 4 and 5) | |
10 | /// | |
13985652 | 11 | // Author: Laurent Aphecetche |
dee1d5f1 | 12 | |
13 | #ifndef ALI_MP_SLAT_H | |
14 | #define ALI_MP_SLAT_H | |
15 | ||
16 | #include <TObject.h> | |
17 | ||
18 | #ifndef ROOT_TString | |
19b51aad | 19 | # include "TString.h" |
20 | #endif | |
21 | ||
22 | #ifndef ALI_MP_PAD_H | |
23 | # include "AliMpPad.h" | |
dee1d5f1 | 24 | #endif |
25 | ||
26 | #ifndef ALI_MP_V_SEGMENTATION_H | |
19b51aad | 27 | # include "AliMpVSegmentation.h" |
dee1d5f1 | 28 | #endif |
29 | ||
19b51aad | 30 | #ifndef ALI_MP_PLANE_TYPE_H |
31 | # include "AliMpPlaneType.h" | |
dee1d5f1 | 32 | #endif |
33 | ||
34 | #include "AliMpContainers.h" | |
0f60374b | 35 | #include "AliMpExMap.h" |
dee1d5f1 | 36 | |
37 | class TArrayI; | |
38 | ||
39 | #ifdef WITH_ROOT | |
dee1d5f1 | 40 | # include "TObjArray.h" |
41 | #else | |
42 | # include <vector> | |
0f60374b | 43 | //# include <map> |
dee1d5f1 | 44 | #endif |
45 | ||
46 | class AliMpMotifPosition; | |
47 | class AliMpPCB; | |
19b51aad | 48 | class TArrayI; |
dee1d5f1 | 49 | |
50 | class AliMpSlat : public TObject | |
51 | { | |
52 | public: | |
53 | ||
54 | #ifdef WITH_ROOT | |
55 | typedef Int_t Size_t; | |
56 | #else | |
57 | typedef UInt_t Size_t; | |
58 | #endif | |
59 | ||
60 | AliMpSlat(); | |
19b51aad | 61 | AliMpSlat(const char* id, AliMpPlaneType bendingOrNonBending); |
dee1d5f1 | 62 | virtual ~AliMpSlat(); |
63 | ||
64 | TVector2 Dimensions() const; | |
efb408b3 | 65 | TVector2 Position() const { return fPosition; } |
19b51aad | 66 | |
67 | const char* GetName() const; | |
68 | ||
dee1d5f1 | 69 | const char* GetID() const; |
70 | ||
71 | void Add(AliMpPCB* pcbType, const TArrayI& manuList); | |
72 | ||
73 | Double_t DX() const; | |
74 | Double_t DY() const; | |
75 | ||
76 | /// Find the PCB containing the pad at location (ix,any iy). | |
77 | AliMpPCB* FindPCB(Int_t ix) const; | |
78 | ||
79 | /** Find the index of the PCB containing the pad at location ix. | |
80 | Should not be needed except to comply with Sector(), Dpx(), Dpy() | |
81 | interface of old AliMUONVGeometrySegmentation. | |
82 | FIXME: Remove me when VGeometrySegmentation dies at last. | |
83 | */ | |
84 | Int_t FindPCBIndex(Int_t ix) const; | |
85 | ||
86 | /// Find the PCB containing location (x,y). | |
87 | AliMpPCB* FindPCB(Double_t x, Double_t y) const; | |
88 | ||
89 | /** Find the index of the PCB containing the pad at location (x,y). | |
90 | Should not be needed except to comply with Sector(), Dpx(), Dpy() | |
91 | interface of old AliMUONVGeometrySegmentation. | |
92 | FIXME: Remove me when VGeometrySegmentation dies at last. | |
93 | */ | |
94 | Int_t FindPCBIndex(Double_t x, Double_t y) const; | |
95 | ||
96 | /// Returns the i-th PCB of this slat. | |
97 | AliMpPCB* GetPCB(Size_t i) const; | |
98 | ||
99 | /// Returns the MotifPosition containing location (x,y). | |
100 | AliMpMotifPosition* FindMotifPosition(Double_t x, Double_t y) const; | |
101 | ||
102 | /// Returns the MotifPosition which id is manuid. | |
103 | AliMpMotifPosition* FindMotifPosition(Int_t manuid) const; | |
104 | ||
105 | /// Returns the MotifPosition containing the pad located at (ix,iy). | |
106 | AliMpMotifPosition* FindMotifPosition(Int_t ix, Int_t iy) const; | |
107 | ||
19b51aad | 108 | /// Return the ids of the electronic cards (either manu or local board). |
c9da0af9 | 109 | void GetAllMotifPositionsIDs(TArrayI& ecn) const; |
19b51aad | 110 | |
111 | /** Returns the max. number of pads in the x-direction contained in this slat. | |
112 | This is a max only as for e.g. non-bending slats, the y-dimension depends | |
113 | on the x-position. | |
114 | */ | |
115 | Int_t GetMaxNofPadsY() const; | |
116 | ||
16e8fffd | 117 | /** Returns the max index useable in x-direction. |
118 | Note that this can be different from GetNofPadsX()-1 for rounded slats. | |
119 | */ | |
120 | Int_t GetMaxPadIndexX() const; | |
121 | ||
19b51aad | 122 | /// Return the number of electronic cards (either manu or local board). |
123 | Int_t GetNofElectronicCards() const; | |
124 | ||
dee1d5f1 | 125 | /// Returns the number of pads in the x-direction contained in this slat. |
126 | Int_t GetNofPadsX() const; | |
127 | ||
19b51aad | 128 | /// Returns the number of PCBs of this slat. |
129 | Size_t GetSize() const; | |
130 | ||
dee1d5f1 | 131 | void Print(Option_t* option="") const; |
132 | ||
19b51aad | 133 | /** This is normally only used by triggerSlats, as for ST345 slats, |
134 | the position is DX(),DY() simply. | |
135 | */ | |
136 | void ForcePosition(const TVector2& pos); | |
137 | ||
efb408b3 | 138 | AliMpPlaneType PlaneType() const { return fPlaneType; } |
139 | ||
140 | Int_t NofPads() const { return fNofPads; } | |
141 | ||
13e7956b | 142 | private: |
efb408b3 | 143 | AliMpSlat(const AliMpSlat& rhs); |
144 | AliMpSlat& operator=(const AliMpSlat& rhs); | |
13e7956b | 145 | |
829425a5 | 146 | TString fId; ///< The name of this slat, e.g. 112233N |
147 | AliMpPlaneType fPlaneType; ///< Whether it's bending or non-bending plane | |
148 | Double_t fDX; ///< Half-size in X (cm) | |
149 | Double_t fDY; ///< Half-size in Y (cm) | |
150 | Int_t fNofPadsX; ///< Actual number of pads in x direction | |
151 | Int_t fMaxNofPadsY; ///< Maximum number of pads in y direction | |
152 | mutable AliMpExMap fManuMap; ///< map of int to AliMpMotifPosition* | |
dee1d5f1 | 153 | #ifdef WITH_ROOT |
829425a5 | 154 | TObjArray fPCBs; ///< array of AliMpPCB* |
dee1d5f1 | 155 | #else |
829425a5 | 156 | std::vector<AliMpPCB*> fPCBs; ///< array of AliMpPCB* |
dee1d5f1 | 157 | #endif |
829425a5 | 158 | TVector2 fPosition; ///< Position of the slat center. |
159 | Int_t fNofPads; ///< number of pads in this slat | |
dee1d5f1 | 160 | |
efb408b3 | 161 | ClassDef(AliMpSlat,2) // A slat for stations 3,4,5 |
dee1d5f1 | 162 | }; |
163 | ||
164 | #endif |