CMS 3D CMS Logo

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

#include <L1MuGMTLFSortRankEtaQLUT.h>

Inheritance diagram for L1MuGMTLFSortRankEtaQLUT:
L1MuGMTLUT

Public Types

enum  { DT, BRPC, CSC, FRPC }
 
- Public Types inherited from L1MuGMTLUT
typedef std::pair< std::string, unsigned > port
 

Public Member Functions

 L1MuGMTLFSortRankEtaQLUT ()
 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, unsigned q) const
 specific lookup function for entire output field More...
 
unsigned SpecificLookup_rank_etaq (int idx, unsigned eta, unsigned q) const
 specific lookup function for rank_etaq More...
 
unsigned SpecificLookup_vlq (int idx, unsigned eta, unsigned q) const
 specific lookup function for vlq More...
 
 ~L1MuGMTLFSortRankEtaQLUT () 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 eta, unsigned q) const
 The lookup function - here the functionality of the LUT is implemented. More...
 

Private Attributes

unsigned m_version
 Private data members (LUT parameters);. 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

LFSortRankEtaQ look-up table

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

Definition at line 38 of file L1MuGMTLFSortRankEtaQLUT.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
DT 
BRPC 
CSC 
FRPC 

Definition at line 40 of file L1MuGMTLFSortRankEtaQLUT.h.

40 { DT, BRPC, CSC, FRPC };

Constructor & Destructor Documentation

◆ L1MuGMTLFSortRankEtaQLUT()

L1MuGMTLFSortRankEtaQLUT::L1MuGMTLFSortRankEtaQLUT ( )
inline

constuctor using function-lookup

Definition at line 43 of file L1MuGMTLFSortRankEtaQLUT.h.

44  : L1MuGMTLUT("LFSortRankEtaQ", "DT BRPC CSC FRPC", "eta(6) q(3)", "vlq(2) rank_etaq(2)", 7, false) {
46  };

References InitParameters().

◆ ~L1MuGMTLFSortRankEtaQLUT()

L1MuGMTLFSortRankEtaQLUT::~L1MuGMTLFSortRankEtaQLUT ( )
inlineoverride

destructor

Definition at line 49 of file L1MuGMTLFSortRankEtaQLUT.h.

49 {};

Member Function Documentation

◆ InitParameters()

void L1MuGMTLFSortRankEtaQLUT::InitParameters ( )
private

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

Definition at line 35 of file L1MuGMTLFSortRankEtaQLUT.cc.

References L1MuGMTConfig::getVersionSortRankEtaQLUT(), and m_version.

Referenced by L1MuGMTLFSortRankEtaQLUT().

◆ LookupFunctionPacked()

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

access to lookup function with packed input and output

Reimplemented from L1MuGMTLUT.

Definition at line 77 of file L1MuGMTLFSortRankEtaQLUT.h.

77  {
78  std::vector<unsigned> addr = u2vec(address, m_Inputs);
79  return TheLookupFunction(idx, addr[0], addr[1]);
80  };

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

◆ SpecificLookup()

unsigned L1MuGMTLFSortRankEtaQLUT::SpecificLookup ( int  idx,
unsigned  eta,
unsigned  q 
) const
inline

specific lookup function for entire output field

Definition at line 68 of file L1MuGMTLFSortRankEtaQLUT.h.

68  {
69  std::vector<unsigned> addr(2);
70  addr[0] = eta;
71  addr[1] = q;
72  return LookupPacked(idx, addr);
73  };

References generateTowerEtThresholdLUT::addr, PVValHelper::eta, heavyIonCSV_trainingSettings::idx, L1MuGMTLUT::LookupPacked(), and submitPVResolutionJobs::q.

◆ SpecificLookup_rank_etaq()

unsigned L1MuGMTLFSortRankEtaQLUT::SpecificLookup_rank_etaq ( int  idx,
unsigned  eta,
unsigned  q 
) const
inline

specific lookup function for rank_etaq

Definition at line 60 of file L1MuGMTLFSortRankEtaQLUT.h.

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

References generateTowerEtThresholdLUT::addr, PVValHelper::eta, heavyIonCSV_trainingSettings::idx, L1MuGMTLUT::Lookup(), and submitPVResolutionJobs::q.

Referenced by L1MuGMTSortRankUnit::sort_rank().

◆ SpecificLookup_vlq()

unsigned L1MuGMTLFSortRankEtaQLUT::SpecificLookup_vlq ( int  idx,
unsigned  eta,
unsigned  q 
) const
inline

specific lookup function for vlq

Definition at line 52 of file L1MuGMTLFSortRankEtaQLUT.h.

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

References generateTowerEtThresholdLUT::addr, PVValHelper::eta, heavyIonCSV_trainingSettings::idx, L1MuGMTLUT::Lookup(), and submitPVResolutionJobs::q.

Referenced by L1MuGMTSortRankUnit::getVeryLowQualityLevel().

◆ TheLookupFunction()

unsigned L1MuGMTLFSortRankEtaQLUT::TheLookupFunction ( int  idx,
unsigned  eta,
unsigned  q 
) const
private

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

Definition at line 82 of file L1MuGMTLFSortRankEtaQLUT.cc.

82  {
83  // idx is DT, BRPC, CSC, FRPC
84  // INPUTS: eta(6) q(3)
85  // OUTPUTS: vlq(2) rank_etaq(2)
86 
87  const L1MuTriggerScales* theTriggerScales = L1MuGMTConfig::getTriggerScales();
88 
89  int isRPC = idx % 2;
90  // int isFWD = idx / 2;
91 
92  float etaValue = fabs(theTriggerScales->getRegionalEtaScale(idx)->getCenter(eta));
93 
94  //
95  // very-low-quality flags
96  //
97  // 0 .. no VLQ set
98  // 1 .. output muon will be quality 2 (disable in single and di-muon trigger)
99  // 2 .. output muon will be quality 3 (disable in single-muon trigger only)
100  // 3 .. output muon will be quality 4 (disable in di-muon trigger only)
101 
102  unsigned vlq = 0;
103 
104  int vCSC2 = (m_version)&0xf;
105  int vCSC1 = (m_version >> 4) & 0xf;
106  int vRPC = (m_version >> 8) & 0xf;
107 
108  // RPC selection
109  if (isRPC) {
110  if (vRPC == 0) {
111  if ((q == 0 && ((etaValue > 1.04 && etaValue < 1.24) || // Q0, high rate, high noise
112  (etaValue > 1.48))) || // Q0, high rate, high noise
113  (q == 1 && ((etaValue > 0.83 && etaValue < 1.04) || // Q1, high rate
114  (etaValue > 1.14 && etaValue < 1.24) || // Q1, high noise
115  (etaValue > 1.36))) || // Q1, high rate
116  (q == 2 && (etaValue > 0.83 && etaValue < 0.93))) // Q2, high rate
117  vlq = 1;
118  }
119  // reserve vRPC == 1 for doing nothing for bwd compatibility
120  if (vRPC == 2) {
121  if (q == 0 && etaValue > 1.04)
122  vlq = 2;
123  }
124  if (vRPC == 3) {
125  if (q == 0)
126  vlq = 2;
127  }
128  if (vRPC == 4) {
129  if (q == 0 && etaValue > 1.04)
130  vlq = 1;
131  }
132  if (vRPC == 5) {
133  if (q == 0)
134  vlq = 1;
135  }
136  }
137 
138  // CSC selection
139  if (idx == 2) { // CSC
140  if (q == 2) {
141  if (vCSC2 == 1)
142  vlq = 2;
143  if (vCSC2 == 2) {
144  if (etaValue < 1.5 || etaValue > 1.8)
145  vlq = 2; // disable in single-muon trigger only
146  }
147  if (vCSC2 == 3) {
148  if ((etaValue > 1.2 && etaValue < 1.5) || etaValue > 1.8)
149  vlq = 2; // disable in single-muon trigger only
150  }
151  }
152 
153  if (q == 1) {
154  if (vCSC1 == 0) {
155  if (etaValue > 1.2)
156  vlq = 2; // disable in single-muon trigger only
157  }
158  if (vCSC1 == 1) {
159  if (etaValue > 1.3)
160  vlq = 2; // disable in single-muon trigger only
161  }
162  }
163  }
164 
166  if (idx == 0) { // DT
167  if (etaValue > 0.91)
168  vlq = 1;
169  }
170  if (idx == 2) { // CSC
171  if (etaValue < 1.06)
172  vlq = 1;
173  }
174  }
175 
176  //
177  // Rank contribution from eta and quality
178  //
179 
180  // by default return maximum
181  // LUT can later be used to reduce the sort rank of certain regions
182  unsigned rank_etaq = 3;
183 
184  return (vlq << 2) | rank_etaq;
185 }

References PVValHelper::eta, L1MuScale::getCenter(), L1MuGMTConfig::getDoOvlRpcAnd(), L1MuTriggerScales::getRegionalEtaScale(), L1MuGMTConfig::getTriggerScales(), heavyIonCSV_trainingSettings::idx, GeomDetEnumerators::isRPC(), m_version, and submitPVResolutionJobs::q.

Referenced by LookupFunctionPacked().

Member Data Documentation

◆ m_version

unsigned L1MuGMTLFSortRankEtaQLUT::m_version
private

Private data members (LUT parameters);.

Definition at line 90 of file L1MuGMTLFSortRankEtaQLUT.h.

Referenced by InitParameters(), and TheLookupFunction().

L1MuGMTConfig::getVersionSortRankEtaQLUT
static unsigned getVersionSortRankEtaQLUT()
Definition: L1MuGMTConfig.h:132
GeomDetEnumerators::isRPC
bool isRPC(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:90
L1MuGMTLFSortRankEtaQLUT::FRPC
Definition: L1MuGMTLFSortRankEtaQLUT.h:40
L1MuGMTLUT::m_Inputs
std::vector< port > m_Inputs
Definition: L1MuGMTLUT.h:214
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
L1MuGMTLFSortRankEtaQLUT::InitParameters
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
Definition: L1MuGMTLFSortRankEtaQLUT.cc:35
generateTowerEtThresholdLUT.addr
addr
Definition: generateTowerEtThresholdLUT.py:57
L1MuGMTConfig::getTriggerScales
static const L1MuTriggerScales * getTriggerScales()
Definition: L1MuGMTConfig.h:178
PVValHelper::eta
Definition: PVValidationHelpers.h:70
L1MuTriggerScales::getRegionalEtaScale
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC)
Definition: L1MuTriggerScales.h:158
L1MuGMTLFSortRankEtaQLUT::m_version
unsigned m_version
Private data members (LUT parameters);.
Definition: L1MuGMTLFSortRankEtaQLUT.h:90
L1MuGMTLUT::LookupPacked
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:272
L1MuGMTLFSortRankEtaQLUT::TheLookupFunction
unsigned TheLookupFunction(int idx, unsigned eta, unsigned q) const
The lookup function - here the functionality of the LUT is implemented.
Definition: L1MuGMTLFSortRankEtaQLUT.cc:82
submitPVResolutionJobs.q
q
Definition: submitPVResolutionJobs.py:84
L1MuTriggerScales
Definition: L1MuTriggerScales.h:33
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
L1MuGMTConfig::getDoOvlRpcAnd
static bool getDoOvlRpcAnd()
require DT/CSC candidates to be confirmed by the RPC in the overlap region
Definition: L1MuGMTConfig.h:128
L1MuGMTLFSortRankEtaQLUT::CSC
Definition: L1MuGMTLFSortRankEtaQLUT.h:40
L1MuGMTLFSortRankEtaQLUT::BRPC
Definition: L1MuGMTLFSortRankEtaQLUT.h:40
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
L1MuGMTLFSortRankEtaQLUT::DT
Definition: L1MuGMTLFSortRankEtaQLUT.h:40
L1MuScale::getCenter
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed