CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
L1MuGMTLFMatchQualLUT Class Reference

#include <L1MuGMTLFMatchQualLUT.h>

Inheritance diagram for L1MuGMTLFMatchQualLUT:
L1MuGMTLUT

Public Types

enum  {
  DTRPC, CSCRPC, DTCSC, CSCDT,
  CSCbRPC, DTfRPC
}
 
- Public Types inherited from L1MuGMTLUT
typedef std::pair< std::string,
unsigned > 
port
 

Public Member Functions

 L1MuGMTLFMatchQualLUT ()
 constuctor using function-lookup More...
 
unsigned LookupFunctionPacked (int idx, unsigned address) const override
 access to lookup function with packed input and output More...
 
unsigned SpecificLookup (int idx, unsigned delta_eta, unsigned delta_phi) const
 specific lookup function for entire output field More...
 
unsigned SpecificLookup_mq (int idx, unsigned delta_eta, unsigned delta_phi) const
 specific lookup function for mq More...
 
 ~L1MuGMTLFMatchQualLUT () override
 destructor More...
 
- Public Member Functions inherited from L1MuGMTLUT
 L1MuGMTLUT ()
 Init and Destruct. More...
 
 L1MuGMTLUT (const char *name, const std::vector< std::string > &instances, const std::vector< port > &in_widths, const std::vector< port > &out_widths, unsigned vme_addr_width=0, bool distrRAM=false)
 constructor with init More...
 
 L1MuGMTLUT (const char *name, const std::string &instances, const std::string &inputs, const std::string &outputs, unsigned vme_addr_width=0, bool distrRAM=false)
 
void Load (const char *path)
 I/O functions. More...
 
std::vector< unsigned > Lookup (int idx, const std::vector< unsigned > &address) const
 additional lookup function (std::vector -> vector) More...
 
std::vector< unsigned > Lookup (int idx, unsigned address) const
 additional lookup function (unsigned -> std::vector) More...
 
unsigned LookupPacked (int idx, unsigned) const
 
unsigned LookupPacked (int idx, const std::vector< unsigned > &address) const
 additional lookup function (std::vector -> unisgned) More...
 
void MakeSubClass (const char *fname="", const char *template_file_h="../interface/L1MuGMTLUT_SubClass.h_template", const char *template_file_cc="../interface/L1MuGMTLUT_SubClass.cc_template")
 Add Generate SubClass method. More...
 
std::string Name ()
 
int numberOfInstances ()
 get the number of Instances More...
 
void Save (const char *path)
 save to LUT file More...
 
virtual ~L1MuGMTLUT ()
 destructor More...
 

Private Member Functions

void InitParameters ()
 Initialize scales, configuration parameters, alignment constants, ... More...
 
unsigned TheLookupFunction (int idx, unsigned delta_eta, unsigned delta_phi) const
 The lookup function - here the functionality of the LUT is implemented. More...
 

Private Attributes

float m_EtaPhiThresholds [6]
 
float m_EtaWeights [6]
 Private data members (LUT parameters);. More...
 
float m_PhiWeights [6]
 

Additional Inherited Members

- Protected Member Functions inherited from L1MuGMTLUT
void Init (const char *name, const std::vector< std::string > &instances, const std::vector< port > &in_widths, const std::vector< port > &out_widths, unsigned vme_addr_width=0, bool distrRAM=false)
 Initialize the LUT. More...
 
void Set (int idx, unsigned address, unsigned value)
 set with single address and value More...
 
std::vector< unsigned > u2vec (unsigned value, const std::vector< port > &widths) const
 generate composite address or value from compact unsigned More...
 
unsigned vec2u (const std::vector< unsigned > &vec, const std::vector< port > &widths) const
 generate address or value from composite address or value More...
 
- Protected Attributes inherited from L1MuGMTLUT
std::vector< std::vector
< unsigned > > 
m_Contents
 
bool m_distrRAM
 
unsigned m_GeneralLUTVersion
 
bool m_initialized
 
std::vector< portm_Inputs
 
std::vector< std::string > m_InstNames
 
std::string m_name
 
int m_NLUTS
 
std::vector< portm_Outputs
 
bool m_saveFlag
 
unsigned m_TotalInWidth
 
unsigned m_TotalOutWidth
 
bool m_UseLookupFunction
 
unsigned m_vme_addr_width
 

Detailed Description

LFMatchQual look-up table

this class was automatically generated by L1MuGMTLUT::MakeSubClass()

Definition at line 38 of file L1MuGMTLFMatchQualLUT.h.

Member Enumeration Documentation

anonymous enum

Constructor & Destructor Documentation

L1MuGMTLFMatchQualLUT::L1MuGMTLFMatchQualLUT ( )
inline

constuctor using function-lookup

Definition at line 43 of file L1MuGMTLFMatchQualLUT.h.

References InitParameters().

44  : L1MuGMTLUT(
45  "LFMatchQual", "DTRPC CSCRPC DTCSC CSCDT CSCbRPC DTfRPC", "delta_eta(4) delta_phi(3)", "mq(6)", 7, true) {
47  };
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
L1MuGMTLUT()
Init and Destruct.
Definition: L1MuGMTLUT.h:80
L1MuGMTLFMatchQualLUT::~L1MuGMTLFMatchQualLUT ( )
inlineoverride

destructor

Definition at line 50 of file L1MuGMTLFMatchQualLUT.h.

50 {};

Member Function Documentation

void L1MuGMTLFMatchQualLUT::InitParameters ( )
private

Initialize scales, configuration parameters, alignment constants, ...

Definition at line 37 of file L1MuGMTLFMatchQualLUT.cc.

References L1MuGMTConfig::getEtaPhiThresholdBarrel(), L1MuGMTConfig::getEtaPhiThresholdCOU(), L1MuGMTConfig::getEtaPhiThresholdEndcap(), L1MuGMTConfig::getEtaWeightBarrel(), L1MuGMTConfig::getEtaWeightCOU(), L1MuGMTConfig::getEtaWeightEndcap(), L1MuGMTConfig::getPhiWeightBarrel(), L1MuGMTConfig::getPhiWeightCOU(), L1MuGMTConfig::getPhiWeightEndcap(), mps_fire::i, m_EtaPhiThresholds, m_EtaWeights, and m_PhiWeights.

Referenced by L1MuGMTLFMatchQualLUT().

37  {
41 
45 
46  for (int i = 2; i < 6; i++) {
50  }
51 }
static float getPhiWeightEndcap()
static float getEtaWeightEndcap()
float m_EtaWeights[6]
Private data members (LUT parameters);.
static float getEtaPhiThresholdEndcap()
static float getEtaWeightCOU()
static float getEtaPhiThresholdCOU()
static float getPhiWeightCOU()
static float getEtaWeightBarrel()
static float getEtaPhiThresholdBarrel()
static float getPhiWeightBarrel()
unsigned L1MuGMTLFMatchQualLUT::LookupFunctionPacked ( int  idx,
unsigned  address 
) const
inlineoverridevirtual

access to lookup function with packed input and output

Reimplemented from L1MuGMTLUT.

Definition at line 70 of file L1MuGMTLFMatchQualLUT.h.

References generateTowerEtThresholdLUT::addr, L1MuGMTLUT::m_Inputs, TheLookupFunction(), and L1MuGMTLUT::u2vec().

70  {
71  std::vector<unsigned> addr = u2vec(address, m_Inputs);
72  return TheLookupFunction(idx, addr[0], addr[1]);
73  };
std::vector< port > m_Inputs
Definition: L1MuGMTLUT.h:214
std::vector< unsigned > u2vec(unsigned value, const std::vector< port > &widths) const
generate composite address or value from compact unsigned
Definition: L1MuGMTLUT.h:251
unsigned TheLookupFunction(int idx, unsigned delta_eta, unsigned delta_phi) const
The lookup function - here the functionality of the LUT is implemented.
unsigned L1MuGMTLFMatchQualLUT::SpecificLookup ( int  idx,
unsigned  delta_eta,
unsigned  delta_phi 
) const
inline

specific lookup function for entire output field

Definition at line 61 of file L1MuGMTLFMatchQualLUT.h.

References generateTowerEtThresholdLUT::addr, kinem::delta_eta(), kinem::delta_phi(), and L1MuGMTLUT::LookupPacked().

61  {
62  std::vector<unsigned> addr(2);
63  addr[0] = delta_eta;
64  addr[1] = delta_phi;
65  return LookupPacked(idx, addr);
66  };
double delta_eta(double eta1, double eta2)
Definition: AnglesUtil.h:89
double delta_phi(double ph11, double phi2)
Definition: AnglesUtil.h:84
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:272
unsigned L1MuGMTLFMatchQualLUT::SpecificLookup_mq ( int  idx,
unsigned  delta_eta,
unsigned  delta_phi 
) const
inline

specific lookup function for mq

Definition at line 53 of file L1MuGMTLFMatchQualLUT.h.

References generateTowerEtThresholdLUT::addr, kinem::delta_eta(), kinem::delta_phi(), and L1MuGMTLUT::Lookup().

Referenced by L1MuGMTMatcher::lookup_mq().

53  {
54  std::vector<unsigned> addr(2);
55  addr[0] = delta_eta;
56  addr[1] = delta_phi;
57  return Lookup(idx, addr)[0];
58  };
double delta_eta(double eta1, double eta2)
Definition: AnglesUtil.h:89
std::vector< unsigned > Lookup(int idx, const std::vector< unsigned > &address) const
additional lookup function (std::vector -&gt; vector)
Definition: L1MuGMTLUT.h:121
double delta_phi(double ph11, double phi2)
Definition: AnglesUtil.h:84
unsigned L1MuGMTLFMatchQualLUT::TheLookupFunction ( int  idx,
unsigned  delta_eta,
unsigned  delta_phi 
) const
private

The lookup function - here the functionality of the LUT is implemented.

Definition at line 57 of file L1MuGMTLFMatchQualLUT.cc.

References L1MuScale::getCenter(), L1MuGMTScales::getDeltaEtaScale(), L1MuGMTScales::getDeltaPhiScale(), L1MuGMTConfig::getGMTScales(), L1MuSignedPacking< Bits >::idxFromPacked(), m_EtaPhiThresholds, m_EtaWeights, m_PhiWeights, and mathSSE::sqrt().

Referenced by LookupFunctionPacked().

57  {
58  // idx is DTRPC, CSCRPC, DTCSC, CSCDT, CSCbRPC, DTfRPC
59  // INPUTS: delta_eta(4) delta_phi(3)
60  // OUTPUTS: mq(6)
61 
62  const L1MuGMTScales* theGMTScales = L1MuGMTConfig::getGMTScales();
63 
64  float deta = theGMTScales->getDeltaEtaScale(idx)->getCenter(delta_eta);
65  float dphi = theGMTScales->getDeltaPhiScale()->getCenter(delta_phi);
66 
67  // check out-of range code
68  L1MuSignedPacking<4> EtaPacking;
69  int delta_eta_signed = EtaPacking.idxFromPacked(delta_eta);
70  L1MuSignedPacking<3> PhiPacking;
71  int delta_phi_signed = PhiPacking.idxFromPacked(delta_phi);
72 
73  bool dphi_outofrange = (delta_phi_signed == -4);
74 
75  // limit delta-phi even further **FIXME: make this configurable
76  if (delta_phi_signed >= 3 || delta_phi_signed <= -3)
77  dphi_outofrange = true;
78 
79  // check out-of range code
80  bool deta_outofrange = (delta_eta_signed == -8);
81 
82  // limit delta-eta even further **FIXME: make this configurable
83  if (delta_eta_signed >= 7 || delta_eta_signed <= -7)
84  deta_outofrange = true;
85 
86  double delta_etaphi = sqrt(m_EtaWeights[idx] * deta * deta + m_PhiWeights[idx] * dphi * dphi);
87 
88  // cout << "MQ LUT : delta_phi = " << dphi
89  // << ", delta_eta = " << deta
90  // << ", delta_etaphi = " << delta_etaphi
91  // << endl;
92 
93  int matchqual = 0;
94  if (dphi_outofrange || deta_outofrange || delta_etaphi > m_EtaPhiThresholds[idx]) {
95  matchqual = 0;
96  } else {
97  double mq = 64. * (m_EtaPhiThresholds[idx] - delta_etaphi) / m_EtaPhiThresholds[idx];
98  matchqual = static_cast<int>(mq);
99  }
100 
101  if (matchqual > 63)
102  matchqual = 63;
103  return matchqual;
104 }
double delta_eta(double eta1, double eta2)
Definition: AnglesUtil.h:89
float m_EtaWeights[6]
Private data members (LUT parameters);.
const L1MuScale * getDeltaPhiScale() const
get the delta phi scale ( 3 bits)
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed
T sqrt(T t)
Definition: SSEVec.h:19
double delta_phi(double ph11, double phi2)
Definition: AnglesUtil.h:84
int idxFromPacked(unsigned packed) const override
get the value from the packed notation (+/-)
Definition: L1MuPacking.h:100
static const L1MuGMTScales * getGMTScales()
const L1MuScale * getDeltaEtaScale(int idx) const
get the delta eta scale; idx = 0(DT=RPC), 1(CSC-RPC), 2(DT-CSC), 3(CSC-DT), 4(bRPC-CSC), 5(fRPC-DT)

Member Data Documentation

float L1MuGMTLFMatchQualLUT::m_EtaPhiThresholds[6]
private

Definition at line 85 of file L1MuGMTLFMatchQualLUT.h.

Referenced by InitParameters(), and TheLookupFunction().

float L1MuGMTLFMatchQualLUT::m_EtaWeights[6]
private

Private data members (LUT parameters);.

Definition at line 83 of file L1MuGMTLFMatchQualLUT.h.

Referenced by InitParameters(), and TheLookupFunction().

float L1MuGMTLFMatchQualLUT::m_PhiWeights[6]
private

Definition at line 84 of file L1MuGMTLFMatchQualLUT.h.

Referenced by InitParameters(), and TheLookupFunction().