CMS 3D CMS Logo

EMTFUnpackerTools.h
Go to the documentation of this file.
1 // Tools for unpacking and packing EMTF data
2 
3 #ifndef EMTFUnpackerTools_h
4 #define EMTFUnpackerTools_h
5 
6 // Generally useful includes
7 #include <iostream>
8 #include <iomanip> // For things like std::setw
9 #include <array>
13 
14 namespace l1t {
15  namespace stage2 {
16  namespace emtf {
17 
18  // Integer version of pow() - returns base^exp
19  inline int PowInt(int base, int exp) {
20  if (exp == 0) return 1;
21  if (exp == 1) return base;
22  return base * PowInt(base, exp-1);
23  }
24 
25  // Compute the two's complement of an integer
26  inline int TwosCompl(int nBits, int bits) {
27  if (bits >> (nBits - 1) == 0) return bits;
28  else return bits - PowInt(2, nBits);
29  };
30 
31  // Get the integer value of specified bits from a 16-bit word (0xffff)
32  inline uint16_t GetHexBits(uint16_t word, uint16_t lowBit, uint16_t highBit) {
33  return ( (word >> lowBit) & (PowInt(2, (1 + highBit - lowBit)) - 1) );
34  }
35 
36  // Get the integer value of specified bits from a 32-bit word (0xffffffff)
37  inline uint32_t GetHexBits(uint32_t word, uint32_t lowBit, uint32_t highBit) {
38  return ( (word >> lowBit) & (PowInt(2, (1 + highBit - lowBit)) - 1) );
39  }
40 
41  // Get the integer value of specified bits from two 16-bit words (0xffff, 0xffff)
42  inline uint32_t GetHexBits(uint16_t word1, uint16_t lowBit1, uint16_t highBit1,
43  uint16_t word2, uint16_t lowBit2, uint16_t highBit2) {
44  uint16_t word1_sel = (word1 >> lowBit1) & (PowInt(2, (1 + highBit1 - lowBit1)) - 1);
45  uint16_t word2_sel = (word2 >> lowBit2) & (PowInt(2, (1 + highBit2 - lowBit2)) - 1);
46  return ( (word2_sel << (1 + highBit1 - lowBit1)) | word1_sel );
47  }
48 
49  } // End namespace emtf
50  } // End namespace stage2
51 } // End namespace l1t
52 
53 #endif /* define EMTFUnpackerTools_h */
int PowInt(int base, int exp)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision bits
Definition: Event.h:15
delete x;
Definition: CaloConfig.h:22
int TwosCompl(int nBits, int bits)
base
Make Sure CMSSW is Setup ##.
uint16_t GetHexBits(uint16_t word, uint16_t lowBit, uint16_t highBit)