84 bitset<12> n_1234_888 = (b_adr14_8 & b_adr24_8 & b_adr34_8);
85 bitset<12> n_1234_889 = (b_adr14_8 & b_adr24_8 & b_adr34_9);
86 bitset<12> n_1234_880 = (b_adr14_8 & b_adr24_8 & b_adr34_0);
87 bitset<12> n_1234_881 = (b_adr14_8 & b_adr24_8 & b_adr34_1);
88 bitset<12> n_1234_898 = (b_adr14_8 & b_adr24_9 & b_adr34_8);
89 bitset<12> n_1234_899 = (b_adr14_8 & b_adr24_9 & b_adr34_9);
90 bitset<12> n_1234_890 = (b_adr14_8 & b_adr24_9 & b_adr34_0);
91 bitset<12> n_1234_891 = (b_adr14_8 & b_adr24_9 & b_adr34_1);
92 bitset<12> n_1234_800 = (b_adr14_8 & b_adr24_0 & b_adr34_0);
93 bitset<12> n_1234_801 = (b_adr14_8 & b_adr24_0 & b_adr34_1);
94 bitset<12> n_1234_810 = (b_adr14_8 & b_adr24_1 & b_adr34_0);
95 bitset<12> n_1234_811 = (b_adr14_8 & b_adr24_1 & b_adr34_1);
97 bitset<12> n_1234_988 = (b_adr14_9 & b_adr24_8 & b_adr34_8);
98 bitset<12> n_1234_989 = (b_adr14_9 & b_adr24_8 & b_adr34_9);
99 bitset<12> n_1234_980 = (b_adr14_9 & b_adr24_8 & b_adr34_0);
100 bitset<12> n_1234_981 = (b_adr14_9 & b_adr24_8 & b_adr34_1);
101 bitset<12> n_1234_998 = (b_adr14_9 & b_adr24_9 & b_adr34_8);
102 bitset<12> n_1234_999 = (b_adr14_9 & b_adr24_9 & b_adr34_9);
103 bitset<12> n_1234_990 = (b_adr14_9 & b_adr24_9 & b_adr34_0);
104 bitset<12> n_1234_991 = (b_adr14_9 & b_adr24_9 & b_adr34_1);
105 bitset<12> n_1234_900 = (b_adr14_9 & b_adr24_0 & b_adr34_0);
106 bitset<12> n_1234_901 = (b_adr14_9 & b_adr24_0 & b_adr34_1);
107 bitset<12> n_1234_910 = (b_adr14_9 & b_adr24_1 & b_adr34_0);
108 bitset<12> n_1234_911 = (b_adr14_9 & b_adr24_1 & b_adr34_1);
110 bitset<12> n_123_88 = (b_adr13_8 & b_adr23_8);
111 bitset<12> n_123_89 = (b_adr13_8 & b_adr23_9);
112 bitset<12> n_123_80 = (b_adr13_8 & b_adr23_0);
113 bitset<12> n_123_81 = (b_adr13_8 & b_adr23_1);
115 bitset<12> n_123_98 = (b_adr13_9 & b_adr23_8);
116 bitset<12> n_123_99 = (b_adr13_9 & b_adr23_9);
117 bitset<12> n_123_90 = (b_adr13_9 & b_adr23_0);
118 bitset<12> n_123_91 = (b_adr13_9 & b_adr23_1);
120 bitset<12> n_124_88 = (b_adr14_8 & b_adr24_8);
121 bitset<12> n_124_89 = (b_adr14_8 & b_adr24_9);
122 bitset<12> n_124_80 = (b_adr14_8 & b_adr24_0);
123 bitset<12> n_124_81 = (b_adr14_8 & b_adr24_1);
125 bitset<12> n_124_98 = (b_adr14_9 & b_adr24_8);
126 bitset<12> n_124_99 = (b_adr14_9 & b_adr24_9);
127 bitset<12> n_124_90 = (b_adr14_9 & b_adr24_0);
128 bitset<12> n_124_91 = (b_adr14_9 & b_adr24_1);
130 bitset<12> n_134_88 = (b_adr14_8 & b_adr34_8);
131 bitset<12> n_134_89 = (b_adr14_8 & b_adr34_9);
132 bitset<12> n_134_80 = (b_adr14_8 & b_adr34_0);
133 bitset<12> n_134_81 = (b_adr14_8 & b_adr34_1);
135 bitset<12> n_134_98 = (b_adr14_9 & b_adr34_8);
136 bitset<12> n_134_99 = (b_adr14_9 & b_adr34_9);
137 bitset<12> n_134_90 = (b_adr14_9 & b_adr34_0);
138 bitset<12> n_134_91 = (b_adr14_9 & b_adr34_1);
140 bitset<12> n_234_88 = (b_adr24_8 & b_adr34_8);
141 bitset<12> n_234_89 = (b_adr24_8 & b_adr34_9);
142 bitset<12> n_234_80 = (b_adr24_8 & b_adr34_0);
143 bitset<12> n_234_81 = (b_adr24_8 & b_adr34_1);
145 bitset<12> n_234_98 = (b_adr24_9 & b_adr34_8);
146 bitset<12> n_234_99 = (b_adr24_9 & b_adr34_9);
147 bitset<12> n_234_90 = (b_adr24_9 & b_adr34_0);
148 bitset<12> n_234_91 = (b_adr24_9 & b_adr34_1);
150 bitset<12> n_12_8 = b_adr12_8;
151 bitset<12> n_12_9 = b_adr12_9;
153 bitset<12> n_13_8 = b_adr13_8;
154 bitset<12> n_13_9 = b_adr13_9;
156 bitset<12> n_14_8 = b_adr14_8;
157 bitset<12> n_14_9 = b_adr14_9;
159 bitset<12> n_23_8 = b_adr23_8;
160 bitset<12> n_23_9 = b_adr23_9;
162 bitset<12> n_24_8 = b_adr24_8;
163 bitset<12> n_24_9 = b_adr24_9;
165 bitset<12> n_34_8 = b_adr34_8;
166 bitset<12> n_34_9 = b_adr34_9;
361 unsigned int global1 = 0;
362 unsigned int group1 = 0;
370 for (
int i = 0;
i < 56;
i++) {
379 unsigned int global2 = 0;
380 unsigned int group2 = 0;
434 if ((s2_2 == 15 && s3_2 == 15 && s4_2 == 15) || (s1_2 == 15 && s3_2 == 15 && s4_2 == 15) ||
435 (s1_2 == 15 && s2_2 == 15 && s4_2 == 15) || (s1_2 == 15 && s2_2 == 15 && s3_2 == 15)) {
437 cout <<
"L1MuBMTrackAssembler: second track has been cancelled" << endl;
462 for (
int i = 0;
i < 68;
i++)
464 for (
int j = 0;
j < 12;
j++)
480 cout <<
"Track Assembler : " << endl;
482 cout <<
" Priority Table 2 : " 563 priority = 56 +
group;
568 priority = 44 +
group;
573 priority = 40 +
group;
578 priority = 36 +
group;
583 priority = 32 +
group;
588 priority = 28 +
group;
593 priority = 24 +
group;
598 priority = 20 +
group;
603 priority = 16 +
group;
608 priority = 12 +
group;
687 priority = 44 +
group;
692 priority = 40 +
group;
697 priority = 36 +
group;
702 priority = 32 +
group;
707 priority = 28 +
group;
712 priority = 24 +
group;
717 priority = 20 +
group;
722 priority = 16 +
group;
727 priority = 12 +
group;
1304 unsigned int result = 15;
1306 for (
int i = 0;
i < 12;
i++) {
1320 for (
int i = 0;
i < 4;
i++) {
1332 unsigned int result = 31;
1334 for (
int i = 0;
i < 22;
i++) {
1346 unsigned int result = 31;
1348 for (
int i = 0;
i < 21;
i++) {
1362 unsigned int result = 15;
1364 for (
int i = 0;
i < 12;
i++) {
1380 unsigned int result = 15;
1382 for (
int i = 0;
i < 11;
i += 2) {
1401 for (
int i =
pos + length;
i < 68;
i++)
1406 return s.to_ulong();
1415 for (
int i =
pos + length;
i < 56;
i++)
1420 return s.to_ulong();
1433 bitset<56>
b(
string(
"00000111111100000111000001110000011100000111010101010101"));
1438 bitset<56>
b(
string(
"00001011111100000111000001110000101100001011010101010110"));
1443 bitset<56>
b(
string(
"00001101010100000111000001110000110100001101010101010111"));
1448 bitset<56>
b(
string(
"00001110101000000111000001110000111000001110010101010111"));
1453 bitset<56>
b(
string(
"01110000111100001011000010110000011101110000010101101001"));
1458 bitset<56>
b(
string(
"10110000111100001011000010110000101110110000010101101010"));
1463 bitset<56>
b(
string(
"11010000111100001011000010110000110111010000010101101011"));
1468 bitset<56>
b(
string(
"11100000111100001011000010110000111011100000010101101011"));
1473 bitset<56>
b(
string(
"11011101000100001101000011010000110111011101010101111111"));
1478 bitset<56>
b(
string(
"11101110001000001101000011010000111011101110010101111111"));
1483 bitset<56>
b(
string(
"11011101010000001110000011100000110111011101010101111111"));
1488 bitset<56>
b(
string(
"11101110100000001110000011100000111011101110010101111111"));
1494 bitset<56>
b(
string(
"00000000000001110000011100000111000000000111101010010101"));
1499 bitset<56>
b(
string(
"00000000000001110000011100001011000000001011101010010110"));
1504 bitset<56>
b(
string(
"00000000000001110000011100001101000000001101101010010111"));
1509 bitset<56>
b(
string(
"00000000000001110000011100001110000000001110101010010111"));
1514 bitset<56>
b(
string(
"00000000000010110000101100000111000001110000101010101001"));
1519 bitset<56>
b(
string(
"00000000000010110000101100001011000010110000101010101010"));
1524 bitset<56>
b(
string(
"00000000000010110000101100001101000011010000101010101011"));
1529 bitset<56>
b(
string(
"00000000000010110000101100001110000011100000101010101011"));
1534 bitset<56>
b(
string(
"00000000000011010000110100001101000011011101101010111111"));
1539 bitset<56>
b(
string(
"00000000000011010000110100001110000011101110101010111111"));
1544 bitset<56>
b(
string(
"00000000000011100000111000001101000011011101101010111111"));
1549 bitset<56>
b(
string(
"00000000000011100000111000001110000011101110101010111111"));
1555 bitset<56>
b(
string(
"00000000000000000111000001110000111100001111010101010111"));
1560 bitset<56>
b(
string(
"00000000000000001011000010110000111111110000010101101011"));
1565 bitset<56>
b(
string(
"00000000000000001101000011010000111111111111010101111111"));
1570 bitset<56>
b(
string(
"00000000000000001110000011100000111111111111010101111111"));
1576 bitset<56>
b(
string(
"00000000000000000000011100001111000000001111101010010111"));
1581 bitset<56>
b(
string(
"00000000000000000000101100001111000011110000101010101011"));
1586 bitset<56>
b(
string(
"00000000000000000000110100001111000011111111101010111111"));
1591 bitset<56>
b(
string(
"00000000000000000000111000001111000011111111101010111111"));
1597 bitset<56>
b(
string(
"00000000000000000000000001110000111100001111010101010111"));
1602 bitset<56>
b(
string(
"00000000000000000000000010110000111111110000010101101011"));
1607 bitset<56>
b(
string(
"00000000000000000000000011010000111111111111010101111111"));
1612 bitset<56>
b(
string(
"00000000000000000000000011100000111111111111010101111111"));
1618 bitset<56>
b(
string(
"00000000000000000000011100001111000000001111101010010111"));
1623 bitset<56>
b(
string(
"00000000000000000000101100001111000011110000101010101011"));
1628 bitset<56>
b(
string(
"00000000000000000000110100001111000011111111101010111111"));
1633 bitset<56>
b(
string(
"00000000000000000000111000001111000011111111101010111111"));
1639 bitset<56>
b(
string(
"00000000000000000000000000000000011101110111010101111101"));
1644 bitset<56>
b(
string(
"00000000000000000000000000000000101110111011010101111110"));
1649 bitset<56>
b(
string(
"00000000000000000000000000000000110111011101010101111111"));
1654 bitset<56>
b(
string(
"00000000000000000000000000000000111011101110010101111111"));
1660 bitset<56>
b(
string(
"00000000000000000000000000000000000001110111101010111101"));
1665 bitset<56>
b(
string(
"00000000000000000000000000000000000010111011101010111110"));
1670 bitset<56>
b(
string(
"00000000000000000000000000000000000011011101101010111111"));
1675 bitset<56>
b(
string(
"00000000000000000000000000000000000011101110101010111111"));
1681 bitset<56>
b(
string(
"00000000000000000000000000000000000000000111111111010101"));
1686 bitset<56>
b(
string(
"00000000000000000000000000000000000000001011111111010110"));
1691 bitset<56>
b(
string(
"00000000000000000000000000000000000000001101111111010111"));
1696 bitset<56>
b(
string(
"00000000000000000000000000000000000000001110111111010111"));
1702 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000111111101001"));
1707 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000111111101010"));
1712 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000111111101011"));
1717 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000111111101011"));
1723 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000010101111111"));
1728 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000001010111111"));
1734 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000101111111"));
1739 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000010111111"));
1745 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000001111111"));
1750 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000111111"));
1756 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000010111"));
1761 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000001011"));
1767 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000000111"));
1772 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000000011"));
1778 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000000001"));
1783 bitset<56>
b(
string(
"00000000000000000000000000000000000000000000000000000000"));
const unsigned int tc2bitmap(const TrackClass tc)
std::bitset< 4 > m_theBitMaps[2]
static unsigned int priorityEncoder22(const std::bitset< 22 > &input)
22 bit priority encoder
unsigned int m_theLastAddress[68]
std::bitset< 68 > m_thePriorityTable1
void run()
run Track Assembler
void runAddressAssignment2(int global, int group)
run the second Address Assignment Sub-Unit
std::bitset< 56 > m_thePriorityTable2
const L1MuBMExtrapolationUnit * EU() const
return pointer to Extrapolation Unit
static std::string const input
L1MuBMAddressArray m_theAddresses[2]
void runAddressAssignment1(int global, int group)
run the first Address Assignment Sub-Unit
static std::bitset< 56 > getCancelationTable(unsigned int)
cancel Out Table
unsigned short station(int stat) const
get address of a given station [1-4]
unsigned int m_theLastAddressI[12]
void reset()
reset Track Assembler
void print() const
print result of Track Assembler
void runEncoderSubUnit2(unsigned &global, unsigned &group, unsigned &priority)
run the second Priority Encoder Sub-Unit
static unsigned int priorityEncoder21(const std::bitset< 21 > &input)
21 bit priority encoder
void setStations(int adr1, int adr2, int adr3, int adr4)
set addresses of all four stations
static unsigned long subBitset56(const std::bitset< 56 > &input, int pos, int length)
get sub-bitmap of a 56-bit word
static unsigned int priorityEncoder4(const std::bitset< 4 > &input)
4 bit priority encoder
const L1MuBMSectorProcessor & m_sp
static unsigned int addressEncoder12(const std::bitset< 12 > &input)
12 bit address encoder
~L1MuBMTrackAssembler()
destructor
void reset()
reset address array
void setStation(int stat, int adr)
set address of a given station [1-4]
static unsigned long subBitset68(const std::bitset< 68 > &input, int pos, int length)
get sub-bitmap of a 68-bit word
L1MuBMTrackAssembler(const L1MuBMSectorProcessor &)
constructor
static unsigned int priorityEncoder12(const std::bitset< 12 > &input)
12 bit priority encoder
static unsigned int addressEncoder12s(const std::bitset< 12 > &input)
special 12 bit address encoder
void runEncoderSubUnit1(unsigned &global, unsigned &group, unsigned &priority)
run the first Priority Encoder Sub-Unit