CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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...
 
virtual unsigned LookupFunctionPacked (int idx, unsigned address) const
 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...
 
virtual ~L1MuGMTMIAUEtaProLUT ()
 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, 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 42 of file L1MuGMTMIAUEtaProLUT.h.

Member Enumeration Documentation

anonymous enum

Constructor & Destructor Documentation

L1MuGMTMIAUEtaProLUT::L1MuGMTMIAUEtaProLUT ( )
inline

constuctor using function-lookup

Definition at line 48 of file L1MuGMTMIAUEtaProLUT.h.

References InitParameters().

48  : L1MuGMTLUT("MIAUEtaPro",
49  "MIP_DT MIP_BRPC ISO_DT ISO_BRPC MIP_CSC MIP_FRPC ISO_CSC ISO_FRPC",
50  "eta(6) pt(5) charge(1)",
51  "eta_sel(10)", 12, false) {
53  } ;
L1MuGMTLUT()
Init and Destruct.
Definition: L1MuGMTLUT.h:85
void InitParameters()
Initialize scales, configuration parameters, alignment constants, ...
virtual L1MuGMTMIAUEtaProLUT::~L1MuGMTMIAUEtaProLUT ( )
inlinevirtual

destructor

Definition at line 56 of file L1MuGMTMIAUEtaProLUT.h.

56 {};

Member Function Documentation

void L1MuGMTMIAUEtaProLUT::InitParameters ( )
private

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

Definition at line 45 of file L1MuGMTMIAUEtaProLUT.cc.

References L1MuGMTConfig::getIsolationCellSizeEta(), and m_IsolationCellSizeEta.

Referenced by L1MuGMTMIAUEtaProLUT().

45  {
47 }
int m_IsolationCellSizeEta
Private data members (LUT parameters);.
static int getIsolationCellSizeEta()
virtual unsigned L1MuGMTMIAUEtaProLUT::LookupFunctionPacked ( int  idx,
unsigned  address 
) const
inlinevirtual

access to lookup function with packed input and output

Reimplemented from L1MuGMTLUT.

Definition at line 80 of file L1MuGMTMIAUEtaProLUT.h.

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

80  {
81  std::vector<unsigned> addr = u2vec(address, m_Inputs);
82  return TheLookupFunction(idx ,addr[0] ,addr[1] ,addr[2]);
83 
84  };
char * address
Definition: mlp_lapack.h:14
std::vector< port > m_Inputs
Definition: L1MuGMTLUT.h:203
unsigned TheLookupFunction(int idx, unsigned eta, unsigned pt, unsigned charge) const
The lookup function - here the functionality of the LUT is implemented.
std::vector< unsigned > u2vec(unsigned value, const std::vector< port > &widths) const
generate composite address or value from compact unsigned
Definition: L1MuGMTLUT.h:241
unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup ( int  idx,
unsigned  eta,
unsigned  pt,
unsigned  charge 
) const
inline

specific lookup function for entire output field

Definition at line 68 of file L1MuGMTMIAUEtaProLUT.h.

References DeDxDiscriminatorTools::charge(), eta(), and L1MuGMTLUT::LookupPacked().

68  {
69  std::vector<unsigned> addr(3);
70  addr[0] = eta;
71  addr[1] = pt;
72  addr[2] = charge;
73  return LookupPacked(idx, addr);
74  };
T eta() const
double charge(const std::vector< uint8_t > &Ampls)
unsigned LookupPacked(int idx, unsigned) const
Definition: L1MuGMTLUT.h:262
unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup_eta_sel ( int  idx,
unsigned  eta,
unsigned  pt,
unsigned  charge 
) const
inline

specific lookup function for eta_sel

Definition at line 59 of file L1MuGMTMIAUEtaProLUT.h.

References DeDxDiscriminatorTools::charge(), eta(), and L1MuGMTLUT::Lookup().

Referenced by L1MuGMTEtaProjectionUnit::run().

59  {
60  std::vector<unsigned> addr(3);
61  addr[0] = eta;
62  addr[1] = pt;
63  addr[2] = charge;
64  return Lookup(idx, addr) [0];
65  };
T eta() const
std::vector< unsigned > Lookup(int idx, const std::vector< unsigned > &address) const
additional lookup function (std::vector -&gt; vector)
Definition: L1MuGMTLUT.h:117
double charge(const std::vector< uint8_t > &Ampls)
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 69 of file L1MuGMTMIAUEtaProLUT.cc.

References L1MuGMTEtaLUT::eta(), L1MuGMTConfig::getCaloGeom(), L1MuScale::getCenter(), L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), L1MuTriggerScales::getRegionalEtaScale(), L1MuGMTConfig::getTriggerPtScale(), L1MuGMTConfig::getTriggerScales(), L1CaloGeometry::globalEtaBinCenter(), L1CaloGeometry::globalEtaIndex(), i, m_IsolationCellSizeEta, L1MuGMTLUT::m_saveFlag, and L1CaloGeometry::numberGctForwardEtaBinsPerHalf().

Referenced by LookupFunctionPacked().

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

Member Data Documentation

float L1MuGMTMIAUEtaProLUT::caloEtaBounds[15]
staticprivate

Definition at line 95 of file L1MuGMTMIAUEtaProLUT.h.

int L1MuGMTMIAUEtaProLUT::m_IsolationCellSizeEta
private

Private data members (LUT parameters);.

Definition at line 94 of file L1MuGMTMIAUEtaProLUT.h.

Referenced by InitParameters(), and TheLookupFunction().