CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MissHtPacker.cc
Go to the documentation of this file.
3 
4 #include "CaloTokens.h"
5 #include "MissHtPacker.h"
6 
7 // Implementation
8 
9 namespace l1t {
10  namespace stage1 {
13  event.getByToken(static_cast<const CaloTokens*>(toks)->getEtSumToken(), etSums);
14 
15  std::vector<uint32_t> load;
16 
17  for (int i = etSums->getFirstBX(); i <= etSums->getLastBX(); ++i) {
18  int n = 0;
19 
20  int htmissphi = 0;
21  int htmiss = 0;
22 
23  int flaghtmiss = 0;
24 
25  for (auto j = etSums->begin(i); j != etSums->end(i) && n < 4; ++j, ++n) {
26  if (j->getType() == l1t::EtSum::kMissingHt) {
27  flaghtmiss = j->hwQual() & 0x1;
28  htmiss = std::min(j->hwPt(), 0x7F);
29  htmissphi = std::min(j->hwPhi(), 0x1F);
30  }
31  }
32 
33  uint16_t object[2] = {0, 0};
34 
35  object[0] = htmissphi | ((htmiss & 0x7F) << 5) | (flaghtmiss << 12) | (0x1 << 14);
36  object[1] = 0x1 | (0x1 << 2) | (0x1 << 4) | (0x1 << 6) | (0x1 << 8) | (0x1 << 10) | (0x1 << 12) | (0x1 << 14);
37 
38  uint32_t word0 = (object[0] & 0xFFFF);
39  uint32_t word1 = (object[1] & 0xFFFF);
40 
41  word0 |= (1 << 15);
42  word1 |= ((i == 0) << 15);
43 
44  load.push_back(word0);
45  load.push_back(word1);
46  }
47 
48  return {Block(99, load)};
49  }
50  } // namespace stage1
51 } // namespace l1t
52 
Blocks pack(const edm::Event &, const PackerTokens *) override
Definition: MissHtPacker.cc:11
def load
Definition: svgfig.py:547
std::vector< Block > Blocks
Definition: Block.h:99
#define DEFINE_L1T_PACKER(type)
Definition: PackerFactory.h:23