CMS 3D CMS Logo

MicroGMTMatchQualSimpleLUT.cc
Go to the documentation of this file.
2 #include "TMath.h"
3 
5  const std::string& fname, const double maxDR, const double fEta, const double fPhi, cancel_t cancelType)
9  m_maxDR = maxDR;
10  m_fEta = fEta;
11  m_fPhi = fPhi;
12  m_cancelType = cancelType;
13 
15  m_outWidth = 1;
16 
17  m_dPhiRedMask = (1 << m_dPhiRedInWidth) - 1;
19 
22 
23  m_phiScale = 2 * TMath::Pi() / 576.0;
24  m_etaScale = 0.010875;
25 
26  if (fname != std::string("")) {
27  load(fname);
28  } else {
29  initialize();
30  }
31 }
32 
34  : MicroGMTMatchQualLUT(lut) {
35  m_dEtaRedInWidth = 5;
36  m_dPhiRedInWidth = 3;
37  m_cancelType = cancelType;
38 
40  m_outWidth = 1;
41 
42  m_dPhiRedMask = (1 << m_dPhiRedInWidth) - 1;
44 
47 
48  m_phiScale = 2 * TMath::Pi() / 576.0;
49  m_etaScale = 0.010875;
50 
51  m_initialized = true;
52 }
53 
54 int l1t::MicroGMTMatchQualSimpleLUT::lookup(int etaFine, int dEtaRed, int dPhiRed) const // etaFine will be ignored
55 {
56  // normalize these two to the same scale and then calculate?
57  if (m_initialized) {
58  return data((unsigned)hashInput(checkedInput(dEtaRed, m_dEtaRedInWidth), checkedInput(dPhiRed, m_dPhiRedInWidth)));
59  }
60  double dEta = m_fEta * dEtaRed * m_etaScale;
61  double dPhi = m_fPhi * dPhiRed * m_phiScale;
62  double dR = std::sqrt(dEta * dEta + dPhi * dPhi);
63 
64  int retVal = dR <= m_maxDR ? 1 : 0;
65 
66  return retVal;
67 }
68 
70  if (m_initialized) {
71  return data((unsigned)in);
72  }
73 
74  int dEtaRed = 0;
75  int dPhiRed = 0;
76  unHashInput(in, dEtaRed, dPhiRed);
77  return lookup(0, dEtaRed, dPhiRed);
78 }
79 
80 int l1t::MicroGMTMatchQualSimpleLUT::hashInput(int dEtaRed, int dPhiRed) const {
81  int result = 0;
82  result += dPhiRed;
83  result += dEtaRed << m_dPhiRedInWidth;
84  return result;
85 }
86 
87 void l1t::MicroGMTMatchQualSimpleLUT::unHashInput(int input, int& dEtaRed, int& dPhiRed) const {
88  dPhiRed = input & m_dPhiRedMask;
89  dEtaRed = (input & m_dEtaRedMask) >> m_dPhiRedInWidth;
90 }
const double Pi
unsigned m_totalInWidth
Definition: MicroGMTLUT.h:34
int hashInput(int dEta, int dPhi) const
int load(const std::string &inFileName)
Definition: MicroGMTLUT.cc:15
int checkedInput(unsigned in, unsigned maxWidth) const
Definition: MicroGMTLUT.cc:51
std::vector< MicroGMTConfiguration::input_t > m_inputs
Definition: MicroGMTLUT.h:36
static std::string const input
Definition: EdmProvDump.cc:48
T sqrt(T t)
Definition: SSEVec.h:19
Definition: LUT.h:29
string fname
main script
unsigned m_outWidth
Definition: MicroGMTLUT.h:35
void unHashInput(int input, int &dEta, int &dPhi) const
int lookup(int etaFine, int dEta, int dPhi) const override
int data(unsigned int address) const
Definition: LUT.h:46