52c19022 |
1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
3 | * * |
4 | * Author: The ALICE Off-line Project. * |
5 | * Contributors are mentioned in the code where appropriate. * |
6 | * * |
7 | * Permission to use, copy, modify and distribute this software and its * |
8 | * documentation strictly for non-commercial purposes is hereby granted * |
9 | * without fee, provided that the above copyright notice appears in all * |
10 | * copies and that both the copyright notice and this permission notice * |
11 | * appear in the supporting documentation. The authors make no claims * |
12 | * about the suitability of this software for any purpose. It is * |
13 | * provided "as is" without express or implied warranty. * |
14 | **************************************************************************/ |
15 | |
16 | /* $Id: AliTRDgtuParam.cxx 28397 2008-09-02 09:33:00Z cblume $ */ |
17 | |
18 | //////////////////////////////////////////////////////////////////////////// |
19 | // // |
20 | // Parameters for GTU simulation // |
21 | // // |
22 | // Author: J. Klein (Jochen.Klein@cern.ch) // |
23 | // // |
24 | //////////////////////////////////////////////////////////////////////////// |
25 | |
637666cd |
26 | #include "TROOT.h" |
52c19022 |
27 | #include "TMath.h" |
28 | #include "TMatrix.h" |
29 | #include "TDecompLU.h" |
30 | #include "TGraphAsymmErrors.h" |
31 | #include "TCanvas.h" |
32 | |
33 | #include "AliLog.h" |
34 | #include "AliTRDgtuParam.h" |
35 | #include "AliTRDgeometry.h" |
36 | #include "AliTRDpadPlane.h" |
37 | |
38 | ClassImp(AliTRDgtuParam) |
39 | |
40 | AliTRDgtuParam *AliTRDgtuParam::fgInstance = 0; |
44eafcf2 |
41 | Bool_t AliTRDgtuParam::fgUseGTUconst = kTRUE; |
52c19022 |
42 | |
2cf67435 |
43 | // ----- matching windows ----- |
44 | Int_t AliTRDgtuParam::fgDeltaY = 19; |
45 | Int_t AliTRDgtuParam::fgDeltaAlpha = 21; |
d2c8b010 |
46 | // ----- reference layers ----- |
47 | Int_t AliTRDgtuParam::fgRefLayers[] = { 3, 2, 1 }; |
2cf67435 |
48 | |
52c19022 |
49 | // ----- Bin widths (granularity) ----- |
50 | const Float_t AliTRDgtuParam::fgkBinWidthY = 160e-4; |
51 | const Float_t AliTRDgtuParam::fgkBinWidthdY = 140e-4; |
52 | |
53 | // ----- Bit widths (used for internal representation) ----- |
54 | const Int_t AliTRDgtuParam::fgkBitWidthY = 13; |
5f006bd7 |
55 | const Int_t AliTRDgtuParam::fgkBitWidthdY = 7; |
52c19022 |
56 | const Int_t AliTRDgtuParam::fgkBitWidthYProj = 10; |
5f006bd7 |
57 | const Int_t AliTRDgtuParam::fgkBitExcessY = 4; |
58 | const Int_t AliTRDgtuParam::fgkBitExcessAlpha = 10; |
59 | const Int_t AliTRDgtuParam::fgkBitExcessYProj = 2; |
52c19022 |
60 | |
44eafcf2 |
61 | // ----- z-channel tables ----- |
62 | const Bool_t AliTRDgtuParam::fgZChannelMap[5][16][6][16] = { |
63 | |
64 | { /* --- Stack 0 --- */ |
65 | |
66 | /* . x x . . . . . . . . . . . . . */ |
67 | /* x . . . . . . . . . . . . . . . */ |
68 | /* X . . . . . . . . . . . . . . . */ |
69 | /* x x . . . . . . . . . . . . . . */ |
70 | /* x x . . . . . . . . . . . . . . */ |
71 | /* x . . . . . . . . . . . . . . . */ |
72 | |
73 | {{0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
74 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
75 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
76 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
77 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
78 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
79 | |
80 | /* . . x x . . . . . . . . . . . . */ |
81 | /* x x . . . . . . . . . . . . . . */ |
82 | /* . X . . . . . . . . . . . . . . */ |
83 | /* . x x . . . . . . . . . . . . . */ |
84 | /* . x x . . . . . . . . . . . . . */ |
85 | /* x x . . . . . . . . . . . . . . */ |
86 | |
87 | {{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
88 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
89 | {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
90 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
91 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
92 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
93 | |
94 | /* . . . x x . . . . . . . . . . . */ |
95 | /* . x x . . . . . . . . . . . . . */ |
96 | /* . . X . . . . . . . . . . . . . */ |
97 | /* . . x x . . . . . . . . . . . . */ |
98 | /* . . x x . . . . . . . . . . . . */ |
99 | /* . x x . . . . . . . . . . . . . */ |
100 | |
101 | {{0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
102 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
103 | {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
104 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
105 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
106 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
107 | |
108 | /* . . . . x x . . . . . . . . . . */ |
109 | /* . . x x . . . . . . . . . . . . */ |
110 | /* . . . X . . . . . . . . . . . . */ |
111 | /* . . . x x . . . . . . . . . . . */ |
112 | /* . . . x x . . . . . . . . . . . */ |
113 | /* . . x x . . . . . . . . . . . . */ |
114 | |
115 | {{0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
116 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
117 | {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
118 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
119 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
120 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
121 | |
122 | /* . . . . . x x . . . . . . . . . */ |
123 | /* . . . x x . . . . . . . . . . . */ |
124 | /* . . . . X . . . . . . . . . . . */ |
125 | /* . . . . x x . . . . . . . . . . */ |
126 | /* . . . . x x . . . . . . . . . . */ |
127 | /* . . . x x . . . . . . . . . . . */ |
128 | |
129 | {{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
130 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
131 | {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
132 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
133 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
134 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
135 | |
136 | /* . . . . . . x x . . . . . . . . */ |
137 | /* . . . . x x . . . . . . . . . . */ |
138 | /* . . . . . X . . . . . . . . . . */ |
139 | /* . . . . . x x . . . . . . . . . */ |
140 | /* . . . . . x x . . . . . . . . . */ |
141 | /* . . . . x x . . . . . . . . . . */ |
142 | |
143 | {{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
144 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
145 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
146 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
147 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
148 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
149 | |
150 | /* . . . . . . . x x . . . . . . . */ |
151 | /* . . . . . x x . . . . . . . . . */ |
152 | /* . . . . . . X . . . . . . . . . */ |
153 | /* . . . . . . x x . . . . . . . . */ |
154 | /* . . . . . . x x . . . . . . . . */ |
155 | /* . . . . . x x . . . . . . . . . */ |
156 | |
157 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
158 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
159 | {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
160 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
161 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
162 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
163 | |
164 | /* . . . . . . . . x x . . . . . . */ |
165 | /* . . . . . . x x x . . . . . . . */ |
166 | /* . . . . . . . X . . . . . . . . */ |
167 | /* . . . . . . . x x . . . . . . . */ |
168 | /* . . . . . . . x x . . . . . . . */ |
169 | /* . . . . . . x x . . . . . . . . */ |
170 | |
171 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
172 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
173 | {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
174 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
175 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
176 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}}, |
177 | |
178 | /* . . . . . . . . x x x . . . . . */ |
179 | /* . . . . . . . x x x . . . . . . */ |
180 | /* . . . . . . . . X . . . . . . . */ |
181 | /* . . . . . . . x x x . . . . . . */ |
182 | /* . . . . . . . x x x . . . . . . */ |
183 | /* . . . . . . . x x . . . . . . . */ |
184 | |
185 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, |
186 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
187 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, |
188 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
189 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
190 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}}, |
191 | |
192 | /* . . . . . . . . . x x x . . . . */ |
193 | /* . . . . . . . . x x x . . . . . */ |
194 | /* . . . . . . . . . X . . . . . . */ |
195 | /* . . . . . . . . x x x . . . . . */ |
196 | /* . . . . . . . . x x x . . . . . */ |
197 | /* . . . . . . . . x x . . . . . . */ |
198 | |
199 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
200 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, |
201 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, |
202 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, |
203 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, |
204 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}}, |
205 | |
206 | /* . . . . . . . . . . x x x . . . */ |
207 | /* . . . . . . . . . x x x . . . . */ |
208 | /* . . . . . . . . . . X . . . . . */ |
209 | /* . . . . . . . . . x x x . . . . */ |
210 | /* . . . . . . . . . x x x . . . . */ |
211 | /* . . . . . . . . . x x . . . . . */ |
212 | |
213 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
214 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
215 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, |
216 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
217 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
218 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}}, |
219 | |
220 | /* . . . . . . . . . . . x x x . . */ |
221 | /* . . . . . . . . . . x x x . . . */ |
222 | /* . . . . . . . . . . . X . . . . */ |
223 | /* . . . . . . . . . . x x x . . . */ |
224 | /* . . . . . . . . . . x x x . . . */ |
225 | /* . . . . . . . . . . x x . . . . */ |
226 | |
227 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
228 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
229 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, |
230 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
231 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
232 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}, |
233 | |
234 | /* . . . . . . . . . . . . x x x . */ |
235 | /* . . . . . . . . . . . x x x . . */ |
236 | /* . . . . . . . . . . . . X . . . */ |
237 | /* . . . . . . . . . . . x x x . . */ |
238 | /* . . . . . . . . . . . x x x . . */ |
239 | /* . . . . . . . . . . . x x . . . */ |
240 | |
241 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
242 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
243 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, |
244 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
245 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
246 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}}, |
247 | |
248 | /* . . . . . . . . . . . . . x x x */ |
249 | /* . . . . . . . . . . . . x x x . */ |
250 | /* . . . . . . . . . . . . . X . . */ |
251 | /* . . . . . . . . . . . . x x x . */ |
252 | /* . . . . . . . . . . . . x x x . */ |
253 | /* . . . . . . . . . . . . x x . . */ |
254 | |
255 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
256 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
257 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, |
258 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
259 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
260 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}}, |
261 | |
262 | /* . . . . . . . . . . . . . . x x */ |
263 | /* . . . . . . . . . . . . . x x x */ |
264 | /* . . . . . . . . . . . . . . X . */ |
265 | /* . . . . . . . . . . . . . x x x */ |
266 | /* . . . . . . . . . . . . . x x x */ |
267 | /* . . . . . . . . . . . . . x x . */ |
268 | |
269 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
270 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
271 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, |
272 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
273 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
274 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}}, |
275 | |
276 | /* . . . . . . . . . . . . . . . x */ |
277 | /* . . . . . . . . . . . . . . x x */ |
278 | /* . . . . . . . . . . . . . . . X */ |
279 | /* . . . . . . . . . . . . . . x x */ |
280 | /* . . . . . . . . . . . . . . x x */ |
281 | /* . . . . . . . . . . . . . . x x */ |
282 | |
283 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
284 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
285 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
286 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
287 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
288 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}}}, |
289 | |
290 | { /* --- Stack 1 --- */ |
291 | |
292 | /* x x x . . . . . . . . . . . . . */ |
293 | /* x x . . . . . . . . . . . . . . */ |
294 | /* X . . . . . . . . . . . . . . . */ |
295 | /* x x . . . . . . . . . . . . . . */ |
296 | /* x x . . . . . . . . . . . . . . */ |
297 | /* x . . . . . . . . . . . . . . . */ |
298 | |
299 | {{1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
300 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
301 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
302 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
303 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
304 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
305 | |
306 | /* . x x x . . . . . . . . . . . . */ |
307 | /* x x x . . . . . . . . . . . . . */ |
308 | /* . X . . . . . . . . . . . . . . */ |
309 | /* x x x . . . . . . . . . . . . . */ |
310 | /* x x x . . . . . . . . . . . . . */ |
311 | /* x x . . . . . . . . . . . . . . */ |
312 | |
313 | {{0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
314 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
315 | {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
316 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
317 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
318 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
319 | |
320 | /* . . x x x . . . . . . . . . . . */ |
321 | /* . x x x . . . . . . . . . . . . */ |
322 | /* . . X . . . . . . . . . . . . . */ |
323 | /* . x x x . . . . . . . . . . . . */ |
324 | /* . x x x . . . . . . . . . . . . */ |
325 | /* . x x . . . . . . . . . . . . . */ |
326 | |
327 | {{0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
328 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
329 | {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
330 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
331 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
332 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
333 | |
334 | /* . . . x x x . . . . . . . . . . */ |
335 | /* . . x x x . . . . . . . . . . . */ |
336 | /* . . . X . . . . . . . . . . . . */ |
337 | /* . . x x x . . . . . . . . . . . */ |
338 | /* . . x x x . . . . . . . . . . . */ |
339 | /* . . x x . . . . . . . . . . . . */ |
340 | |
341 | {{0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
342 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
343 | {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
344 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
345 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
346 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
347 | |
348 | /* . . . . x x x . . . . . . . . . */ |
349 | /* . . . x x x . . . . . . . . . . */ |
350 | /* . . . . X . . . . . . . . . . . */ |
351 | /* . . . x x x . . . . . . . . . . */ |
352 | /* . . . x x x . . . . . . . . . . */ |
353 | /* . . . x x . . . . . . . . . . . */ |
354 | |
355 | {{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
356 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
357 | {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
358 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
359 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
360 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
361 | |
362 | /* . . . . . x x x . . . . . . . . */ |
363 | /* . . . . x x x . . . . . . . . . */ |
364 | /* . . . . . X . . . . . . . . . . */ |
365 | /* . . . . x x . . . . . . . . . . */ |
366 | /* . . . . x x . . . . . . . . . . */ |
367 | /* . . . . x x . . . . . . . . . . */ |
368 | |
369 | {{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
370 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
371 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
372 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
373 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
374 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
375 | |
376 | /* . . . . . . x x x . . . . . . . */ |
377 | /* . . . . . . x x . . . . . . . . */ |
378 | /* . . . . . . X . . . . . . . . . */ |
379 | /* . . . . . x x . . . . . . . . . */ |
380 | /* . . . . . x x . . . . . . . . . */ |
381 | /* . . . . . x x . . . . . . . . . */ |
382 | |
383 | {{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
384 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
385 | {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
386 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
387 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
388 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
389 | |
390 | /* . . . . . . . x x . . . . . . . */ |
391 | /* . . . . . . . x x . . . . . . . */ |
392 | /* . . . . . . . X . . . . . . . . */ |
393 | /* . . . . . . x x . . . . . . . . */ |
394 | /* . . . . . . x x . . . . . . . . */ |
395 | /* . . . . . . x x . . . . . . . . */ |
396 | |
397 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
398 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
399 | {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
400 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
401 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
402 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}}, |
403 | |
404 | /* . . . . . . . . x x . . . . . . */ |
405 | /* . . . . . . . . x x . . . . . . */ |
406 | /* . . . . . . . . X . . . . . . . */ |
407 | /* . . . . . . . x x . . . . . . . */ |
408 | /* . . . . . . . x x . . . . . . . */ |
409 | /* . . . . . . . x x . . . . . . . */ |
410 | |
411 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
412 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
413 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, |
414 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
415 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
416 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}}, |
417 | |
418 | /* . . . . . . . . . x x . . . . . */ |
419 | /* . . . . . . . . . x x . . . . . */ |
420 | /* . . . . . . . . . X . . . . . . */ |
421 | /* . . . . . . . . x x . . . . . . */ |
422 | /* . . . . . . . . x x . . . . . . */ |
423 | /* . . . . . . . . x x . . . . . . */ |
424 | |
425 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
426 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
427 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, |
428 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
429 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
430 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}}, |
431 | |
432 | /* . . . . . . . . . . x x . . . . */ |
433 | /* . . . . . . . . . . x x . . . . */ |
434 | /* . . . . . . . . . . X . . . . . */ |
435 | /* . . . . . . . . . x x . . . . . */ |
436 | /* . . . . . . . . . x x . . . . . */ |
437 | /* . . . . . . . . . x x . . . . . */ |
438 | |
439 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
440 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
441 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, |
442 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
443 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
444 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}}, |
445 | |
446 | /* . . . . . . . . . . . x x . . . */ |
447 | /* . . . . . . . . . . . x x . . . */ |
448 | /* . . . . . . . . . . . X . . . . */ |
449 | /* . . . . . . . . . . x x . . . . */ |
450 | /* . . . . . . . . . . x x . . . . */ |
451 | /* . . . . . . . . . . x x . . . . */ |
452 | |
453 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
454 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
455 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, |
456 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
457 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
458 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}, |
459 | |
460 | /* . . . . . . . . . . . . x x . . */ |
461 | /* . . . . . . . . . . . . x x . . */ |
462 | /* . . . . . . . . . . . . X . . . */ |
463 | /* . . . . . . . . . . . x x . . . */ |
464 | /* . . . . . . . . . . . x x . . . */ |
465 | /* . . . . . . . . . . . x x . . . */ |
466 | |
467 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
468 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
469 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, |
470 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
471 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
472 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}}, |
473 | |
474 | /* . . . . . . . . . . . . . x x . */ |
475 | /* . . . . . . . . . . . . . x x . */ |
476 | /* . . . . . . . . . . . . . X . . */ |
477 | /* . . . . . . . . . . . . x x . . */ |
478 | /* . . . . . . . . . . . . x x . . */ |
479 | /* . . . . . . . . . . . . x x . . */ |
480 | |
481 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
482 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
483 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, |
484 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
485 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
486 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}}, |
487 | |
488 | /* . . . . . . . . . . . . . . x x */ |
489 | /* . . . . . . . . . . . . . . x x */ |
490 | /* . . . . . . . . . . . . . . X . */ |
491 | /* . . . . . . . . . . . . . x x . */ |
492 | /* . . . . . . . . . . . . . x x . */ |
493 | /* . . . . . . . . . . . . . x x . */ |
494 | |
495 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
496 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
497 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, |
498 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
499 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
500 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}}, |
501 | |
502 | /* . . . . . . . . . . . . . . . x */ |
503 | /* . . . . . . . . . . . . . . . x */ |
504 | /* . . . . . . . . . . . . . . . X */ |
505 | /* . . . . . . . . . . . . . . x x */ |
506 | /* . . . . . . . . . . . . . . x x */ |
507 | /* . . . . . . . . . . . . . . x x */ |
508 | |
509 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
510 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
511 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
512 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
513 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
514 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}}}, |
515 | |
516 | { /* --- Stack 2 --- */ |
517 | |
518 | /* x x . . . . . . . . . . */ |
519 | /* x x . . . . . . . . . . */ |
520 | /* X . . . . . . . . . . . */ |
521 | /* x . . . . . . . . . . . */ |
522 | /* x . . . . . . . . . . . */ |
523 | /* x . . . . . . . . . . . */ |
524 | |
525 | {{1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
526 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
527 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
528 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
529 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
530 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
531 | |
532 | /* . x x . . . . . . . . . */ |
533 | /* . x x . . . . . . . . . */ |
534 | /* . X . . . . . . . . . . */ |
535 | /* x x . . . . . . . . . . */ |
536 | /* x x . . . . . . . . . . */ |
537 | /* x x . . . . . . . . . . */ |
538 | |
539 | {{0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
540 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
541 | {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
542 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
543 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
544 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
545 | |
546 | /* . . x x . . . . . . . . */ |
547 | /* . . x x . . . . . . . . */ |
548 | /* . . X . . . . . . . . . */ |
549 | /* . x x . . . . . . . . . */ |
550 | /* . x x . . . . . . . . . */ |
551 | /* . x x . . . . . . . . . */ |
552 | |
553 | {{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
554 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
555 | {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
556 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
557 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
558 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
559 | |
560 | /* . . . x x . . . . . . . */ |
561 | /* . . . x x . . . . . . . */ |
562 | /* . . . X . . . . . . . . */ |
563 | /* . . x x x . . . . . . . */ |
564 | /* . . x x x . . . . . . . */ |
565 | /* . . x x x . . . . . . . */ |
566 | |
567 | {{0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
568 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
569 | {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
570 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
571 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
572 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
573 | |
574 | /* . . . x x x . . . . . . */ |
575 | /* . . . x x x . . . . . . */ |
576 | /* . . . . X . . . . . . . */ |
577 | /* . . . x x x . . . . . . */ |
578 | /* . . . x x x . . . . . . */ |
579 | /* . . . x x x . . . . . . */ |
580 | |
581 | {{0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
582 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
583 | {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
584 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
585 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
586 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
587 | |
588 | /* . . . . x x x . . . . . */ |
589 | /* . . . . x x x . . . . . */ |
590 | /* . . . . . X . . . . . . */ |
591 | /* . . . . x x x . . . . . */ |
592 | /* . . . . x x x . . . . . */ |
593 | /* . . . . x x x . . . . . */ |
594 | |
595 | {{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
596 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
597 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
598 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
599 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
600 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
601 | |
602 | /* . . . . . x x x . . . . */ |
603 | /* . . . . . x x x . . . . */ |
604 | /* . . . . . . X . . . . . */ |
605 | /* . . . . . x x x . . . . */ |
606 | /* . . . . . x x x . . . . */ |
607 | /* . . . . . x x x . . . . */ |
608 | |
609 | {{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
610 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
611 | {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
612 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
613 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
614 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}}, |
615 | |
616 | /* . . . . . . x x x . . . */ |
617 | /* . . . . . . x x x . . . */ |
618 | /* . . . . . . . X . . . . */ |
619 | /* . . . . . . x x x . . . */ |
620 | /* . . . . . . x x x . . . */ |
621 | /* . . . . . . x x x . . . */ |
622 | |
623 | {{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
624 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
625 | {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
626 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
627 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
628 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}}, |
629 | |
630 | /* . . . . . . . x x . . . */ |
631 | /* . . . . . . . x x . . . */ |
632 | /* . . . . . . . . X . . . */ |
633 | /* . . . . . . . x x x . . */ |
634 | /* . . . . . . . x x x . . */ |
635 | /* . . . . . . . x x x . . */ |
636 | |
637 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
638 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
639 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, |
640 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
641 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
642 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}}, |
643 | |
644 | /* . . . . . . . . x x . . */ |
645 | /* . . . . . . . . x x . . */ |
646 | /* . . . . . . . . . X . . */ |
647 | /* . . . . . . . . . x x . */ |
648 | /* . . . . . . . . . x x . */ |
649 | /* . . . . . . . . . x x . */ |
650 | |
651 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
652 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
653 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, |
654 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
655 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
656 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}}, |
657 | |
658 | /* . . . . . . . . . x x . */ |
659 | /* . . . . . . . . . x x . */ |
660 | /* . . . . . . . . . . X . */ |
661 | /* . . . . . . . . . . x x */ |
662 | /* . . . . . . . . . . x x */ |
663 | /* . . . . . . . . . . x x */ |
664 | |
665 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
666 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
667 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, |
668 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
669 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
670 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}, |
671 | |
672 | /* . . . . . . . . . . x x */ |
673 | /* . . . . . . . . . . x x */ |
674 | /* . . . . . . . . . . . X */ |
675 | /* . . . . . . . . . . . x */ |
676 | /* . . . . . . . . . . . x */ |
677 | /* . . . . . . . . . . . x */ |
678 | |
679 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
680 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
681 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, |
682 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
683 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
684 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}}, |
685 | |
686 | /* . . . . . . . . . . . . */ |
687 | /* . . . . . . . . . . . . */ |
688 | /* . . . . . . . . . . . . */ |
689 | /* . . . . . . . . . . . . */ |
690 | /* . . . . . . . . . . . . */ |
691 | /* . . . . . . . . . . . . */ |
692 | |
693 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
694 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
695 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
696 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
697 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
698 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
699 | |
700 | /* . . . . . . . . . . . . */ |
701 | /* . . . . . . . . . . . . */ |
702 | /* . . . . . . . . . . . . */ |
703 | /* . . . . . . . . . . . . */ |
704 | /* . . . . . . . . . . . . */ |
705 | /* . . . . . . . . . . . . */ |
706 | |
707 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
708 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
709 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
710 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
711 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
712 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
713 | |
714 | /* . . . . . . . . . . . . */ |
715 | /* . . . . . . . . . . . . */ |
716 | /* . . . . . . . . . . . . */ |
717 | /* . . . . . . . . . . . . */ |
718 | /* . . . . . . . . . . . . */ |
719 | /* . . . . . . . . . . . . */ |
720 | |
721 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
722 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
723 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
724 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
725 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
726 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
727 | |
728 | /* . . . . . . . . . . . . */ |
729 | /* . . . . . . . . . . . . */ |
730 | /* . . . . . . . . . . . . */ |
731 | /* . . . . . . . . . . . . */ |
732 | /* . . . . . . . . . . . . */ |
733 | /* . . . . . . . . . . . . */ |
734 | |
735 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
736 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
737 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
738 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
739 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
740 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}, |
741 | |
742 | { /* --- Stack 3 --- */ |
743 | |
744 | /* x . . . . . . . . . . . . . . . */ |
745 | /* x . . . . . . . . . . . . . . . */ |
746 | /* X . . . . . . . . . . . . . . . */ |
747 | /* x x . . . . . . . . . . . . . . */ |
748 | /* x x . . . . . . . . . . . . . . */ |
749 | /* x x . . . . . . . . . . . . . . */ |
750 | |
751 | {{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
752 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
753 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
754 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
755 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
756 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
757 | |
758 | /* x x . . . . . . . . . . . . . . */ |
759 | /* x x . . . . . . . . . . . . . . */ |
760 | /* . X . . . . . . . . . . . . . . */ |
761 | /* . x x . . . . . . . . . . . . . */ |
762 | /* . x x . . . . . . . . . . . . . */ |
763 | /* . x x . . . . . . . . . . . . . */ |
764 | |
765 | {{1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
766 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
767 | {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
768 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
769 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
770 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
771 | |
772 | /* . x x . . . . . . . . . . . . . */ |
773 | /* . x x . . . . . . . . . . . . . */ |
774 | /* . . X . . . . . . . . . . . . . */ |
775 | /* . . x x . . . . . . . . . . . . */ |
776 | /* . . x x . . . . . . . . . . . . */ |
777 | /* . . x x . . . . . . . . . . . . */ |
778 | |
779 | {{0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
780 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
781 | {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
782 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
783 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
784 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
785 | |
786 | /* . . x x . . . . . . . . . . . . */ |
787 | /* . . x x . . . . . . . . . . . . */ |
788 | /* . . . X . . . . . . . . . . . . */ |
789 | /* . . . x x . . . . . . . . . . . */ |
790 | /* . . . x x . . . . . . . . . . . */ |
791 | /* . . . x x . . . . . . . . . . . */ |
792 | |
793 | {{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
794 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
795 | {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
796 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
797 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
798 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
799 | |
800 | /* . . . x x . . . . . . . . . . . */ |
801 | /* . . . x x . . . . . . . . . . . */ |
802 | /* . . . . X . . . . . . . . . . . */ |
803 | /* . . . . x x . . . . . . . . . . */ |
804 | /* . . . . x x . . . . . . . . . . */ |
805 | /* . . . . x x . . . . . . . . . . */ |
806 | |
807 | {{0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
808 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
809 | {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
810 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
811 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
812 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
813 | |
814 | /* . . . . x x . . . . . . . . . . */ |
815 | /* . . . . x x . . . . . . . . . . */ |
816 | /* . . . . . X . . . . . . . . . . */ |
817 | /* . . . . . x x . . . . . . . . . */ |
818 | /* . . . . . x x . . . . . . . . . */ |
819 | /* . . . . . x x . . . . . . . . . */ |
820 | |
821 | {{0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
822 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
823 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
824 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
825 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
826 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
827 | |
828 | /* . . . . . x x . . . . . . . . . */ |
829 | /* . . . . . x x . . . . . . . . . */ |
830 | /* . . . . . . X . . . . . . . . . */ |
831 | /* . . . . . . x x . . . . . . . . */ |
832 | /* . . . . . . x x . . . . . . . . */ |
833 | /* . . . . . . x x . . . . . . . . */ |
834 | |
835 | {{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
836 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
837 | {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
838 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
839 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
840 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}}, |
841 | |
842 | /* . . . . . . x x . . . . . . . . */ |
843 | /* . . . . . . x x . . . . . . . . */ |
844 | /* . . . . . . . X . . . . . . . . */ |
845 | /* . . . . . . . x x . . . . . . . */ |
846 | /* . . . . . . . x x . . . . . . . */ |
847 | /* . . . . . . . x x . . . . . . . */ |
848 | |
849 | {{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
850 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
851 | {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
852 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
853 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
854 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}}, |
855 | |
856 | /* . . . . . . . x x . . . . . . . */ |
857 | /* . . . . . . . x x . . . . . . . */ |
858 | /* . . . . . . . . X . . . . . . . */ |
859 | /* . . . . . . . . x x . . . . . . */ |
860 | /* . . . . . . . . x x . . . . . . */ |
861 | /* . . . . . . . . x x . . . . . . */ |
862 | |
863 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
864 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
865 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, |
866 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
867 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
868 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}}, |
869 | |
870 | /* . . . . . . . x x x . . . . . . */ |
871 | /* . . . . . . . . x x . . . . . . */ |
872 | /* . . . . . . . . . X . . . . . . */ |
873 | /* . . . . . . . . . x x . . . . . */ |
874 | /* . . . . . . . . . x x . . . . . */ |
875 | /* . . . . . . . . . x x . . . . . */ |
876 | |
877 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
878 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
879 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, |
880 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
881 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
882 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}}, |
883 | |
884 | /* . . . . . . . . x x x . . . . . */ |
885 | /* . . . . . . . . . x x x . . . . */ |
886 | /* . . . . . . . . . . X . . . . . */ |
887 | /* . . . . . . . . . . x x . . . . */ |
888 | /* . . . . . . . . . . x x . . . . */ |
889 | /* . . . . . . . . . . x x . . . . */ |
890 | |
891 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, |
892 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
893 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, |
894 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
895 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
896 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}, |
897 | |
898 | /* . . . . . . . . . x x x . . . . */ |
899 | /* . . . . . . . . . . x x x . . . */ |
900 | /* . . . . . . . . . . . X . . . . */ |
901 | /* . . . . . . . . . . x x x . . . */ |
902 | /* . . . . . . . . . . x x x . . . */ |
903 | /* . . . . . . . . . . . x x . . . */ |
904 | |
905 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, |
906 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
907 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, |
908 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
909 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
910 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}}, |
911 | |
912 | /* . . . . . . . . . . x x x . . . */ |
913 | /* . . . . . . . . . . . x x x . . */ |
914 | /* . . . . . . . . . . . . X . . . */ |
915 | /* . . . . . . . . . . . x x x . . */ |
916 | /* . . . . . . . . . . . x x x . . */ |
917 | /* . . . . . . . . . . . . x x . . */ |
918 | |
919 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0}, |
920 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
921 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, |
922 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
923 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
924 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}}, |
925 | |
926 | /* . . . . . . . . . . . x x x . . */ |
927 | /* . . . . . . . . . . . . x x x . */ |
928 | /* . . . . . . . . . . . . . X . . */ |
929 | /* . . . . . . . . . . . . x x x . */ |
930 | /* . . . . . . . . . . . . x x x . */ |
931 | /* . . . . . . . . . . . . . x x . */ |
932 | |
933 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0}, |
934 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
935 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, |
936 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
937 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
938 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}}, |
939 | |
940 | /* . . . . . . . . . . . . x x x . */ |
941 | /* . . . . . . . . . . . . . x x x */ |
942 | /* . . . . . . . . . . . . . . X . */ |
943 | /* . . . . . . . . . . . . . x x x */ |
944 | /* . . . . . . . . . . . . . x x x */ |
945 | /* . . . . . . . . . . . . . . x x */ |
946 | |
947 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0}, |
948 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
949 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, |
950 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
951 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
952 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}}, |
953 | |
954 | /* . . . . . . . . . . . . . x x x */ |
955 | /* . . . . . . . . . . . . . . x x */ |
956 | /* . . . . . . . . . . . . . . . X */ |
957 | /* . . . . . . . . . . . . . . x x */ |
958 | /* . . . . . . . . . . . . . . x x */ |
959 | /* . . . . . . . . . . . . . . . x */ |
960 | |
961 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1}, |
962 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
963 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
964 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
965 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
966 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}}, |
967 | |
968 | { /* --- Stack 4 --- */ |
969 | |
970 | /* x . . . . . . . . . . . . . . . */ |
971 | /* x x . . . . . . . . . . . . . . */ |
972 | /* X . . . . . . . . . . . . . . . */ |
973 | /* x x . . . . . . . . . . . . . . */ |
974 | /* x x . . . . . . . . . . . . . . */ |
975 | /* x x . . . . . . . . . . . . . . */ |
976 | |
977 | {{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
978 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
979 | {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
980 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
981 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
982 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
983 | |
984 | /* x x . . . . . . . . . . . . . . */ |
985 | /* x x x . . . . . . . . . . . . . */ |
986 | /* . X . . . . . . . . . . . . . . */ |
987 | /* x x x . . . . . . . . . . . . . */ |
988 | /* x x x . . . . . . . . . . . . . */ |
989 | /* . x x . . . . . . . . . . . . . */ |
990 | |
991 | {{1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
992 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
993 | {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
994 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
995 | {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
996 | {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
997 | |
998 | /* x x x . . . . . . . . . . . . . */ |
999 | /* . x x x . . . . . . . . . . . . */ |
1000 | /* . . X . . . . . . . . . . . . . */ |
1001 | /* . x x x . . . . . . . . . . . . */ |
1002 | /* . x x x . . . . . . . . . . . . */ |
1003 | /* . . x x . . . . . . . . . . . . */ |
1004 | |
1005 | {{1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1006 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1007 | {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1008 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1009 | {0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1010 | {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
1011 | |
1012 | /* . x x x . . . . . . . . . . . . */ |
1013 | /* . . x x x . . . . . . . . . . . */ |
1014 | /* . . . X . . . . . . . . . . . . */ |
1015 | /* . . x x x . . . . . . . . . . . */ |
1016 | /* . . x x x . . . . . . . . . . . */ |
1017 | /* . . . x x . . . . . . . . . . . */ |
1018 | |
1019 | {{0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1020 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1021 | {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1022 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1023 | {0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1024 | {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
1025 | |
1026 | /* . . x x x . . . . . . . . . . . */ |
1027 | /* . . . x x x . . . . . . . . . . */ |
1028 | /* . . . . X . . . . . . . . . . . */ |
1029 | /* . . . x x x . . . . . . . . . . */ |
1030 | /* . . . x x x . . . . . . . . . . */ |
1031 | /* . . . . x x . . . . . . . . . . */ |
1032 | |
1033 | {{0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1034 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1035 | {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1036 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1037 | {0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1038 | {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
1039 | |
1040 | /* . . . x x x . . . . . . . . . . */ |
1041 | /* . . . . x x x . . . . . . . . . */ |
1042 | /* . . . . . X . . . . . . . . . . */ |
1043 | /* . . . . x x x . . . . . . . . . */ |
1044 | /* . . . . x x x . . . . . . . . . */ |
1045 | /* . . . . . x x . . . . . . . . . */ |
1046 | |
1047 | {{0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1048 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1049 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1050 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1051 | {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1052 | {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, |
1053 | |
1054 | /* . . . . x x x . . . . . . . . . */ |
1055 | /* . . . . . x x x . . . . . . . . */ |
1056 | /* . . . . . . X . . . . . . . . . */ |
1057 | /* . . . . . x x x . . . . . . . . */ |
1058 | /* . . . . . x x x . . . . . . . . */ |
1059 | /* . . . . . . x x . . . . . . . . */ |
1060 | |
1061 | {{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1062 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1063 | {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
1064 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1065 | {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1066 | {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}}, |
1067 | |
1068 | /* . . . . . x x x . . . . . . . . */ |
1069 | /* . . . . . . x x x . . . . . . . */ |
1070 | /* . . . . . . . X . . . . . . . . */ |
1071 | /* . . . . . . x x x . . . . . . . */ |
1072 | /* . . . . . . x x x . . . . . . . */ |
1073 | /* . . . . . . . x x . . . . . . . */ |
1074 | |
1075 | {{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1076 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1077 | {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1078 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1079 | {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1080 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}}, |
1081 | |
1082 | /* . . . . . . x x . . . . . . . . */ |
1083 | /* . . . . . . . x x x . . . . . . */ |
1084 | /* . . . . . . . . X . . . . . . . */ |
1085 | /* . . . . . . . x x . . . . . . . */ |
1086 | /* . . . . . . . x x . . . . . . . */ |
1087 | /* . . . . . . . . x x . . . . . . */ |
1088 | |
1089 | {{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, |
1090 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, |
1091 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, |
1092 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1093 | {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1094 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}}, |
1095 | |
1096 | /* . . . . . . . x x . . . . . . . */ |
1097 | /* . . . . . . . . . x x . . . . . */ |
1098 | /* . . . . . . . . . X . . . . . . */ |
1099 | /* . . . . . . . . x x . . . . . . */ |
1100 | /* . . . . . . . . x x . . . . . . */ |
1101 | /* . . . . . . . . . x x . . . . . */ |
1102 | |
1103 | {{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, |
1104 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
1105 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, |
1106 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
1107 | {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
1108 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}}, |
1109 | |
1110 | /* . . . . . . . . x x . . . . . . */ |
1111 | /* . . . . . . . . . . x x . . . . */ |
1112 | /* . . . . . . . . . . X . . . . . */ |
1113 | /* . . . . . . . . . x x . . . . . */ |
1114 | /* . . . . . . . . . x x . . . . . */ |
1115 | /* . . . . . . . . . . x x . . . . */ |
1116 | |
1117 | {{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, |
1118 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
1119 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, |
1120 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
1121 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
1122 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}, |
1123 | |
1124 | /* . . . . . . . . . x x . . . . . */ |
1125 | /* . . . . . . . . . . . x x . . . */ |
1126 | /* . . . . . . . . . . . X . . . . */ |
1127 | /* . . . . . . . . . . x x . . . . */ |
1128 | /* . . . . . . . . . . x x . . . . */ |
1129 | /* . . . . . . . . . . . x x . . . */ |
1130 | |
1131 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, |
1132 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
1133 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}, |
1134 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
1135 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
1136 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}}, |
1137 | |
1138 | /* . . . . . . . . . . x x . . . . */ |
1139 | /* . . . . . . . . . . . . x x . . */ |
1140 | /* . . . . . . . . . . . . X . . . */ |
1141 | /* . . . . . . . . . . . x x . . . */ |
1142 | /* . . . . . . . . . . . x x . . . */ |
1143 | /* . . . . . . . . . . . . x x . . */ |
1144 | |
1145 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, |
1146 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
1147 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, |
1148 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
1149 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
1150 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}}, |
1151 | |
1152 | /* . . . . . . . . . . . x x . . . */ |
1153 | /* . . . . . . . . . . . . . x x . */ |
1154 | /* . . . . . . . . . . . . . X . . */ |
1155 | /* . . . . . . . . . . . . x x . . */ |
1156 | /* . . . . . . . . . . . . x x . . */ |
1157 | /* . . . . . . . . . . . . . x x . */ |
1158 | |
1159 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, |
1160 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
1161 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, |
1162 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
1163 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
1164 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}}, |
1165 | |
1166 | /* . . . . . . . . . . . . x x . . */ |
1167 | /* . . . . . . . . . . . . . . x x */ |
1168 | /* . . . . . . . . . . . . . . X . */ |
1169 | /* . . . . . . . . . . . . . x x . */ |
1170 | /* . . . . . . . . . . . . . x x . */ |
1171 | /* . . . . . . . . . . . . . . x x */ |
1172 | |
1173 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, |
1174 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
1175 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, |
1176 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
1177 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
1178 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}}, |
1179 | |
1180 | /* . . . . . . . . . . . . . x x . */ |
1181 | /* . . . . . . . . . . . . . . . x */ |
1182 | /* . . . . . . . . . . . . . . . X */ |
1183 | /* . . . . . . . . . . . . . . x x */ |
1184 | /* . . . . . . . . . . . . . . x x */ |
1185 | /* . . . . . . . . . . . . . . . x */ |
1186 | |
1187 | {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, |
1188 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
1189 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, |
1190 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
1191 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, |
1192 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}} |
1193 | |
1194 | }; |
52c19022 |
1195 | |
1196 | AliTRDgtuParam::AliTRDgtuParam() : |
1197 | fVertexSize(20.0), |
1198 | fCurrTrackletMask(0), |
b491d23b |
1199 | fMagField(0.5), |
52c19022 |
1200 | fGeo(0x0) |
1201 | { |
1202 | // default ctor |
1203 | fGeo = new AliTRDgeometry(); |
637666cd |
1204 | for (Int_t iLayer = 0; iLayer < 6; iLayer++) { |
1205 | fAki[iLayer] = 0.; |
1206 | fBki[iLayer] = 0.; |
1207 | fCki[iLayer] = 0.; |
1208 | } |
1209 | |
5f006bd7 |
1210 | GenerateZChannelMap(); |
52c19022 |
1211 | } |
1212 | |
5f006bd7 |
1213 | AliTRDgtuParam::~AliTRDgtuParam() |
52c19022 |
1214 | { |
1215 | // dtor |
1216 | |
1217 | delete fGeo; |
52c19022 |
1218 | } |
1219 | |
5f006bd7 |
1220 | AliTRDgtuParam* AliTRDgtuParam::Instance() |
52c19022 |
1221 | { |
1222 | // get (or create) the single instance |
1223 | |
5f006bd7 |
1224 | if (fgInstance == 0) |
52c19022 |
1225 | fgInstance = new AliTRDgtuParam(); |
1226 | |
1227 | return fgInstance; |
1228 | } |
1229 | |
5f006bd7 |
1230 | void AliTRDgtuParam::Terminate() |
52c19022 |
1231 | { |
1232 | // destruct the instance |
1233 | |
1234 | if (fgInstance != 0) { |
1235 | delete fgInstance; |
1236 | fgInstance = 0x0; |
1237 | } |
1238 | } |
1239 | |
5f006bd7 |
1240 | Bool_t AliTRDgtuParam::IsInZChannel(Int_t stack, Int_t layer, Int_t zchannel, Int_t zpos) const |
52c19022 |
1241 | { |
1242 | return (fZSubChannel[stack][zchannel][layer][zpos] != 0); |
1243 | } |
1244 | |
1245 | Int_t AliTRDgtuParam::GetZSubchannel(Int_t stack, Int_t layer, Int_t zchannel, Int_t zpos) const |
1246 | { |
1247 | return fZSubChannel[stack][zchannel][layer][zpos]; |
1248 | } |
1249 | |
d2c8b010 |
1250 | Int_t AliTRDgtuParam::GetRefLayer(Int_t refLayerIdx) |
52c19022 |
1251 | { |
36dc3337 |
1252 | // returns the reference layer indexed by refLayerIdx |
1253 | |
52c19022 |
1254 | if (refLayerIdx >= 0 && refLayerIdx < fgkNRefLayers) |
d2c8b010 |
1255 | return fgRefLayers[refLayerIdx]; |
5f006bd7 |
1256 | else |
52c19022 |
1257 | return -1; |
1258 | } |
1259 | |
5f006bd7 |
1260 | Int_t AliTRDgtuParam::GenerateZChannelMap() |
52c19022 |
1261 | { |
1262 | // generate the z-channel map |
5f006bd7 |
1263 | // assuming that the tracks come from the vertex |
52c19022 |
1264 | // +/- fVertexSize in z-direction |
1265 | |
44eafcf2 |
1266 | if (fgUseGTUconst) { |
1267 | for (Int_t iStack = 0; iStack < fGeo->Nstack(); iStack++) { |
1268 | for (Int_t iChannel = 0; iChannel < fGeo->GetRowMax(fgkFixLayer, iStack, 0); iChannel++) { |
1269 | for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) { |
1270 | for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, 0); iRow++) { |
1271 | if (fgZChannelMap[iStack][iChannel][iLayer][iRow] != 0) { |
1272 | fZChannelMap[iStack][iChannel][iLayer][iRow] = 1; |
1273 | fZSubChannel[iStack][iChannel % fgkNZChannels][iLayer][iRow] = iChannel / fgkNZChannels + 1; |
1274 | } |
1275 | } |
1276 | } |
1277 | } |
1278 | } |
52c19022 |
1279 | |
44eafcf2 |
1280 | return kTRUE; |
1281 | } |
1282 | else { |
1283 | Int_t iSec = 0; // sector is irrelevant |
1284 | Bool_t collision = kFALSE; |
52c19022 |
1285 | |
44eafcf2 |
1286 | for (Int_t iStack = 0; iStack < fGeo->Nstack(); iStack++) { |
5f006bd7 |
1287 | |
44eafcf2 |
1288 | Float_t x[6] = { 0 }; |
1289 | Float_t z[6][16] = {{ 0 }}; |
1290 | Float_t dZ[6][16] = {{ 0 }}; |
1291 | |
1292 | for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) { |
1293 | AliTRDpadPlane *pp = fGeo->GetPadPlane(iLayer, iStack); |
1294 | x[iLayer] = fGeo->GetTime0(iLayer) - fGeo->CdrHght(); // ??? |
1295 | for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, iSec); iRow++) { |
1296 | z[iLayer][iRow] = pp->GetRowPos(iRow); // this is the right (pos. z-direction) border of the pad |
1297 | dZ[iLayer][iRow] = pp->GetRowSize(iRow); // length of the pad in z-direction |
1298 | for (Int_t i = 0; i < fgkNZChannels; i++) |
52c19022 |
1299 | fZSubChannel[iStack][i][iLayer][iRow] = 0; |
44eafcf2 |
1300 | } |
52c19022 |
1301 | } |
52c19022 |
1302 | |
44eafcf2 |
1303 | for (Int_t fixRow = 0; fixRow < fGeo->GetRowMax(fgkFixLayer, iStack, iSec); fixRow++) { |
5f006bd7 |
1304 | |
44eafcf2 |
1305 | Double_t fixZmin = z[fgkFixLayer][fixRow] - dZ[fgkFixLayer][fixRow]; |
1306 | Double_t fixZmax = z[fgkFixLayer][fixRow]; |
1307 | Double_t fixX = x[fgkFixLayer] + 1.5; // ??? 1.5 from where? |
52c19022 |
1308 | |
44eafcf2 |
1309 | for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) { |
1310 | Double_t leftZ, rightZ; |
5f006bd7 |
1311 | |
44eafcf2 |
1312 | if (iLayer <= fgkFixLayer) { |
1313 | leftZ = (fixZmin + fVertexSize) * (x[iLayer] + 1.5) / fixX - fVertexSize; |
1314 | rightZ = (fixZmax - fVertexSize) * (x[iLayer] + 1.5) / fixX + fVertexSize; |
1315 | } |
1316 | else { |
1317 | leftZ = (fixZmin - fVertexSize) * (x[iLayer] + 1.5) / fixX + fVertexSize; |
1318 | rightZ = (fixZmax + fVertexSize) * (x[iLayer] + 1.5) / fixX - fVertexSize; |
1319 | } |
5f006bd7 |
1320 | |
44eafcf2 |
1321 | Double_t epsilon = 0.001; |
1322 | for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, iSec); iRow++) { |
1323 | if ( (z[iLayer][iRow] ) > (leftZ + epsilon) && |
1324 | (z[iLayer][iRow] - dZ[iLayer][iRow] ) < (rightZ - epsilon) ) { |
1325 | fZChannelMap[iStack][fixRow][iLayer][iRow] = 1; |
1326 | if (fZSubChannel[iStack][fixRow % fgkNZChannels][iLayer][iRow] != 0) { |
1327 | AliError("Collision in Z-Channel assignment occured! No reliable tracking!!!"); |
1328 | collision = kTRUE; |
1329 | } |
1330 | else |
1331 | fZSubChannel[iStack][fixRow % fgkNZChannels][iLayer][iRow] = fixRow / fgkNZChannels + 1; |
52c19022 |
1332 | } |
52c19022 |
1333 | |
44eafcf2 |
1334 | } |
52c19022 |
1335 | } |
1336 | } |
1337 | } |
52c19022 |
1338 | |
44eafcf2 |
1339 | return ~collision; |
1340 | } |
52c19022 |
1341 | } |
1342 | |
5f006bd7 |
1343 | Bool_t AliTRDgtuParam::DisplayZChannelMap(Int_t zchannel, Int_t subchannel) const |
52c19022 |
1344 | { |
5f006bd7 |
1345 | // display the z-channel map |
52c19022 |
1346 | |
637666cd |
1347 | if (zchannel >= fgkNZChannels) { |
52c19022 |
1348 | AliError("Invalid Z channel!"); |
1349 | return kFALSE; |
1350 | } |
1351 | |
1352 | Int_t zchmin = zchannel >= 0 ? zchannel : 0; |
1353 | Int_t zchmax = zchannel >= 0 ? zchannel + 1 : fgkNZChannels; |
1354 | Int_t i = 0; |
1355 | Int_t j = 0; |
1356 | TCanvas *c = new TCanvas("zchmap", "Z-Chhannel Mapping"); |
1357 | c->cd(); |
1358 | TGraph **graphz = new TGraph*[fgkNZChannels]; |
5f006bd7 |
1359 | for (Int_t zch = zchmin; zch < zchmax; zch++) |
52c19022 |
1360 | graphz[zch] = new TGraph; |
1361 | TGraphAsymmErrors *graph = new TGraphAsymmErrors(); |
1362 | graph->SetTitle("Z-Channel Map"); |
1363 | graph->SetPoint(i, 0, 0); // vertex |
1364 | graph->SetPointError(i++, 20, 20, 0, 0); |
1365 | // graph->SetRange //???? |
1366 | for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) { |
1367 | for (Int_t iStack = 0; iStack < fGeo->Nstack(); iStack++) { |
1368 | AliTRDpadPlane *pp = fGeo->GetPadPlane(iLayer, iStack); |
1369 | for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, 0); iRow++) { |
1370 | graph->SetPoint(i, pp->GetRowPos(iRow), fGeo->GetTime0(iLayer) - fGeo->CdrHght()); |
1371 | graph->SetPointError(i++, pp->GetRowSize(iRow), 0, 0, 0); |
1372 | for (Int_t zch = zchmin; zch < zchmax; zch++) |
1373 | if (fZSubChannel[iStack][zch][iLayer][iRow] != 0) |
1374 | if (subchannel == 0 || fZSubChannel[iStack][zch][iLayer][iRow] == subchannel) |
1375 | graphz[zch]->SetPoint(j++, pp->GetRowPos(iRow) - pp->GetRowSize(iRow)/2, fGeo->GetTime0(iLayer) - fGeo->CdrHght()); |
1376 | } |
1377 | } |
1378 | } |
1379 | graph->SetMarkerStyle(kDot); |
1380 | graph->Draw("AP"); |
637666cd |
1381 | gROOT->Add(graph); |
52c19022 |
1382 | for (Int_t zch = zchmin; zch < zchmax; zch++) { |
1383 | graphz[zch]->SetMarkerStyle(kCircle); |
1384 | graphz[zch]->SetMarkerColor(zch+2); |
1385 | graphz[zch]->SetMarkerSize(0.3 + zch*0.2); |
1386 | graphz[zch]->Draw("P"); |
637666cd |
1387 | gROOT->Add(graphz[zch]); |
52c19022 |
1388 | } |
54d34aac |
1389 | delete [] graphz; |
52c19022 |
1390 | return kTRUE; |
1391 | } |
1392 | |
5f006bd7 |
1393 | Int_t AliTRDgtuParam::GetCiAlpha(Int_t layer) const |
52c19022 |
1394 | { |
1395 | // get the constant for the calculation of alpha |
1396 | |
44eafcf2 |
1397 | Int_t ci = TMath::Nint(GetChamberThickness() / fGeo->GetTime0(layer) * GetBinWidthY() / GetBinWidthdY() * (1 << (GetBitExcessAlpha() + GetBitExcessY() + 1)) ); |
36dc3337 |
1398 | return ci; |
52c19022 |
1399 | } |
1400 | |
5f006bd7 |
1401 | Int_t AliTRDgtuParam::GetCiYProj(Int_t layer) const |
52c19022 |
1402 | { |
1403 | // get the constant for the calculation of y_proj |
1404 | |
5f006bd7 |
1405 | Float_t xmid = (fGeo->GetTime0(0) + fGeo->GetTime0(fGeo->Nlayer()-1)) / 2.; |
44eafcf2 |
1406 | Int_t ci = TMath::Nint(- (fGeo->GetTime0(layer) - xmid) / GetChamberThickness() * GetBinWidthdY() / GetBinWidthY() * (1 << GetBitExcessYProj()) ); |
36dc3337 |
1407 | return ci; |
52c19022 |
1408 | } |
1409 | |
1410 | Int_t AliTRDgtuParam::GetYt(Int_t stack, Int_t layer, Int_t zrow) const |
1411 | { |
5f006bd7 |
1412 | return (Int_t) (- ( (layer % 2 ? 1 : -1) * |
1413 | (GetGeo()->GetPadPlane(layer, stack)->GetRowPos(zrow) - GetGeo()->GetPadPlane(layer, stack)->GetRowSize(zrow) / 2) * |
52c19022 |
1414 | TMath::Tan(- 2.0 / 180.0 * TMath::Pi()) ) / 0.016 ); |
1415 | } |
1416 | |
5f006bd7 |
1417 | Bool_t AliTRDgtuParam::GenerateRecoCoefficients(Int_t trackletMask) |
52c19022 |
1418 | { |
5f006bd7 |
1419 | // calculate the coefficients for the straight line fit |
36dc3337 |
1420 | // depending on the mask of contributing tracklets |
1421 | |
52c19022 |
1422 | fCurrTrackletMask = trackletMask; |
1423 | |
1424 | TMatrix a(GetNLayers(), 3); |
1425 | TMatrix b(3, GetNLayers()); |
1426 | TMatrix c(3, 3); |
1427 | |
1428 | for (Int_t layer = 0; layer < GetNLayers(); layer++) { |
1429 | if ( (trackletMask & (1 << layer)) == 0) { |
1430 | a(layer, 0) = 0; |
1431 | a(layer, 1) = 0; |
1432 | a(layer, 2) = 0; |
5f006bd7 |
1433 | } |
52c19022 |
1434 | else { |
1435 | a(layer, 0) = 1; |
1436 | a(layer, 1) = fGeo->GetTime0(layer); |
1437 | a(layer, 2) = (layer % 2 ? 1 : -1) * fGeo->GetTime0(layer); |
1438 | } |
1439 | } |
1440 | |
1441 | b.Transpose(a); |
1442 | c = b * a; |
1443 | c.InvertFast(); |
1444 | b = c * b; |
1445 | |
1446 | for (Int_t layer = 0; layer < GetNLayers(); layer++) { |
1447 | fAki[layer] = b.GetMatrixArray()[layer]; |
1448 | fBki[layer] = b.GetMatrixArray()[GetNLayers() + layer]; |
1449 | fCki[layer] = b.GetMatrixArray()[2 * GetNLayers() + layer]; |
1450 | } |
1451 | return kTRUE; |
1452 | } |
1453 | |
5f006bd7 |
1454 | Float_t AliTRDgtuParam::GetAki(Int_t k, Int_t i) |
52c19022 |
1455 | { |
1456 | // get A_ki for the calculation of the tracking parameters |
1457 | if (fCurrTrackletMask != k) |
1458 | GenerateRecoCoefficients(k); |
1459 | |
d2c8b010 |
1460 | return -fAki[i]; |
52c19022 |
1461 | } |
1462 | |
5f006bd7 |
1463 | Float_t AliTRDgtuParam::GetBki(Int_t k, Int_t i) |
52c19022 |
1464 | { |
1465 | // get B_ki for the calculation of the tracking parameters |
1466 | |
1467 | if (fCurrTrackletMask != k) |
1468 | GenerateRecoCoefficients(k); |
1469 | |
1470 | return fBki[i]; |
1471 | } |
1472 | |
5f006bd7 |
1473 | Float_t AliTRDgtuParam::GetCki(Int_t k, Int_t i) |
52c19022 |
1474 | { |
1475 | // get B_ki for the calculation of the tracking parameters |
1476 | |
1477 | if (fCurrTrackletMask != k) |
1478 | GenerateRecoCoefficients(k); |
1479 | |
1480 | return fCki[i]; |
1481 | } |
1482 | |
1483 | /* |
5f006bd7 |
1484 | Float_t AliTRDgtuParam::GetD(Int_t k) const |
52c19022 |
1485 | { |
1486 | // get the determinant for the calculation of the tracking parameters |
1487 | |
1488 | TMatrix t(3, 3); |
1489 | for (Int_t i = 0; i < GetNLayers(); i++) { |
1490 | if ( !((k >> i) & 0x1) ) |
1491 | continue; |
1492 | Float_t xi = fGeo->GetTime0(i); |
1493 | t(0,0) += 1; |
1494 | t(1,0) += xi; |
1495 | t(2,0) += TMath::Power(-1, i) * xi; |
1496 | t(0,1) += xi; |
1497 | t(1,1) += TMath::Power(xi, 2); |
1498 | t(2,1) += TMath::Power(-1, i) * TMath::Power(xi, 2); |
1499 | t(0,2) += TMath::Power(-1, i) * xi; |
1500 | t(1,2) += TMath::Power(-1, i) * TMath::Power(xi, 2); |
1501 | t(2,2) += TMath::Power(xi, 2); |
1502 | } |
1503 | return t.Determinant(); |
1504 | } |
1505 | |
5f006bd7 |
1506 | Bool_t AliTRDgtuParam::GetFitParams(TVectorD& rhs, Int_t k) |
52c19022 |
1507 | { |
1508 | // calculate the fitting parameters |
1509 | // will be changed! |
1510 | |
1511 | TMatrix t(3,3); |
1512 | for (Int_t i = 0; i < GetNLayers(); i++) { |
1513 | if ( !((k >> i) & 0x1) ) |
1514 | continue; |
1515 | Float_t xi = fGeo->GetTime0(i); |
1516 | t(0,0) += 1; |
1517 | t(1,0) += xi; |
1518 | t(2,0) += TMath::Power(-1, i) * xi; |
1519 | t(0,1) += xi; |
1520 | t(1,1) += TMath::Power(xi, 2); |
1521 | t(2,1) += TMath::Power(-1, i) * TMath::Power(xi, 2); |
1522 | t(0,2) -= TMath::Power(-1, i) * xi; |
1523 | t(1,2) -= TMath::Power(-1, i) * TMath::Power(xi, 2); |
1524 | t(2,2) -= TMath::Power(xi, 2); |
1525 | } |
1526 | TDecompLU lr(t); |
1527 | lr.Solve(rhs); |
1528 | return lr.Decompose(); |
1529 | } |
1530 | */ |
1531 | |
5f006bd7 |
1532 | Bool_t AliTRDgtuParam::GetIntersectionPoints(Int_t k, Float_t &x1, Float_t &x2) |
52c19022 |
1533 | { |
1534 | // get the x-coord. of the assumed circle/straight line intersection points |
1535 | |
1536 | Int_t l1 = -1; |
1537 | Int_t l2 = -1; |
1538 | Int_t nHits = 0; |
1539 | for (Int_t layer = 0; layer < GetNLayers(); layer++) { |
1540 | if ( (k >> layer) & 0x1 ) { |
5f006bd7 |
1541 | if (l1 < 0) |
52c19022 |
1542 | l1 = layer; |
1543 | l2 = layer; |
1544 | nHits++; |
1545 | } |
1546 | } |
1547 | |
637666cd |
1548 | if ( (l1 >= 0) && (l2 >= 0) ) { |
1549 | x1 = fGeo->GetTime0(l1) + 10./6 * (nHits -1); |
1550 | x2 = fGeo->GetTime0(l2) - 10./6 * (nHits -1); |
1551 | return kTRUE; |
1552 | } |
1553 | else |
1554 | return kFALSE; |
52c19022 |
1555 | } |
1556 | |
d2c8b010 |
1557 | Int_t AliTRDgtuParam::GetPt(Int_t layerMask, Int_t a, Float_t /* b */, Float_t x1, Float_t x2, Float_t magField) |
52c19022 |
1558 | { |
b491d23b |
1559 | // returns 0.3 * B * 1/a (1/128 GeV/c) |
1560 | // a : offset, b : slope (not used) |
1561 | |
44eafcf2 |
1562 | if (fgUseGTUconst) { |
1563 | //----- calculation as in the GTU ---- |
1564 | const Int_t maskIdLut[64] = { |
1565 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, |
1566 | -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 2, -1, 3, 4, 5, |
1567 | -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, 7, -1, 8, 9, 10, |
1568 | -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21 |
1569 | }; |
1570 | |
1571 | const Int_t c1Lut[32] = { |
1572 | -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578, |
1573 | -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578, |
1574 | -2670, -2557, -2763, -2557, -2644, -2523, -1, -1, |
1575 | -1, -1, -1, -1, -1, -1, -1, -1 |
1576 | }; |
1577 | |
1578 | Int_t layerMaskId = maskIdLut[layerMask]; |
1579 | Int_t c1 = c1Lut[layerMaskId]; |
1580 | Int_t c1Ext = c1 << 8; |
d2c8b010 |
1581 | Int_t ptRawStage4 = c1Ext / (a >> 2); |
44eafcf2 |
1582 | Int_t ptRawComb4 = ptRawStage4; |
1583 | Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30; |
1584 | |
1585 | return ((Int_t) ptExtComb4/2); |
1586 | } |
1587 | else { |
1588 | //----- simple calculation ----- |
1589 | Float_t c1 = x1 * x2 / 2. / 10000.; // conversion cm to m |
1590 | Float_t r = 0; |
1591 | if ( (a >> 1) != 0) |
d2c8b010 |
1592 | r = (0.3 * magField / 2. / (fgkBinWidthY/100.)) * (((Int_t) c1) << 8) / (a >> 1); //??? why shift of a? |
44eafcf2 |
1593 | |
1594 | Int_t pt = (Int_t) (2 * r); |
1595 | if (pt >= 0) |
1596 | pt += 32; |
1597 | else |
1598 | pt -= 29; |
1599 | pt /= 2; |
1600 | return pt; |
1601 | } |
52c19022 |
1602 | } |