Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:11:04

0001 
0002 #include "L1Trigger/DemonstratorTools/interface/codecs/tkjets.h"
0003 
0004 namespace l1t::demo::codecs {
0005 
0006   ap_uint<64> encodeTkJet(const l1t::TkJetWord& j) { return j.tkJetWord(); }
0007 
0008   // Encodes vertex collection onto 1 output link
0009   std::array<std::vector<ap_uint<64>>, 1> encodeTkJets(const edm::View<l1t::TkJetWord>& tkJets) {
0010     std::vector<ap_uint<64>> tkJetWords;
0011 
0012     for (const auto& tkJet : tkJets) {
0013       tkJetWords.push_back(encodeTkJet(tkJet));
0014       tkJetWords.push_back(ap_uint<64>(0));
0015     }
0016 
0017     std::array<std::vector<ap_uint<64>>, 1> linkData;
0018 
0019     for (size_t i = 0; i < linkData.size(); i++) {
0020       // Pad TkJet vectors -> full packet length (48 frames, but only 12 TkJets max, two words per jet)
0021       tkJetWords.resize(24, 0);
0022       linkData.at(i) = tkJetWords;
0023     }
0024 
0025     return linkData;
0026   }
0027 
0028   std::vector<l1t::TkJetWord> decodeTkJets(const std::vector<ap_uint<64>>& frames) {
0029     std::vector<l1t::TkJetWord> tkJets;
0030 
0031     for (size_t f = 0; f < frames.size(); f += 2) {
0032       // There is no valid bit in the definition right now.
0033       // Uncomment the next two lines when this is available.
0034       //if (not x.test(TkJetWord::kValidLSB))
0035       //  break;
0036 
0037       TkJetWord j(TkJetWord::pt_t(frames[f](TkJetWord::kPtMSB, TkJetWord::kPtLSB)),
0038                   TkJetWord::glbeta_t(frames[f](TkJetWord::kGlbEtaMSB, TkJetWord::kGlbEtaLSB)),
0039                   TkJetWord::glbphi_t(frames[f](TkJetWord::kGlbPhiMSB, TkJetWord::kGlbPhiLSB)),
0040                   TkJetWord::z0_t(frames[f](TkJetWord::kZ0MSB, TkJetWord::kZ0LSB)),
0041                   TkJetWord::nt_t(frames[f](TkJetWord::kNtMSB, TkJetWord::kNtLSB)),
0042                   TkJetWord::nx_t(frames[f](TkJetWord::kXtMSB, TkJetWord::kXtLSB)),
0043                   TkJetWord::tkjetunassigned_t(frames[f](TkJetWord::kUnassignedMSB, TkJetWord::kUnassignedLSB)));
0044       tkJets.push_back(j);
0045     }
0046 
0047     return tkJets;
0048   }
0049 
0050 }  // namespace l1t::demo::codecs