3 #ifndef EMTFUnpackerTools_h
4 #define EMTFUnpackerTools_h
15 if (exp == 0)
return 1;
16 if (exp == 1)
return base;
17 return base *
PowInt(base, exp-1);
20 inline uint16_t
GetHexBits(uint16_t word, uint16_t lowBit, uint16_t highBit) {
21 return ( (word >> lowBit) & (
PowInt(2, (1 + highBit - lowBit)) - 1) );
24 inline uint32_t
GetHexBits(uint32_t word, uint32_t lowBit, uint32_t highBit) {
25 return ( (word >> lowBit) & (
PowInt(2, (1 + highBit - lowBit)) - 1) );
28 inline uint32_t
GetHexBits(uint16_t word1, uint16_t lowBit1, uint16_t highBit1,
29 uint16_t word2, uint16_t lowBit2, uint16_t highBit2) {
30 uint16_t word1_sel = (word1 >> lowBit1) & (
PowInt(2, (1 + highBit1 - lowBit1)) - 1);
31 uint16_t word2_sel = (word2 >> lowBit2) & (
PowInt(2, (1 + highBit2 - lowBit2)) - 1);
32 return ( (word2_sel << (1 + highBit1 - lowBit1)) | word1_sel );
int PowInt(int base, int exp)
uint16_t GetHexBits(uint16_t word, uint16_t lowBit, uint16_t highBit)