CMS 3D CMS Logo

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

#include <L1MuGMTLFDeltaEtaLUT.h>

Inheritance diagram for L1MuGMTLFDeltaEtaLUT:
L1MuGMTLUT

Public Types

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

Public Member Functions

 L1MuGMTLFDeltaEtaLUT ()
 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 eta_dtcsc, unsigned eta_rpc) const
 specific lookup function for entire output field More...
 
unsigned SpecificLookup_delta_eta (int idx, unsigned eta_dtcsc, unsigned eta_rpc) const
 specific lookup function for delta_eta More...
 
 ~L1MuGMTLFDeltaEtaLUT () 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 eta_dtcsc, unsigned eta_rpc) 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

LFDeltaEta look-up table

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

Definition at line 38 of file L1MuGMTLFDeltaEtaLUT.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
DTRPC 
CSCRPC 

Definition at line 40 of file L1MuGMTLFDeltaEtaLUT.h.

Constructor & Destructor Documentation

◆ L1MuGMTLFDeltaEtaLUT()

L1MuGMTLFDeltaEtaLUT::L1MuGMTLFDeltaEtaLUT ( )
inline

constuctor using function-lookup

Definition at line 43 of file L1MuGMTLFDeltaEtaLUT.h.

References InitParameters().

44  : L1MuGMTLUT("LFDeltaEta", "DTRPC CSCRPC", "eta_dtcsc(6) eta_rpc(6)", "delta_eta(4)", 10, false) {
46  };
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
L1MuGMTLUT()
Init and Destruct.
Definition: L1MuGMTLUT.h:80

◆ ~L1MuGMTLFDeltaEtaLUT()

L1MuGMTLFDeltaEtaLUT::~L1MuGMTLFDeltaEtaLUT ( )
inlineoverride

destructor

Definition at line 49 of file L1MuGMTLFDeltaEtaLUT.h.

49 {};

Member Function Documentation

◆ InitParameters()

void L1MuGMTLFDeltaEtaLUT::InitParameters ( )
private

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

Definition at line 29 of file L1MuGMTLFDeltaEtaLUT.cc.

Referenced by L1MuGMTLFDeltaEtaLUT().

29 {}

◆ LookupFunctionPacked()

unsigned L1MuGMTLFDeltaEtaLUT::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 L1MuGMTLFDeltaEtaLUT.h.

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

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

◆ SpecificLookup()

unsigned L1MuGMTLFDeltaEtaLUT::SpecificLookup ( int  idx,
unsigned  eta_dtcsc,
unsigned  eta_rpc 
) const
inline

specific lookup function for entire output field

Definition at line 60 of file L1MuGMTLFDeltaEtaLUT.h.

References generateTowerEtThresholdLUT::addr, heavyIonCSV_trainingSettings::idx, and L1MuGMTLUT::LookupPacked().

60  {
61  std::vector<unsigned> addr(2);
62  addr[0] = eta_dtcsc;
63  addr[1] = eta_rpc;
64  return LookupPacked(idx, addr);
65  };
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:272

◆ SpecificLookup_delta_eta()

unsigned L1MuGMTLFDeltaEtaLUT::SpecificLookup_delta_eta ( int  idx,
unsigned  eta_dtcsc,
unsigned  eta_rpc 
) const
inline

specific lookup function for delta_eta

Definition at line 52 of file L1MuGMTLFDeltaEtaLUT.h.

References generateTowerEtThresholdLUT::addr, heavyIonCSV_trainingSettings::idx, and L1MuGMTLUT::Lookup().

Referenced by L1MuGMTMatcher::lookup_mq().

52  {
53  std::vector<unsigned> addr(2);
54  addr[0] = eta_dtcsc;
55  addr[1] = eta_rpc;
56  return Lookup(idx, addr)[0];
57  };
std::vector< unsigned > Lookup(int idx, const std::vector< unsigned > &address) const
additional lookup function (std::vector -> vector)
Definition: L1MuGMTLUT.h:121

◆ TheLookupFunction()

unsigned L1MuGMTLFDeltaEtaLUT::TheLookupFunction ( int  idx,
unsigned  eta_dtcsc,
unsigned  eta_rpc 
) const
private

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

Definition at line 31 of file L1MuGMTLFDeltaEtaLUT.cc.

References HLT_2023v12_cff::delta_eta, L1MuScale::getCenter(), L1MuGMTScales::getDeltaEtaScale(), L1MuGMTConfig::getGMTScales(), L1MuScale::getPacked(), L1MuTriggerScales::getRegionalEtaScale(), L1MuScale::getScaleMax(), L1MuGMTConfig::getTriggerScales(), heavyIonCSV_trainingSettings::idx, and timeUnitHelper::pack().

Referenced by LookupFunctionPacked().

31  {
32  const L1MuGMTScales* theGMTScales = L1MuGMTConfig::getGMTScales();
33  const L1MuTriggerScales* theTriggerScales = L1MuGMTConfig::getTriggerScales();
34 
35  // idx is DTRPC CSCRPC
36 
37  float etaValue_dtcsc = theTriggerScales->getRegionalEtaScale(idx * 2)->getCenter(eta_dtcsc);
38  float etaValue_rpc = theTriggerScales->getRegionalEtaScale(idx * 2 + 1)->getCenter(eta_rpc);
39 
40  float delta_eta = etaValue_dtcsc - etaValue_rpc;
41 
42  unsigned delta_eta_4bit = 0;
43 
44  // check out of range
45  if (delta_eta < theGMTScales->getDeltaEtaScale(idx)->getScaleMin() ||
46  delta_eta > theGMTScales->getDeltaEtaScale(idx)->getScaleMax()) {
48  delta_eta_4bit = pack.packedFromIdx(-8);
49  } else {
50  delta_eta_4bit = theGMTScales->getDeltaEtaScale(idx)->getPacked(delta_eta);
51  }
52 
53  // cout << "delta-eta LUT : idx= " << idx
54  // << ", etaValue_dtcsc = " << etaValue_dtcsc
55  // << ", etaValue_rpc = " << etaValue_rpc
56  // << ", delta_eta = " << delta_eta
57  // << ", packed = " << delta_eta_4bit
58  // << endl;
59 
60  return delta_eta_4bit;
61 }
virtual float getScaleMax() const =0
get the upper edge of the last bin
def pack(high, low)
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC) ...
static const L1MuGMTScales * getGMTScales()
static const L1MuTriggerScales * getTriggerScales()
virtual unsigned getPacked(float value) const =0
pack a value
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)