CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ESDetId.cc
Go to the documentation of this file.
3 
4 #include <ostream>
5 
7 {
8  if( !gen.null() &&
9  ( gen.det() != Ecal ||
10  gen.subdetId() != EcalPreshower ) )
11  {
12  throw cms::Exception("InvalidDetId");
13  }
14  id_ = gen.rawId() ;
15 }
16 
17 
18 void ESDetId::verify( int strip,
19  int ixs,
20  int iys,
21  int plane,
22  int iz )
23 {
24  if( !validDetId( strip, ixs, iys, plane, iz) )
25  throw cms::Exception("InvalidDetId")
26  << "ESDetId: Cannot create object. Indexes out of bounds \n"
27  << " strip = " << strip << " x = " << ixs << " y = " << iys << "\n"
28  << " plane = " << plane << " z = " << iz
29  << " hxy = " << (1==plane?hxy1[ixs-1][iys-1]:hxy2[ixs-1][iys-1])
30  << "\n";
31 }
32 
33 bool
34 ESDetId::validDetId( int istrip,
35  int ixs,
36  int iys,
37  int iplane,
38  int iz )
39 {
40  return ( !( ( istrip < ISTRIP_MIN ) ||
41  ( istrip > ISTRIP_MAX ) ||
42  ( ixs < IX_MIN ) ||
43  ( ixs > IX_MAX ) ||
44  ( iys < IY_MIN ) ||
45  ( iys > IY_MAX ) ||
46  ( abs( iz ) != 1 ) ||
47  ( iplane < PLANE_MIN ) ||
48  ( iplane > PLANE_MAX ) ||
49  ( ( 1 == iplane ) &&
50  0 == hxy1[ixs-1][iys-1] ) ||
51  ( ( 2 == iplane ) &&
52  0 == hxy2[ixs-1][iys-1] ) ) ) ;
53 }
54 
55 ESDetId&
57 {
58  if (!gen.null() &&
59  ( gen.det() != Ecal ||
60  gen.subdetId() != EcalPreshower ) )
61  {
62  throw cms::Exception("InvalidDetId");
63  }
64  id_=gen.rawId();
65  return *this;
66 }
67 
68 int
70 {
71  const int ia ( 1 == zside() ? 2 : 1 ) ;
72  const int ib ( plane() ) ;
73  const int ix ( six() ) ;
74  const int iy ( siy() ) ;
75  const int ic ( 1 == ib ?
76  hxy1[ ix - 1 ][ iy - 1 ] :
77  hxy2[ ix - 1 ][ iy - 1 ] ) ;
78  const int id ( strip() ) ;
79 
80  return ( ( ia - 1 )*kLb +
81  ( ib - 1 )*kLc +
82  ( ic - 1 )*kLd +
83  id - 1 ) ;
84 }
85 
86 ESDetId
88 {
89  if( validHashIndex( hi ) )
90  {
91  const int id ( hi%kLd + 1 ) ;
92  const int nd ( hi - id + 1 ) ;
93  const int ic ( ( nd%kLc )/kLd + 1 ) ;
94  const int nc ( nd - ( ic - 1 )*kLd ) ;
95  const int ib ( ( nc%kLb )/kLc + 1 ) ;
96  const int nb ( nc - ( ib - 1 )*kLc ) ;
97  const int ia ( nb/kLb + 1 );// + 1 ) ;
98 
99  const int st ( id ) ;
100  const int pl ( ib ) ;
101  int ix ;
102  int iy ;
103  const int ic1 ( ic - 1 ) ;
104  if( 1 == pl )
105  {
106  ix = hx1[ ic1 ] ;
107  iy = hy1[ ic1 ] ;
108  }
109  else
110  {
111  ix = hx2[ ic1 ] ;
112  iy = hy2[ ic1 ] ;
113  }
114  const int iz ( 1 == ia ? -1 : 1 ) ;
115 
116  return ESDetId( st, ix, iy, pl, iz ) ;
117  }
118  else
119  {
120  return ESDetId() ;
121  }
122 }
123 
124 std::ostream& operator<<(std::ostream& s,const ESDetId& id)
125 {
126  return s << "(ES z=" << id.zside()
127  << " plane " << id.plane()
128  << " "
129  << id.six()
130  << ':'
131  << id.siy()
132  << " "
133  << id.strip()
134  << ')'
135  << " hashIndex = ";
136 // << id.hashedIndex() ;
137 }
138 
139 
140 const unsigned short ESDetId::hxy1[ kXMAX ][ kYMAX ] = {
141 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
142  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
143  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
144  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , //1
145 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146  0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
147  7, 8, 9, 10, 11, 12, 0, 0, 0, 0,
148  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , //2
149 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150  0, 0, 13, 14, 15, 16, 17, 18, 19, 20,
151  21, 22, 23, 24, 25, 26, 27, 28, 0, 0,
152  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } , //3
153 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
154  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
155  40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
156  50, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
157 { 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
158  53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
159  63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
160  73, 74, 0, 0, 0, 0, 0, 0, 0, 0 } ,
161 { 0, 0, 0, 0, 0, 0, 0, 75, 76, 77,
162  78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
163  88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
164  98, 99, 100, 0, 0, 0, 0, 0, 0, 0 } ,//6
165 { 0, 0, 0, 0, 0, 0, 101, 102, 103, 104,
166  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
167  115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
168  125, 126, 127, 128, 0, 0, 0, 0, 0, 0 } ,
169 { 0, 0, 0, 0, 129, 130, 131, 132, 133, 134,
170  135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
171  145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
172  155, 156, 157, 158, 159, 160, 0, 0, 0, 0 } ,
173 { 0, 0, 0, 0, 161, 162, 163, 164, 165, 166,
174  167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
175  177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
176  187, 188, 189, 190, 191, 192, 0, 0, 0, 0 } ,
177 { 0, 0, 0, 193, 194, 195, 196, 197, 198, 199,
178  200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
179  210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
180  220, 221, 222, 223, 224, 225, 226, 0, 0, 0 } ,//10
181 { 0, 0, 227, 228, 229, 230, 231, 232, 233, 234,
182  235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
183  245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
184  255, 256, 257, 258, 259, 260, 261, 262, 0, 0 } ,
185 { 0, 0, 263, 264, 265, 266, 267, 268, 269, 270,
186  271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
187  281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
188  291, 292, 293, 294, 295, 296, 297, 298, 0, 0 } ,
189 { 0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
190  307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
191  317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
192  327, 328, 329, 330, 331, 332, 333, 334, 0, 0 } ,
193 { 0, 335, 336, 337, 338, 339, 340, 341, 342, 343,
194  344, 345, 346, 347, 348, 349, 350, 351, 0, 0,
195  0, 0, 352, 353, 354, 355, 356, 357, 358, 359,
196  360, 361, 362, 363, 364, 365, 366, 367, 368, 0 } ,
197 { 0, 369, 370, 371, 372, 373, 374, 375, 376, 377,
198  378, 379, 380, 381, 382, 383, 0, 0, 0, 0,
199  0, 0, 0, 0, 384, 385, 386, 387, 388, 389,
200  390, 391, 392, 393, 394, 395, 396, 397, 398, 0 } ,//15
201 { 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
202  409, 410, 411, 412, 413, 0, 0, 0, 0, 0,
203  0, 0, 0, 0, 0, 414, 415, 416, 417, 418,
204  419, 420, 421, 422, 423, 424, 425, 426, 427, 428 } ,
205 { 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
206  439, 440, 441, 442, 0, 0, 0, 0, 0, 0,
207  0, 0, 0, 0, 0, 0, 443, 444, 445, 446,
208  447, 448, 449, 450, 451, 452, 453, 454, 455, 456 } ,
209 { 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
210  467, 468, 469, 470, 0, 0, 0, 0, 0, 0,
211  0, 0, 0, 0, 0, 0, 471, 472, 473, 474,
212  475, 476, 477, 478, 479, 480, 481, 482, 483, 484 } ,
213 { 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
214  495, 496, 497, 0, 0, 0, 0, 0, 0, 0,
215  0, 0, 0, 0, 0, 0, 0, 498, 499, 500,
216  501, 502, 503, 504, 505, 506, 507, 508, 509, 510 } ,
217 { 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
218  521, 522, 523, 0, 0, 0, 0, 0, 0, 0,
219  0, 0, 0, 0, 0, 0, 0, 524, 525, 526,
220  527, 528, 529, 530, 531, 532, 533, 534, 535, 536 } ,
221 { 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
222  547, 548, 549, 0, 0, 0, 0, 0, 0, 0,
223  0, 0, 0, 0, 0, 0, 0, 550, 551, 552,
224  553, 554, 555, 556, 557, 558, 559, 560, 561, 562 } ,
225 { 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
226  573, 574, 575, 0, 0, 0, 0, 0, 0, 0,
227  0, 0, 0, 0, 0, 0, 0, 576, 577, 578,
228  579, 580, 581, 582, 583, 584, 585, 586, 587, 588 } ,
229 { 589, 590, 591, 592, 593, 594, 595, 596, 597, 598,
230  599, 600, 601, 602, 0, 0, 0, 0, 0, 0,
231  0, 0, 0, 0, 0, 0, 603, 604, 605, 606,
232  607, 608, 609, 610, 611, 612, 613, 614, 615, 616 } ,
233 { 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
234  627, 628, 629, 630, 0, 0, 0, 0, 0, 0,
235  0, 0, 0, 0, 0, 0, 631, 632, 633, 634,
236  635, 636, 637, 638, 639, 640, 641, 642, 643, 644 } ,
237 { 645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
238  655, 656, 657, 658, 659, 0, 0, 0, 0, 0,
239  0, 0, 0, 0, 0, 660, 661, 662, 663, 664,
240  665, 666, 667, 668, 669, 670, 671, 672, 673, 674 } ,
241 { 0, 675, 676, 677, 678, 679, 680, 681, 682, 683,
242  684, 685, 686, 687, 688, 689, 0, 0, 0, 0,
243  0, 0, 0, 0, 690, 691, 692, 693, 694, 695,
244  696, 697, 698, 699, 700, 701, 702, 703, 704, 0 } ,
245 { 0, 705, 706, 707, 708, 709, 710, 711, 712, 713,
246  714, 715, 716, 717, 718, 719, 720, 721, 0, 0,
247  0, 0, 722, 723, 724, 725, 726, 727, 728, 729,
248  730, 731, 732, 733, 734, 735, 736, 737, 738, 0 } ,
249 { 0, 0, 739, 740, 741, 742, 743, 744, 745, 746,
250  747, 748, 749, 750, 751, 752, 753, 754, 755, 756,
251  757, 758, 759, 760, 761, 762, 763, 764, 765, 766,
252  767, 768, 769, 770, 771, 772, 773, 774, 0, 0 } ,
253 { 0, 0, 775, 776, 777, 778, 779, 780, 781, 782,
254  783, 784, 785, 786, 787, 788, 789, 790, 791, 792,
255  793, 794, 795, 796, 797, 798, 799, 800, 801, 802,
256  803, 804, 805, 806, 807, 808, 809, 810, 0, 0 } ,
257 { 0, 0, 811, 812, 813, 814, 815, 816, 817, 818,
258  819, 820, 821, 822, 823, 824, 825, 826, 827, 828,
259  829, 830, 831, 832, 833, 834, 835, 836, 837, 838,
260  839, 840, 841, 842, 843, 844, 845, 846, 0, 0 } ,
261 { 0, 0, 0, 847, 848, 849, 850, 851, 852, 853,
262  854, 855, 856, 857, 858, 859, 860, 861, 862, 863,
263  864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
264  874, 875, 876, 877, 878, 879, 880, 0, 0, 0 } ,
265 { 0, 0, 0, 0, 881, 882, 883, 884, 885, 886,
266  887, 888, 889, 890, 891, 892, 893, 894, 895, 896,
267  897, 898, 899, 900, 901, 902, 903, 904, 905, 906,
268  907, 908, 909, 910, 911, 912, 0, 0, 0, 0 } ,
269 { 0, 0, 0, 0, 913, 914, 915, 916, 917, 918,
270  919, 920, 921, 922, 923, 924, 925, 926, 927, 928,
271  929, 930, 931, 932, 933, 934, 935, 936, 937, 938,
272  939, 940, 941, 942, 943, 944, 0, 0, 0, 0 } ,
273 { 0, 0, 0, 0, 0, 0, 945, 946, 947, 948,
274  949, 950, 951, 952, 953, 954, 955, 956, 957, 958,
275  959, 960, 961, 962, 963, 964, 965, 966, 967, 968,
276  969, 970, 971, 972, 0, 0, 0, 0, 0, 0 } ,
277 { 0, 0, 0, 0, 0, 0, 0, 973, 974, 975,
278  976, 977, 978, 979, 980, 981, 982, 983, 984, 985,
279  986, 987, 988, 989, 990, 991, 992, 993, 994, 995,
280  996, 997, 998, 0, 0, 0, 0, 0, 0, 0 } ,
281 { 0, 0, 0, 0, 0, 0, 0, 0, 999, 1000,
282  1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
283  1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
284  1021, 1022, 0, 0, 0, 0, 0, 0, 0, 0 } ,
285 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023,
286  1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
287  1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
288  1044, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
289 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
290  0, 0, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052,
291  1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 0, 0,
292  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
293 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
294  0, 0, 0, 0, 1061, 1062, 1063, 1064, 1065, 1066,
295  1067, 1068, 1069, 1070, 1071, 1072, 0, 0, 0, 0,
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, 0, 0, 0, 0, 0, 0, 0, 0,
299  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
300  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
301 };
302 
303 const unsigned short ESDetId::hxy2[ kXMAX ][ kYMAX ] = {
304 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305  0, 0, 0, 0, 0, 1, 2, 3, 4, 5,
306  6, 7, 8, 9, 10, 0, 0, 0, 0, 0,
307  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
308 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309  0, 0, 0, 11, 12, 13, 14, 15, 16, 17,
310  18, 19, 20, 21, 22, 23, 24, 0, 0, 0,
311  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
312 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
313  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
314  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
315  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
316 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
317  46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
318  56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
319  66, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
320 { 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
321  70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
322  80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
323  90, 91, 92, 0, 0, 0, 0, 0, 0, 0 } ,
324 { 0, 0, 0, 0, 0, 0, 0, 93, 94, 95,
325  96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
326  106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
327  116, 117, 118, 0, 0, 0, 0, 0, 0, 0 } ,
328 { 0, 0, 0, 0, 0, 0, 119, 120, 121, 122,
329  123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
330  133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
331  143, 144, 145, 146, 0, 0, 0, 0, 0, 0 } ,
332 { 0, 0, 0, 0, 0, 147, 148, 149, 150, 151,
333  152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
334  162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
335  172, 173, 174, 175, 176, 0, 0, 0, 0, 0 } ,
336 { 0, 0, 0, 0, 177, 178, 179, 180, 181, 182,
337  183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
338  193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
339  203, 204, 205, 206, 207, 208, 0, 0, 0, 0 } ,
340 { 0, 0, 0, 209, 210, 211, 212, 213, 214, 215,
341  216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
342  226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
343  236, 237, 238, 239, 240, 241, 242, 0, 0, 0 } ,
344 { 0, 0, 0, 243, 244, 245, 246, 247, 248, 249,
345  250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
346  260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
347  270, 271, 272, 273, 274, 275, 276, 0, 0, 0 } ,
348 { 0, 0, 0, 277, 278, 279, 280, 281, 282, 283,
349  284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
350  294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
351  304, 305, 306, 307, 308, 309, 310, 0, 0, 0 } ,
352 { 0, 0, 311, 312, 313, 314, 315, 316, 317, 318,
353  319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
354  329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
355  339, 340, 341, 342, 343, 344, 345, 346, 0, 0 } ,
356 { 0, 0, 347, 348, 349, 350, 351, 352, 353, 354,
357  355, 356, 357, 358, 359, 360, 361, 362, 0, 0,
358  0, 0, 363, 364, 365, 366, 367, 368, 369, 370,
359  371, 372, 373, 374, 375, 376, 377, 378, 0, 0 } ,
360 { 0, 379, 380, 381, 382, 383, 384, 385, 386, 387,
361  388, 389, 390, 391, 392, 393, 0, 0, 0, 0,
362  0, 0, 0, 0, 394, 395, 396, 397, 398, 399,
363  400, 401, 402, 403, 404, 405, 406, 407, 408, 0 } ,
364 { 0, 409, 410, 411, 412, 413, 414, 415, 416, 417,
365  418, 419, 420, 421, 422, 0, 0, 0, 0, 0,
366  0, 0, 0, 0, 0, 423, 424, 425, 426, 427,
367  428, 429, 430, 431, 432, 433, 434, 435, 436, 0 } ,
368 { 0, 437, 438, 439, 440, 441, 442, 443, 444, 445,
369  446, 447, 448, 449, 0, 0, 0, 0, 0, 0,
370  0, 0, 0, 0, 0, 0, 450, 451, 452, 453,
371  454, 455, 456, 457, 458, 459, 460, 461, 462, 0 } ,
372 { 0, 463, 464, 465, 466, 467, 468, 469, 470, 471,
373  472, 473, 474, 475, 0, 0, 0, 0, 0, 0,
374  0, 0, 0, 0, 0, 0, 476, 477, 478, 479,
375  480, 481, 482, 483, 484, 485, 486, 487, 488, 0 } ,
376 { 0, 489, 490, 491, 492, 493, 494, 495, 496, 497,
377  498, 499, 500, 0, 0, 0, 0, 0, 0, 0,
378  0, 0, 0, 0, 0, 0, 0, 501, 502, 503,
379  504, 505, 506, 507, 508, 509, 510, 511, 512, 0 } ,
380 { 0, 513, 514, 515, 516, 517, 518, 519, 520, 521,
381  522, 523, 524, 0, 0, 0, 0, 0, 0, 0,
382  0, 0, 0, 0, 0, 0, 0, 525, 526, 527,
383  528, 529, 530, 531, 532, 533, 534, 535, 536, 0 } ,
384 { 0, 537, 538, 539, 540, 541, 542, 543, 544, 545,
385  546, 547, 548, 0, 0, 0, 0, 0, 0, 0,
386  0, 0, 0, 0, 0, 0, 0, 549, 550, 551,
387  552, 553, 554, 555, 556, 557, 558, 559, 560, 0 } ,
388 { 0, 561, 562, 563, 564, 565, 566, 567, 568, 569,
389  570, 571, 572, 0, 0, 0, 0, 0, 0, 0,
390  0, 0, 0, 0, 0, 0, 0, 573, 574, 575,
391  576, 577, 578, 579, 580, 581, 582, 583, 584, 0 } ,
392 { 0, 585, 586, 587, 588, 589, 590, 591, 592, 593,
393  594, 595, 596, 597, 0, 0, 0, 0, 0, 0,
394  0, 0, 0, 0, 0, 0, 598, 599, 600, 601,
395  602, 603, 604, 605, 606, 607, 608, 609, 610, 0 } ,
396 { 0, 611, 612, 613, 614, 615, 616, 617, 618, 619,
397  620, 621, 622, 623, 0, 0, 0, 0, 0, 0,
398  0, 0, 0, 0, 0, 0, 624, 625, 626, 627,
399  628, 629, 630, 631, 632, 633, 634, 635, 636, 0 } ,
400 { 0, 637, 638, 639, 640, 641, 642, 643, 644, 645,
401  646, 647, 648, 649, 650, 0, 0, 0, 0, 0,
402  0, 0, 0, 0, 0, 651, 652, 653, 654, 655,
403  656, 657, 658, 659, 660, 661, 662, 663, 664, 0 } ,
404 { 0, 665, 666, 667, 668, 669, 670, 671, 672, 673,
405  674, 675, 676, 677, 678, 679, 0, 0, 0, 0,
406  0, 0, 0, 0, 680, 681, 682, 683, 684, 685,
407  686, 687, 688, 689, 690, 691, 692, 693, 694, 0 } ,
408 { 0, 0, 695, 696, 697, 698, 699, 700, 701, 702,
409  703, 704, 705, 706, 707, 708, 709, 710, 0, 0,
410  0, 0, 711, 712, 713, 714, 715, 716, 717, 718,
411  719, 720, 721, 722, 723, 724, 725, 726, 0, 0 } ,
412 { 0, 0, 727, 728, 729, 730, 731, 732, 733, 734,
413  735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
414  745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
415  755, 756, 757, 758, 759, 760, 761, 762, 0, 0 } ,
416 { 0, 0, 0, 763, 764, 765, 766, 767, 768, 769,
417  770, 771, 772, 773, 774, 775, 776, 777, 778, 779,
418  780, 781, 782, 783, 784, 785, 786, 787, 788, 789,
419  790, 791, 792, 793, 794, 795, 796, 0, 0, 0 } ,
420 { 0, 0, 0, 797, 798, 799, 800, 801, 802, 803,
421  804, 805, 806, 807, 808, 809, 810, 811, 812, 813,
422  814, 815, 816, 817, 818, 819, 820, 821, 822, 823,
423  824, 825, 826, 827, 828, 829, 830, 0, 0, 0 } ,
424 { 0, 0, 0, 831, 832, 833, 834, 835, 836, 837,
425  838, 839, 840, 841, 842, 843, 844, 845, 846, 847,
426  848, 849, 850, 851, 852, 853, 854, 855, 856, 857,
427  858, 859, 860, 861, 862, 863, 864, 0, 0, 0 } ,
428 { 0, 0, 0, 0, 865, 866, 867, 868, 869, 870,
429  871, 872, 873, 874, 875, 876, 877, 878, 879, 880,
430  881, 882, 883, 884, 885, 886, 887, 888, 889, 890,
431  891, 892, 893, 894, 895, 896, 0, 0, 0, 0 } ,
432 { 0, 0, 0, 0, 0, 897, 898, 899, 900, 901,
433  902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
434  912, 913, 914, 915, 916, 917, 918, 919, 920, 921,
435  922, 923, 924, 925, 926, 0, 0, 0, 0, 0 } ,
436 { 0, 0, 0, 0, 0, 0, 927, 928, 929, 930,
437  931, 932, 933, 934, 935, 936, 937, 938, 939, 940,
438  941, 942, 943, 944, 945, 946, 947, 948, 949, 950,
439  951, 952, 953, 954, 0, 0, 0, 0, 0, 0 } ,
440 { 0, 0, 0, 0, 0, 0, 0, 955, 956, 957,
441  958, 959, 960, 961, 962, 963, 964, 965, 966, 967,
442  968, 969, 970, 971, 972, 973, 974, 975, 976, 977,
443  978, 979, 980, 0, 0, 0, 0, 0, 0, 0 } ,
444 { 0, 0, 0, 0, 0, 0, 0, 981, 982, 983,
445  984, 985, 986, 987, 988, 989, 990, 991, 992, 993,
446  994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003,
447  1004, 1005, 1006, 0, 0, 0, 0, 0, 0, 0 } ,
448 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1007,
449  1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
450  1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
451  1028, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
452 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
453  1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
454  1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
455  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
456 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
457  0, 0, 0, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
458  1056, 1057, 1058, 1059, 1060, 1061, 1062, 0, 0, 0,
459  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
460 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461  0, 0, 0, 0, 0, 1063, 1064, 1065, 1066, 1067,
462  1068, 1069, 1070, 1071, 1072, 0, 0, 0, 0, 0,
463  0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
464 };
465 
466 const unsigned short ESDetId::hx1[ kXYMAX ] = {
467  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
468  2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
469  3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
470  4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
471  4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
472  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
473  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
474  5, 5, 5, 5, 6, 6, 6, 6, 6, 6,
475  6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
476  6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
477  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
478  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
479  7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
480  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
481  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
482  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
483  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
484  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
485  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
486  9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
487  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
488  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
489  10, 10, 10, 10, 10, 10, 11, 11, 11, 11,
490  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
491  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
492  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
493  11, 11, 12, 12, 12, 12, 12, 12, 12, 12,
494  12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
495  12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
496  12, 12, 12, 12, 12, 12, 12, 12, 13, 13,
497  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
498  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
499  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
500  13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
501  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
502  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
503  14, 14, 14, 14, 14, 14, 14, 14, 15, 15,
504  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
505  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
506  15, 15, 15, 15, 15, 15, 15, 15, 16, 16,
507  16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
508  16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
509  16, 16, 16, 16, 16, 16, 16, 16, 17, 17,
510  17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
511  17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
512  17, 17, 17, 17, 17, 17, 18, 18, 18, 18,
513  18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
514  18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
515  18, 18, 18, 18, 19, 19, 19, 19, 19, 19,
516  19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
517  19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
518  20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
519  20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
520  20, 20, 20, 20, 20, 20, 21, 21, 21, 21,
521  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
522  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
523  21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
524  22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
525  22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
526  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
527  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
528  23, 23, 23, 23, 23, 23, 24, 24, 24, 24,
529  24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
530  24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
531  24, 24, 24, 24, 25, 25, 25, 25, 25, 25,
532  25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
533  25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
534  25, 25, 25, 25, 26, 26, 26, 26, 26, 26,
535  26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
536  26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
537  26, 26, 26, 26, 27, 27, 27, 27, 27, 27,
538  27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
539  27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
540  27, 27, 27, 27, 27, 27, 27, 27, 28, 28,
541  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
542  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
543  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
544  28, 28, 28, 28, 29, 29, 29, 29, 29, 29,
545  29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
546  29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
547  29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
548  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
549  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
550  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
551  30, 30, 30, 30, 30, 30, 31, 31, 31, 31,
552  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
553  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
554  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
555  32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
556  32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
557  32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
558  32, 32, 33, 33, 33, 33, 33, 33, 33, 33,
559  33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
560  33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
561  33, 33, 33, 33, 34, 34, 34, 34, 34, 34,
562  34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
563  34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
564  34, 34, 35, 35, 35, 35, 35, 35, 35, 35,
565  35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
566  35, 35, 35, 35, 35, 35, 35, 35, 36, 36,
567  36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
568  36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
569  36, 36, 37, 37, 37, 37, 37, 37, 37, 37,
570  37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
571  37, 37, 37, 37, 38, 38, 38, 38, 38, 38,
572  38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
573  39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
574  39, 39
575 };
576 
577 const unsigned short ESDetId::hy1[ kXYMAX ] = {
578  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
579  25, 26, 13, 14, 15, 16, 17, 18, 19, 20,
580  21, 22, 23, 24, 25, 26, 27, 28, 10, 11,
581  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
582  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
583  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
584  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
585  29, 30, 31, 32, 8, 9, 10, 11, 12, 13,
586  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
587  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
588  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
589  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
590  27, 28, 29, 30, 31, 32, 33, 34, 5, 6,
591  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
592  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
593  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
594  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
595  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
596  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
597  35, 36, 4, 5, 6, 7, 8, 9, 10, 11,
598  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
599  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
600  32, 33, 34, 35, 36, 37, 3, 4, 5, 6,
601  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
602  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
603  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
604  37, 38, 3, 4, 5, 6, 7, 8, 9, 10,
605  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
606  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
607  31, 32, 33, 34, 35, 36, 37, 38, 3, 4,
608  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
609  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
610  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
611  35, 36, 37, 38, 2, 3, 4, 5, 6, 7,
612  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
613  18, 23, 24, 25, 26, 27, 28, 29, 30, 31,
614  32, 33, 34, 35, 36, 37, 38, 39, 2, 3,
615  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
616  14, 15, 16, 25, 26, 27, 28, 29, 30, 31,
617  32, 33, 34, 35, 36, 37, 38, 39, 1, 2,
618  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
619  13, 14, 15, 26, 27, 28, 29, 30, 31, 32,
620  33, 34, 35, 36, 37, 38, 39, 40, 1, 2,
621  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
622  13, 14, 27, 28, 29, 30, 31, 32, 33, 34,
623  35, 36, 37, 38, 39, 40, 1, 2, 3, 4,
624  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
625  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
626  37, 38, 39, 40, 1, 2, 3, 4, 5, 6,
627  7, 8, 9, 10, 11, 12, 13, 28, 29, 30,
628  31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
629  1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
630  11, 12, 13, 28, 29, 30, 31, 32, 33, 34,
631  35, 36, 37, 38, 39, 40, 1, 2, 3, 4,
632  5, 6, 7, 8, 9, 10, 11, 12, 13, 28,
633  29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
634  39, 40, 1, 2, 3, 4, 5, 6, 7, 8,
635  9, 10, 11, 12, 13, 28, 29, 30, 31, 32,
636  33, 34, 35, 36, 37, 38, 39, 40, 1, 2,
637  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
638  13, 14, 27, 28, 29, 30, 31, 32, 33, 34,
639  35, 36, 37, 38, 39, 40, 1, 2, 3, 4,
640  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
641  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
642  37, 38, 39, 40, 1, 2, 3, 4, 5, 6,
643  7, 8, 9, 10, 11, 12, 13, 14, 15, 26,
644  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
645  37, 38, 39, 40, 2, 3, 4, 5, 6, 7,
646  8, 9, 10, 11, 12, 13, 14, 15, 16, 25,
647  26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
648  36, 37, 38, 39, 2, 3, 4, 5, 6, 7,
649  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
650  18, 23, 24, 25, 26, 27, 28, 29, 30, 31,
651  32, 33, 34, 35, 36, 37, 38, 39, 3, 4,
652  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
653  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
654  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
655  35, 36, 37, 38, 3, 4, 5, 6, 7, 8,
656  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
657  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
658  29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
659  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
660  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
661  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
662  33, 34, 35, 36, 37, 38, 4, 5, 6, 7,
663  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
664  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
665  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
666  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
667  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
668  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
669  35, 36, 5, 6, 7, 8, 9, 10, 11, 12,
670  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
671  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
672  33, 34, 35, 36, 7, 8, 9, 10, 11, 12,
673  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
674  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
675  33, 34, 8, 9, 10, 11, 12, 13, 14, 15,
676  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
677  26, 27, 28, 29, 30, 31, 32, 33, 9, 10,
678  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
679  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
680  31, 32, 10, 11, 12, 13, 14, 15, 16, 17,
681  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
682  28, 29, 30, 31, 13, 14, 15, 16, 17, 18,
683  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
684  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
685  25, 26
686 };
687 
688 const unsigned short ESDetId::hx2[ kXYMAX ] = {
689  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
691  2, 2, 2, 2, 3, 3, 3, 3, 3, 3,
692  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
693  3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
694  4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
695  4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
696  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
697  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
698  5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
699  6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
700  6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
701  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
702  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
703  7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
704  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
705  8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
706  8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
707  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
708  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
709  9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
710  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
711  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
712  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
713  10, 10, 11, 11, 11, 11, 11, 11, 11, 11,
714  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
715  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
716  11, 11, 11, 11, 11, 11, 12, 12, 12, 12,
717  12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
718  12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
719  12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
720  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
721  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
722  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
723  13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
724  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
725  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
726  14, 14, 14, 14, 14, 14, 14, 14, 15, 15,
727  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
728  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
729  15, 15, 15, 15, 15, 15, 15, 15, 16, 16,
730  16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
731  16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
732  16, 16, 16, 16, 16, 16, 17, 17, 17, 17,
733  17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
734  17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
735  17, 17, 18, 18, 18, 18, 18, 18, 18, 18,
736  18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
737  18, 18, 18, 18, 18, 18, 18, 18, 19, 19,
738  19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
739  19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
740  19, 19, 20, 20, 20, 20, 20, 20, 20, 20,
741  20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
742  20, 20, 20, 20, 20, 20, 21, 21, 21, 21,
743  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
744  21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
745  22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
746  22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
747  22, 22, 22, 22, 23, 23, 23, 23, 23, 23,
748  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
749  23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
750  24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
751  24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
752  24, 24, 24, 24, 24, 24, 25, 25, 25, 25,
753  25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
754  25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
755  25, 25, 25, 25, 26, 26, 26, 26, 26, 26,
756  26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
757  26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
758  26, 26, 26, 26, 27, 27, 27, 27, 27, 27,
759  27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
760  27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
761  27, 27, 27, 27, 27, 27, 28, 28, 28, 28,
762  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
763  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
764  28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
765  28, 28, 29, 29, 29, 29, 29, 29, 29, 29,
766  29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
767  29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
768  29, 29, 29, 29, 29, 29, 30, 30, 30, 30,
769  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
770  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
771  30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
772  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
773  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
774  31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
775  31, 31, 31, 31, 32, 32, 32, 32, 32, 32,
776  32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
777  32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
778  32, 32, 32, 32, 32, 32, 33, 33, 33, 33,
779  33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
780  33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
781  33, 33, 33, 33, 33, 33, 34, 34, 34, 34,
782  34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
783  34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
784  34, 34, 34, 34, 35, 35, 35, 35, 35, 35,
785  35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
786  35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
787  36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
788  36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
789  36, 36, 36, 36, 36, 36, 37, 37, 37, 37,
790  37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
791  37, 37, 37, 37, 37, 37, 37, 37, 38, 38,
792  38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
793  38, 38, 38, 38, 38, 38, 38, 38, 39, 39,
794  39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
795  39, 39, 40, 40, 40, 40, 40, 40, 40, 40,
796  40, 40
797 };
798 
799 const unsigned short ESDetId::hy2[ kXYMAX ] = {
800  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
801  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
802  24, 25, 26, 27, 11, 12, 13, 14, 15, 16,
803  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
804  27, 28, 29, 30, 10, 11, 12, 13, 14, 15,
805  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
806  26, 27, 28, 29, 30, 31, 8, 9, 10, 11,
807  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
808  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
809  32, 33, 8, 9, 10, 11, 12, 13, 14, 15,
810  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
811  26, 27, 28, 29, 30, 31, 32, 33, 7, 8,
812  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
813  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
814  29, 30, 31, 32, 33, 34, 6, 7, 8, 9,
815  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
816  20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
817  30, 31, 32, 33, 34, 35, 5, 6, 7, 8,
818  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
819  19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
820  29, 30, 31, 32, 33, 34, 35, 36, 4, 5,
821  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
822  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
823  26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
824  36, 37, 4, 5, 6, 7, 8, 9, 10, 11,
825  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
826  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
827  32, 33, 34, 35, 36, 37, 4, 5, 6, 7,
828  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
829  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
830  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
831  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
832  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
833  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
834  33, 34, 35, 36, 37, 38, 3, 4, 5, 6,
835  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
836  17, 18, 23, 24, 25, 26, 27, 28, 29, 30,
837  31, 32, 33, 34, 35, 36, 37, 38, 2, 3,
838  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
839  14, 15, 16, 25, 26, 27, 28, 29, 30, 31,
840  32, 33, 34, 35, 36, 37, 38, 39, 2, 3,
841  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
842  14, 15, 26, 27, 28, 29, 30, 31, 32, 33,
843  34, 35, 36, 37, 38, 39, 2, 3, 4, 5,
844  6, 7, 8, 9, 10, 11, 12, 13, 14, 27,
845  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
846  38, 39, 2, 3, 4, 5, 6, 7, 8, 9,
847  10, 11, 12, 13, 14, 27, 28, 29, 30, 31,
848  32, 33, 34, 35, 36, 37, 38, 39, 2, 3,
849  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
850  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
851  38, 39, 2, 3, 4, 5, 6, 7, 8, 9,
852  10, 11, 12, 13, 28, 29, 30, 31, 32, 33,
853  34, 35, 36, 37, 38, 39, 2, 3, 4, 5,
854  6, 7, 8, 9, 10, 11, 12, 13, 28, 29,
855  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
856  2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
857  12, 13, 28, 29, 30, 31, 32, 33, 34, 35,
858  36, 37, 38, 39, 2, 3, 4, 5, 6, 7,
859  8, 9, 10, 11, 12, 13, 14, 27, 28, 29,
860  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
861  2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
862  12, 13, 14, 27, 28, 29, 30, 31, 32, 33,
863  34, 35, 36, 37, 38, 39, 2, 3, 4, 5,
864  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
865  26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
866  36, 37, 38, 39, 2, 3, 4, 5, 6, 7,
867  8, 9, 10, 11, 12, 13, 14, 15, 16, 25,
868  26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
869  36, 37, 38, 39, 3, 4, 5, 6, 7, 8,
870  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
871  23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
872  33, 34, 35, 36, 37, 38, 3, 4, 5, 6,
873  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
874  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
875  27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
876  37, 38, 4, 5, 6, 7, 8, 9, 10, 11,
877  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
878  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
879  32, 33, 34, 35, 36, 37, 4, 5, 6, 7,
880  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
881  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
882  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
883  4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
884  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
885  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
886  34, 35, 36, 37, 5, 6, 7, 8, 9, 10,
887  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
888  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
889  31, 32, 33, 34, 35, 36, 6, 7, 8, 9,
890  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
891  20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
892  30, 31, 32, 33, 34, 35, 7, 8, 9, 10,
893  11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
894  21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
895  31, 32, 33, 34, 8, 9, 10, 11, 12, 13,
896  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
897  24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
898  8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
899  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
900  28, 29, 30, 31, 32, 33, 10, 11, 12, 13,
901  14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
902  24, 25, 26, 27, 28, 29, 30, 31, 11, 12,
903  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
904  23, 24, 25, 26, 27, 28, 29, 30, 14, 15,
905  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
906  26, 27, 16, 17, 18, 19, 20, 21, 22, 23,
907  24, 25
908 };
int strip() const
Definition: ESDetId.h:52
int ib
Definition: cuy.py:660
static const unsigned short hy2[kXYMAX]
Definition: ESDetId.h:104
static const unsigned short hxy2[kXMAX][kYMAX]
Definition: ESDetId.h:102
static const unsigned short hy1[kXYMAX]
Definition: ESDetId.h:100
static const int IY_MAX
Definition: ESDetId.h:73
int six() const
Definition: ESDetId.h:48
static const int ISTRIP_MAX
Definition: ESDetId.h:75
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Definition: ALILine.cc:187
ESDetId & operator=(const DetId &id)
Definition: ESDetId.cc:56
static const int PLANE_MIN
Definition: ESDetId.h:76
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
static void verify(int istrip, int ixs, int iys, int iplane, int iz)
Definition: ESDetId.cc:18
int siy() const
Definition: ESDetId.h:50
static const int PLANE_MAX
Definition: ESDetId.h:77
ESDetId()
Definition: ESDetId.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int zside() const
Definition: ESDetId.h:44
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
static const unsigned short hxy1[kXMAX][kYMAX]
Definition: ESDetId.h:98
Definition: DetId.h:18
static const int IY_MIN
Definition: ESDetId.h:71
static const unsigned short hx2[kXYMAX]
Definition: ESDetId.h:103
uint32_t id_
Definition: DetId.h:55
static bool validDetId(int istrip, int ixs, int iys, int iplane, int iz)
check if a valid index combination
Definition: ESDetId.cc:34
bool null() const
is this a null id ?
Definition: DetId.h:45
static const int IX_MAX
Definition: ESDetId.h:72
int plane() const
Definition: ESDetId.h:46
static ESDetId unhashIndex(int hi)
get a DetId from a compact index for arrays
Definition: ESDetId.cc:87
Detector det() const
get the detector field from this detid
Definition: DetId.h:35
static const unsigned short hx1[kXYMAX]
Definition: ESDetId.h:99
static const int ISTRIP_MIN
Definition: ESDetId.h:74
static bool validHashIndex(int hi)
Definition: ESDetId.h:64
static const int IX_MIN
Definition: ESDetId.h:70
int hashedIndex() const
get a compact index for arrays [TODO: NEEDS WORK]
Definition: ESDetId.cc:69