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
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
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
0033
0034
0035
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 }