Belle II Software development
PXDMappingLookup.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <pxd/unpacking/PXDMappingLookup.h>
10#include <vxd/dataobjects/VxdID.h>
11#include <framework/logging/Logger.h>
12
13#include <stdio.h>
14#include <vector>
15
16using namespace std;
17using namespace Belle2;
18using namespace Belle2::PXD;
19
21int PXDMappingLookup::getDCDID(const int u, const int v, const VxdID sensorID)
22{
23
24 //const SensorInfo& info = dynamic_cast<const SensorInfo&>(VXD::GeoCache::getInstance().getSensorInfo(
25 // sensorID));
26 int ret = 0;
27 int iLayer = sensorID.getLayerNumber();
28 int iSensor = sensorID.getSensorNumber();
29 int chUMap;
30 chUMap = u;
31 int Direction = 1;
32 if (((iLayer == 1) && (iSensor == 1)) || ((iLayer == 2) && (iSensor == 2))) {
33 // inverted counting in U direction:
34 chUMap = 249 - u;
35 Direction = -1;
36 }
37 float fID;
38 fID = (float)chUMap / 62.5;
39 if ((chUMap == 62) || (chUMap == 187)) {
40 if ((v % 4) >= 2) fID = fID + Direction;
41 }
42 ret = (int)fID;
43 return ret + 1;
44} //getDCDID
45
48{
49 return (int)(v / 128) + 1;
50} //getSWBID
51
53void PXDMappingLookup::map_rc_to_uv_IF_OB(unsigned int& v_cellID, unsigned int& u_cellID, const unsigned int dhp_id,
54 const unsigned int dhe_ID)
55{
56 unsigned int DCD_channel = 0;
57 unsigned int Drain = 0;
58 unsigned int row = 0;
59 static std::vector <unsigned int> LUT_IF_OB = {
60 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,
61 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,
62 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,
63 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,
64 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,
65 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,
66 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,
67 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,
68 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,
69 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,
70 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,
71 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,
72 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,
73 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,
74 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,
75 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,
76 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,
77 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,
78 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,
79 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,
80 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,
81 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,
82 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,
83 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,
84 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,
85 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,
86 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,
87 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,
88 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,
89 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,
90 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,
91 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
92 };
93
94 // B2INFO("Remapped :: From COL $" << u_cellID << " ROW $" << v_cellID);
95 DCD_channel = (u_cellID << 2) + (v_cellID & 0x3) + 256 * dhp_id;
96 Drain = LUT_IF_OB[DCD_channel];
97 u_cellID = Drain >> 2;
98 row = (v_cellID & ~0x3) + (Drain & 0x3); // no ~ bei drain
99 row = row % 768;
100 if ((dhe_ID & 0x20) == 0) {//if inner module
101 v_cellID = 768 - 1 - row ;
102
103 } else {//if outer module
104 v_cellID = row ;
105 }
106// B2DEBUG(99,"Remapped ::To COL COL $" << u_cellID << " ROW $" << v_cellID);
107}
108
109void PXDMappingLookup::map_uv_to_rc_IF_OB(unsigned int& v_cellID, unsigned int& u_cellID,
110 __attribute__((unused)) unsigned int& dhp_id,
111 const unsigned int dhe_ID)
112{
113 B2FATAL("Code to be written");
114 unsigned int row;
115 if ((dhe_ID & 0x20) == 0) { //if inner module
116 row = 768 - 1 - v_cellID ;
117 } else { //if outer module
118 row = v_cellID;
119 }
120 v_cellID = row;
121 u_cellID = 0;
122}
123
125void PXDMappingLookup::map_rc_to_uv_IB_OF(unsigned int& v_cellID, unsigned int& u_cellID, const unsigned int dhp_id,
126 const unsigned int dhe_ID)
127{
128 unsigned int DCD_channel = 0;
129 unsigned int Drain = 0;
130 unsigned int row = 0;
131 static std::vector <unsigned int> LUT_IB_OF = {
132 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,
133 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,
134 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,
135 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,
136 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,
137 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,
138 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,
139 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,
140 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,
141 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,
142 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,
143 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,
144 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,
145 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,
146 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,
147 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,
148 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,
149 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,
150 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,
151 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,
152 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,
153 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,
154 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,
155 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,
156 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,
157 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,
158 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,
159 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,
160 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,
161 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,
162 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,
163 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
164 };
165
166 DCD_channel = (u_cellID << 2) + (v_cellID & 0x3) + 256 * dhp_id;
167 Drain = LUT_IB_OF[DCD_channel];
168 if (Drain >> 2 >= 250) u_cellID = 255;
169 else u_cellID = 250 - 1 - (Drain >> 2);
170// row = (v_cellID / 4) * 4 + Drain % 4;
171 row = (v_cellID & ~0x3) + ((~Drain) & 0x3); // ~ bei drain
172 row = row % 768;
173 if ((dhe_ID & 0x20) == 0) { //if inner module
174 v_cellID = 768 - 1 - row ;
175 } else { //if outer module
176 v_cellID = row ;
177 }
178// B2DEBUG(99,"Remapped ::To COL COL $" << u_cellID << " ROW $" << v_cellID);
179}
180
181void PXDMappingLookup::map_uv_to_rc_IB_OF(unsigned int& v_cellID, unsigned int& u_cellID,
182 __attribute__((unused)) unsigned int& dhp_id,
183 const unsigned int dhe_ID)
184{
185 B2FATAL("Code to be written");
186 // slow way until we have tables
187 unsigned int row;
188 if ((dhe_ID & 0x20) == 0) { //if inner module
189 row = 768 - 1 - v_cellID ;
190 } else { //if outer module
191 row = v_cellID;
192 }
193 v_cellID = row;
194 u_cellID = 0;
195}
196
198{
199 FILE* file = fopen("lut.csv", "wt+");
200 if (file) {
201 for (unsigned int row = 0; row < 4; ++row) {
202 for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
203 for (unsigned int col = 0; col < 64; ++col) {
204 unsigned int coli;
205 unsigned int rowi;
206 coli = col;
207 rowi = row;
208 map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x00);
209 fprintf(file, "%u; %u; %u; %u; %u; ", row, dhp_id, col, rowi, coli);
210 coli = col;
211 rowi = row;
212 map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x00);
213 fprintf(file, "%u; %u\n", rowi, coli);
214 }
215 }
216 }
217
218 for (unsigned int row = 0; row < 4; ++row) {
219 for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
220 for (unsigned int col = 0; col < 64; ++col) {
221 unsigned int coli;
222 unsigned int rowi;
223 coli = col;
224 rowi = row;
225 map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x01);
226 fprintf(file, "%u; %u; %u; %u; %u; ", row, dhp_id, col, rowi, coli);
227 coli = col;
228 rowi = row;
229 map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x01);
230 fprintf(file, "%u; %u\n", rowi, coli);
231 }
232 }
233 }
234
235
236 for (unsigned int row = 0; row < 4; ++row) {
237 for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
238 for (unsigned int col = 0; col < 64; ++col) {
239 unsigned int coli;
240 unsigned int rowi;
241 coli = col;
242 rowi = row;
243 map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x20);
244 fprintf(file, "%u; %u; %u; %u; %u; ", row, dhp_id, col, rowi, coli);
245 coli = col;
246 rowi = row;
247 map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x20);
248 fprintf(file, "%u; %u\n", rowi, coli);
249 }
250 }
251 }
252
253
254 for (unsigned int row = 0; row < 4; ++row) {
255 for (unsigned int dhp_id = 0; dhp_id < 4; ++dhp_id) {
256 for (unsigned int col = 0; col < 64; ++col) {
257 unsigned int coli;
258 unsigned int rowi;
259 coli = col;
260 rowi = row;
261 map_rc_to_uv_IF_OB(rowi, coli, dhp_id, 0x21);
262 fprintf(file, "%u; %u; %u; %u; %u; ", row, dhp_id, col, rowi, coli);
263 coli = col;
264 rowi = row;
265 map_rc_to_uv_IB_OF(rowi, coli, dhp_id, 0x21);
266 fprintf(file, "%u; %u\n", rowi, coli);
267 }
268 }
269 }
270
271 fclose(file);
272 }
273}
274
276{
277 B2FATAL("Code to be written");
278}
279
280
282{
283 const unsigned int dhe_ID[4] = {0x02, 0x03, 0x22, 0x23};// one of each kind, IB, OB, IF, OF
284 for (int i = 0; i < 4; i++) {
285 unsigned int dhe = dhe_ID[i];
286 for (unsigned int u_org = 0; i < 768; i++) {
287 for (unsigned int v_org = 0; v_org < 250; v_org++) {
288 unsigned int r, c, u, v;
289 unsigned int dhp_id = 0;
290
291 // if we call IF-OB with wrong DHE ID, we do not expect the correct result _BUT_ still it should be consistent
292 c = u_org;
293 map_uv_to_rc_IF_OB(r, c, dhp_id, dhe);
294 v = r;
295 u = c;
296 map_rc_to_uv_IF_OB(v, u, dhp_id, dhe);
297
298 if (u != u_org || v != v_org) {
299 B2ERROR("Mapping failed (IF-OB)! DHE $%02X V/U %u %u -> R/C %u %u DHP (%u) -> V/U %u %u" <<
300 dhe << v_org << u_org << r << c << dhp_id << v << u);
301 }
302
303 // if we call IB-OF with wrong DHE ID, we do not expect the correct result _BUT_ still it should be consistent
304 c = u_org;
305 r = v_org;
306 map_uv_to_rc_IB_OF(r, c, dhp_id, dhe);
307 v = r;
308 u = c;
309 map_rc_to_uv_IB_OF(v, u, dhp_id, dhe);
310
311 if (u != u_org || v != v_org) {
312 B2ERROR("Mapping failed (IB-OF)! DHE $%02X V/U %u %u -> R/C %u %u DHP (%u) -> V/U %u %u" <<
313 dhe << v_org << u_org << r << c << dhp_id << v << u);
314 }
315 }
316 }
317 }
318}
static int getDCDID(const int u, const int v, const VxdID sensorID)
get ID of DCD for giving pixel, range: 1..4.
static void check(void)
consistency check
static void map_rc_to_uv_IF_OB(unsigned int &row_u, unsigned int &col_v, const unsigned int dhp_id, const unsigned int dhe_ID)
Maps row/col of inner forward (IF) and outer backward (OB) modules of the PXD to U/V cell.
static int getSWBID(const int v)
get ID of SWB for giving pixel, range: 1..6.
static void map_rc_to_uv_IB_OF(unsigned int &row_u, unsigned int &col_v, const unsigned int dhp_id, const unsigned int dhe_ID)
Maps row/cols of inner backward (IB) and outer forward (OF) modules of the PXD to U/V cell.
static void map_uv_to_rc_IF_OB(unsigned int &row_u, unsigned int &col_v, unsigned int &dhp_id, const unsigned int dhe_ID)
Maps U/V cell of inner forward (IF) and outer backward (OB) modules of the PXD to row/col/dhpid.
static void map_uv_to_rc_IB_OF(unsigned int &row_u, unsigned int &col_v, unsigned int &dhp_id, const unsigned int dhe_ID)
Maps U/V cell of inner backward (IB) and outer forward (OF) modules of the PXD to row/col/dhpid.
static void write_mapping_to_file(void)
write out LUT to file for cross-check
static void write_inversemapping_to_file(void)
write out inverse LUT to file for cross-check
Class to uniquely identify a any structure of the PXD and SVD.
Definition VxdID.h:32
baseType getSensorNumber() const
Get the sensor id.
Definition VxdID.h:99
baseType getLayerNumber() const
Get the layer id.
Definition VxdID.h:95
Namespace to encapsulate code needed for simulation and reconstrucion of the PXD.
Abstract base class for different kinds of events.
STL namespace.