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