CMS 3D CMS Logo

TimeZoneLut.cc
Go to the documentation of this file.
1 #include <utility>
2 
4 
5 using namespace emtf::phase2::data;
6 
7 // Static
8 bool TimeZoneLut::in_range(const std::pair<int, int>& range, const int& bx) const {
9  return range.first <= bx && bx <= range.second;
10 }
11 
12 // Member
14  lut_[0] = {-1, 0}; // ME1/1
15  lut_[1] = {-1, 0}; // ME1/2
16  lut_[2] = {-1, 0}; // ME1/3
17  lut_[3] = {-1, 0}; // ME2/1
18  lut_[4] = {-1, 0}; // ME2/2
19  lut_[5] = {-1, 0}; // ME3/1
20  lut_[6] = {-1, 0}; // ME3/2
21  lut_[7] = {-1, 0}; // ME4/1
22  lut_[8] = {-1, 0}; // ME4/2
23  lut_[9] = {-1, 0}; // GE1/1
24  lut_[10] = {0, 0}; // RE1/2
25  lut_[11] = {0, 0}; // RE1/3
26  lut_[12] = {-1, 0}; // GE2/1
27  lut_[13] = {0, 0}; // RE2/2
28  lut_[14] = {0, 0}; // RE3/1
29  lut_[15] = {0, 0}; // RE3/2
30  lut_[16] = {0, 0}; // RE4/1
31  lut_[17] = {0, 0}; // RE4/2
32  lut_[18] = {0, 0}; // ME0
33 }
34 
36  // Do Nothing
37 }
38 
40  // Do Nothing
41 }
42 
43 int TimeZoneLut::getTimezones(const int& host, const int& bx) const {
44  auto found = lut_.find(host);
45 
46  // Short-Circuit: Host doesn't exist
47  if (found == lut_.end())
48  return 0x0;
49 
50  // Build word
51  int word = 0x0;
52 
53  word |= in_range(found->second, bx) ? 0b001 : 0;
54  word |= in_range(found->second, bx + 1) ? 0b010 : 0; // +1 BX delay
55  word |= in_range(found->second, bx + 2) ? 0b100 : 0; // +2 BX delay
56 
57  return word;
58 }
string host
Definition: query.py:115
void update(const edm::Event &, const edm::EventSetup &)
Definition: TimeZoneLut.cc:39
uint64_t word
std::map< int, std::pair< int, int > > lut_
Definition: TimeZoneLut.h:30
int getTimezones(const int &, const int &) const
Definition: TimeZoneLut.cc:43
bool in_range(const std::pair< int, int > &, const int &) const
Definition: TimeZoneLut.cc:8