Belle II Software  release-06-02-00
trggdlWriteLocalDB.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <framework/database/DBImportObjPtr.h>
10 #include <framework/database/DBObjPtr.h>
11 #include <framework/database/DBStore.h>
12 #include <framework/datastore/StoreObjPtr.h>
13 #include <framework/datastore/DataStore.h>
14 #include <framework/dataobjects/EventMetaData.h>
15 #include <framework/logging/LogSystem.h>
16 #include <mdst/dbobjects/TRGGDLDBPrescales.h>
17 #include <mdst/dbobjects/TRGGDLDBFTDLBits.h>
18 #include <mdst/dbobjects/TRGGDLDBInputBits.h>
19 #include <mdst/dbobjects/TRGGDLDBBadrun.h>
20 #include <trg/gdl/dbobjects/TRGGDLDBUnpacker.h>
21 #include <trg/gdl/dbobjects/TRGGDLDBDelay.h>
22 #include <trg/gdl/dbobjects/TRGGDLDBAlgs.h>
23 #include <iostream>
24 #include <fstream>
25 #include <sstream>
26 //#include <TFile.h>
27 //#include <TH1F.h>
28 
29 using namespace Belle2;
30 
31 #define ONLINE 0
32 //#define ONLINE 1
33 //#define ONLINE 2 //end of exp12 for MC14
34 
35 
36 /* common for setalg, setinputbits, setftdlbits */
37 const int N_FTD_VERS = 22;
38 const int ftd_run[N_FTD_VERS][4] = { //itnitial exp, initial run, end exp, end run
39  0, 0, 6, -1, // 0
40  7, 0, 7, 2102, // 1 11
41  7, 2103, 7, 2367, // 2 12 +{tsf0b2b,sl0b2b}
42  7, 2368, 7, 4023, // 3 13 +{eklm_hit,eklm(4),eklmb2b(3),mu_epair,mu_eb2b,eklmhit}
43  7, 4024, 8, 1185, // 4 14 +{fffc,fffc2,ffoc2}
44  8, 1186, 8, 1285, // 5 15 +{fffo,fffov}
45  8, 1286, 8, 1505, // 6 14 gdl0070p2
46  8, 1506, 8, 2043, // 7 15 gdl0070r
47  8, 2044, 8, 2782, // 8 16 +{tsf[12]b2b,sl[12]b2b,sl12b2b}
48  8, 2783, 10, 134, // 9 17 +{t_a(4),ecl_bst,a,aa,aao,aab,aaao,aaa,eclbst}
49  10, 135, 10, 2539, // 10 22 +{ecl_lml_13,ecl_lml_12,injv,hade,vetout}, -ecl_lml_11
50  10, 2540, 10, 4600, // 11 23 {t_a,ecl_bst,ecl_3dbha,injv,tsf[12]b2b,ecl_lml_13} moved,
51  10, 4601, 12, 1659, // 12 24 o and b for short trk chged to s2[sf][o5]
52  12, 1660, 12, 1858, // 13 25 +{bff,bhie}
53  12, 1859, 13, -1, // 14 26 trk req removed from mu_pair
54  14, 0, 14, 637, // 15 29
55  14, 638, 14, 1952, // 16 30
56  14, 1953, 14, 2040, // 17 32
57  14, 2041, 16, 20, // 18 33
58  16, 21, 16, 578, // 19 34
59  16, 579, 16, 1132, // 20 35
60  16, 1133, -1, -1 // 21 36
61 };
62 const int ftd_version[] = {
63  24, 11, 12, 13, 14, 15, 14, 15, 16, 17, 22, 23, 24, 25, 26, 29, 30, 32, 33, 34, 35, 36
64 };
65 
66 
67 //prescale setting
68 void setprescale()
69 {
70 
71  const int N_BITS_RESERVED = 320;
72  const int N_PSNM_ARRAY = 51 + 1; //start from -1
73 
74  const int run[N_PSNM_ARRAY][4] = { //itnitial exp, initial run, end exp, end run
75  0, 0, 2, -1,
76  3, 0, 3, 107,
77  3, 108, 3, 295,
78  3, 296, 3, 1511,
79  3, 1512, 3, 1810,
80  3, 1811, 3, 1994,
81  3, 1995, 3, 2000,
82  3, 2001, 3, 2313,
83  3, 2314, 3, 3503,
84  3, 3504, 3, 5340,
85  3, 5341, 7, 919,
86  7, 920, 7, 1371,
87  7, 1372, 7, 1478,
88  7, 1479, 7, 3215,
89  7, 3216, 8, 1201,
90  8, 1202, 10, 3128, // fffo:0->1, ftd unchanged.
91  10, 3129, 10, 3130,
92  10, 3131, 10, 3436,
93  10, 3437, 10, 3442,
94  10, 3443, 10, 3548,
95  10, 3549, 10, 4608,
96  10, 4609, 10, 5387,
97  10, 5388, 10, 5728,
98  10, 5729, 12, 796,
99  12, 797, 12, 1742,
100  12, 1743, 12, 1907,
101  12, 1908, 12, 2133,
102  12, 2134, 12, 2334,
103  12, 2335, 12, 2719,
104  12, 2720, 12, 6372,
105  12, 6373, 13, -1,
106  14, 0, 14, 639,
107  14, 640, 14, 648,
108  14, 649, 14, 784,
109  14, 785, 14, 1751,
110  14, 1752, 14, 1752,
111  14, 1753, 14, 1771,
112  14, 1772, 14, 1772,
113  14, 1773, 14, 1971,
114  14, 1972, 14, 1972,
115  14, 1973, 14, 1992,
116  14, 1993, 14, 2040,
117  14, 2041, 14, 2055,
118  14, 2056, 16, 20,
119  16, 21, 16, 665,
120  16, 666, 16, 893,
121  16, 894, 16, 1060,
122  16, 1061, 16, 1061,
123  16, 1062, 18, 65,
124  18, 66, 18, 282,
125  18, 283, 18, 780,
126  18, 781, -1, -1
127  };
128 
129  const int nbit[N_PSNM_ARRAY] = { 0, 18, 44, 63, 63,
130  63, 72, 75, 75, 75,
131  75, 133, 133, 133, 133,
132  142, 160, 160, 160, 160,
133  160, 160, 160, 160, 160,
134  160, 160, 160, 160, 160,
135  160, 192, 192, 192, 192,
136  192, 192, 192, 192, 192,
137  192, 192, 192, 192, 192,
138  192, 192, 192, 192, 192,
139  192, 192
140  };
141 
142  const unsigned
143  psnmValues[N_PSNM_ARRAY][N_BITS_RESERVED] = {
144  // -1
145  {
146  0
147  },
148 
149  // 0
150  // psn_0055 r59-
151  {
152  0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
153  0, 0, 0, 0, 0, 0, 0, 1
154  },
155 
156  // 1
157  // psn_0056 r108-
158  {
159  0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
160  1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
161  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
162  0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
163  0, 1, 0, 1
164  },
165 
166  // 2
167  // psn_0057 r296-
168  {
169  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
170  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
171  1500, 150, 0, 0, 1, 1, 0, 0, 0, 0,
172  0, 0, 0, 30, 0, 0, 20000, 0, 0, 0,
173  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
174  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
175  1, 0, 20
176  },
177 
178  // 3
179  // psn_0058 r1512-r1615 ecltiming=1
180  // Not used for good data
181  {
182  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
183  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
184  1500, 150, 0, 0, 1, 1, 0, 1, 0, 0,
185  0, 0, 0, 30, 0, 0, 20000, 0, 0, 0,
186  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
187  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
188  1, 0, 20
189  },
190 
191  // 4
192  // psn_0057 r1811- ecltiming=0
193  {
194  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
195  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
196  1500, 150, 0, 0, 1, 1, 0, 0, 0, 0,
197  0, 0, 0, 30, 0, 0, 20000, 0, 0, 0,
198  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
199  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
200  1, 0, 20
201  },
202 
203  // 5
204  // psn_0059 r1995- 5 Dark bits
205  {
206  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
207  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
208  1500, 150, 0, 0, 1, 1, 0, 0, 0, 0,
209  0, 0, 0, 30, 0, 0, 20000, 0, 0, 0,
210  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
211  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
212  1, 0, 20, 0, 0, 0, 0, 1, 1, 1,
213  1, 1
214  },
215 
216  // 6
217  // psn_0059 r2001- 3 Dark bits
218  {
219  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
220  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
221  1500, 150, 0, 0, 1, 1, 0, 0, 0, 0,
222  0, 0, 0, 30, 0, 0, 20000, 0, 0, 0,
223  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
224  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
225  1, 0, 20, 0, 0, 0, 0, 1, 1, 1,
226  1, 1, 1, 1, 1
227  },
228 
229  // 7
230  // psn_0060 r2314- eclnimo03 30->300
231  {
232  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
233  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
234  1500, 150, 0, 0, 1, 1, 0, 0, 0, 0,
235  0, 0, 0, 300, 0, 0, 20000, 0, 0, 0,
236  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
237  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
238  1, 0, 20, 0, 0, 0, 0, 1, 1, 1,
239  1, 1, 1, 1, 1
240  },
241 
242  // 8
243  // psn_0063 e3504- bg(26)->1
244  {
245  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
246  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
247  1500, 150, 0, 0, 1, 1, 1, 0, 0, 0,
248  0, 0, 0, 300, 0, 0, 20000, 0, 0, 0,
249  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
250  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
251  1, 0, 20, 0, 0, 0, 0, 1, 1, 1,
252  1, 1, 1, 1, 1
253  },
254 
255  // 9
256  // psn_0064=65. e5341- eed,fed,fp,bha3d
257  // Can be earlier than 5341 but
258  // runsum files lost.
259  {
260  0, 0, 1, 1, 0, 0, 1, 1, 1, 0,
261  1, 150, 0, 1, 0, 1, 1, 1, 1, 20,
262  1500, 150, 0, 0, 1, 1, 1, 0, 0, 0,
263  0, 0, 0, 300, 0, 0, 20000, 0, 0, 0,
264  0, 0, 400000, 1, 0, 0, 0, 0, 0, 0,
265  0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
266  1, 0, 20, 1, 1, 1, 1, 1, 1, 1,
267  1, 1, 1, 1, 1
268  },
269 
270  //10
271  //e7r920
272  {
273  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274  20, 0, 0, 0, 0, 0, 0, 1, 0, 0,
275  0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
276  150, 50, 1, 0, 1, 1, 1, 1, 1, 1,
277  1, 1, 1, 20, 1500, 150, 1, 1, 1, 0,
278  0, 0, 60, 40, 40, 160000, 0, 0, 1, 400,
279  0, 2000, 1, 1, 1, 0, 0, 2000, 0, 0,
280  0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
281  1, 1, 1, 1, 1, 1, 1, 1, 1, 700,
282  40, 1, 1, 1, 1, 1, 0, 200, 1, 1,
283  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
284  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
285  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
286  0, 0, 0, 0
287  },
288 
289  //11
290  //e7r1372
291  {
292  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
293  20, 0, 0, 0, 0, 0, 0, 1, 0, 0,
294  0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
295  150, 50, 1, 0, 1, 1, 1, 1, 1, 1,
296  1, 1, 1, 20, 1500, 150, 1, 1, 1, 0,
297  0, 0, 60, 40, 40, 160000, 0, 0, 1, 400,
298  0, 2000, 1, 1, 1, 0, 0, 2000, 0, 0,
299  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
300  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
301  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
302  0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
303  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
304  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305  0, 0, 0, 0
306  },
307 
308  //12
309  //e7r1479
310  {
311  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
312  20, 0, 0, 0, 0, 0, 0, 1, 0, 0,
313  0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
314  150, 50, 1, 0, 1, 1, 1, 1, 1, 1,
315  1, 1, 1, 20, 1500, 150, 1, 1, 1, 0,
316  0, 0, 60, 40, 40, 160000, 0, 0, 1, 400,
317  0, 2000, 1, 1, 0, 0, 0, 2000, 0, 0,
318  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
319  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
320  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
321  0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
322  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
323  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
324  0, 0, 0, 0
325  },
326 
327  //13
328  //e7r3216
329  {
330  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
331  20, 0, 0, 0, 0, 0, 0, 1, 0, 0,
332  0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
333  150, 50, 1, 0, 1, 1, 1, 1, 1, 1,
334  1, 1, 1, 20, 1500, 150, 1, 1, 1, 0,
335  0, 0, 0, 40, 40, 0, 0, 0, 1, 0,
336  0, 0, 1, 1, 0, 0, 0, 2000, 0, 0,
337  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338  0, 0, 0, 0, 0, 1, 1, 0, 0, 3000,
339  150, 1, 1, 0, 0, 0, 0, 0, 0, 0,
340  0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
341  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
342  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343  0, 0, 0, 0
344  },
345 
346  //14
347  //e8r1202
348  {
349  1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
350  20, 0, 0, 0, 0, 0, 0, 1, 0, 0,
351  0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
352  150, 50, 1, 0, 1, 1, 1, 1, 1, 1,
353  1, 1, 1, 20, 1500, 150, 1, 1, 1, 0,
354  0, 0, 0, 40, 40, 0, 0, 0, 1, 0,
355  0, 0, 1, 1, 0, 0, 0, 2000, 0, 0,
356  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
357  0, 0, 0, 0, 0, 1, 1, 0, 0, 3000,
358  150, 1, 1, 0, 0, 0, 0, 0, 0, 0,
359  0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
360  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
361  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363  0, 0, 1
364  },
365 
366  // 15
367  // e10r3129
368  {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
369  // 16
370  // e10r3131
371  {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
372  // 17
373  // e10r3437
374  {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
375  // 18
376  // e10r3443
377  {1, 100, 0, 100, 0, 0, 0, 0, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
378  // 19
379  // e10r3549
380  {1, 100, 0, 100, 0, 0, 0, 0, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
381  // 20
382  // e10r4609
383  {1, 100, 0, 100, 0, 0, 0, 0, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
384  // 21
385  // e10r5388
386  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
387  // 22
388  // e10r5729
389  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
390  // 23
391  // e12r797
392  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
393  // 24
394  // e12r1743
395  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
396  // 25
397  // e12r1908
398  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
399  // 26
400  // e12r2134
401  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 200, 200, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
402  // 27
403  // e12r2335
404  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
405  // 28
406  // e12r2720
407  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
408  // 29
409  // e12r6373
410  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
411  // e14r0
412  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
413  // e14r640
414  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 0, 0, 0, 0, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
415  // e14r649
416  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
417  // e14r785
418  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
419  // e14r1752
420  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 200, 0, 400, 0, 0, 0, 0, 1, 1, 100, 0, 1, 1, 1, 10, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 0, 150, 50, 1, 0, 10, 10, 10, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 10, 10, 10, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 1, 10, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
421  // e14r1753
422  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 200, 0, 400, 0, 0, 0, 0, 1, 1, 100, 0, 1, 1, 1, 10, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 100, 0, 150, 50, 1, 0, 10, 100, 10, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 10, 10, 10, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 1, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
423  // e14r1772
424  {10, 100, 0, 100, 0, 0, 0, 1, 0, 0, 200, 0, 400, 0, 0, 0, 0, 10, 10, 100, 0, 1, 10, 10, 10, 0, 1, 1, 1, 10, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 100, 0, 150, 50, 1, 0, 10, 100, 10, 0, 0, 0, 0, 10, 0, 0, 20, 1500, 150, 10, 10, 10, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 10, 1, 10, 10, 10, 1, 1, 1, 1, 1, 1, 5, 0, 0, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
425  // e14r1773
426  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5000, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
427  // e14r1972
428  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
429  // e14r1973
430  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
431  // e14r1993
432  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
433  // e14r2041
434  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
435  // e14r2056
436  {1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 20, 1500, 150, 1, 1, 1, 0, 0, 0, 0, 40, 40, 0, 0, 0, 1, 0, 1, 0, 0, 1, 100, 1, 1, 40, 0, 0, 0, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3000, 150, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
437  // e16r21
438  {1, 1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
439  // e16r666
440  {1, 1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
441  // e16r894
442  {1, 1, 100, 0, 100, 0, 0, 0, 1, 0, 0, 20, 0, 400, 0, 0, 0, 0, 1, 0, 1, 10, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
443  // e16r1061
444  {100, 100, 100, 0, 100, 0, 0, 0, 1, 0, 0, 200, 0, 400, 0, 0, 0, 0, 100, 0, 1, 100, 0, 1, 1, 1, 10, 0, 1, 1, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 100, 1, 10, 10, 10, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 20000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
445  // e16r1062
446  {100, 100, 100, 0, 100, 0, 0, 0, 1, 0, 0, 200, 0, 400, 0, 0, 0, 0, 100, 0, 100, 100, 0, 1, 100, 100, 10, 0, 1, 1, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 150, 50, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 100, 1, 10, 10, 10, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 20000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
447  // e18r66
448  {100, 100, 100, 0, 100, 0, 0, 0, 1, 0, 0, 2000, 0, 400, 0, 0, 0, 0, 100, 0, 100, 1000, 0, 1, 100, 100, 10, 0, 1, 1, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 100, 0, 150, 50, 1, 0, 100, 100, 10, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 1, 0, 1, 2, 1, 100, 10, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 100, 0, 100, 1, 10, 10, 10, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 20000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
449  // e18r283
450  {100, 100, 100, 0, 100, 1, 0, 0, 1, 0, 0, 2000, 0, 400, 0, 0, 0, 0, 100, 0, 100, 1000, 1, 1, 100, 100, 10, 0, 1, 1, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 100, 0, 150, 50, 1, 0, 100, 100, 10, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 40, 0, 0, 1, 0, 1, 2, 1, 100, 10, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 100, 0, 100, 1, 10, 10, 10, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 20000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
451  // e18r781
452  {100, 100, 100, 0, 100, 1, 0, 0, 1, 0, 0, 2000, 0, 400, 0, 0, 0, 0, 100, 0, 100, 1000, 1, 1, 100, 100, 10, 0, 1, 1, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 100, 0, 150, 50, 1, 0, 100, 100, 10, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1500, 150, 0, 1, 0, 0, 1, 100, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 2, 1, 100, 10, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 100, 0, 100, 1, 10, 10, 10, 0, 0, 0, 0, 40, 40, 3000, 150, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 20000, 4000, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 8000, 0, 0, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}
453 
454  };
455 
456 
458  prescales.construct();
459  if (ONLINE == 0) {
460  for (int i = 0; i < N_PSNM_ARRAY; i++) {
461  IntervalOfValidity iov(run[i][0], run[i][1], run[i][2], run[i][3]);
462  //initialize
463  for (int j = 0; j < N_BITS_RESERVED; j++) {
464  prescales->setprescales(j, 0);
465  }
466  //set
467  for (int j = 0; j < nbit[i]; j++) {
468  prescales->setprescales(j, psnmValues[i][j]);
469  }
470  prescales->setnoutbit(nbit[i]);
471  prescales.import(iov);
472  }
473  } else if (ONLINE == 1 || ONLINE == 2) {
474  for (int i = N_PSNM_ARRAY - 1; i < N_PSNM_ARRAY; i++) {
475  //for (int i = 0; i < 1; i++) {
476  IntervalOfValidity iov(0, 0, -1, -1);
477  //initialize
478  for (int j = 0; j < N_BITS_RESERVED; j++) {
479  prescales->setprescales(j, 0);
480  }
481  //set
482  for (int j = 0; j < nbit[i]; j++) {
483  prescales->setprescales(j, psnmValues[i][j]);
484  }
485  prescales->setnoutbit(nbit[i]);
486  prescales.import(iov);
487  }
488  }
489 
490 
491 }
492 
493 
494 //input and output bits
495 void setftdlbits()
496 {
497 
498  const int N_BITS_RESERVED = 320;
499 //const int nbit[N_OUTPUT_ARRAY] = {
500 // 160, 134/*11*/, 135/*12*/, 138/*13*/, 142/*14*/,
501 // 144/*15*/, 142/*14*/, 144/*15*/, 147/*16*/, 154/*17*/,
502 // 157/*22*/, 160/*23*/, 160/*24*/, 160/*25*/, 160/*26*/
503 //};
504 
505 
507  ftdlbits.construct();
508  if (ONLINE == 0) {
509  for (int i = 0; i < N_FTD_VERS; i++) {
510  IntervalOfValidity iov(ftd_run[i][0], ftd_run[i][1], ftd_run[i][2], ftd_run[i][3]);
511  //initialize
512  for (int j = 0; j < N_BITS_RESERVED; j++) {
513  ftdlbits->setoutbitname(j, "");
514  }
515  //set
516  char logname[2000];
517  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.oup", ftd_version[i]);
518  std::ifstream isinp(logname, std::ios::in);
519  std::string str;
520  int j = 0;
521  if (i == N_FTD_VERS - 1) {
522  printf("i(%d), logname(%s)\n", i, logname);
523  }
524  while (std::getline(isinp, str)) {
525  int bitnum;
526  std::string bitname;
527  std::istringstream strS(str);
528  strS >> bitnum >> bitname;
529  ftdlbits->setoutbitname(j, bitname.data());
530  ++j;
531  if (i == N_FTD_VERS - 1) {
532  printf("i(%d), j(%d), bitname(%s), str(%s)\n",
533  i, j, bitname.c_str(), str.c_str());
534  }
535  }
536  isinp.close();
537  ftdlbits->setnoutbit(j);
538  ftdlbits.import(iov);
539  }
540  } else if (ONLINE == 1 || ONLINE == 2) {
541  for (int i = N_FTD_VERS - 1; i < N_FTD_VERS; i++) {
542  IntervalOfValidity iov(0, 0, -1, -1);
543  //initialize
544  for (int j = 0; j < N_BITS_RESERVED; j++) {
545  ftdlbits->setoutbitname(j, "");
546  }
547  //set
548  char logname[2000];
549  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.oup", ftd_version[i]);
550  std::ifstream isinp(logname, std::ios::in);
551  std::string str;
552  int j = 0;
553  while (std::getline(isinp, str)) {
554  int bitnum;
555  std::string bitname;
556  std::istringstream strS(str);
557  strS >> bitnum >> bitname;
558  ftdlbits->setoutbitname(j, bitname.data());
559  ++j;
560  }
561  isinp.close();
562  ftdlbits->setnoutbit(j);
563  ftdlbits.import(iov);
564  }
565  }
566 
567 }
568 
569 void setinputbits()
570 {
571 
572  const int N_BITS_RESERVED = 320;
573 
575  inputbits.construct();
576  if (ONLINE == 0) {
577  for (int i = 0; i < N_FTD_VERS; i++) {
578  IntervalOfValidity iov(ftd_run[i][0], ftd_run[i][1], ftd_run[i][2], ftd_run[i][3]);
579  //initialize
580  for (int j = 0; j < N_BITS_RESERVED; j++) {
581  inputbits->setinbitname(j, "");
582  }
583  //set
584  char logname[2000];
585  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.inp", ftd_version[i]);
586  std::ifstream isinp(logname, std::ios::in);
587  std::string str;
588  int j = 0;
589  while (std::getline(isinp, str)) {
590  int bitnum;
591  std::string bitname;
592  std::istringstream strS(str);
593  strS >> bitnum >> bitname;
594  inputbits->setinbitname(j, bitname.data());
595  ++j;
596  }
597  isinp.close();
598  inputbits->setninbit(j);
599  inputbits.import(iov);
600  }
601  } else if (ONLINE == 1 || ONLINE == 2) {
602  for (int i = N_FTD_VERS - 1; i < N_FTD_VERS; i++) {
603  IntervalOfValidity iov(0, 0, -1, -1);
604  //initialize
605  for (int j = 0; j < N_BITS_RESERVED; j++) {
606  inputbits->setinbitname(j, "");
607  }
608  //set
609  char logname[2000];
610  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.inp", ftd_version[i]);
611  std::ifstream isinp(logname, std::ios::in);
612  std::string str;
613  int j = 0;
614  while (std::getline(isinp, str)) {
615  int bitnum;
616  std::string bitname;
617  std::istringstream strS(str);
618  strS >> bitnum >> bitname;
619  inputbits->setinbitname(j, bitname.data());
620  ++j;
621  }
622  isinp.close();
623  inputbits->setninbit(j);
624  inputbits.import(iov);
625  }
626  }
627 
628 }
629 
630 void setunpacker()
631 {
632 
633  const int N_LEAF = 320;
634  const int N_UNPACKER_ARRAY = 16;
635 
636  const int run[N_UNPACKER_ARRAY][4] = { //itnitial exp, initial run, end exp, end run
637  0, 0, 2, -1, //-1,[0]
638  3, 0, 3, 528,
639  3, 529, 3, 676,
640  3, 677, 3, 1314,
641  3, 1315, 3, 1865,
642  3, 1866, 3, 4790,
643  3, 4791, 3, 5313,
644  3, 5314, 4, 6379,
645  4, 6380, 4, 7433,
646  4, 7434, 5, 0,
647  5, 1, 6, -1,
648  7, 0, 7, 1560,
649  7, 1561, 7, 2102,
650  7, 2103, 11, -1,
651  12, 0, 13, 500,
652  13, 501, -1, -1 //14,[15]
653  };
654 
656  const int nLeafs[N_UNPACKER_ARRAY] = {
657  37, 37, 27, 26, 26,
658  26, 31, 32, 31, 32,
659  31, 31, 30, 27, 27,
660  32
661  };
663  const int nLeafsExtra[N_UNPACKER_ARRAY] = {
664  8, 8, 9, 11, 11,
665  11, 11, 11, 11, 11,
666  11, 11, 13, 14, 16,
667  16
668  };
670  const int nClks[N_UNPACKER_ARRAY] = {
671  48, 48, 48, 48, 48,
672  32, 32, 32, 32, 32,
673  32, 32, 32, 32, 32,
674  32
675  };
677  const int nBits[N_UNPACKER_ARRAY] = {
678  640, 640, 640, 640, 640,
679  640, 640, 640, 640, 640,
680  640, 640, 640, 640, 640,
681  640
682  };
683 
685  const int nrows[N_UNPACKER_ARRAY] = {
686  45, 45, 51, 52, 52,
687  52, 57, 61, 61, 61,
688  61, 61, 63, 66, 69,
689  78
690  };
691 
692 
694  const char LeafNames[N_LEAF][100] = {
695  "etffmv", "l1rvc", "timtype", "etyp", "final",
696  "gdll1rvc", "etfout", "etfvd", "toprvc", "topvd",
697  "toptiming", "ecltiming", "cdctiming", "rvcout", "rvcout0",
698  "comrvc", "etnrvc", "nim0rvc", "eclrvc", "rvc",
699  "drvc", "ftd2", "psn2", "psn1", "etfth2",
700  "etfhdt", "etfth", "psn0", "ftd1", "cdcrvc",
701  "ftd0", "itd2", "itd1", "itd0", "inp2",
702  "inp1", "inp0", "evt", "clk", "firmid",
703  "firmver", "coml1rvc", "b2ldly", "maxrvc", "conf",
704  "dtoprvc", "declrvc", "dcdcrvc", "topslot1", "topslot0",
705  "ntopslot", "finalrvc", "tttmdl", "tdsrcp", "tdtopp",
706  "tdeclp", "tdcdcp", "psn3", "ftd3", "itd4",
707  "itd3", "cnttrg", "cnttrg8", "ftd4", "psn4",
708  "etmdata", "sepagdll1", "sepacoml1", "gdll1rev", // 69
709  // +9 for [15]
710  "ftd5", "psn5", "ttfinal", "sigfinal",
711  "topqua", "eclqua", "cdcqua",
712  "klmcc", "klecc" // 78
713  };
714 
715 
716 
717  const int
718  inputleafMap[N_UNPACKER_ARRAY][N_LEAF] = {
719  {
720  //-1
721  0, 1, 2, 3, 4,
722  5, 6, 7, 8, 9,
723  10, 11, 12, 13, 14,
724  15, 16, 17, 18, 19,
725  20, 21, 22, 23, 24,
726  25, 26, 27, 28, 29,
727  30, 31, 32, 33, 34,
728  35, 36, 37, 38, 39,
729  40, 41, 42, 43, 44
730  },
731 
732  {
733  //0
734  0, 1, 2, 3, 4,
735  5, 6, 7, 8, 9,
736  10, 11, 12, 13, 14,
737  15, 16, 17, 18, 19,
738  20, 21, 22, 23, 24,
739  25, 26, 27, 28, 29,
740  30, 31, 32, 33, 34,
741  35, 36, 37, 38, 39,
742  40, 41, 42, 43, 44
743  },
744 
745  {
746  //1
747  -1, -1, 1, 2, -1,
748  31, -1, -1, 5, -1,
749  8, 9, 10, 3, -1,
750  -1, -1, 11, 6, 0,
751  4, 21, 15, 16, -1,
752  -1, -1, 17, 22, 7,
753  23, 24, 25, 26, -1,
754  -1, -1, 27, 28, 29,
755  30, 32, 33, 34, 35,
756  12, 13, 14, 18, 19,
757  20
758  },
759 
760  {
761  //2
762  -1, -1, 1, 2, -1,
763  32, -1, -1, 4, -1,
764  7, 8, 9, 3, -1,
765  -1, -1, 10, 5, 0,
766  30, 20, 14, 15, -1,
767  -1, -1, 16, 21, 6,
768  22, 23, 24, 25, -1,
769  -1, -1, 26, 27, 28,
770  29, 33, 34, 35, 36,
771  11, 12, 13, 17, 18,
772  19, 31
773  },
774 
775  {
776  //3
777  -1, -1, 1, 2, -1,
778  32, -1, -1, 4, -1,
779  7, 8, 9, 3, -1,
780  -1, -1, 10, 5, 0,
781  30, 20, 14, 15, -1,
782  -1, -1, 16, 21, 6,
783  22, 23, 24, 25, -1,
784  -1, -1, 26, 27, 28,
785  29, 33, 34, 35, 36,
786  11, 12, 13, 17, 18,
787  19, 31
788  },
789 
790  {
791  //4
792  -1, -1, 1, 2, -1,
793  32, -1, -1, 4, -1,
794  7, 8, 9, 3, -1,
795  -1, -1, 10, 5, 0,
796  30, 20, 14, 15, -1,
797  -1, -1, 16, 21, 6,
798  22, 23, 24, 25, -1,
799  -1, -1, 26, 27, 28,
800  29, 33, 34, 35, 36,
801  11, 12, 13, 17, 18,
802  19, 31
803  },
804 
805  {
806  //5
807  -1, -1, 1, 2, -1,
808  37, -1, -1, 9, -1,
809  12, 13, 14, 8, -1,
810  -1, -1, 15, 10, 0,
811  36, 25, 19, 20, -1,
812  -1, -1, 21, 26, 11,
813  27, 28, 29, 30, -1,
814  -1, -1, 31, 32, 33,
815  34, 38, 39, 40, 41,
816  16, 17, 18, 22, 23,
817  24, 35, 3, 4, 5,
818  6, 7
819  },
820 
821  {
822  //6
823  -1, -1, 1, 2, -1,
824  38, -1, -1, 9, -1,
825  12, 13, 14, 8, -1,
826  -1, -1, 15, 10, 0,
827  37, 24, 17, 18, -1,
828  -1, -1, 19, 25, 11,
829  26, 29, 30, 31, -1,
830  -1, -1, 32, 33, 34,
831  35, 39, 40, 41, 42,
832  -1, -1, -1, 20, 21,
833  22, 36, 3, 4, 5,
834  6, 7, 16, 23, 27,
835  28
836  },
837 
838  {
839  //7
840  -1, -1, 1, 2, -1,
841  37, -1, -1, 9, -1,
842  12, 13, 14, 8, -1,
843  -1, -1, 15, 10, 0,
844  36, 25, 19, 20, -1,
845  -1, -1, 21, 26, 11,
846  27, 28, 29, 30, -1,
847  -1, -1, 31, 32, 33,
848  34, 38, 39, 40, 41,
849  -1, -1, -1, 22, 23,
850  -1, 35, 3, 4, 5,
851  6, 7, 18, 24, 16,
852  17
853  },
854 
855  {
856  //8
857  -1, -1, 1, 2, -1,
858  38, -1, -1, 9, -1,
859  12, 13, 14, 8, -1,
860  -1, -1, 15, 10, 0,
861  37, 24, 17, 18, -1,
862  -1, -1, 19, 25, 11,
863  26, 29, 30, 31, -1,
864  -1, -1, 32, 33, 34,
865  35, 39, 40, 41, 42,
866  -1, -1, -1, 20, 21,
867  22, 36, 3, 4, 5,
868  6, 7, 16, 23, 27,
869  28
870  },
871 
872  {
873  //9
874  -1, -1, 1, 2, -1,
875  37, -1, -1, 9, -1,
876  12, 13, 14, 8, -1,
877  -1, -1, 15, 10, 0,
878  36, 25, 19, 20, -1,
879  -1, -1, 21, 26, 11,
880  27, 28, 29, 30, -1,
881  -1, -1, 31, 32, 33,
882  34, 38, 39, 40, 41,
883  -1, -1, -1, 22, 23,
884  -1, 35, 3, 4, 5,
885  6, 7, 18, 24, 16,
886  17
887  },
888 
889  {
890  //10
891  -1, -1, 1, 2, -1,
892  37, -1, -1, 9, -1,
893  12, 13, 14, 8, -1,
894  -1, -1, 15, 10, 0,
895  36, 25, 19, 20, -1,
896  -1, -1, 21, 26, 11,
897  27, 28, 29, 30, -1,
898  -1, -1, 31, 32, 33,
899  34, 38, 39, 40, 41,
900  -1, -1, -1, 22, 23,
901  -1, 35, 3, 4, 5,
902  6, 7, 18, 24, 16,
903  17
904  },
905 
906  {
907  //11
908  -1, -1, 41, -1, -1,
909  36, -1, -1, 8, -1,
910  11, 12, 13, 7, -1,
911  -1, -1, 14, 9, 0,
912  34, 24, 18, 19, -1,
913  -1, -1, 20, 25, 10,
914  26, 27, 28, 29, -1,
915  -1, -1, 30, 31, 32,
916  33, 37, 38, 39, 40,
917  -1, -1, -1, 21, 22,
918  -1, 35, 2, 3, 4,
919  5, 6, 17, 23, 15,
920  16, 42, 1
921  },
922 
923  {
924  //12
925  -1, -1, 38, -1, -1,
926  33, -1, -1, -1, -1,
927  7, 8, 9, -1, -1,
928  -1, -1, -1, -1, 0,
929  31, 18, 24, 25, -1,
930  -1, -1, 26, 19, -1,
931  20, 12, 13, 14, -1,
932  -1, -1, 27, 28, 29,
933  30, 34, 35, 36, 37,
934  -1, -1, -1, 15, 21,
935  -1, 32, 2, 3, 4,
936  5, 6, 23, 17, 10,
937  11, 39, 1, 16, 22,
938  40
939  },
940 
941  {
942  //13
943  -1, -1, 36, -1, -1,
944  33, -1, -1, -1, -1,
945  7, 8, 9, 42, -1,
946  -1, -1, -1, -1, 0,
947  31, 18, 24, 25, -1,
948  -1, -1, 26, 19, -1,
949  20, 12, 13, 14, -1,
950  -1, -1, 27, 28, 29,
951  30, 34, -1, -1, 35,
952  -1, -1, -1, 15, 21,
953  -1, 32, 2, 3, 4,
954  5, 6, 23, 17, 10,
955  11, 37, 1, 16, 22,
956  38, 39, 40, 41
957  },
958 
959  {
960  //14,[15] 32+16
961  -1, -1, 41, -1, -1,
962  38, -1, -1, -1, -1,
963  7, 8, 9, 47, -1,
964  -1, -1, -1, -1, 0,
965  36, 18, 24, 25, -1,
966  -1, -1, 26, 19, -1,
967  20, 12, 13, 14, -1,
968  -1, -1, 32, 33, 34,
969  35, 39, -1, -1, 40,
970  -1, -1, -1, -1, -1,
971  -1, -1, 2, 3, 4,
972  5, 6, 23, 17, 10,
973  11, 42, 1, 16, 22,
974  -1, 44, 45, 46, 15,
975  21, 27, 28, 29, 30,
976  31, 43, 37
977  }
978 
979  };
980 
982  const int BitMap[N_UNPACKER_ARRAY][N_LEAF][2] = {
983 
984  {
985  //-1
986  639, 31, // etffmv
987  575, 10, // l1rvc
988  564, 2, // timtype
989  561, 2, // etyp
990  558, 0, // final
991  557, 0, // gdll1rvc
992  538, 12, // etfout
993  525, 0, // etfvd
994  524, 14, // toprvc
995  480, 0, // topvd
996  498, 17, // toptiming
997  479, 13, // ecltiming (lsb1ns)
998  465, 12, // cdctiming (lsb2ns)
999  447, 14, // rvcout
1000  432, 0, // rvcout0
1001  431, 11, // comrvc
1002  419, 11, // etnrvc
1003  407, 11, // nim0rvc
1004  395, 11, // eclrvc
1005  383, 11, // rvc
1006  371, 11, // drvc
1007  355, 15, // ftd2
1008  339, 15, // psn2. Empty for 65c.
1009  323, 15, // psn1.
1010  307, 7, // etfth2
1011  299, 7, // etfhdt
1012  291, 3, // etfth
1013  287, 31, // psn0
1014  255, 15, // ftd1
1015  234, 10, // cdcrvc
1016  223, 31, // ftd0
1017  191, 31, // itd2
1018  159, 31, // itd1
1019  127, 31, // itd0
1020  95, 31, // inp2
1021  63, 31, // inp1
1022  31, 31, // inp0
1023  },
1024 
1025 
1026  {
1027  //0
1028  639, 31, // etffmv
1029  575, 10, // l1rvc
1030  564, 2, // timtype
1031  561, 2, // etyp
1032  558, 0, // final
1033  557, 0, // gdll1rvc
1034  538, 12, // etfout
1035  525, 0, // etfvd
1036  524, 14, // toprvc
1037  480, 0, // topvd
1038  498, 17, // toptiming
1039  479, 13, // ecltiming (lsb1ns)
1040  465, 12, // cdctiming (lsb2ns)
1041  447, 14, // rvcout
1042  432, 0, // rvcout0
1043  431, 11, // comrvc
1044  419, 11, // etnrvc
1045  407, 11, // nim0rvc
1046  395, 11, // eclrvc
1047  383, 11, // rvc
1048  371, 11, // drvc
1049  355, 15, // ftd2
1050  339, 15, // psn2. Empty for 65c.
1051  323, 15, // psn1.
1052  307, 7, // etfth2
1053  299, 7, // etfhdt
1054  291, 3, // etfth
1055  287, 31, // psn0
1056  255, 15, // ftd1
1057  234, 10, // cdcrvc
1058  223, 31, // ftd0
1059  191, 31, // itd2
1060  159, 31, // itd1
1061  127, 31, // itd0
1062  95, 31, // inp2
1063  63, 31, // inp1
1064  31, 31, // inp0
1065  },
1066 
1067  {
1068  //1
1069  623, 11, // rvc
1070  611, 2, // timtype
1071  608, 2, // etyp
1072  583, 14, // rvcout
1073  568, 10, // drvc
1074  557, 10, // toprvc
1075  546, 10, // eclrvc
1076  535, 10, // cdcrvc
1077  524, 13, // toptiming
1078  509, 13, // ecltiming
1079  494, 13, // cdctiming
1080  479, 10, // nim0rvc
1081  468, 11, // dtoprvc
1082  457, 11, // declrvc
1083  446, 11, // dcdcrvc
1084  383, 31, // psn2
1085  351, 31, // psn1
1086  319, 31, // psn0
1087  287, 31, // topslot1
1088  255, 31, // topslot0
1089  223, 4, // ntopslot
1090  191, 31, // ftd2
1091  159, 31, // ftd1
1092  127, 31, // ftd0
1093  95, 31, // itd2
1094  63, 31, // itd1
1095  31, 31, // itd0
1096  },
1097 
1098  {
1099  //2
1100  623, 11, // rvc
1101  611, 2, // timtype
1102  608, 2, // etyp
1103  583, 14, // rvcout
1104  557, 10, // toprvc
1105  546, 10, // eclrvc
1106  535, 10, // cdcrvc
1107  524, 13, // toptiming
1108  509, 13, // ecltiming
1109  494, 13, // cdctiming
1110  479, 10, // nim0rvc
1111  468, 11, // dtoprvc
1112  457, 11, // declrvc
1113  446, 11, // dcdcrvc
1114  383, 31, // psn2
1115  351, 31, // psn1
1116  319, 31, // psn0
1117  287, 31, // topslot1
1118  255, 31, // topslot0
1119  223, 4, // ntopslot
1120  191, 31, // ftd2
1121  159, 31, // ftd1
1122  127, 31, // ftd0
1123  95, 31, // itd2
1124  63, 31, // itd1
1125  31, 31, // itd0
1126  },
1127 
1128  {
1129  //3
1130  623, 11, // rvc
1131  611, 2, // timtype
1132  608, 2, // etyp
1133  583, 14, // rvcout
1134  557, 10, // toprvc
1135  546, 10, // eclrvc
1136  535, 10, // cdcrvc
1137  524, 13, // toptiming
1138  509, 13, // ecltiming
1139  494, 13, // cdctiming
1140  479, 10, // nim0rvc
1141  468, 11, // dtoprvc
1142  457, 11, // declrvc
1143  446, 11, // dcdcrvc
1144  383, 31, // psn2
1145  351, 31, // psn1
1146  319, 31, // psn0
1147  287, 31, // topslot1
1148  255, 31, // topslot0
1149  223, 4, // ntopslot
1150  191, 31, // ftd2
1151  159, 31, // ftd1
1152  127, 31, // ftd0
1153  95, 31, // itd2
1154  63, 31, // itd1
1155  31, 31, // itd0
1156  },
1157 
1158  {
1159  //4
1160  623, 11, // rvc
1161  611, 2, // timtype
1162  608, 2, // etyp
1163  583, 14, // rvcout
1164  557, 10, // toprvc
1165  546, 10, // eclrvc
1166  535, 10, // cdcrvc
1167  524, 13, // toptiming
1168  509, 13, // ecltiming
1169  494, 13, // cdctiming
1170  479, 10, // nim0rvc
1171  468, 11, // dtoprvc
1172  457, 11, // declrvc
1173  446, 11, // dcdcrvc
1174  383, 31, // psn2
1175  351, 31, // psn1
1176  319, 31, // psn0
1177  287, 31, // topslot1
1178  255, 31, // topslot0
1179  223, 4, // ntopslot
1180  191, 31, // ftd2
1181  159, 31, // ftd1
1182  127, 31, // ftd0
1183  95, 31, // itd2
1184  63, 31, // itd1
1185  31, 31, // itd0
1186  },
1187 
1188  {
1189  //5
1190  623, 11, // rvc
1191  611, 2, // timtype
1192  608, 2, // etyp
1193  603, 2, // tttmdl
1194  600, 3, // tdsrcp
1195  596, 2, // tdtopp
1196  593, 2, // tdeclp
1197  590, 2, // tdcdcp
1198  583, 14, // rvcout
1199  557, 10, // toprvc
1200  546, 10, // eclrvc
1201  535, 10, // cdcrvc
1202  524, 13, // toptiming
1203  509, 13, // ecltiming
1204  494, 13, // cdctiming
1205  479, 10, // nim0rvc
1206  468, 11, // dtoprvc
1207  457, 11, // declrvc
1208  446, 11, // dcdcrvc
1209  383, 31, // psn2
1210  351, 31, // psn1
1211  319, 31, // psn0
1212  287, 31, // topslot1
1213  255, 31, // topslot0
1214  223, 4, // ntopslot
1215  191, 31, // ftd2
1216  159, 31, // ftd1
1217  127, 31, // ftd0
1218  95, 31, // itd2
1219  63, 31, // itd1
1220  31, 31, // itd0
1221  },
1222 
1223  {
1224  //6
1225  623, 11, // rvc
1226  611, 2, // timtype
1227  608, 2, // etyp
1228  603, 2, // tttmdl
1229  600, 3, // tdsrcp
1230  596, 2, // tdtopp
1231  593, 2, // tdeclp
1232  590, 2, // tdcdcp
1233  583, 14, // rvcout
1234  557, 10, // toprvc
1235  546, 10, // eclrvc
1236  535, 10, // cdcrvc
1237  524, 13, // toptiming
1238  509, 13, // ecltiming
1239  494, 13, // cdctiming
1240  479, 10, // nim0rvc
1241  415, 31, // psn3
1242  383, 31, // psn2
1243  351, 31, // psn1
1244  319, 31, // psn0
1245  287, 31, // topslot1
1246  255, 31, // topslot0
1247  223, 4, // ntopslot
1248  218, 26, // ftd3
1249  191, 31, // ftd2
1250  159, 31, // ftd1
1251  127, 31, // ftd0
1252  468, 15, // itd4
1253  452, 31, // itd3
1254  95, 31, // itd2
1255  63, 31, // itd1
1256  31, 31, // itd0
1257  },
1258 
1259  {
1260  //7
1261  623, 11, // rvc
1262  611, 2, // timtype
1263  608, 2, // etyp
1264  603, 2, // tttmdl
1265  600, 0, // tdsrcp
1266  599, 0, // tdtopp
1267  598, 0, // tdeclp
1268  597, 0, // tdcdcp
1269  583, 14, // rvcout
1270 
1271  557, 10, // toprvc
1272  546, 10, // eclrvc
1273  535, 10, // cdcrvc
1274  524, 13, // toptiming
1275  509, 13, // ecltiming
1276  494, 13, // cdctiming
1277  479, 10, // nim0rvc
1278  468, 15, // itd4
1279  452, 31, // itd3
1280  415, 31, // psn3
1281  383, 31, // psn2
1282  351, 31, // psn1
1283  319, 31, // psn0
1284 
1285  287, 31, // topslot1
1286  255, 31, // topslot0
1287  223, 31, // ftd3
1288  191, 31, // ftd2
1289  159, 31, // ftd1
1290  127, 31, // ftd0
1291  95, 31, // itd2
1292  63, 31, // itd1
1293  31, 31, // itd0
1294  },
1295 
1296  {
1297  //8
1298  623, 11, // rvc
1299  611, 2, // timtype
1300  608, 2, // etyp
1301  603, 2, // tttmdl
1302  600, 3, // tdsrcp
1303  596, 2, // tdtopp
1304  593, 2, // tdeclp
1305  590, 2, // tdcdcp
1306  583, 14, // rvcout
1307  557, 10, // toprvc
1308  546, 10, // eclrvc
1309  535, 10, // cdcrvc
1310  524, 13, // toptiming
1311  509, 13, // ecltiming
1312  494, 13, // cdctiming
1313  479, 10, // nim0rvc
1314  415, 31, // psn3
1315  383, 31, // psn2
1316  351, 31, // psn1
1317  319, 31, // psn0
1318  287, 31, // topslot1
1319  255, 31, // topslot0
1320  223, 4, // ntopslot
1321  218, 26, // ftd3
1322  191, 31, // ftd2
1323  159, 31, // ftd1
1324  127, 31, // ftd0
1325  468, 15, // itd4
1326  452, 31, // itd3
1327  95, 31, // itd2
1328  63, 31, // itd1
1329  31, 31, // itd0
1330  },
1331 
1332  {
1333  //9
1334  623, 11, // rvc
1335  611, 2, // timtype
1336  608, 2, // etyp
1337  603, 2, // tttmdl
1338  600, 0, // tdsrcp
1339  599, 0, // tdtopp
1340  598, 0, // tdeclp
1341  597, 0, // tdcdcp
1342  583, 14, // rvcout
1343 
1344  557, 10, // toprvc
1345  546, 10, // eclrvc
1346  535, 10, // cdcrvc
1347  524, 13, // toptiming
1348  509, 13, // ecltiming
1349  494, 13, // cdctiming
1350  479, 10, // nim0rvc
1351  468, 15, // itd4
1352  452, 31, // itd3
1353  415, 31, // psn3
1354  383, 31, // psn2
1355  351, 31, // psn1
1356  319, 31, // psn0
1357 
1358  287, 31, // topslot1
1359  255, 31, // topslot0
1360  223, 31, // ftd3
1361  191, 31, // ftd2
1362  159, 31, // ftd1
1363  127, 31, // ftd0
1364  95, 31, // itd2
1365  63, 31, // itd1
1366  31, 31, // itd0
1367  },
1368 
1369  {
1370  //10
1371  623, 11, // rvc
1372  611, 2, // timtype
1373  608, 2, // etyp
1374  603, 2, // tttmdl
1375  600, 0, // tdsrcp
1376  599, 0, // tdtopp
1377  598, 0, // tdeclp
1378  597, 0, // tdcdcp
1379  583, 14, // rvcout
1380 
1381  557, 10, // toprvc
1382  546, 10, // eclrvc
1383  535, 10, // cdcrvc
1384  524, 13, // toptiming
1385  509, 13, // ecltiming
1386  494, 13, // cdctiming
1387  479, 10, // nim0rvc
1388  468, 15, // itd4
1389  452, 31, // itd3
1390  415, 31, // psn3
1391  383, 31, // psn2
1392  351, 31, // psn1
1393  319, 31, // psn0
1394 
1395  287, 31, // topslot1
1396  255, 31, // topslot0
1397  223, 31, // ftd3
1398  191, 31, // ftd2
1399  159, 31, // ftd1
1400  127, 31, // ftd0
1401  95, 31, // itd2
1402  63, 31, // itd1
1403  31, 31, // itd0
1404  },
1405 
1406  {
1407  //11
1408  623, 11, // rvc
1409  611, 7, // cnttrg8
1410  603, 2, // tttmdl
1411  600, 0, // tdsrcp
1412  599, 0, // tdtopp
1413  598, 0, // tdeclp
1414  597, 0, // tdcdcp
1415  583, 14, // rvcout
1416  557, 10, // toprvc
1417  546, 10, // eclrvc
1418 
1419  535, 10, // cdcrvc
1420  524, 13, // toptiming
1421  509, 13, // ecltiming
1422  494, 13, // cdctiming
1423  479, 10, // nim0rvc
1424  468, 15, // itd4
1425  452, 31, // itd3
1426  415, 31, // psn3
1427  383, 31, // psn2
1428  351, 31, // psn1
1429 
1430  319, 31, // psn0
1431  287, 31, // topslot1
1432  255, 31, // topslot0
1433  223, 31, // ftd3
1434  191, 31, // ftd2
1435  159, 31, // ftd1
1436  127, 31, // ftd0
1437  95, 31, // itd2
1438  63, 31, // itd1
1439  31, 31, // itd0
1440  },
1441 
1442  {
1443  //12
1444  623, 11, // rvc
1445  611, 15, // cnttrg8
1446  595, 2, // tttmdl
1447  592, 0, // tdsrcp
1448  591, 0, // tdtopp
1449  590, 0, // tdeclp
1450  589, 0, // tdcdcp
1451  588, 13, // toptiming
1452  573, 13, // ecltiming
1453  558, 13, // cdctiming
1454 
1455  527, 15, // itd4
1456  511, 31, // itd3
1457  479, 31, // itd2
1458  447, 31, // itd1
1459  415, 31, // itd0
1460  383, 31, // topslot1
1461  351, 31, // ftd4
1462  319, 31, // ftd3
1463  287, 31, // ftd2
1464  255, 31, // ftd1
1465 
1466  223, 31, // ftd0
1467  191, 31, // topslot0
1468  159, 31, // psn4
1469  127, 31, // psn3
1470  95, 31, // psn2
1471  63, 31, // psn1
1472  31, 31, // psn0
1473  },
1474 
1475  {
1476  //13. same with 12.
1477  623, 11, // rvc
1478  611, 15, // cnttrg8
1479  595, 2, // tttmdl
1480  592, 0, // tdsrcp
1481  591, 0, // tdtopp
1482  590, 0, // tdeclp
1483  589, 0, // tdcdcp
1484  588, 13, // toptiming
1485  573, 13, // ecltiming
1486  558, 13, // cdctiming
1487 
1488  543, 31, // itd4
1489  511, 31, // itd3
1490  479, 31, // itd2
1491  447, 31, // itd1
1492  415, 31, // itd0
1493  383, 31, // topslot1
1494  351, 31, // ftd4
1495  319, 31, // ftd3
1496  287, 31, // ftd2
1497  255, 31, // ftd1
1498 
1499  223, 31, // ftd0
1500  191, 31, // topslot0
1501  159, 31, // psn4
1502  127, 31, // psn3
1503  95, 31, // psn2
1504  63, 31, // psn1
1505  31, 31, // psn0
1506  },
1507 
1508  {
1509  //14. [15].
1510  622, 10, // 0 [19] rvc
1511  611, 15, // 1 cnttrg8
1512  379, 3, // 2 [52] tttmdl
1513  592, 0, // 3 tdsrcp
1514  591, 0, // 4 tdtopp
1515  590, 0, // 5 tdeclp
1516  589, 0, // 6 tdcdcp
1517  588, 13, // 7 toptiming
1518  573, 13, // 8 ecltiming
1519  558, 13, // 9 cdctiming
1520  543, 31, // 10 itd4
1521  511, 31, // 11 itd3
1522  479, 31, // 12 itd2
1523  447, 31, // 13 itd1
1524  415, 31, // 14 itd0
1525  367, 31, // 15 [69] ftd5
1526  351, 31, // 16 ftd4
1527  319, 31, // 17 ftd3
1528  287, 31, // 18 ftd2
1529  255, 31, // 19 ftd1
1530  223, 31, // 20 ftd0
1531  175, 15, // 21 [70] psn5
1532  159, 31, // 22 psn4
1533  127, 31, // 23 psn3
1534  95, 31, // 24 psn2
1535  63, 31, // 25 psn1
1536  31, 31, // 26 psn0
1537  383, 3, // 27 [71] ttfinal
1538  623, 0, // 28 [72] sigfinal
1539  375, 1, // 29 [73] topqua
1540  373, 1, // 30 [74] eclqua
1541  371, 1 // 31 [75] cdcqua
1542  }
1543 
1544 
1545  };
1546 
1547  int m_nword_header[N_UNPACKER_ARRAY] {
1548  3, 3, 4, 6, 6,
1549  6, 6, 6, 6, 6,
1550  6, 6, 6, 6, 6,
1551  6
1552  };
1553  int m_conf[N_UNPACKER_ARRAY] {
1554  0, 0, 1, 2, 3,
1555  4, 5, 6, 7, 6,
1556  7, 7, 8, 9, 10,
1557  11
1558  };
1559  int m_nword_input[N_UNPACKER_ARRAY] {
1560  3, 3, 3, 3, 3,
1561  3, 3, 5, 5, 5,
1562  5, 5, 5, 5, 5,
1563  5
1564  };
1565  int m_nword_output[N_UNPACKER_ARRAY] {
1566  3, 3, 3, 3, 3,
1567  3, 3, 3, 3, 3,
1568  3, 4, 4, 5, 5,
1569  6
1570  };
1571 
1572  const int BitMap_extra[N_UNPACKER_ARRAY][N_LEAF][3] = {
1573  {
1574  //-1
1575  -1, -1, -1, //evt
1576  -1, -1, -1, //clk
1577  0, -1, -1, //firmid
1578  1, -1, -1, //firmver
1579  2, 0, 12, //coml1rvc
1580  2, 12, 9, //b2ldly
1581  2, 21, 11, //maxrvc
1582  -1, -1, -1 //conf
1583  },
1584 
1585 
1586  {
1587  //0
1588  -1, -1, -1, //evt
1589  -1, -1, -1, //clk
1590  0, -1, -1, //firmid
1591  1, -1, -1, //firmver
1592  2, 0, 12, //coml1rvc
1593  2, 12, 9, //b2ldly
1594  2, 21, 11, //maxrvc
1595  -1, -1, -1 //conf
1596  },
1597 
1598  {
1599  //1
1600  -1, -1, -1, //evt
1601  -1, -1, -1, //clk
1602  0, -1, -1, //firmid
1603  1, -1, -1, //firmver
1604  3, 0, 9, //gdll1rvc
1605  3, 1, 12, //coml1rvc
1606  3, 12, 9, //b2ldly
1607  3, 21, 11, //maxrvc
1608  -1, -1, -1 //conf
1609  },
1610 
1611  {
1612  //2
1613  -1, -1, -1, //evt
1614  -1, -1, -1, //clk
1615  0, -1, -1, //firmid
1616  1, -1, -1, //firmver
1617  3, 11, 11, //drvc
1618  2, 0, 11, //finalrvc
1619  3, 0, 11, //gdll1rvc
1620  5, 0, 12, //coml1rvc
1621  5, 12, 9, //b2ldly
1622  5, 21, 11, //maxrvc
1623  -1, -1, -1 //conf
1624  },
1625 
1626  {
1627  //3
1628  -1, -1, -1, //evt
1629  -1, -1, -1, //clk
1630  0, -1, -1, //firmid
1631  1, -1, -1, //firmver
1632  3, 11, 11, //drvc
1633  2, 0, 11, //finalrvc
1634  3, 0, 11, //gdll1rvc
1635  5, 0, 12, //coml1rvc
1636  5, 12, 9, //b2ldly
1637  5, 21, 11, //maxrvc
1638  -1, -1, -1 //conf
1639  },
1640 
1641  {
1642  //4
1643  -1, -1, -1, //evt
1644  -1, -1, -1, //clk
1645  0, -1, -1, //firmid
1646  1, -1, -1, //firmver
1647  3, 11, 11, //drvc
1648  2, 0, 11, //finalrvc
1649  3, 0, 11, //gdll1rvc
1650  5, 0, 12, //coml1rvc
1651  5, 12, 9, //b2ldly
1652  5, 21, 11, //maxrvc
1653  -1, -1, -1 //conf
1654  },
1655 
1656  {
1657  //5
1658  -1, -1, -1, //evt
1659  -1, -1, -1, //clk
1660  0, -1, -1, //firmid
1661  1, -1, -1, //firmver
1662  3, 11, 11, //drvc
1663  2, 0, 11, //finalrvc
1664  3, 0, 11, //gdll1rvc
1665  5, 0, 12, //coml1rvc
1666  5, 12, 9, //b2ldly
1667  5, 21, 11, //maxrvc
1668  -1, -1, -1 //conf
1669  },
1670 
1671  {
1672  //6
1673  -1, -1, -1, //evt
1674  -1, -1, -1, //clk
1675  0, -1, -1, //firmid
1676  1, -1, -1, //firmver
1677  3, 11, 11, //drvc
1678  2, 0, 11, //finalrvc
1679  3, 0, 11, //gdll1rvc
1680  5, 0, 12, //coml1rvc
1681  5, 12, 9, //b2ldly
1682  5, 21, 11, //maxrvc
1683  -1, -1, -1 //conf
1684  },
1685 
1686  {
1687  //7
1688  -1, -1, -1, //evt
1689  -1, -1, -1, //clk
1690  0, -1, -1, //firmid
1691  1, -1, -1, //firmver
1692  3, 11, 11, //drvc
1693  2, 0, 11, //finalrvc
1694  3, 0, 11, //gdll1rvc
1695  5, 0, 12, //coml1rvc
1696  5, 12, 9, //b2ldly
1697  5, 21, 11, //maxrvc
1698  -1, -1, -1 //conf
1699  },
1700 
1701  {
1702  //8
1703  -1, -1, -1, //evt
1704  -1, -1, -1, //clk
1705  0, -1, -1, //firmid
1706  1, -1, -1, //firmver
1707  3, 11, 11, //drvc
1708  2, 0, 11, //finalrvc
1709  3, 0, 11, //gdll1rvc
1710  5, 0, 12, //coml1rvc
1711  5, 12, 9, //b2ldly
1712  5, 21, 11, //maxrvc
1713  -1, -1, -1 //conf
1714  },
1715 
1716  {
1717  //9
1718  -1, -1, -1, //evt
1719  -1, -1, -1, //clk
1720  0, -1, -1, //firmid
1721  1, -1, -1, //firmver
1722  3, 11, 11, //drvc
1723  2, 0, 11, //finalrvc
1724  3, 0, 11, //gdll1rvc
1725  5, 0, 12, //coml1rvc
1726  5, 12, 9, //b2ldly
1727  5, 21, 11, //maxrvc
1728  -1, -1, -1 //conf
1729  },
1730 
1731  {
1732  //10
1733  -1, -1, -1, //evt
1734  -1, -1, -1, //clk
1735  0, -1, -1, //firmid
1736  1, -1, -1, //firmver
1737  3, 11, 11, //drvc
1738  2, 0, 11, //finalrvc
1739  3, 0, 11, //gdll1rvc
1740  5, 0, 12, //coml1rvc
1741  5, 12, 9, //b2ldly
1742  5, 21, 11, //maxrvc
1743  -1, -1, -1 //conf
1744  },
1745 
1746  {
1747  //11
1748  -1, -1, -1, //evt
1749  -1, -1, -1, //clk
1750  0, -1, -1, //firmid
1751  1, -1, -1, //firmver
1752  3, 11, 11, //drvc
1753  2, 0, 11, //finalrvc
1754  3, 0, 11, //gdll1rvc
1755  5, 0, 12, //coml1rvc
1756  -1, -1, -1, //b2ldly
1757  -1, -1, -1, //maxrvc
1758  -1, -1, -1, //conf
1759  2, 29, 3, //timtype
1760  5, 12, 20 //cnttrg
1761  },
1762 
1763  {
1764  //12
1765  -1, -1, -1, //evt
1766  -1, -1, -1, //clk
1767  0, -1, -1, //firmid
1768  1, -1, -1, //firmver
1769  3, 11, 11, //drvc
1770  2, 0, 11, //finalrvc
1771  3, 0, 11, //gdll1rvc
1772  5, 0, 12, //coml1rvc
1773  -1, -1, -1, //b2ldly
1774  -1, -1, -1, //maxrvc
1775  -1, -1, -1, //conf
1776  2, 29, 3, //timtype
1777  -1, -1, -1, //cnttrg
1778  4, 11, 11 //etmdata
1779  },
1780 
1781  {
1782  //13
1783  -1, -1, -1, //evt,27
1784  -1, -1, -1, //clk,28
1785  0, -1, -1, //firmid,29
1786  1, -1, -1, //firmver,30
1787  3, 11, 11, //drvc,31
1788  2, 0, 11, //finalrvc,32
1789  3, 0, 11, //gdll1rvc,33
1790  5, 0, 12,//coml1rvc,34
1791  -1, -1, -1, //conf,35
1792  2, 29, 3, //timtype,36
1793  5, 12, 20, //cnttrg,37
1794  4, 0, 11, //etmdata,38
1795  3, 22, 10, //sepagdll1,39
1796  4, 11, 16, //sepacoml1,40
1797  4, 27, 5, //gdll1_rev,41
1798  2, 14, 15//rvcout,42
1799  },
1800 
1801  {
1802  //14=[15]
1803  //i_wd, downto, width
1804  -1, -1, -1, //32, evt
1805  -1, -1, -1, //33, clk
1806  0, -1, -1, //34, firmid
1807  1, -1, -1, //35, firmver
1808  3, 11, 11, //36, drvc
1809  2, 0, 11, //37, klecc
1810  3, 0, 11, //38, gdll1rvc
1811  5, 0, 12, //39, coml1rvc
1812  -1, -1, -1, //40, conf
1813  2, 29, 3, //41, timtype
1814  5, 12, 20, //42, cnttrg
1815  4, 0, 11, //43, klmcc
1816  3, 22, 10, //44, sepagdll1
1817  4, 11, 16, //45, sepacoml1
1818  4, 27, 5, //46, gdll1_rev
1819  2, 12, 17 //47, rvcout
1820  }
1821 
1822  };
1823 
1824 
1826  unpacker.construct();
1827  if (ONLINE == 0) {
1828  for (int i = 0; i < N_UNPACKER_ARRAY; i++) {
1829  IntervalOfValidity iov(run[i][0], run[i][1], run[i][2], run[i][3]);
1830 
1831  unpacker->setnLeafs(nLeafs[i]);
1832  unpacker->setnLeafsExtra(nLeafsExtra[i]);
1833  unpacker->setnClks(nClks[i]);
1834  unpacker->setnBits(nBits[i]);
1835  unpacker->set_nword_header(m_nword_header[i]);
1836  unpacker->set_nword_input(m_nword_input[i]);
1837  unpacker->set_nword_output(m_nword_output[i]);
1838  unpacker->setconf(m_conf[i]);
1839 
1840  //initialize
1841  for (int j = 0; j < N_LEAF; j++) {
1842  unpacker->setLeafName(j, "");
1843  unpacker->setLeafMap(j, -1);
1844  }
1845  //set
1846  for (int j = 0; j < nrows[i]; j++) {
1847  if ((inputleafMap[i][j] >= 0) && (inputleafMap[i][j] < nLeafs[i] + nLeafsExtra[i])) {
1848  unpacker->setLeafName(j, LeafNames[j]);
1849  unpacker->setLeafMap(j, inputleafMap[i][j]);
1850  }
1851  }
1852 
1853  for (int j = 0; j < N_LEAF; j++) {
1854  unpacker->setBitMap(j, 0, BitMap[i][j][0]);
1855  unpacker->setBitMap(j, 1, BitMap[i][j][1]);
1856  }
1857  for (int j = 0; j < N_LEAF; j++) {
1858  unpacker->setBitMap_extra(j, 0, BitMap_extra[i][j][0]);
1859  unpacker->setBitMap_extra(j, 1, BitMap_extra[i][j][1]);
1860  unpacker->setBitMap_extra(j, 2, BitMap_extra[i][j][2]);
1861  }
1862  unpacker.import(iov);
1863  }
1864  } else if (ONLINE == 1) {
1865  for (int i = N_UNPACKER_ARRAY - 1; i < N_UNPACKER_ARRAY; i++) {
1866  IntervalOfValidity iov(0, 0, -1, -1);
1867 
1868  unpacker->setnLeafs(nLeafs[i]);
1869  unpacker->setnLeafsExtra(nLeafsExtra[i]);
1870  unpacker->setnClks(nClks[i]);
1871  unpacker->setnBits(nBits[i]);
1872  unpacker->set_nword_header(m_nword_header[i]);
1873  unpacker->set_nword_input(m_nword_input[i]);
1874  unpacker->set_nword_output(m_nword_output[i]);
1875  unpacker->setconf(m_conf[i]);
1876 
1877  //initialize
1878  for (int j = 0; j < N_LEAF; j++) {
1879  unpacker->setLeafName(j, "");
1880  unpacker->setLeafMap(j, -1);
1881  }
1882  //set
1883  for (int j = 0; j < nrows[i]; j++) {
1884  if ((inputleafMap[i][j] >= 0) && (inputleafMap[i][j] < nLeafs[i] + nLeafsExtra[i])) {
1885  unpacker->setLeafName(j, LeafNames[j]);
1886  unpacker->setLeafMap(j, inputleafMap[i][j]);
1887  }
1888  }
1889 
1890  for (int j = 0; j < N_LEAF; j++) {
1891  unpacker->setBitMap(j, 0, BitMap[i][j][0]);
1892  unpacker->setBitMap(j, 1, BitMap[i][j][1]);
1893  }
1894  for (int j = 0; j < N_LEAF; j++) {
1895  unpacker->setBitMap_extra(j, 0, BitMap_extra[i][j][0]);
1896  unpacker->setBitMap_extra(j, 1, BitMap_extra[i][j][1]);
1897  unpacker->setBitMap_extra(j, 2, BitMap_extra[i][j][2]);
1898  }
1899  unpacker.import(iov);
1900  }
1901  } else if (ONLINE == 2) {
1902  for (int i = 15 - 1; i < 16 - 1; i++) {
1903  IntervalOfValidity iov(0, 0, -1, -1);
1904 
1905  unpacker->setnLeafs(nLeafs[i]);
1906  unpacker->setnLeafsExtra(nLeafsExtra[i]);
1907  unpacker->setnClks(nClks[i]);
1908  unpacker->setnBits(nBits[i]);
1909  unpacker->set_nword_header(m_nword_header[i]);
1910  unpacker->set_nword_input(m_nword_input[i]);
1911  unpacker->set_nword_output(m_nword_output[i]);
1912  unpacker->setconf(m_conf[i]);
1913 
1914  //initialize
1915  for (int j = 0; j < N_LEAF; j++) {
1916  unpacker->setLeafName(j, "");
1917  unpacker->setLeafMap(j, -1);
1918  }
1919  //set
1920  for (int j = 0; j < nrows[i]; j++) {
1921  if ((inputleafMap[i][j] >= 0) && (inputleafMap[i][j] < nLeafs[i] + nLeafsExtra[i])) {
1922  unpacker->setLeafName(j, LeafNames[j]);
1923  unpacker->setLeafMap(j, inputleafMap[i][j]);
1924  }
1925  }
1926 
1927  for (int j = 0; j < N_LEAF; j++) {
1928  unpacker->setBitMap(j, 0, BitMap[i][j][0]);
1929  unpacker->setBitMap(j, 1, BitMap[i][j][1]);
1930  }
1931  for (int j = 0; j < N_LEAF; j++) {
1932  unpacker->setBitMap_extra(j, 0, BitMap_extra[i][j][0]);
1933  unpacker->setBitMap_extra(j, 1, BitMap_extra[i][j][1]);
1934  unpacker->setBitMap_extra(j, 2, BitMap_extra[i][j][2]);
1935  }
1936  unpacker.import(iov);
1937  }
1938  }
1939 
1940 }
1941 
1942 void setdelay()
1943 {
1944 
1945  const int N_DELAY_ARRAY = 32;
1946 
1947  const int run[N_DELAY_ARRAY][4] = { //itnitial exp, initial run, end exp, end run
1948  0, 0, 2, -1,
1949  //0, 0, 3, 63,
1950  //0, 108, 3, 480,
1951  3, 0, 3, 480,
1952  3, 529, 3, 816,
1953  3, 932, 3, 1162,
1954  3, 1176, 3, 1562,
1955  3, 1596, 3, 2118,
1956  3, 2119, 3, 2119,
1957  3, 2120, 3, 2288,
1958  3, 2292, 3, 2392,
1959  3, 2401, 3, 2586,
1960  3, 2587, 3, 2587,
1961  3, 2588, 3, 3127,
1962  3, 3128, 3, 3128,
1963  3, 3129, 3, 3414,
1964  3, 3415, 3, 3421,
1965  3, 3422, 3, 3526,
1966  3, 3527, 3, 3530,
1967  3, 3531, 3, 3790,
1968  3, 3822, 3, 4068,
1969  3, 4069, 3, 4072,
1970  3, 4073, 3, 4790,
1971  3, 4791, 3, 4897,
1972  3, 4898, 3, 5187,
1973  3, 5188, 3, 5188,
1974  3, 5189, 3, 5226,
1975  3, 5227, 3, 5255,
1976  3, 5314, 3, 5326,
1977  3, 5341, 3, 5556,
1978  3, 5557, 3, 5592,
1979  3, 5594, 3, 5869,
1980  3, 5870, 3, 5959,
1981  3, 5975, -1, -1
1982  };
1983 
1984  const int data_num[N_DELAY_ARRAY] = {
1985  -1,
1986  //29,
1987  //30,
1988  30,
1989  31,
1990  32,
1991  33,
1992  34,
1993  -1,
1994  34,
1995  35,
1996  36,
1997  -1,
1998  36,
1999  -1,
2000  36,
2001  -1,
2002  36,
2003  -1,
2004  36,
2005  37,
2006  -1,
2007  37,
2008  -1,
2009  37,
2010  -1,
2011  37,
2012  38,
2013  -1,
2014  39,
2015  40,
2016  41,
2017  42,
2018  41
2019  };
2020 
2021 
2023  delay.construct();
2024  char logname[2000];
2025  if (ONLINE == 0) {
2026  for (int i = 0; i < N_DELAY_ARRAY; i++) {
2027  IntervalOfValidity iov(run[i][0], run[i][1], run[i][2], run[i][3]);
2028  for (int j = 0; j < 320; j++) {
2029  delay->setdelay(j, 0);
2030  }
2031  sprintf(logname, "trg/gdl/dbobjects/log/itd_%04d.dat", data_num[i]);
2032  std::ifstream ifs(logname);
2033  if (!ifs) {
2034  std::cout << "No logfile to read delay values" << " " << logname << std::endl;
2035  }
2036  int k = 0;
2037  int delay_temp = 0;
2038  while (ifs >> k >> delay_temp) {
2039  delay->setdelay(k, delay_temp);
2040  }
2041  delay.import(iov);
2042  ifs.close();
2043  }
2044  } else if (ONLINE == 1 || ONLINE == 2) {
2045  //for (int i = N_DELAY_ARRAY-1; i < N_DELAY_ARRAY; i++) {
2046  for (int i = 0; i < 1; i++) {
2047  IntervalOfValidity iov(0, 0, -1, -1);
2048  for (int j = 0; j < 320; j++) {
2049  delay->setdelay(j, 0);
2050  }
2051  sprintf(logname, "trg/gdl/dbobjects/log/itd_%04d.dat", data_num[i]);
2052  std::ifstream ifs(logname);
2053  if (!ifs) {
2054  std::cout << "No logfile to read delay values" << " " << logname << std::endl;
2055  }
2056  int k = 0;
2057  int delay_temp = 0;
2058  while (ifs >> k >> delay_temp) {
2059  delay->setdelay(k, delay_temp);
2060  }
2061  delay.import(iov);
2062  ifs.close();
2063  }
2064  }
2065 
2066 }
2067 
2068 void setbadrun()
2069 {
2070 
2071  const int N_BADRUN_ARRAY = 13;
2072 
2073  const int run[N_BADRUN_ARRAY][4] = { //itnitial exp, initial run, end exp, end run
2074  0, 0, 2, -1, // 0
2075  3, 0, 3, 3526, // 1
2076  3, 3527, 3, 3623, //-1
2077  3, 3624, 3, 3769, // 1
2078  3, 3770, 3, 3790, //-1
2079  3, 3791, 3, 4877, // 1
2080  3, 4878, 3, 5012, //-1
2081  3, 5013, 3, 5019, // 1
2082  3, 5020, 3, 5246, //-1
2083  3, 5247, 3, 5313, // 1
2084  3, 5314, 3, 5326, //-1
2085  3, 5327, 3, 6000, // 1
2086  3, 6001, -1, -1 // 0
2087  };
2088 
2089  int flag[N_BADRUN_ARRAY] = {
2090  0, 1, -1, 1, -1,
2091  1, -1, 1, -1, 1,
2092  -1, 1, 0
2093  };
2094 
2096  badrun.construct();
2097  if (ONLINE == 0) {
2098  for (int i = 0; i < N_BADRUN_ARRAY; i++) {
2099  IntervalOfValidity iov(run[i][0], run[i][1], run[i][2], run[i][3]);
2100  badrun->setflag(flag[i]);
2101  badrun.import(iov);
2102  }
2103  } else if (ONLINE == 1 || ONLINE == 2) {
2104  for (int i = N_BADRUN_ARRAY - 1; i < N_BADRUN_ARRAY; i++) {
2105  IntervalOfValidity iov(0, 0, -1, -1);
2106  badrun->setflag(flag[i]);
2107  badrun.import(iov);
2108  }
2109  }
2110 }
2111 
2112 
2113 void setalg()
2114 {
2115 
2116  char logname[2000];
2118  db_algs.construct();
2119  if (ONLINE == 0) {
2120  for (int i = 0; i < N_FTD_VERS; i++) {
2121  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.alg", ftd_version[i]);
2122  db_algs->clear();
2123  IntervalOfValidity iov(ftd_run[i][0], ftd_run[i][1], ftd_run[i][2], ftd_run[i][3]);
2124  std::string str;
2125  std::ifstream isload(logname, std::ios::in);
2126  while (std::getline(isload, str)) {
2127  db_algs->setalg(str);
2128  printf("i(%d), run[i][0](%d), run[i][1](%d), run[i][2](%d), run[i][3](%d), getnalgs(%d), str=%s\n",
2129  i, ftd_run[i][0], ftd_run[i][1], ftd_run[i][2], ftd_run[i][3],
2130  db_algs->getnalgs(), str.c_str());
2131  }
2132  isload.close();
2133  db_algs.import(iov);
2134  }
2135  } else if (ONLINE == 1 || ONLINE == 2) {
2136  for (int i = N_FTD_VERS - 1; i < N_FTD_VERS; i++) {
2137  sprintf(logname, "trg/gdl/dbobjects/log/ftd_%04d.alg", ftd_version[i]);
2138  db_algs->clear();
2139  IntervalOfValidity iov(0, 0, -1, -1);
2140  std::string str;
2141  std::ifstream isload(logname, std::ios::in);
2142  while (std::getline(isload, str)) {
2143  db_algs->setalg(str);
2144  printf("i(%d), run[i][0](%d), run[i][1](%d), run[i][2](%d), run[i][3](%d), getnalgs(%d), str=%s\n",
2145  i, ftd_run[i][0], ftd_run[i][1], ftd_run[i][2], ftd_run[i][3],
2146  db_algs->getnalgs(), str.c_str());
2147  }
2148  isload.close();
2149  db_algs.import(iov);
2150  }
2151  }
2152 }
2153 
2154 
2155 int main()
2156 {
2157 
2158  setprescale();
2159  setftdlbits();
2160  setinputbits();
2161  setunpacker();
2162  //setdelay();
2163  setbadrun();
2164  setalg();
2165 
2166 
2167 }
2168 
2169 
bool import(const IntervalOfValidity &iov)
Import the object to database.
Definition: DBImportBase.cc:36
virtual void clear()
Clear the content, e.g.
Definition: DBImportBase.cc:58
Class for importing a single object to the database.
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
A class that describes the interval of experiments/runs for which an object in the database is valid.
Abstract base class for different kinds of events.
int main(int argc, char **argv)
Run all tests.
Definition: test_main.cc:75