CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions
L1MuGMTLFCOUDeltaEtaLUT Class Reference

#include <L1MuGMTLFCOUDeltaEtaLUT.h>

Inheritance diagram for L1MuGMTLFCOUDeltaEtaLUT:
L1MuGMTLUT

Public Types

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

Public Member Functions

 L1MuGMTLFCOUDeltaEtaLUT ()
 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 eta1, unsigned eta2) const
 specific lookup function for entire output field More...
 
unsigned SpecificLookup_delta_eta (int idx, unsigned eta1, unsigned eta2) const
 specific lookup function for delta_eta More...
 
 ~L1MuGMTLFCOUDeltaEtaLUT () override
 destructor More...
 
- Public Member Functions inherited from L1MuGMTLUT
 L1MuGMTLUT ()
 Init and Destruct. 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)
 
 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...
 
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, const std::vector< unsigned > &address) const
 additional lookup function (std::vector -> unisgned) More...
 
unsigned LookupPacked (int idx, unsigned) const
 
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 eta1, unsigned eta2) const
 The lookup function - here the functionality of the LUT is implemented. More...
 

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

LFCOUDeltaEta look-up table

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

Definition at line 38 of file L1MuGMTLFCOUDeltaEtaLUT.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
DTCSC 
CSCDT 
CSCbRPC 
DTfRPC 

Definition at line 40 of file L1MuGMTLFCOUDeltaEtaLUT.h.

40 { DTCSC, CSCDT, CSCbRPC, DTfRPC };

Constructor & Destructor Documentation

◆ L1MuGMTLFCOUDeltaEtaLUT()

L1MuGMTLFCOUDeltaEtaLUT::L1MuGMTLFCOUDeltaEtaLUT ( )
inline

constuctor using function-lookup

Definition at line 43 of file L1MuGMTLFCOUDeltaEtaLUT.h.

44  : L1MuGMTLUT("LFCOUDeltaEta", "DTCSC CSCDT CSCbRPC DTfRPC", "eta1(4) eta2(4)", "delta_eta(4)", 8, true) {
46  };

References InitParameters().

◆ ~L1MuGMTLFCOUDeltaEtaLUT()

L1MuGMTLFCOUDeltaEtaLUT::~L1MuGMTLFCOUDeltaEtaLUT ( )
inlineoverride

destructor

Definition at line 49 of file L1MuGMTLFCOUDeltaEtaLUT.h.

49 {};

Member Function Documentation

◆ InitParameters()

void L1MuGMTLFCOUDeltaEtaLUT::InitParameters ( )
private

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

Definition at line 37 of file L1MuGMTLFCOUDeltaEtaLUT.cc.

37 {}

Referenced by L1MuGMTLFCOUDeltaEtaLUT().

◆ LookupFunctionPacked()

unsigned L1MuGMTLFCOUDeltaEtaLUT::LookupFunctionPacked ( int  idx,
unsigned  address 
) const
inlineoverridevirtual

access to lookup function with packed input and output

Reimplemented from L1MuGMTLUT.

Definition at line 69 of file L1MuGMTLFCOUDeltaEtaLUT.h.

69  {
70  std::vector<unsigned> addr = u2vec(address, m_Inputs);
71  return TheLookupFunction(idx, addr[0], addr[1]);
72  };

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

◆ SpecificLookup()

unsigned L1MuGMTLFCOUDeltaEtaLUT::SpecificLookup ( int  idx,
unsigned  eta1,
unsigned  eta2 
) const
inline

specific lookup function for entire output field

Definition at line 60 of file L1MuGMTLFCOUDeltaEtaLUT.h.

60  {
61  std::vector<unsigned> addr(2);
62  addr[0] = eta1;
63  addr[1] = eta2;
64  return LookupPacked(idx, addr);
65  };

References generateTowerEtThresholdLUT::addr, HLT_2018_cff::eta1, HLT_2018_cff::eta2, charmTagsComputerCvsB_cfi::idx, and L1MuGMTLUT::LookupPacked().

◆ SpecificLookup_delta_eta()

unsigned L1MuGMTLFCOUDeltaEtaLUT::SpecificLookup_delta_eta ( int  idx,
unsigned  eta1,
unsigned  eta2 
) const
inline

specific lookup function for delta_eta

Definition at line 52 of file L1MuGMTLFCOUDeltaEtaLUT.h.

52  {
53  std::vector<unsigned> addr(2);
54  addr[0] = eta1;
55  addr[1] = eta2;
56  return Lookup(idx, addr)[0];
57  };

References generateTowerEtThresholdLUT::addr, HLT_2018_cff::eta1, HLT_2018_cff::eta2, charmTagsComputerCvsB_cfi::idx, and L1MuGMTLUT::Lookup().

Referenced by L1MuGMTMatcher::lookup_mq().

◆ TheLookupFunction()

unsigned L1MuGMTLFCOUDeltaEtaLUT::TheLookupFunction ( int  idx,
unsigned  eta1,
unsigned  eta2 
) const
private

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

Definition at line 51 of file L1MuGMTLFCOUDeltaEtaLUT.cc.

51  {
52  // idx is DTCSC, CSCDT, bRPCCSC, fRPCDT
53  // INPUTS: eta1(4) eta2(4)
54  // OUTPUTS: delta_eta(4)
55 
56  const L1MuGMTScales* theGMTScales = L1MuGMTConfig::getGMTScales();
57 
58  // check out of range in inputs
60  unsigned delta_eta_OOR = pack.packedFromIdx(-8);
61 
62  if (eta1 == 7 || eta2 == 7)
63  return delta_eta_OOR;
64 
65  int type1 = 0, type2 = 0;
66  switch (idx) {
67  case 0:
68  type1 = 0;
69  type2 = 2;
70  break; // DT, CSC
71  case 1:
72  type1 = 2;
73  type2 = 0;
74  break; // CSC, DT
75  case 2:
76  type1 = 1;
77  type2 = 2;
78  break; // bRPC, CSC
79  case 3:
80  type1 = 3;
81  type2 = 0;
82  break; // fRPC, DT
83  }
84 
85  float etaValue1 = theGMTScales->getOvlEtaScale(type1)->getCenter(eta1);
86  float etaValue2 = theGMTScales->getOvlEtaScale(type2)->getCenter(eta2);
87 
88  float delta_eta = etaValue1 - etaValue2;
89 
90  unsigned delta_eta_4bit = 0;
91 
92  // check out of range
93  if (delta_eta < theGMTScales->getDeltaEtaScale(idx + 2)->getScaleMin() ||
94  delta_eta > theGMTScales->getDeltaEtaScale(idx + 2)->getScaleMax()) {
95  delta_eta_4bit = delta_eta_OOR;
96  } else {
97  delta_eta_4bit = theGMTScales->getDeltaEtaScale(idx + 2)->getPacked(delta_eta);
98  }
99 
100  return delta_eta_4bit;
101 }

References HLT_2018_cff::delta_eta, HLT_2018_cff::eta1, HLT_2018_cff::eta2, L1MuScale::getCenter(), L1MuGMTScales::getDeltaEtaScale(), L1MuGMTConfig::getGMTScales(), L1MuGMTScales::getOvlEtaScale(), L1MuScale::getPacked(), L1MuScale::getScaleMax(), charmTagsComputerCvsB_cfi::idx, and timeUnitHelper::pack().

Referenced by LookupFunctionPacked().

L1MuGMTLFCOUDeltaEtaLUT::CSCbRPC
Definition: L1MuGMTLFCOUDeltaEtaLUT.h:40
L1MuGMTLUT::m_Inputs
std::vector< port > m_Inputs
Definition: L1MuGMTLUT.h:214
HLT_2018_cff.eta1
eta1
Definition: HLT_2018_cff.py:8220
charmTagsComputerCvsB_cfi.idx
idx
Definition: charmTagsComputerCvsB_cfi.py:108
L1MuGMTScales
Definition: L1MuGMTScales.h:34
L1MuGMTLFCOUDeltaEtaLUT::TheLookupFunction
unsigned TheLookupFunction(int idx, unsigned eta1, unsigned eta2) const
The lookup function - here the functionality of the LUT is implemented.
Definition: L1MuGMTLFCOUDeltaEtaLUT.cc:51
L1MuGMTConfig::getGMTScales
static const L1MuGMTScales * getGMTScales()
Definition: L1MuGMTConfig.h:172
generateTowerEtThresholdLUT.addr
addr
Definition: generateTowerEtThresholdLUT.py:57
L1MuGMTScales::getOvlEtaScale
const L1MuScale * getOvlEtaScale(int isys) const
get the overlap eta scale (4 bits); isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC)
Definition: L1MuGMTScales.h:204
L1MuGMTLFCOUDeltaEtaLUT::DTfRPC
Definition: L1MuGMTLFCOUDeltaEtaLUT.h:40
HLT_2018_cff.eta2
eta2
Definition: HLT_2018_cff.py:8221
L1MuGMTScales::getDeltaEtaScale
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),...
Definition: L1MuGMTScales.h:194
L1MuGMTLUT::LookupPacked
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:272
timeUnitHelper.pack
def pack(high, low)
Definition: timeUnitHelper.py:3
L1MuGMTLFCOUDeltaEtaLUT::CSCDT
Definition: L1MuGMTLFCOUDeltaEtaLUT.h:40
L1MuGMTLFCOUDeltaEtaLUT::DTCSC
Definition: L1MuGMTLFCOUDeltaEtaLUT.h:40
HLT_2018_cff.delta_eta
delta_eta
Definition: HLT_2018_cff.py:10310
L1MuGMTLUT::u2vec
std::vector< unsigned > u2vec(unsigned value, const std::vector< port > &widths) const
generate composite address or value from compact unsigned
Definition: L1MuGMTLUT.h:251
L1MuSignedPacking
Definition: L1MuPacking.h:94
L1MuScale::getPacked
virtual unsigned getPacked(float value) const =0
pack a value
L1MuGMTLUT::L1MuGMTLUT
L1MuGMTLUT()
Init and Destruct.
Definition: L1MuGMTLUT.h:80
L1MuGMTLUT::Lookup
std::vector< unsigned > Lookup(int idx, const std::vector< unsigned > &address) const
additional lookup function (std::vector -> vector)
Definition: L1MuGMTLUT.h:121
L1MuScale::getScaleMax
virtual float getScaleMax() const =0
get the upper edge of the last bin
L1MuGMTLFCOUDeltaEtaLUT::InitParameters
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
Definition: L1MuGMTLFCOUDeltaEtaLUT.cc:37
L1MuScale::getCenter
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed