CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Attributes
emtf::phase2::EMTFModel Class Reference

#include <EMTFModel.h>

Public Member Functions

 EMTFModel (const EMTFContext &)
 
 ~EMTFModel ()
 

Public Attributes

std::vector< model::feature_tfeatures_
 
model::reduced_sites_t reduced_sites_
 
std::vector< model::theta_median_ttheta_medians_
 
std::vector< model::zone_tzones_
 

Private Attributes

const EMTFContextcontext_
 

Detailed Description

Definition at line 48 of file EMTFModel.h.

Constructor & Destructor Documentation

◆ EMTFModel()

EMTFModel::EMTFModel ( const EMTFContext context)

Definition at line 9 of file EMTFModel.cc.

References features_, emtf::phase2::kBend, emtf::phase2::kGE11, emtf::phase2::kGE21, emtf::phase2::kME0, emtf::phase2::kME1, emtf::phase2::kME11, emtf::phase2::kME12, emtf::phase2::kME2, emtf::phase2::kME3, emtf::phase2::kME4, emtf::phase2::kPhi, emtf::phase2::kQuality, emtf::phase2::kRE1, emtf::phase2::kRE2, emtf::phase2::kRE3, emtf::phase2::kRE4, emtf::phase2::kTheta, emtf::phase2::kTheta1, emtf::phase2::kTheta2, reduced_sites_, theta_medians_, and zones_.

9  : context_(context) {
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 }
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
const EMTFContext & context_
Definition: EMTFModel.h:60

◆ ~EMTFModel()

EMTFModel::~EMTFModel ( )

Definition at line 659 of file EMTFModel.cc.

659  {
660  // Do Nothing
661 }

Member Data Documentation

◆ context_

const EMTFContext& emtf::phase2::EMTFModel::context_
private

Definition at line 60 of file EMTFModel.h.

◆ features_

std::vector<model::feature_t> emtf::phase2::EMTFModel::features_

Definition at line 55 of file EMTFModel.h.

Referenced by EMTFModel().

◆ reduced_sites_

model::reduced_sites_t emtf::phase2::EMTFModel::reduced_sites_

Definition at line 57 of file EMTFModel.h.

Referenced by EMTFModel().

◆ theta_medians_

std::vector<model::theta_median_t> emtf::phase2::EMTFModel::theta_medians_

Definition at line 56 of file EMTFModel.h.

Referenced by EMTFModel().

◆ zones_

std::vector<model::zone_t> emtf::phase2::EMTFModel::zones_

Definition at line 54 of file EMTFModel.h.

Referenced by EMTFModel().