CMS 3D CMS Logo

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

#include <L1MuGMTMIAUEtaProLUT.h>

Inheritance diagram for L1MuGMTMIAUEtaProLUT:
L1MuGMTLUT

Public Types

enum  {
  MIP_DT, MIP_BRPC, ISO_DT, ISO_BRPC,
  MIP_CSC, MIP_FRPC, ISO_CSC, ISO_FRPC
}
 
- Public Types inherited from L1MuGMTLUT
typedef std::pair< std::string, unsigned > port
 

Public Member Functions

 L1MuGMTMIAUEtaProLUT ()
 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 pt, unsigned charge) const
 specific lookup function for entire output field More...
 
unsigned SpecificLookup_eta_sel (int idx, unsigned eta, unsigned pt, unsigned charge) const
 specific lookup function for eta_sel More...
 
 ~L1MuGMTMIAUEtaProLUT () 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 pt, unsigned charge) const
 The lookup function - here the functionality of the LUT is implemented. More...
 

Private Attributes

int m_IsolationCellSizeEta
 Private data members (LUT parameters);. More...
 

Static Private Attributes

static float caloEtaBounds [15]
 

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

MIAUEtaPro look-up table

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

Definition at line 38 of file L1MuGMTMIAUEtaProLUT.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MIP_DT 
MIP_BRPC 
ISO_DT 
ISO_BRPC 
MIP_CSC 
MIP_FRPC 
ISO_CSC 
ISO_FRPC 

Definition at line 40 of file L1MuGMTMIAUEtaProLUT.h.

Constructor & Destructor Documentation

◆ L1MuGMTMIAUEtaProLUT()

L1MuGMTMIAUEtaProLUT::L1MuGMTMIAUEtaProLUT ( )
inline

constuctor using function-lookup

Definition at line 43 of file L1MuGMTMIAUEtaProLUT.h.

44  : L1MuGMTLUT("MIAUEtaPro",
45  "MIP_DT MIP_BRPC ISO_DT ISO_BRPC MIP_CSC MIP_FRPC ISO_CSC ISO_FRPC",
46  "eta(6) pt(5) charge(1)",
47  "eta_sel(10)",
48  12,
49  false) {
51  };

References InitParameters().

◆ ~L1MuGMTMIAUEtaProLUT()

L1MuGMTMIAUEtaProLUT::~L1MuGMTMIAUEtaProLUT ( )
inlineoverride

destructor

Definition at line 54 of file L1MuGMTMIAUEtaProLUT.h.

54 {};

Member Function Documentation

◆ InitParameters()

void L1MuGMTMIAUEtaProLUT::InitParameters ( )
private

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

Definition at line 43 of file L1MuGMTMIAUEtaProLUT.cc.

References L1MuGMTConfig::getIsolationCellSizeEta(), and m_IsolationCellSizeEta.

Referenced by L1MuGMTMIAUEtaProLUT().

◆ LookupFunctionPacked()

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

access to lookup function with packed input and output

Reimplemented from L1MuGMTLUT.

Definition at line 76 of file L1MuGMTMIAUEtaProLUT.h.

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

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

◆ SpecificLookup()

unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup ( int  idx,
unsigned  eta,
unsigned  pt,
unsigned  charge 
) const
inline

specific lookup function for entire output field

Definition at line 66 of file L1MuGMTMIAUEtaProLUT.h.

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

References generateTowerEtThresholdLUT::addr, ALCARECOTkAlJpsiMuMu_cff::charge, PVValHelper::eta, heavyIonCSV_trainingSettings::idx, L1MuGMTLUT::LookupPacked(), and DiDispStaMuonMonitor_cfi::pt.

◆ SpecificLookup_eta_sel()

unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup_eta_sel ( int  idx,
unsigned  eta,
unsigned  pt,
unsigned  charge 
) const
inline

specific lookup function for eta_sel

Definition at line 57 of file L1MuGMTMIAUEtaProLUT.h.

57  {
58  std::vector<unsigned> addr(3);
59  addr[0] = eta;
60  addr[1] = pt;
61  addr[2] = charge;
62  return Lookup(idx, addr)[0];
63  };

References generateTowerEtThresholdLUT::addr, ALCARECOTkAlJpsiMuMu_cff::charge, PVValHelper::eta, heavyIonCSV_trainingSettings::idx, L1MuGMTLUT::Lookup(), and DiDispStaMuonMonitor_cfi::pt.

Referenced by L1MuGMTEtaProjectionUnit::run().

◆ TheLookupFunction()

unsigned L1MuGMTMIAUEtaProLUT::TheLookupFunction ( int  idx,
unsigned  eta,
unsigned  pt,
unsigned  charge 
) const
private

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

Definition at line 65 of file L1MuGMTMIAUEtaProLUT.cc.

65  {
66  // idx is MIP_DT, MIP_BRPC, ISO_DT, ISO_BRPC, MIP_CSC, MIP_FRPC, ISO_CSC, ISO_FRPC
67  // INPUTS: eta(6) pt(5) charge(1)
68  // OUTPUTS: eta_sel(10)
69 
70  // const L1MuGMTScales* theGMTScales = L1MuGMTConfig::getGMTScales();
71  const L1MuTriggerScales* theTriggerScales = L1MuGMTConfig::getTriggerScales();
72  const L1MuTriggerPtScale* theTriggerPtScale = L1MuGMTConfig::getTriggerPtScale();
73  const L1CaloGeometry* theCaloGeom = L1MuGMTConfig::getCaloGeom();
74 
75  int isRPC = idx % 2;
76  int isFWD = idx / 4;
77 
78  int isISO = (idx / 2) % 2;
79 
80  int idx_drcr = isFWD * 2 + isRPC;
81 
82  if (pt == 0)
83  return 0; // empty candidate
84 
85  int ch_idx = (charge == 0) ? 1 : 0; // positive charge is 0 (but idx 1)
86 
87  float oldeta = theTriggerScales->getRegionalEtaScale(idx_drcr)->getCenter(eta);
88 
89  if (idx_drcr == 2)
90  oldeta = theTriggerScales->getRegionalEtaScale(idx_drcr)->getLowEdge(eta); //FIXME use center when changed in ORCA
91 
92  if ((isRPC && isFWD && fabs(oldeta) < 1.04) || (isRPC && !isFWD && fabs(oldeta) > 1.04)) {
93  if (!m_saveFlag)
94  edm::LogWarning("LUTRangeViolation") << "L1MuGMTMIAUEtaProLUT::TheLookupFunction: RPC " << (isFWD ? "fwd" : "brl")
95  << " eta value out of range: " << oldeta;
96  }
97 
98  // eta conversion depends only on isys by default
99  int isys = isFWD + 2 * isRPC; // DT, CSC, BRPC, FRPC
100  float neweta = L1MuGMTEtaLUT::eta(isys,
101  isISO,
102  ch_idx,
103  oldeta,
104  theTriggerPtScale->getPtScale()->getLowEdge(pt)); // use old LUT, here
105  // theTriggerScales->getPtScale()->getLowEdge(pt) ); // use old LUT, here
106 
107  // unsigned icenter = theGMTScales->getCaloEtaScale()->getPacked( neweta );
108  // globalEtaIndex is 0-21 for forward+central; need to shift to 0-13 for central only
109  unsigned icenter = theCaloGeom->globalEtaIndex(neweta) - theCaloGeom->numberGctForwardEtaBinsPerHalf();
110 
111  unsigned eta_select_word_14 = 1 << icenter; // for the whole detector
112 
113  // for ISOlation bit assignment, multiple regions can be selected according to the IsolationCellSize
114  if (isISO) {
115  int imin = icenter - (m_IsolationCellSizeEta - 1) / 2;
116  int imax = icenter + (m_IsolationCellSizeEta - 1) / 2;
117 
118  // for even number of isolation cells check the fine grain info
119  if (m_IsolationCellSizeEta % 2 == 0) {
120  // float bincenter = theGMTScales->getCaloEtaScale()->getCenter( icenter );
121  // globalEtaIndex is 0-21 for forward+central; need to shift to 0-13 for central only
122  float bincenter = theCaloGeom->globalEtaBinCenter(icenter + theCaloGeom->numberGctForwardEtaBinsPerHalf());
123  if (neweta > bincenter)
124  imax++;
125  else
126  imin--;
127  }
128  if (imin < 0)
129  imin = 0;
130  if (imax > 13)
131  imax = 13;
132 
133  for (int i = imin; i <= imax; i++)
134  eta_select_word_14 |= 1 << i;
135  }
136 
137  // generate select words for barrel (10 central bits)
138  // and for forward (5+5 fwd bits) case
139  unsigned eta_select_word;
140  if (isFWD) {
141  unsigned mask5 = (1 << 5) - 1;
142  eta_select_word = eta_select_word_14 & mask5;
143  eta_select_word |= (eta_select_word_14 & (mask5 << 9)) >> 4;
144  } else {
145  unsigned mask10 = (1 << 10) - 1;
146  eta_select_word = (eta_select_word_14 & (mask10 << 2)) >> 2;
147  }
148 
149  return eta_select_word;
150 }

References ALCARECOTkAlJpsiMuMu_cff::charge, L1MuGMTEtaLUT::eta(), PVValHelper::eta, L1MuGMTConfig::getCaloGeom(), L1MuScale::getCenter(), L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), L1MuTriggerScales::getRegionalEtaScale(), L1MuGMTConfig::getTriggerPtScale(), L1MuGMTConfig::getTriggerScales(), L1CaloGeometry::globalEtaBinCenter(), L1CaloGeometry::globalEtaIndex(), mps_fire::i, heavyIonCSV_trainingSettings::idx, GeomDetEnumerators::isRPC(), m_IsolationCellSizeEta, L1MuGMTLUT::m_saveFlag, L1CaloGeometry::numberGctForwardEtaBinsPerHalf(), and DiDispStaMuonMonitor_cfi::pt.

Referenced by LookupFunctionPacked().

Member Data Documentation

◆ caloEtaBounds

float L1MuGMTMIAUEtaProLUT::caloEtaBounds[15]
staticprivate

Definition at line 90 of file L1MuGMTMIAUEtaProLUT.h.

◆ m_IsolationCellSizeEta

int L1MuGMTMIAUEtaProLUT::m_IsolationCellSizeEta
private

Private data members (LUT parameters);.

Definition at line 89 of file L1MuGMTMIAUEtaProLUT.h.

Referenced by InitParameters(), and TheLookupFunction().

mps_fire.i
i
Definition: mps_fire.py:428
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
GeomDetEnumerators::isRPC
bool isRPC(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:90
L1MuGMTLUT::m_Inputs
std::vector< port > m_Inputs
Definition: L1MuGMTLUT.h:214
L1MuGMTMIAUEtaProLUT::m_IsolationCellSizeEta
int m_IsolationCellSizeEta
Private data members (LUT parameters);.
Definition: L1MuGMTMIAUEtaProLUT.h:89
L1MuGMTMIAUEtaProLUT::MIP_FRPC
Definition: L1MuGMTMIAUEtaProLUT.h:40
L1MuGMTLUT::m_saveFlag
bool m_saveFlag
Definition: L1MuGMTLUT.h:221
L1MuGMTMIAUEtaProLUT::ISO_FRPC
Definition: L1MuGMTMIAUEtaProLUT.h:40
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
L1MuGMTMIAUEtaProLUT::ISO_BRPC
Definition: L1MuGMTMIAUEtaProLUT.h:40
L1MuGMTMIAUEtaProLUT::InitParameters
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
Definition: L1MuGMTMIAUEtaProLUT.cc:43
L1MuTriggerPtScale
Definition: L1MuTriggerPtScale.h:33
generateTowerEtThresholdLUT.addr
addr
Definition: generateTowerEtThresholdLUT.py:57
L1MuGMTConfig::getTriggerScales
static const L1MuTriggerScales * getTriggerScales()
Definition: L1MuGMTConfig.h:178
PVValHelper::eta
Definition: PVValidationHelpers.h:69
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
L1MuGMTMIAUEtaProLUT::MIP_BRPC
Definition: L1MuGMTMIAUEtaProLUT.h:40
L1MuGMTMIAUEtaProLUT::ISO_DT
Definition: L1MuGMTMIAUEtaProLUT.h:40
L1MuScale::getLowEdge
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
L1MuGMTMIAUEtaProLUT::MIP_CSC
Definition: L1MuGMTMIAUEtaProLUT.h:40
L1MuGMTMIAUEtaProLUT::MIP_DT
Definition: L1MuGMTMIAUEtaProLUT.h:40
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
L1CaloGeometry
Definition: L1CaloGeometry.h:33
L1MuTriggerPtScale::getPtScale
const L1MuScale * getPtScale() const
get the Pt scale
Definition: L1MuTriggerPtScale.h:59
L1CaloGeometry::globalEtaIndex
unsigned int globalEtaIndex(const double &etaValue) const
Definition: L1CaloGeometry.cc:294
L1MuGMTLUT::LookupPacked
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:272
L1MuGMTMIAUEtaProLUT::TheLookupFunction
unsigned TheLookupFunction(int idx, unsigned eta, unsigned pt, unsigned charge) const
The lookup function - here the functionality of the LUT is implemented.
Definition: L1MuGMTMIAUEtaProLUT.cc:65
L1MuTriggerScales
Definition: L1MuTriggerScales.h:33
L1MuGMTConfig::getIsolationCellSizeEta
static int getIsolationCellSizeEta()
Definition: L1MuGMTConfig.h:124
L1CaloGeometry::globalEtaBinCenter
double globalEtaBinCenter(unsigned int globalEtaIndex) const
Definition: L1CaloGeometry.cc:128
L1CaloGeometry::numberGctForwardEtaBinsPerHalf
unsigned int numberGctForwardEtaBinsPerHalf() const
Definition: L1CaloGeometry.h:104
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::getCaloGeom
static const L1CaloGeometry * getCaloGeom()
Definition: L1MuGMTConfig.h:175
L1MuGMTMIAUEtaProLUT::ISO_CSC
Definition: L1MuGMTMIAUEtaProLUT.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
L1MuGMTConfig::getTriggerPtScale
static const L1MuTriggerPtScale * getTriggerPtScale()
Definition: L1MuGMTConfig.h:181
L1MuGMTEtaLUT::eta
static float eta(int isys, int isISO, int icharge, float eta, float pt)
look up delta-eta
Definition: L1MuGMTEtaLUT.cc:68
L1MuScale::getCenter
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed