File indexing completed on 2024-04-06 12:20:48
0001 #include "L1Trigger/L1TMuon/interface/MicroGMTExtrapolationLUT.h"
0002
0003 l1t::MicroGMTExtrapolationLUT::MicroGMTExtrapolationLUT(const std::string& fname,
0004 const int outWidth,
0005 const int etaRedInWidth,
0006 const int ptRedInWidth)
0007 : MicroGMTLUT(), m_etaRedInWidth(etaRedInWidth), m_ptRedInWidth(ptRedInWidth) {
0008 m_totalInWidth = m_ptRedInWidth + m_etaRedInWidth;
0009 m_outWidth = outWidth;
0010
0011 m_ptRedMask = (1 << m_ptRedInWidth) - 1;
0012 m_etaRedMask = ((1 << m_etaRedInWidth) - 1) << m_ptRedInWidth;
0013
0014 m_inputs.push_back(MicroGMTConfiguration::ETA_COARSE);
0015 m_inputs.push_back(MicroGMTConfiguration::PT);
0016
0017 if (fname != std::string("")) {
0018 load(fname);
0019 }
0020 }
0021
0022 l1t::MicroGMTExtrapolationLUT::MicroGMTExtrapolationLUT(l1t::LUT* lut,
0023 const int outWidth,
0024 const int etaRedInWidth,
0025 const int ptRedInWidth)
0026 : MicroGMTLUT(lut), m_etaRedInWidth(etaRedInWidth), m_ptRedInWidth(ptRedInWidth) {
0027 m_totalInWidth = m_ptRedInWidth + m_etaRedInWidth;
0028 m_outWidth = outWidth;
0029
0030 m_ptRedMask = (1 << m_ptRedInWidth) - 1;
0031 m_etaRedMask = ((1 << m_etaRedInWidth) - 1) << m_ptRedInWidth;
0032
0033 m_inputs.push_back(MicroGMTConfiguration::ETA_COARSE);
0034 m_inputs.push_back(MicroGMTConfiguration::PT);
0035
0036 m_initialized = true;
0037 }
0038
0039 int l1t::MicroGMTExtrapolationLUT::lookup(int eta, int pt) const {
0040
0041 if (m_initialized) {
0042
0043 return lookupPacked(hashInput(checkedInput(eta, m_etaRedInWidth), checkedInput(pt, m_ptRedInWidth)));
0044 }
0045 int result = 0;
0046
0047 return result;
0048 }
0049
0050 int l1t::MicroGMTExtrapolationLUT::hashInput(int eta, int pt) const {
0051 int result = 0;
0052 result += eta << m_ptRedInWidth;
0053 result += pt;
0054 return result;
0055 }
0056
0057 void l1t::MicroGMTExtrapolationLUT::unHashInput(int input, int& eta, int& pt) const {
0058 pt = input & m_ptRedMask;
0059 eta = (input & m_etaRedMask) >> m_ptRedInWidth;
0060 }
0061
0062 int l1t::MicroGMTExtrapolationLUT::getEtaRedInWidth() const { return m_etaRedInWidth; }
0063
0064 int l1t::MicroGMTExtrapolationLUT::getPtRedInWidth() const { return m_ptRedInWidth; }