Belle II Software  release-05-01-25
PXDMappingLookup.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Bjoern Spruck, Peter Kodys *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <pxd/unpacking/PXDMappingLookup.h>
12 #include <framework/logging/Logger.h>
13 
14 #include <stdio.h>
15 #include <vector>
16 
17 using namespace std;
18 using namespace Belle2;
19 using namespace Belle2::PXD;
20 
22 int PXDMappingLookup::getDCDID(const int u, const int v, const VxdID sensorID)
23 {
24 
25  //const SensorInfo& info = dynamic_cast<const SensorInfo&>(VXD::GeoCache::get(
26  // sensorID));
27  int ret = 0;
28  int iLayer = sensorID.getLayerNumber();
29  int iSensor = sensorID.getSensorNumber();
30  int chUMap;
31  chUMap = u;
32  int Direction = 1;
33  if (((iLayer == 1) && (iSensor == 1)) || ((iLayer == 2) && (iSensor == 2))) {
34  // inverted counting in U direction:
35  chUMap = 249 - u;
36  Direction = -1;
37  }
38  float fID;
39  fID = (float)chUMap / 62.5;
40  if ((chUMap == 62) || (chUMap == 187)) {
41  if ((v % 4) >= 2) fID = fID + Direction;
42  }
43  ret = (int)fID;
44  return ret + 1;
45 } //getDCDID
46 
48 int PXDMappingLookup::getSWBID(const int v)
49 {
50  return (int)(v / 128) + 1;
51 } //getSWBID
52 
54 void PXDMappingLookup::map_rc_to_uv_IF_OB(unsigned int& v_cellID, unsigned int& u_cellID, const unsigned int dhp_id,
55  const unsigned int dhe_ID)
56 {
57  unsigned int DCD_channel = 0;
58  unsigned int Drain = 0;
59  unsigned int row = 0;
60  static std::vector <unsigned int> LUT_IF_OB = {
61  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 1023, 1023, 1023, 1023, 1023, 1023, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
62  208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
63  176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
64  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
65  112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
66  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
67  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
68  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
69  490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 1023, 1023, 1023, 1023, 1023, 1023, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
70  458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
71  426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
72  394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
73  362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
74  330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
75  298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
76  266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
77  740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 1023, 1023, 1023, 1023, 1023, 1023, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739,
78  708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707,
79  676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
80  644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643,
81  612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611,
82  580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
83  548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547,
84  516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
85  990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1023, 1023, 1023, 1023, 1023, 1023, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989,
86  958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957,
87  926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925,
88  894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893,
89  862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861,
90  830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829,
91  798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
92  766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765
93  };
94 
95  // B2INFO("Remapped :: From COL $" << u_cellID << " ROW $" << v_cellID);
96  DCD_channel = (u_cellID << 2) + (v_cellID & 0x3) + 256 * dhp_id;
97  Drain = LUT_IF_OB[DCD_channel];
98  u_cellID = Drain >> 2;
99  row = (v_cellID & ~0x3) + (Drain & 0x3); // no ~ bei drain
100  row = row % 768;
101  if ((dhe_ID & 0x20) == 0) {//if inner module
102  v_cellID = 768 - 1 - row ;
103 
104  } else {//if outer module
105  v_cellID = row ;
106  }
107 // B2DEBUG(99,"Remapped ::To COL COL $" << u_cellID << " ROW $" << v_cellID);
108 }
109 
110 void PXDMappingLookup::map_uv_to_rc_IF_OB(unsigned int& v_cellID, unsigned int& u_cellID,
111  __attribute__((unused)) unsigned int& dhp_id,
112  const unsigned int dhe_ID)
113 {
114  B2FATAL("Code to be written");
115  unsigned int row;
116  if ((dhe_ID & 0x20) == 0) { //if inner module
117  row = 768 - 1 - v_cellID ;
118  } else { //if outer module
119  row = v_cellID;
120  }
121  v_cellID = row;
122  u_cellID = 0;
123 }
124 
126 void PXDMappingLookup::map_rc_to_uv_IB_OF(unsigned int& v_cellID, unsigned int& u_cellID, const unsigned int dhp_id,
127  const unsigned int dhe_ID)
128 {
129  unsigned int DCD_channel = 0;
130  unsigned int Drain = 0;
131  unsigned int row = 0;
132  static std::vector <unsigned int> LUT_IB_OF = {
133  243, 242, 241, 240, 247, 246, 245, 244, 251, 250, 1023, 1023, 1023, 1023, 1023, 1023, 227, 226, 225, 224, 231, 230, 229, 228, 235, 234, 233, 232, 239, 238, 237, 236,
134  211, 210, 209, 208, 215, 214, 213, 212, 219, 218, 217, 216, 223, 222, 221, 220, 195, 194, 193, 192, 199, 198, 197, 196, 203, 202, 201, 200, 207, 206, 205, 204,
135  179, 178, 177, 176, 183, 182, 181, 180, 187, 186, 185, 184, 191, 190, 189, 188, 163, 162, 161, 160, 167, 166, 165, 164, 171, 170, 169, 168, 175, 174, 173, 172,
136  147, 146, 145, 144, 151, 150, 149, 148, 155, 154, 153, 152, 159, 158, 157, 156, 131, 130, 129, 128, 135, 134, 133, 132, 139, 138, 137, 136, 143, 142, 141, 140,
137  115, 114, 113, 112, 119, 118, 117, 116, 123, 122, 121, 120, 127, 126, 125, 124, 99, 98, 97, 96, 103, 102, 101, 100, 107, 106, 105, 104, 111, 110, 109, 108,
138  83, 82, 81, 80, 87, 86, 85, 84, 91, 90, 89, 88, 95, 94, 93, 92, 67, 66, 65, 64, 71, 70, 69, 68, 75, 74, 73, 72, 79, 78, 77, 76,
139  51, 50, 49, 48, 55, 54, 53, 52, 59, 58, 57, 56, 63, 62, 61, 60, 35, 34, 33, 32, 39, 38, 37, 36, 43, 42, 41, 40, 47, 46, 45, 44,
140  19, 18, 17, 16, 23, 22, 21, 20, 27, 26, 25, 24, 31, 30, 29, 28, 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12,
141  489, 488, 495, 494, 493, 492, 499, 498, 497, 496, 1023, 1023, 1023, 1023, 1023, 1023, 473, 472, 479, 478, 477, 476, 483, 482, 481, 480, 487, 486, 485, 484, 491, 490,
142  457, 456, 463, 462, 461, 460, 467, 466, 465, 464, 471, 470, 469, 468, 475, 474, 441, 440, 447, 446, 445, 444, 451, 450, 449, 448, 455, 454, 453, 452, 459, 458,
143  425, 424, 431, 430, 429, 428, 435, 434, 433, 432, 439, 438, 437, 436, 443, 442, 409, 408, 415, 414, 413, 412, 419, 418, 417, 416, 423, 422, 421, 420, 427, 426,
144  393, 392, 399, 398, 397, 396, 403, 402, 401, 400, 407, 406, 405, 404, 411, 410, 377, 376, 383, 382, 381, 380, 387, 386, 385, 384, 391, 390, 389, 388, 395, 394,
145  361, 360, 367, 366, 365, 364, 371, 370, 369, 368, 375, 374, 373, 372, 379, 378, 345, 344, 351, 350, 349, 348, 355, 354, 353, 352, 359, 358, 357, 356, 363, 362,
146  329, 328, 335, 334, 333, 332, 339, 338, 337, 336, 343, 342, 341, 340, 347, 346, 313, 312, 319, 318, 317, 316, 323, 322, 321, 320, 327, 326, 325, 324, 331, 330,
147  297, 296, 303, 302, 301, 300, 307, 306, 305, 304, 311, 310, 309, 308, 315, 314, 281, 280, 287, 286, 285, 284, 291, 290, 289, 288, 295, 294, 293, 292, 299, 298,
148  265, 264, 271, 270, 269, 268, 275, 274, 273, 272, 279, 278, 277, 276, 283, 282, 249, 248, 255, 254, 253, 252, 259, 258, 257, 256, 263, 262, 261, 260, 267, 266,
149  743, 742, 741, 740, 747, 746, 745, 744, 751, 750, 1023, 1023, 1023, 1023, 1023, 1023, 727, 726, 725, 724, 731, 730, 729, 728, 735, 734, 733, 732, 739, 738, 737, 736,
150  711, 710, 709, 708, 715, 714, 713, 712, 719, 718, 717, 716, 723, 722, 721, 720, 695, 694, 693, 692, 699, 698, 697, 696, 703, 702, 701, 700, 707, 706, 705, 704,
151  679, 678, 677, 676, 683, 682, 681, 680, 687, 686, 685, 684, 691, 690, 689, 688, 663, 662, 661, 660, 667, 666, 665, 664, 671, 670, 669, 668, 675, 674, 673, 672,
152  647, 646, 645, 644, 651, 650, 649, 648, 655, 654, 653, 652, 659, 658, 657, 656, 631, 630, 629, 628, 635, 634, 633, 632, 639, 638, 637, 636, 643, 642, 641, 640,
153  615, 614, 613, 612, 619, 618, 617, 616, 623, 622, 621, 620, 627, 626, 625, 624, 599, 598, 597, 596, 603, 602, 601, 600, 607, 606, 605, 604, 611, 610, 609, 608,
154  583, 582, 581, 580, 587, 586, 585, 584, 591, 590, 589, 588, 595, 594, 593, 592, 567, 566, 565, 564, 571, 570, 569, 568, 575, 574, 573, 572, 579, 578, 577, 576,
155  551, 550, 549, 548, 555, 554, 553, 552, 559, 558, 557, 556, 563, 562, 561, 560, 535, 534, 533, 532, 539, 538, 537, 536, 543, 542, 541, 540, 547, 546, 545, 544,
156  519, 518, 517, 516, 523, 522, 521, 520, 527, 526, 525, 524, 531, 530, 529, 528, 503, 502, 501, 500, 507, 506, 505, 504, 511, 510, 509, 508, 515, 514, 513, 512,
157  989, 988, 995, 994, 993, 992, 999, 998, 997, 996, 1023, 1023, 1023, 1023, 1023, 1023, 973, 972, 979, 978, 977, 976, 983, 982, 981, 980, 987, 986, 985, 984, 991, 990,
158  957, 956, 963, 962, 961, 960, 967, 966, 965, 964, 971, 970, 969, 968, 975, 974, 941, 940, 947, 946, 945, 944, 951, 950, 949, 948, 955, 954, 953, 952, 959, 958,
159  925, 924, 931, 930, 929, 928, 935, 934, 933, 932, 939, 938, 937, 936, 943, 942, 909, 908, 915, 914, 913, 912, 919, 918, 917, 916, 923, 922, 921, 920, 927, 926,
160  893, 892, 899, 898, 897, 896, 903, 902, 901, 900, 907, 906, 905, 904, 911, 910, 877, 876, 883, 882, 881, 880, 887, 886, 885, 884, 891, 890, 889, 888, 895, 894,
161  861, 860, 867, 866, 865, 864, 871, 870, 869, 868, 875, 874, 873, 872, 879, 878, 845, 844, 851, 850, 849, 848, 855, 854, 853, 852, 859, 858, 857, 856, 863, 862,
162  829, 828, 835, 834, 833, 832, 839, 838, 837, 836, 843, 842, 841, 840, 847, 846, 813, 812, 819, 818, 817, 816, 823, 822, 821, 820, 827, 826, 825, 824, 831, 830,
163  797, 796, 803, 802, 801, 800, 807, 806, 805, 804, 811, 810, 809, 808, 815, 814, 781, 780, 787, 786, 785, 784, 791, 790, 789, 788, 795, 794, 793, 792, 799, 798,
164  765, 764, 771, 770, 769, 768, 775, 774, 773, 772, 779, 778, 777, 776, 783, 782, 749, 748, 755, 754, 753, 752, 759, 758, 757, 756, 763, 762, 761, 760, 767, 766
165  };
166 
167  DCD_channel = (u_cellID << 2) + (v_cellID & 0x3) + 256 * dhp_id;
168  Drain = LUT_IB_OF[DCD_channel];
169  u_cellID = 250 - 1 - (Drain >> 2);
170  if (u_cellID >= 250) u_cellID = 255; // workaround for negative values!!! fix LUT above!
171 // row = (v_cellID / 4) * 4 + Drain % 4;
172  row = (v_cellID & ~0x3) + ((~Drain) & 0x3); // ~ bei drain
173  row = row % 768;
174  if ((dhe_ID & 0x20) == 0) { //if inner module
175  v_cellID = 768 - 1 - row ;
176  } else { //if outer module
177  v_cellID = row ;
178  }
179 // B2DEBUG(99,"Remapped ::To COL COL $" << u_cellID << " ROW $" << v_cellID);
180 }
181 
182 void PXDMappingLookup::map_uv_to_rc_IB_OF(unsigned int& v_cellID, unsigned int& u_cellID,
183  __attribute__((unused)) unsigned int& dhp_id,
184  const unsigned int dhe_ID)
185 {
186  B2FATAL("Code to be written");
187  // slow way until we have tables
188  unsigned int row;
189  if ((dhe_ID & 0x20) == 0) { //if inner module
190  row = 768 - 1 - v_cellID ;
191  } else { //if outer module
192  row = v_cellID;
193  }
194  v_cellID = row;
195  u_cellID = 0;
196 }
197 
198 void PXDMappingLookup::write_mapping_to_file(void)
199 {
200  FILE* file = fopen("lut.csv", "wt+");
201  if (file) {
202  for (unsigned int row = 0; row < 4; ++row) {
203  for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
204  for (unsigned int col = 0; col < 64; ++col) {
205  unsigned int coli;
206  unsigned int rowi;
207  coli = col;
208  rowi = row;
209  map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x00);
210  fprintf(file, "%u; %u; %u; %u; %u; " , row, dhp_id, col, rowi, coli);
211  coli = col;
212  rowi = row;
213  map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x00);
214  fprintf(file, "%u; %u\n" , rowi, coli);
215  }
216  }
217  }
218 
219  for (unsigned int row = 0; row < 4; ++row) {
220  for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
221  for (unsigned int col = 0; col < 64; ++col) {
222  unsigned int coli;
223  unsigned int rowi;
224  coli = col;
225  rowi = row;
226  map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x01);
227  fprintf(file, "%u; %u; %u; %u; %u; " , row, dhp_id, col, rowi, coli);
228  coli = col;
229  rowi = row;
230  map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x01);
231  fprintf(file, "%u; %u\n" , rowi, coli);
232  }
233  }
234  }
235 
236 
237  for (unsigned int row = 0; row < 4; ++row) {
238  for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
239  for (unsigned int col = 0; col < 64; ++col) {
240  unsigned int coli;
241  unsigned int rowi;
242  coli = col;
243  rowi = row;
244  map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x20);
245  fprintf(file, "%u; %u; %u; %u; %u; " , row, dhp_id, col, rowi, coli);
246  coli = col;
247  rowi = row;
248  map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x20);
249  fprintf(file, "%u; %u\n" , rowi, coli);
250  }
251  }
252  }
253 
254 
255  for (unsigned int row = 0; row < 4; ++row) {
256  for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
257  for (unsigned int col = 0; col < 64; ++col) {
258  unsigned int coli;
259  unsigned int rowi;
260  coli = col;
261  rowi = row;
262  map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x21);
263  fprintf(file, "%u; %u; %u; %u; %u; " , row, dhp_id, col, rowi, coli);
264  coli = col;
265  rowi = row;
266  map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x21);
267  fprintf(file, "%u; %u\n" , rowi, coli);
268  }
269  }
270  }
271 
272  fclose(file);
273  }
274 }
275 
276 void PXDMappingLookup::write_inversemapping_to_file(void)
277 {
278  B2FATAL("Code to be written");
279 }
280 
281 
282 void PXDMappingLookup::check(void)
283 {
284  unsigned int dhe_ID[4] = {0x02, 0x03, 0x22, 0x23};// one of each kind, IB, OB, IF, OF
285  for (int i = 0; i < 4; i++) {
286  unsigned int dhe = dhe_ID[i];
287  for (unsigned int u_org = 0; i < 768; i++) {
288  for (unsigned int v_org = 0; v_org < 250; v_org++) {
289  unsigned int r, c, u, v;
290  unsigned int dhp_id = 0;
291 
292  // if we call IF-OB with wrong DHE ID, we do not expect the correct result _BUT_ still it should be consistent
293  c = u_org;
294  map_uv_to_rc_IF_OB(r, c, dhp_id, dhe);
295  v = r;
296  u = c;
297  map_rc_to_uv_IF_OB(v, u, dhp_id, dhe);
298 
299  if (u != u_org || v != v_org) {
300  B2ERROR("Mapping failed (IF-OB)! DHE $%02X V/U %u %u -> R/C %u %u DHP (%u) -> V/U %u %u" <<
301  dhe << v_org << u_org << r << c << dhp_id << v << u);
302  }
303 
304  // if we call IB-OF with wrong DHE ID, we do not expect the correct result _BUT_ still it should be consistent
305  c = u_org;
306  r = v_org;
307  map_uv_to_rc_IB_OF(r, c, dhp_id, dhe);
308  v = r;
309  u = c;
310  map_rc_to_uv_IB_OF(v, u, dhp_id, dhe);
311 
312  if (u != u_org || v != v_org) {
313  B2ERROR("Mapping failed (IB-OF)! DHE $%02X V/U %u %u -> R/C %u %u DHP (%u) -> V/U %u %u" <<
314  dhe << v_org << u_org << r << c << dhp_id << v << u);
315  }
316  }
317  }
318  }
319 }
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXD
Namespace to encapsulate code needed for simulation and reconstrucion of the PXD.
Definition: PXDCalibrationUtilities.h:28
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::VxdID::getSensorNumber
baseType getSensorNumber() const
Get the sensor id.
Definition: VxdID.h:110
Belle2::VxdID::getLayerNumber
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:106