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