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