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