Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:49

0001 #include "L1Trigger/L1TMuon/interface/MicroGMTRelativeIsolationCheckLUT.h"
0002 
0003 l1t::MicroGMTRelativeIsolationCheckLUT::MicroGMTRelativeIsolationCheckLUT(const std::string& fname)
0004     : MicroGMTLUT(), m_energySumInWidth(5), m_ptInWidth(9) {
0005   m_totalInWidth = m_ptInWidth + m_energySumInWidth;
0006   m_outWidth = 1;
0007 
0008   m_energySumMask = (1 << m_energySumInWidth) - 1;
0009   m_ptMask = ((1 << m_ptInWidth) - 1) << m_energySumInWidth;
0010   if (fname != std::string("")) {
0011     load(fname);
0012   }
0013   m_inputs.push_back(MicroGMTConfiguration::PT);
0014   m_inputs.push_back(MicroGMTConfiguration::ENERGYSUM);
0015 }
0016 
0017 l1t::MicroGMTRelativeIsolationCheckLUT::MicroGMTRelativeIsolationCheckLUT(l1t::LUT* lut)
0018     : MicroGMTLUT(lut), m_energySumInWidth(5), m_ptInWidth(9) {
0019   m_totalInWidth = m_ptInWidth + m_energySumInWidth;
0020   m_outWidth = 1;
0021 
0022   m_energySumMask = (1 << m_energySumInWidth) - 1;
0023   m_ptMask = ((1 << m_ptInWidth) - 1) << m_energySumInWidth;
0024 
0025   m_inputs.push_back(MicroGMTConfiguration::PT);
0026   m_inputs.push_back(MicroGMTConfiguration::ENERGYSUM);
0027 
0028   m_initialized = true;
0029 }
0030 
0031 int l1t::MicroGMTRelativeIsolationCheckLUT::lookup(int energySum, int pt) const {
0032   // normalize these two to the same scale and then calculate?
0033   return lookupPacked(hashInput(checkedInput(energySum, m_energySumInWidth), checkedInput(pt, m_ptInWidth)));
0034 }
0035 
0036 int l1t::MicroGMTRelativeIsolationCheckLUT::hashInput(int energySum, int pT) const {
0037   int result = 0;
0038   result += energySum << m_ptInWidth;
0039   result += pT;
0040   return result;
0041 }
0042 
0043 void l1t::MicroGMTRelativeIsolationCheckLUT::unHashInput(int input, int& energySum, int& pt) const {
0044   energySum = input & m_energySumMask;
0045   pt = (input & m_ptMask) >> m_energySumInWidth;
0046 }