]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIMUONTRIGGERGUIBOARD_H | |
2 | #define ALIMUONTRIGGERGUIBOARD_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /// \ingroup evaluation | |
8 | /// \class AliMUONTriggerGUIboard | |
9 | /// \brief Trigger GUI utility class: single board object | |
10 | // Author Bogdan Vulpescu, LPC Clermont-Ferrand | |
11 | ||
12 | #include "AliMpPad.h" | |
13 | ||
14 | #include <TString.h> | |
15 | #include <TObject.h> | |
16 | ||
17 | class TClonesArray; | |
18 | class TBox; | |
19 | ||
20 | class AliMUONTriggerGUIboard : public TObject | |
21 | { | |
22 | ||
23 | public: | |
24 | ||
25 | AliMUONTriggerGUIboard(); | |
26 | AliMUONTriggerGUIboard(TRootIOCtor* ioCtor); | |
27 | virtual ~AliMUONTriggerGUIboard(); | |
28 | ||
29 | /// get the standard name of this board | |
30 | Char_t *GetBoardName() const { return (Char_t*)(fName->Data()); }; | |
31 | /// get the name of the crate containing this board | |
32 | Char_t *GetCrateName() const { return (Char_t*)(fCrateName->Data()); }; | |
33 | /// get the working status of this board | |
34 | UShort_t GetStatus() const { return fStatus; }; | |
35 | /// get the number of this board | |
36 | Int_t GetNumber() const { return fID; }; | |
37 | /// get the id of the detector element | |
38 | Int_t GetDetElemId() const { return fDetElemId; }; | |
39 | /// get the id of the circuit | |
40 | Int_t GetIdCircuit() const { return fIdCircuit; }; | |
41 | /// get detector side (Left=0 , Right=1) | |
42 | Int_t GetSide() const; | |
43 | /// get line | |
44 | Int_t GetLine() const; | |
45 | /// get column | |
46 | Int_t GetCol() const; | |
47 | ||
48 | /// set the working status of this board | |
49 | void SetStatus(UShort_t s) { fStatus = s; }; | |
50 | /// set the standard name of this board | |
51 | void SetBoardName(const Char_t *name) { fName = new TString(name); }; | |
52 | /// set the name of the crate containing this board | |
53 | void SetCrateName(const Char_t *name) { fCrateName = new TString(name); }; | |
54 | /// set the number of the detector element containing this board | |
55 | void SetDetElemId(Int_t id) { fDetElemId = id; }; | |
56 | /// set the number of this board | |
57 | void SetNumber(Int_t id) { fID = id; } | |
58 | ||
59 | /// add a mapping x-pad | |
60 | void AddPadX(const AliMpPad &pad, Int_t ich) | |
61 | { | |
62 | new ((*fPadsX[ich])[fNPadsX[ich]++]) AliMpPad(pad); | |
63 | } | |
64 | /// add a mapping y-pad | |
65 | void AddPadY(const AliMpPad &pad, Int_t ich) | |
66 | { | |
67 | new ((*fPadsY[ich])[fNPadsY[ich]++]) AliMpPad(pad); | |
68 | } | |
69 | /// create the display geometry from the mapping pads | |
70 | void MakeGeometry(); | |
71 | ||
72 | /// set an x-strip digit in a chamber with amplitude = amp | |
73 | void SetDigitX(Int_t imt, Int_t is, Int_t amp) { | |
74 | fXDig[imt][is] = (UChar_t)amp; }; | |
75 | /// set a y-strip digit in a chamber with amplitude = amp | |
76 | void SetDigitY(Int_t imt, Int_t is, Int_t amp) { | |
77 | fYDig[imt][is] = (UChar_t)amp; }; | |
78 | /// get neighbouring boards with common y strips | |
79 | UChar_t GetYOver() const { return fYOver; }; | |
80 | /// get the board position inside the detector element in y direction | |
81 | UChar_t GetPosition() const { return fPosition; }; | |
82 | /// get the digit amplitude for an x-strip in a given chamber | |
83 | Int_t GetXDig(Int_t imt, Int_t is) const { return fXDig[imt][is]; }; | |
84 | /// get the digit amplitude for a y-strip in a given chamber | |
85 | Int_t GetYDig(Int_t imt, Int_t is) const { return fYDig[imt][is]; }; | |
86 | ||
87 | /// set x-strip box for display | |
88 | void SetXDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2); | |
89 | /// set y-strip box for display | |
90 | void SetYDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2); | |
91 | ||
92 | /// get x-strip box for display | |
93 | TBox *GetXDigBox(Int_t imt, Int_t is) const { return fXDigBox[imt][is]; }; | |
94 | /// get y-strip box for display | |
95 | TBox *GetYDigBox(Int_t imt, Int_t is) const { return fYDigBox[imt][is]; }; | |
96 | ||
97 | /// get x-center of the board in chamber imt | |
98 | Float_t GetXCenter(Int_t imt) const { return fXCenter[imt]; }; | |
99 | /// get y-center of the board in chamber imt | |
100 | Float_t GetYCenter(Int_t imt) const { return fYCenter[imt]; }; | |
101 | /// get z-center of the board in chamber imt | |
102 | Float_t GetZCenter(Int_t imt) const { return fZCenter[imt]; }; | |
103 | /// get x-width of the board in chamber imt | |
104 | Float_t GetXWidth(Int_t imt) const { return fXWidth[imt]; }; | |
105 | /// get y-width of the board in chamber imt | |
106 | Float_t GetYWidth(Int_t imt) const { return fYWidth[imt]; }; | |
107 | ||
108 | /// get x-index in detector element for an x-strip | |
109 | Int_t GetXSix() const { return fXSix; }; | |
110 | /// get first y-index in detector element for an x-strip | |
111 | Int_t GetXSiy1() const { return fXSiy1; }; | |
112 | /// get last y-index in detector element for an x-strip | |
113 | Int_t GetXSiy2() const { return fXSiy2; }; | |
114 | /// get first x-index in detector element for a y-strip | |
115 | Int_t GetYSix1() const { return fYSix1; }; | |
116 | /// get last x-index in detector element for a y-strip | |
117 | Int_t GetYSix2() const { return fYSix2; }; | |
118 | /// get y-index in detector element for a y-strip | |
119 | Int_t GetYSiy() const { return fYSiy; }; | |
120 | /// get number of x strips | |
121 | Int_t GetNStripX() const { return GetXSiy2() - GetXSiy1() + 1; }; | |
122 | /// get number of y strips | |
123 | Int_t GetNStripY() const { return GetYSix2() - GetYSix1() + 1; }; | |
124 | ||
125 | /// set true if this board has a gui active | |
126 | void SetOpen(Bool_t open) { fIsOpen = open; }; | |
127 | /// true if this board has a gui active | |
128 | Bool_t IsOpen() const { return fIsOpen; }; | |
129 | ||
130 | /// delete the set x-digits | |
131 | void ClearXDigits(); | |
132 | /// delete the set y-digits | |
133 | void ClearYDigits(); | |
134 | ||
135 | /// print information on this board | |
136 | void PrintBoard() const; | |
137 | ||
138 | private: | |
139 | ||
140 | enum { kNMT = 4, kNS = 16 }; ///< constants | |
141 | ||
142 | /// Not implemented | |
143 | AliMUONTriggerGUIboard (const AliMUONTriggerGUIboard& board); | |
144 | /// Not implemented | |
145 | AliMUONTriggerGUIboard& operator=(const AliMUONTriggerGUIboard& board); | |
146 | ||
147 | TString *fName; ///< Board name LCxLxBx or RCxLxBx | |
148 | TString *fCrateName; ///< Crate name | |
149 | Int_t fID; ///< Board array number | |
150 | UShort_t fStatus; ///< Board status | |
151 | UChar_t fPosition; ///< Y-boards position | |
152 | UChar_t fYOver; ///< Y-boards with common y-strips | |
153 | ||
154 | Float_t fXCenter[kNMT]; ///< X-center of the board | |
155 | Float_t fYCenter[kNMT]; ///< Y-center of the board | |
156 | Float_t fZCenter[kNMT]; ///< Z-center of the board | |
157 | Float_t fXWidth[kNMT]; ///< X-width of the board | |
158 | Float_t fYWidth[kNMT]; ///< Y-width of the board | |
159 | ||
160 | Int_t fXSix; ///< X-strips ix index in the board | |
161 | Int_t fXSiy1; ///< X-strips first iy index in the board | |
162 | Int_t fXSiy2; ///< X-strips last iy index in the board | |
163 | ||
164 | Int_t fYSix1; ///< Y-strips first ix index in the board | |
165 | Int_t fYSix2; ///< Y-strips last ix index in the board | |
166 | Int_t fYSiy; ///< Y-strips iy index in the board | |
167 | ||
168 | Int_t fDetElemId; ///< Detector element ID (modulo 100) | |
169 | ||
170 | Int_t fIdCircuit; ///< Circuit number | |
171 | ||
172 | UChar_t fXDig[kNMT][kNS]; ///< X-digits amplitude, set by GUI | |
173 | UChar_t fYDig[kNMT][kNS]; ///< Y-digits amplitude, set by GUI | |
174 | ||
175 | TBox *fXDigBox[kNMT][kNS]; ///< X-digits boxes | |
176 | TBox *fYDigBox[kNMT][kNS]; ///< Y-digits boxes | |
177 | ||
178 | Bool_t fIsOpen; ///< Selection flag for the digits map | |
179 | ||
180 | /// adding pads from mapping to calculate the board geometry | |
181 | Int_t fNPadsX[kNMT]; ///< nr of added mapping pads in x | |
182 | Int_t fNPadsY[kNMT]; ///< nr of added mapping pads in y | |
183 | TClonesArray *fPadsX[kNMT]; ///< array of mapping pads in x | |
184 | TClonesArray *fPadsY[kNMT]; ///< array of mapping pads in y | |
185 | ||
186 | ClassDef(AliMUONTriggerGUIboard,2) //Trigger GUI utility class: single board object | |
187 | ||
188 | }; | |
189 | ||
190 | #endif |