CMS 3D CMS Logo

EMTFModel.cc
Go to the documentation of this file.
3 
5 
6 using namespace emtf::phase2;
7 using namespace emtf::phase2::model;
8 
10  // ===========================================================================
11  // Zone 0
12  // ===========================================================================
13 
14  // clang-format off
15  zones::hitmap_t&& zone0_hm = {
16  { // Row 0
17  {
19  {114, 38, 90 },
20  {108, 75, 127},
21  {109, 113, 165},
22  {110, 150, 202},
23  {111, 188, 240},
24  {112, 225, 277},
25  {113, 263, 315}
26  }
27  }
28  },
29  { // Row 1
30  {
32  {99 , 38, 90 },
33  {54 , 75, 127},
34  {55 , 113, 165},
35  {56 , 150, 202},
36  {63 , 188, 240},
37  {64 , 225, 277},
38  {65 , 263, 315}
39  }
40  }
41  },
42  { // Row 2
43  {
45  {45 , 38, 90 },
46  {0 , 75, 127},
47  {1 , 113, 165},
48  {2 , 150, 202},
49  {9 , 188, 240},
50  {10 , 225, 277},
51  {11 , 263, 315}
52  }
53  }
54  },
55  { // Row 3
56  {
58  {102, 0 , 90 },
59  {72 , 75 , 165},
60  {73 , 150 , 240},
61  {74 , 225 , 315}
62  }
63  }
64  },
65  { // Row 4
66  {
68  {48 , 0 , 90 },
69  {18 , 75 , 165},
70  {19 , 150 , 240},
71  {20 , 225 , 315}
72  }
73  }
74  },
75  { // Row 5
76  {
78  {50 , 0 , 90 },
79  {27 , 75 , 165},
80  {28 , 150 , 240},
81  {29 , 225 , 315}
82  }
83  }
84  },
85  { // Row 6
86  {
88  {104, 0 , 90 },
89  {81 , 75 , 165},
90  {82 , 150 , 240},
91  {83 , 225 , 315}
92  }
93  }
94  },
95  { // Row 7
96  {
98  {52 , 0 , 90 },
99  {36 , 75 , 165},
100  {37 , 150 , 240},
101  {38 , 225 , 315}
102  }
103  },
104  {
105  site_id_t::kRE4, {
106  {106, 0 , 90 },
107  {90 , 75 , 165},
108  {91 , 150 , 240},
109  {92 , 225 , 315}
110  }
111  }
112  },
113  };
114 
115  std::vector<zones::pattern_t> zone0_prompt_pd = {
116  {{49, 55, 61}, {49, 55, 61}, {50, 55, 60}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {54, 55, 56}, {53, 55, 57}},
117  {{42, 47, 52}, {42, 47, 52}, {45, 49, 53}, {53, 54, 56}, {53, 55, 57}, {55, 56, 57}, {54, 56, 58}, {54, 56, 59}},
118  {{58, 63, 68}, {58, 63, 68}, {57, 61, 65}, {54, 56, 57}, {53, 55, 57}, {53, 54, 55}, {52, 54, 56}, {51, 54, 56}},
119  {{35, 42, 49}, {36, 42, 48}, {39, 45, 51}, {52, 54, 56}, {54, 55, 56}, {54, 57, 59}, {54, 57, 60}, {52, 57, 61}},
120  {{61, 68, 75}, {62, 68, 74}, {59, 65, 71}, {54, 56, 58}, {54, 55, 56}, {51, 53, 56}, {50, 53, 56}, {49, 53, 58}},
121  {{21, 33, 45}, {22, 33, 43}, {29, 39, 49}, {51, 54, 56}, {54, 55, 56}, {52, 57, 62}, {51, 57, 63}, {46, 55, 65}},
122  {{65, 77, 89}, {67, 77, 88}, {61, 71, 81}, {54, 56, 59}, {54, 55, 56}, {48, 53, 58}, {47, 53, 59}, {45, 55, 64}}
123  };
124 
125  zones::quality_lut_t zone0_prompt_ql = {
126  0, 3, 3, 4, 3, 5, 4, 6, 1, 6, 6, 7, 21, 26, 24, 27, 1, 21, 21, 24, 22, 26, 24, 29,
127  2, 25, 25, 27, 26, 30, 28, 31, 0, 17, 17, 20, 18, 34, 20, 37, 2, 42, 28, 45, 42, 46, 45, 49,
128  9, 42, 42, 45, 43, 47, 46, 49, 10, 45, 45, 48, 47, 50, 49, 51, 0, 5, 5, 6, 17, 33, 19, 36,
129  2, 7, 7, 7, 29, 46, 30, 49, 3, 42, 29, 46, 43, 47, 46, 50, 4, 45, 31, 49, 47, 50, 50, 51,
130  1, 20, 19, 23, 22, 38, 23, 39, 4, 45, 30, 48, 46, 49, 48, 51, 11, 46, 46, 49, 47, 50, 50, 51,
131  13, 48, 49, 51, 50, 51, 51, 51, 0, 16, 16, 18, 16, 32, 18, 35, 2, 41, 27, 43, 42, 44, 44, 47,
132  9, 42, 41, 44, 42, 45, 44, 48, 10, 44, 44, 47, 44, 48, 48, 50, 8, 40, 40, 41, 40, 41, 40, 43,
133  11, 52, 52, 55, 53, 57, 54, 61, 12, 52, 52, 55, 53, 58, 56, 61, 14, 55, 55, 60, 58, 62, 59, 63,
134  1, 40, 23, 40, 40, 41, 40, 43, 5, 52, 31, 54, 53, 57, 54, 60, 12, 52, 53, 56, 53, 58, 57, 62,
135  14, 55, 56, 60, 57, 61, 60, 63, 8, 41, 41, 43, 41, 43, 43, 47, 13, 54, 54, 59, 57, 61, 58, 63,
136  15, 56, 56, 59, 58, 61, 60, 63, 15, 59, 59, 62, 62, 63, 62, 63
137  };
138 
139  std::vector<zones::pattern_t> zone0_disp_pd = {
140  {{50, 55, 60}, {50, 55, 60}, {50, 55, 60}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {53, 55, 57}, {53, 55, 57}},
141  {{53, 61, 67}, {53, 61, 65}, {53, 60, 65}, {54, 56, 57}, {54, 56, 57}, {52, 54, 56}, {52, 54, 56}, {49, 53, 56}},
142  {{43, 49, 57}, {45, 49, 57}, {45, 50, 57}, {53, 54, 56}, {53, 54, 56}, {54, 56, 58}, {54, 56, 58}, {54, 57, 61}},
143  {{54, 63, 72}, {54, 63, 70}, {54, 63, 71}, {54, 57, 58}, {54, 56, 56}, {49, 53, 56}, {49, 52, 56}, {45, 51, 56}},
144  {{38, 47, 56}, {40, 47, 56}, {39, 47, 56}, {52, 53, 56}, {54, 54, 56}, {54, 57, 61}, {54, 58, 61}, {54, 59, 65}},
145  {{54, 64, 77}, {54, 66, 74}, {54, 66, 76}, {54, 57, 59}, {54, 56, 56}, {46, 52, 56}, {45, 50, 56}, {40, 48, 56}},
146  {{33, 46, 56}, {36, 44, 56}, {34, 44, 56}, {51, 53, 56}, {54, 54, 56}, {54, 58, 64}, {54, 60, 65}, {54, 62, 70}}
147  };
148 
149  zones::quality_lut_t zone0_disp_ql = {
150  0, 3, 3, 4, 3, 5, 4, 5, 1, 6, 6, 7, 21, 26, 26, 30, 1, 22, 21, 25, 22, 26, 24, 29,
151  2, 24, 24, 27, 25, 29, 29, 31, 0, 17, 17, 20, 18, 34, 20, 38, 2, 42, 28, 47, 42, 47, 46, 50,
152  9, 42, 42, 46, 43, 47, 46, 49, 10, 45, 45, 49, 46, 49, 49, 51, 0, 6, 5, 6, 17, 33, 19, 36,
153  2, 7, 7, 7, 28, 46, 31, 50, 3, 42, 27, 46, 43, 47, 46, 50, 4, 45, 30, 50, 46, 50, 50, 51,
154  1, 20, 19, 23, 21, 37, 23, 39, 4, 45, 30, 48, 45, 49, 48, 51, 11, 45, 45, 49, 47, 50, 49, 51,
155  13, 48, 48, 51, 49, 51, 51, 51, 0, 16, 16, 18, 16, 32, 18, 35, 2, 41, 27, 44, 41, 44, 44, 48,
156  9, 42, 41, 44, 42, 45, 44, 48, 10, 44, 43, 47, 44, 48, 47, 50, 8, 40, 40, 41, 40, 41, 41, 43,
157  11, 52, 52, 56, 53, 57, 57, 61, 12, 53, 52, 57, 53, 58, 58, 62, 14, 56, 55, 60, 57, 62, 61, 63,
158  1, 40, 23, 40, 40, 41, 40, 43, 5, 52, 31, 55, 52, 55, 56, 60, 12, 53, 52, 56, 53, 58, 57, 61,
159  13, 55, 54, 60, 55, 61, 60, 63, 8, 41, 40, 43, 42, 43, 43, 47, 14, 54, 54, 59, 54, 59, 60, 62,
160  15, 56, 54, 59, 58, 62, 61, 63, 15, 59, 58, 62, 59, 63, 63, 63
161  };
162  // clang-format on
163 
164  zones_.push_back({zone0_hm, zone0_prompt_pd, zone0_prompt_ql, zone0_disp_pd, zone0_disp_ql});
165 
166  // ===========================================================================
167  // Zone 1
168  // ===========================================================================
169 
170  // clang-format off
171  zones::hitmap_t&& zone1_hm = {
172  { // Row 0
173  {
175  {99 , 38, 90 },
176  {54 , 75, 127},
177  {55 , 113, 165},
178  {56 , 150, 202},
179  {63 , 188, 240},
180  {64 , 225, 277},
181  {65 , 263, 315}
182  }
183  }
184  },
185  { // Row 1
186  {
188  {45 , 38, 90 },
189  {0 , 75, 127},
190  {1 , 113, 165},
191  {2 , 150, 202},
192  {9 , 188, 240},
193  {10 , 225, 277},
194  {11 , 263, 315}
195  }
196  }
197  },
198  { // Row 2
199  {
201  {46 , 38, 90 },
202  {3 , 75, 127},
203  {4 , 113, 165},
204  {5 , 150, 202},
205  {12 , 188, 240},
206  {13 , 225, 277},
207  {14 , 263, 315}
208  }
209  },
210  {
211  site_id_t::kRE1, {
212  {100, 38, 90 },
213  {57 , 75, 127},
214  {58 , 113, 165},
215  {59 , 150, 202},
216  {66 , 188, 240},
217  {67 , 225, 277},
218  {68 , 263, 315}
219  }
220  }
221  },
222  { // Row 3
223  {
225  {102, 0 , 90 },
226  {72 , 75 , 165},
227  {73 , 150 , 240},
228  {74 , 225 , 315}
229  }
230  }
231  },
232  { // Row 4
233  {
234  site_id_t::kME2, {
235  {48 , 0 , 90 },
236  {18 , 75 , 165},
237  {19 , 150 , 240},
238  {20 , 225 , 315}
239  }
240  }
241  },
242  { // Row 5
243  {
244  site_id_t::kME3, {
245  // ME3/1
246  {50 , 0 , 90 },
247  {27 , 75 , 165},
248  {28 , 150 , 240},
249  {29 , 225 , 315},
250  // ME3/2
251  {51 , 38, 90 },
252  {30 , 75, 127},
253  {31 , 113, 165},
254  {32 , 150, 202},
255  {33 , 188, 240},
256  {34 , 225, 277},
257  {35 , 263, 315}
258  }
259  }
260  },
261  { // Row 6
262  {
263  site_id_t::kRE3, {
264  // RE3/1
265  {104, 0 , 90 },
266  {81 , 75 , 165},
267  {82 , 150 , 240},
268  {83 , 225 , 315},
269  // RE3/2
270  {105, 38, 90 },
271  {84 , 75, 127},
272  {85 , 113, 165},
273  {86 , 150, 202},
274  {87 , 188, 240},
275  {88 , 225, 277},
276  {89 , 263, 315}
277  }
278  }
279  },
280  { // Row 7
281  {
282  site_id_t::kME4, {
283  // ME4/1
284  {52 , 0 , 90 },
285  {36 , 75 , 165},
286  {37 , 150 , 240},
287  {38 , 225 , 315},
288  // ME4/2
289  {53 , 38, 90 },
290  {39 , 75, 127},
291  {40 , 113, 165},
292  {41 , 150, 202},
293  {42 , 188, 240},
294  {43 , 225, 277},
295  {44 , 263, 315}
296  }
297  },
298  {
299  site_id_t::kRE4, {
300  // RE4/1
301  {106, 0 , 90 },
302  {90 , 75 , 165},
303  {91 , 150 , 240},
304  {92 , 225 , 315},
305  // RE4/2
306  {107, 38, 90 },
307  {93 , 75, 127},
308  {94 , 113, 165},
309  {95 , 150, 202},
310  {96 , 188, 240},
311  {97 , 225, 277},
312  {98 , 263, 315}
313  }
314  }
315  }
316  };
317 
318  std::vector<zones::pattern_t> zone1_prompt_pd = {
319  {{47, 55, 63}, {48, 55, 62}, {51, 55, 59}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {53, 55, 57}, {53, 55, 57}},
320  {{38, 44, 50}, {41, 46, 51}, {49, 52, 54}, {53, 54, 56}, {53, 55, 57}, {54, 56, 57}, {54, 56, 58}, {53, 56, 58}},
321  {{60, 66, 72}, {59, 64, 69}, {56, 58, 61}, {54, 56, 57}, {53, 55, 57}, {53, 54, 56}, {52, 54, 56}, {52, 54, 57}},
322  {{29, 37, 44}, {32, 40, 47}, {46, 50, 53}, {52, 54, 56}, {54, 55, 56}, {53, 56, 59}, {51, 55, 59}, {48, 54, 59}},
323  {{66, 73, 81}, {63, 70, 78}, {57, 60, 64}, {54, 56, 58}, {54, 55, 56}, {51, 54, 57}, {51, 55, 59}, {51, 56, 62}},
324  {{16, 27, 39}, {21, 32, 42}, {43, 48, 53}, {52, 55, 57}, {54, 55, 56}, {44, 52, 59}, {40, 49, 59}, {31, 44, 59}},
325  {{71, 83, 94}, {68, 78, 89}, {57, 62, 67}, {53, 55, 58}, {54, 55, 56}, {51, 58, 66}, {51, 61, 70}, {51, 66, 79}}
326  };
327 
328  zones::quality_lut_t zone1_prompt_ql = {
329  0, 3, 4, 6, 3, 5, 5, 7, 1, 7, 21, 25, 19, 23, 25, 27, 1, 20, 22, 25, 34, 36, 37, 39,
330  2, 24, 26, 28, 36, 38, 39, 39, 0, 16, 18, 21, 32, 33, 34, 37, 4, 27, 42, 46, 42, 45, 45, 49,
331  9, 42, 43, 46, 43, 46, 47, 50, 10, 45, 46, 50, 45, 48, 49, 51, 0, 7, 17, 20, 17, 18, 20, 23,
332  3, 7, 28, 31, 27, 29, 30, 31, 4, 29, 43, 47, 42, 45, 47, 50, 6, 30, 46, 50, 46, 48, 49, 51,
333  1, 19, 22, 24, 34, 35, 37, 38, 5, 29, 46, 49, 45, 48, 49, 51, 11, 46, 47, 50, 47, 49, 50, 51,
334  13, 49, 50, 51, 48, 51, 51, 51, 0, 16, 16, 18, 32, 32, 33, 35, 2, 26, 42, 44, 41, 43, 44, 48,
335  9, 41, 42, 45, 42, 44, 45, 48, 10, 44, 44, 48, 44, 47, 48, 50, 8, 40, 40, 41, 40, 40, 41, 43,
336  11, 52, 53, 56, 52, 54, 56, 60, 12, 52, 53, 57, 53, 56, 58, 62, 14, 55, 57, 61, 57, 59, 61, 63,
337  2, 22, 40, 41, 40, 40, 41, 43, 6, 31, 52, 55, 52, 54, 55, 59, 12, 52, 53, 57, 53, 54, 58, 61,
338  14, 54, 57, 61, 55, 59, 60, 63, 8, 40, 41, 43, 41, 43, 44, 47, 13, 54, 56, 60, 56, 58, 60, 62,
339  15, 55, 58, 62, 58, 59, 62, 63, 15, 59, 61, 63, 60, 62, 63, 63
340  };
341 
342  std::vector<zones::pattern_t> zone1_disp_pd = {
343  {{50, 55, 60}, {50, 55, 60}, {52, 55, 58}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {53, 55, 57}, {53, 55, 57}},
344  {{53, 60, 65}, {53, 60, 65}, {54, 58, 61}, {54, 56, 57}, {54, 56, 57}, {53, 54, 56}, {52, 54, 56}, {50, 53, 56}},
345  {{45, 50, 57}, {45, 50, 57}, {49, 52, 56}, {53, 54, 56}, {53, 54, 56}, {54, 56, 57}, {54, 56, 58}, {54, 57, 60}},
346  {{53, 63, 71}, {53, 62, 69}, {54, 59, 63}, {54, 57, 58}, {54, 56, 56}, {50, 54, 56}, {50, 53, 56}, {47, 51, 56}},
347  {{39, 47, 57}, {41, 48, 57}, {47, 51, 56}, {52, 53, 56}, {54, 54, 56}, {54, 56, 60}, {54, 57, 60}, {54, 59, 63}},
348  {{54, 65, 73}, {54, 65, 74}, {54, 61, 67}, {54, 57, 59}, {54, 56, 56}, {47, 53, 56}, {47, 51, 56}, {43, 49, 56}},
349  {{37, 45, 56}, {36, 45, 56}, {43, 49, 56}, {51, 53, 56}, {54, 54, 56}, {54, 57, 63}, {54, 59, 63}, {54, 61, 67}}
350  };
351 
352  zones::quality_lut_t zone1_disp_ql = {
353  0, 3, 4, 6, 4, 5, 6, 7, 1, 7, 22, 26, 20, 24, 25, 29, 1, 21, 22, 25, 34, 37, 37, 39,
354  2, 23, 25, 28, 36, 38, 39, 39, 0, 17, 18, 20, 32, 33, 34, 37, 3, 27, 42, 46, 42, 45, 46, 50,
355  9, 42, 43, 46, 43, 46, 47, 50, 10, 45, 46, 50, 45, 48, 49, 51, 0, 7, 17, 18, 16, 19, 20, 24,
356  3, 7, 27, 31, 27, 30, 29, 31, 4, 28, 43, 47, 42, 47, 47, 50, 5, 30, 46, 50, 45, 49, 49, 51,
357  1, 19, 21, 23, 34, 35, 36, 38, 5, 29, 45, 49, 45, 49, 48, 51, 11, 46, 47, 50, 46, 48, 50, 51,
358  13, 49, 49, 51, 48, 51, 51, 51, 0, 16, 16, 18, 32, 32, 33, 35, 2, 26, 41, 44, 41, 44, 44, 48,
359  9, 42, 42, 45, 42, 44, 45, 48, 10, 44, 44, 48, 44, 48, 47, 50, 8, 40, 40, 41, 40, 41, 41, 43,
360  11, 52, 52, 57, 52, 55, 56, 61, 12, 53, 53, 57, 53, 57, 58, 62, 14, 55, 56, 61, 55, 61, 60, 63,
361  2, 22, 40, 40, 40, 40, 41, 43, 6, 31, 52, 57, 52, 54, 55, 60, 12, 52, 53, 58, 53, 56, 58, 62,
362  14, 56, 56, 61, 54, 59, 60, 63, 8, 40, 41, 43, 41, 43, 43, 47, 13, 54, 54, 60, 54, 58, 59, 63,
363  15, 55, 57, 61, 58, 60, 62, 63, 15, 59, 59, 63, 59, 62, 62, 63
364  };
365  // clang-format on
366 
367  zones_.push_back({zone1_hm, zone1_prompt_pd, zone1_prompt_ql, zone1_disp_pd, zone1_disp_ql});
368 
369  // ===========================================================================
370  // Zone 2
371  // ===========================================================================
372 
373  // clang-format off
374  zones::hitmap_t&& zone2_hm = {
375  { // Row 0
376  {
378  {46 , 38, 90 },
379  {3 , 75, 127},
380  {4 , 113, 165},
381  {5 , 150, 202},
382  {12 , 188, 240},
383  {13 , 225, 277},
384  {14 , 263, 315}
385  }
386  }
387  },
388  { // Row 1
389  {
390  site_id_t::kRE1, {
391  {100, 38, 90 },
392  {57 , 75, 127},
393  {58 , 113, 165},
394  {59 , 150, 202},
395  {66 , 188, 240},
396  {67 , 225, 277},
397  {68 , 263, 315}
398  }
399  }
400  },
401  { // Row 2
402  {
403  site_id_t::kRE2, {
404  {103, 38, 90 },
405  {75 , 75, 127},
406  {76 , 113, 165},
407  {77 , 150, 202},
408  {78 , 188, 240},
409  {79 , 225, 277},
410  {80 , 263, 315}
411  }
412  }
413  },
414  { // Row 3
415  {
416  site_id_t::kME2, {
417  {49 , 38, 90 },
418  {21 , 75, 127},
419  {22 , 113, 165},
420  {23 , 150, 202},
421  {24 , 188, 240},
422  {25 , 225, 277},
423  {26 , 263, 315}
424  }
425  }
426  },
427  { // Row 4
428  {
429  site_id_t::kME3, {
430  {51 , 38, 90 },
431  {30 , 75, 127},
432  {31 , 113, 165},
433  {32 , 150, 202},
434  {33 , 188, 240},
435  {34 , 225, 277},
436  {35 , 263, 315}
437  }
438  }
439  },
440  { // Row 5
441  {
442  site_id_t::kRE3, {
443  {105, 38, 90 },
444  {84 , 75, 127},
445  {85 , 113, 165},
446  {86 , 150, 202},
447  {87 , 188, 240},
448  {88 , 225, 277},
449  {89 , 263, 315}
450  }
451  }
452  },
453  { // Row 6
454  {
455  site_id_t::kME4, {
456  {53 , 38, 90 },
457  {39 , 75, 127},
458  {40 , 113, 165},
459  {41 , 150, 202},
460  {42 , 188, 240},
461  {43 , 225, 277},
462  {44 , 263, 315}
463  }
464  }
465  },
466  { // Row 7
467  {
468  site_id_t::kRE4, {
469  {107, 38, 90 },
470  {93 , 75, 127},
471  {94 , 113, 165},
472  {95 , 150, 202},
473  {96 , 188, 240},
474  {97 , 225, 277},
475  {98 , 263, 315},
476  }
477  }
478  }
479  };
480 
481  std::vector<zones::pattern_t> zone2_prompt_pd = { // Pattern N: Row0..RowM
482  {{52, 55, 58}, {52, 55, 58}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {53, 55, 57}, {53, 55, 57}, {53, 55, 57}},
483  {{54, 57, 61}, {53, 57, 60}, {54, 56, 58}, {54, 56, 58}, {53, 55, 56}, {53, 54, 56}, {52, 54, 56}, {52, 54, 56}},
484  {{49, 53, 56}, {50, 53, 57}, {52, 54, 56}, {52, 54, 56}, {54, 55, 57}, {54, 56, 57}, {54, 56, 58}, {54, 56, 58}},
485  {{54, 57, 61}, {54, 57, 61}, {54, 56, 59}, {54, 56, 59}, {53, 54, 56}, {52, 54, 56}, {51, 54, 56}, {51, 53, 56}},
486  {{49, 53, 56}, {49, 53, 56}, {51, 54, 56}, {51, 54, 56}, {54, 56, 57}, {54, 56, 58}, {54, 56, 59}, {54, 57, 59}},
487  {{54, 59, 65}, {54, 60, 64}, {54, 57, 59}, {54, 56, 56}, {50, 54, 56}, {49, 53, 56}, {47, 52, 56}, {46, 51, 56}},
488  {{45, 51, 56}, {46, 50, 56}, {51, 53, 56}, {54, 54, 56}, {54, 56, 60}, {54, 57, 61}, {54, 58, 63}, {54, 59, 64}}
489  };
490 
491  zones::quality_lut_t zone2_prompt_ql = {
492  0, 3, 3, 5, 1, 23, 7, 26, 1, 36, 22, 38, 2, 39, 25, 39, 0, 32, 18, 35, 4, 44, 44, 48,
493  9, 44, 44, 49, 10, 49, 48, 51, 0, 17, 6, 21, 3, 28, 7, 30, 4, 44, 43, 48, 5, 48, 48, 51,
494  1, 34, 21, 37, 4, 47, 47, 50, 10, 49, 48, 51, 11, 51, 50, 51, 0, 32, 16, 33, 3, 43, 43, 47,
495  8, 43, 43, 47, 9, 47, 46, 50, 8, 40, 40, 42, 11, 53, 53, 57, 11, 54, 53, 58, 13, 58, 56, 62,
496  2, 40, 40, 41, 5, 52, 52, 54, 11, 53, 52, 57, 12, 58, 54, 61, 8, 42, 42, 45, 12, 56, 55, 59,
497  14, 57, 56, 61, 15, 62, 59, 63, 0, 16, 5, 19, 2, 27, 7, 29, 3, 43, 42, 46, 4, 46, 45, 50,
498  1, 40, 40, 41, 6, 52, 52, 54, 10, 53, 52, 58, 12, 55, 54, 60, 1, 24, 7, 26, 5, 31, 7, 31,
499  6, 53, 52, 57, 6, 58, 54, 60, 2, 41, 41, 45, 7, 55, 55, 59, 13, 56, 56, 61, 14, 60, 59, 63,
500  0, 34, 20, 37, 4, 46, 46, 49, 9, 47, 46, 50, 10, 50, 49, 51, 8, 42, 42, 45, 12, 57, 56, 61,
501  13, 57, 55, 62, 15, 62, 59, 63, 2, 41, 41, 44, 6, 55, 54, 59, 13, 58, 56, 61, 14, 61, 59, 63,
502  9, 45, 45, 49, 14, 60, 60, 62, 15, 61, 60, 63, 15, 63, 62, 63
503  };
504 
505  std::vector<zones::pattern_t> zone2_disp_pd = { // Pattern N: Row0..RowM
506  {{52, 55, 58}, {52, 55, 58}, {53, 55, 57}, {53, 55, 57}, {54, 55, 56}, {53, 55, 57}, {53, 55, 57}, {53, 55, 57}},
507  {{54, 57, 61}, {54, 57, 61}, {54, 56, 59}, {54, 56, 59}, {53, 55, 56}, {53, 54, 56}, {52, 54, 56}, {51, 54, 56}},
508  {{49, 53, 56}, {49, 53, 56}, {51, 54, 56}, {51, 54, 56}, {54, 55, 57}, {54, 56, 57}, {54, 56, 58}, {54, 56, 59}},
509  {{54, 58, 62}, {54, 58, 62}, {54, 56, 58}, {54, 56, 57}, {51, 54, 56}, {51, 53, 56}, {49, 53, 56}, {48, 52, 56}},
510  {{48, 52, 56}, {48, 52, 56}, {52, 54, 56}, {53, 54, 56}, {54, 56, 59}, {54, 57, 59}, {54, 57, 61}, {54, 58, 62}},
511  {{54, 60, 66}, {54, 60, 65}, {54, 57, 59}, {54, 56, 56}, {49, 53, 56}, {48, 52, 56}, {46, 52, 56}, {45, 51, 56}},
512  {{44, 50, 56}, {45, 50, 56}, {51, 53, 56}, {54, 54, 56}, {54, 57, 61}, {54, 58, 62}, {54, 58, 64}, {54, 59, 65}}
513  };
514 
515  zones::quality_lut_t zone2_disp_ql = {
516  0, 3, 3, 5, 1, 23, 7, 26, 1, 36, 22, 38, 2, 39, 25, 39, 0, 32, 18, 35, 4, 44, 44, 48,
517  9, 44, 44, 49, 10, 49, 48, 51, 0, 17, 6, 21, 3, 28, 7, 30, 4, 44, 43, 48, 5, 48, 48, 51,
518  1, 34, 21, 37, 4, 47, 48, 50, 10, 49, 47, 51, 11, 51, 50, 51, 0, 32, 16, 33, 3, 43, 43, 47,
519  8, 43, 43, 47, 9, 47, 46, 50, 8, 40, 40, 42, 11, 53, 52, 57, 11, 53, 52, 58, 13, 58, 56, 61,
520  2, 40, 40, 41, 5, 52, 52, 55, 11, 53, 53, 57, 12, 56, 55, 61, 8, 42, 41, 45, 12, 56, 54, 59,
521  14, 58, 56, 62, 15, 61, 59, 63, 0, 16, 6, 20, 2, 27, 7, 29, 3, 43, 42, 46, 4, 46, 46, 50,
522  1, 40, 40, 41, 5, 53, 52, 54, 10, 53, 52, 58, 12, 55, 54, 60, 1, 24, 7, 26, 5, 31, 7, 31,
523  6, 53, 52, 57, 6, 57, 54, 61, 2, 42, 41, 45, 7, 54, 55, 59, 13, 58, 55, 60, 14, 60, 59, 63,
524  0, 34, 19, 37, 4, 46, 45, 49, 9, 47, 46, 50, 10, 50, 49, 51, 8, 42, 42, 45, 12, 57, 56, 61,
525  13, 57, 56, 62, 15, 62, 60, 63, 2, 41, 41, 44, 6, 56, 54, 59, 13, 58, 55, 61, 14, 61, 59, 63,
526  9, 45, 45, 49, 14, 60, 59, 62, 15, 62, 60, 63, 15, 63, 62, 63
527  };
528  // clang-format on
529 
530  zones_.push_back({zone2_hm, zone2_prompt_pd, zone2_prompt_ql, zone2_disp_pd, zone2_disp_ql});
531 
532  // ===========================================================================
533  // Features
534  // ===========================================================================
535  // feat | ME1/1 | ME1/2 | ME2 | ME3 | ME4 | RE1 | RE2 | RE3 | RE4 | GE1/1 | GE2/1 | ME0
536  // -----------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------
537  // emtf_phi | * | * | * | * | * | * | * | * | * | * | * | *
538  // emtf_theta | * | * | * | * | * | * | * | * | * | * | * | *
539  // emtf_bend | * | * | * | * | * | | | | | | | *
540  // emtf_qual | * | * | * | * | * | | | | | | | *
541  // emtf_time | | | | | | | | | | | |
542 
543  // clang-format off
544  features_ = {
545  {
550  }
551  },
552  {
557  }
558  },
559  {
563  }
564  },
565  {
569  }
570  },
571  };
572  // clang-format on
573 
574  // ===========================================================================
575  // Theta Options
576  // ===========================================================================
577 
578  // clang-format off
579  theta_medians_ = {
580  // ME2_t1, ME3_t1, ME4_t1, ME2_t2, ME3_t2, ME4_t2, GE21, RE3, RE4
581  {
582  {
586  },
587  {
591  },
592  {
596  },
597  },
598  // ME2_t1, ME3_t1, ME4_t1, ME2_t2, ME3_t2, ME4_t2, RE2, RE3, RE4
599  {
600  {
604  },
605  {
609  },
610  {
614  },
615  },
616  // ME12_t1, ME11_t1, ME0_t2, ME12_t2, ME11_t2, ME0_t2, RE1, GE11, ME0_t1
617  {
618  {
622  },
623  {
627  },
628  {
632  },
633  },
634  };
635  // clang-format on
636 
637  // ===========================================================================
638  // Site Reduction
639  // ===========================================================================
640  // Site (out) | Site (in)
641  // -----------|-------------------------------------------
642  // ME1 | ME1/1, GE1/1, ME1/2, RE1/2
643  // ME2 | ME2, GE2/1, RE2/2
644  // ME3 | ME3, RE3
645  // ME4 | ME4, RE4
646  // ME0 | ME0
647 
648  // clang-format off
649  reduced_sites_ = {
655  };
656  // clang-format on
657 }
658 
660  // Do Nothing
661 }
std::vector< model::feature_t > features_
Definition: EMTFModel.h:55
model::reduced_sites_t reduced_sites_
Definition: EMTFModel.h:57
std::vector< hitmap::row_t > hitmap_t
Definition: EMTFModel.h:26
std::vector< model::zone_t > zones_
Definition: EMTFModel.h:54
std::vector< unsigned int > quality_lut_t
Definition: EMTFModel.h:28
std::vector< model::theta_median_t > theta_medians_
Definition: EMTFModel.h:56
EMTFModel(const EMTFContext &)
Definition: EMTFModel.cc:9