CMS 3D CMS Logo

L1GctLut< NAddressBits, NDataBits > Class Template Reference

Base class for LookUp Tables. More...

#include <L1Trigger/GlobalCaloTrigger/src/L1GctLut.h>

List of all members.

Public Member Functions

uint16_t lutValue (const uint16_t lutAddress) const
 Access the look-up table contents for a given Address.
template<int KAddressBits, int KDataBits>
int operator!= (const L1GctLut< KAddressBits, KDataBits > &rhsLut) const
 Inequality check between look-up tables.
template<int KAddressBits, int KDataBits>
int operator== (const L1GctLut< KAddressBits, KDataBits > &rhsLut) const
 Equality check between look-up tables.
uint16_t operator[] (const uint16_t lutAddress) const
 Access the look-up table contents for a given Address.
void setTerse ()
bool setupOk ()
void setVerbose ()
 control output messages
virtual ~L1GctLut ()

Static Public Attributes

static const uint16_t MAX_ADDRESS_BITMASK = (1 << NAddressBits) - 1
static const uint16_t MAX_DATA_BITMASK = (1 << NDataBits) - 1

Protected Member Functions

template<int KAddressBits, int KDataBits>
bool equalityCheck (const L1GctLut< KAddressBits, KDataBits > &c) const
 L1GctLut ()
virtual uint16_t value (const uint16_t lutAddress) const =0

Protected Attributes

bool m_setupOk
bool m_verbose

Private Member Functions

std::string printHeader () const
std::string printLine (const int add) const

Static Private Attributes

static const int printWidth = 16

Friends

std::ostream & operator<< (std::ostream &os, const L1GctLut< NAddressBits, NDataBits > &lut)
 Overload << operator.


Detailed Description

template<int NAddressBits, int NDataBits>
class L1GctLut< NAddressBits, NDataBits >

Base class for LookUp Tables.

Author:
Greg Heath
Date:
Feb 2007

Definition at line 21 of file L1GctLut.h.


Constructor & Destructor Documentation

template<int NAddressBits, int NDataBits>
L1GctLut< NAddressBits, NDataBits >::~L1GctLut (  )  [inline, virtual]

Definition at line 102 of file L1GctLut.h.

00102 {}

template<int NAddressBits, int NDataBits>
L1GctLut< NAddressBits, NDataBits >::L1GctLut (  )  [inline, protected]

Definition at line 99 of file L1GctLut.h.

00099 : m_setupOk(false) {}


Member Function Documentation

template<int NAddressBits, int NDataBits>
template<int KAddressBits, int KDataBits>
bool L1GctLut< NAddressBits, NDataBits >::equalityCheck ( const L1GctLut< KAddressBits, KDataBits > &  c  )  const [inline, protected]

Definition at line 115 of file L1GctLut.h.

References L1GctLut< NAddressBits, NDataBits >::lutValue(), edm::match(), and L1GctLut< NAddressBits, NDataBits >::MAX_ADDRESS_BITMASK.

Referenced by L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::operator!=(), and L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::operator==().

00116 {
00117   if (KAddressBits==NAddressBits && KDataBits==NDataBits) {
00118     bool match=true;
00119     for (uint16_t address=0; address<=MAX_ADDRESS_BITMASK; address++) {
00120       if (this->lutValue(address)!=rhsLut.lutValue(address)) { match = false; break; }
00121     }
00122     return match;
00123   } else {
00124     return false;
00125   }
00126 }

template<int NAddressBits, int NDataBits>
uint16_t L1GctLut< NAddressBits, NDataBits >::lutValue ( const uint16_t  lutAddress  )  const [inline]

Access the look-up table contents for a given Address.

Definition at line 105 of file L1GctLut.h.

References data, L1GctLut< NAddressBits, NDataBits >::m_setupOk, L1GctLut< NAddressBits, NDataBits >::MAX_ADDRESS_BITMASK, L1GctLut< NAddressBits, NDataBits >::MAX_DATA_BITMASK, and L1GctLut< NAddressBits, NDataBits >::value().

Referenced by L1GctLut< NAddressBits, NDataBits >::equalityCheck(), L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::operator[](), and L1GctLut< NAddressBits, NDataBits >::printLine().

00106 {
00107   if (!m_setupOk) return (uint16_t) 0;
00108   uint16_t address=(lutAddress & MAX_ADDRESS_BITMASK);
00109   uint16_t data=(value(address) & MAX_DATA_BITMASK);
00110   return data;
00111 }

template<int NAddressBits, int NDataBits>
template<int KAddressBits, int KDataBits>
int L1GctLut< NAddressBits, NDataBits >::operator!= ( const L1GctLut< KAddressBits, KDataBits > &  rhsLut  )  const [inline]

Inequality check between look-up tables.

Definition at line 61 of file L1GctLut.h.

00061 { return !equalityCheck(rhsLut); }

template<int NAddressBits, int NDataBits>
template<int KAddressBits, int KDataBits>
int L1GctLut< NAddressBits, NDataBits >::operator== ( const L1GctLut< KAddressBits, KDataBits > &  rhsLut  )  const [inline]

Equality check between look-up tables.

Definition at line 57 of file L1GctLut.h.

00057 { return equalityCheck(rhsLut); }

template<int NAddressBits, int NDataBits>
uint16_t L1GctLut< NAddressBits, NDataBits >::operator[] ( const uint16_t  lutAddress  )  const [inline]

Access the look-up table contents for a given Address.

Definition at line 53 of file L1GctLut.h.

00053 { return lutValue(lutAddress); } 

template<int NAddressBits, int NDataBits>
std::string L1GctLut< NAddressBits, NDataBits >::printHeader (  )  const [inline, private]

Definition at line 129 of file L1GctLut.h.

References a, lat::endl(), L1GctLut< NAddressBits, NDataBits >::MAX_ADDRESS_BITMASK, L1GctLut< NAddressBits, NDataBits >::printWidth, and ss.

00130 {
00131   std::stringstream ss;
00132   ss << std::hex << std::showbase; 
00133   ss << std::setw(8) << "|";
00134   for (int a=0; ((a<printWidth) && (a<=MAX_ADDRESS_BITMASK)); ++a) {
00135     ss << std::setw(7) << a;
00136   }
00137   ss << std::endl;
00138   ss << std::setfill('-') << std::setw(8) << "+";
00139   for (int a=0; ((a<printWidth) && (a<=MAX_ADDRESS_BITMASK)); ++a) {
00140     ss << std::setw(7) << "-";
00141   }
00142   ss << std::endl;
00143 
00144   return ss.str();
00145 }

template<int NAddressBits, int NDataBits>
std::string L1GctLut< NAddressBits, NDataBits >::printLine ( const int  add  )  const [inline, private]

Definition at line 148 of file L1GctLut.h.

References a, c, lat::endl(), L1GctLut< NAddressBits, NDataBits >::lutValue(), L1GctLut< NAddressBits, NDataBits >::MAX_ADDRESS_BITMASK, L1GctLut< NAddressBits, NDataBits >::printWidth, and ss.

00149 {
00150   std::stringstream ss;
00151   ss << std::hex << std::showbase; 
00152   int a=add;
00153   ss << std::setw(7) << a << "|";
00154   for (int c=0; ((c<printWidth) && (a<=MAX_ADDRESS_BITMASK)); ++c) {
00155     uint16_t address = static_cast<uint16_t>(a++);
00156     ss << std::setw(7) << lutValue(address);
00157   }
00158   ss << std::endl;
00159 
00160   return ss.str();
00161 }

template<int NAddressBits, int NDataBits>
void L1GctLut< NAddressBits, NDataBits >::setTerse (  )  [inline]

Definition at line 67 of file L1GctLut.h.

Referenced by L1GctJetCounter::setTerse().

00067 { m_verbose = false; }

template<int NAddressBits, int NDataBits>
bool L1GctLut< NAddressBits, NDataBits >::setupOk (  )  [inline]

Definition at line 63 of file L1GctLut.h.

Referenced by L1GctJetCounter::setupOk().

00063 { return m_setupOk; }

template<int NAddressBits, int NDataBits>
void L1GctLut< NAddressBits, NDataBits >::setVerbose (  )  [inline]

control output messages

Definition at line 66 of file L1GctLut.h.

Referenced by L1GctJetCounter::setVerbose().

00066 { m_verbose = true; }

template<int NAddressBits, int NDataBits>
virtual uint16_t L1GctLut< NAddressBits, NDataBits >::value ( const uint16_t  lutAddress  )  const [protected, pure virtual]

Implemented in L1GctHfBitCountsLut, L1GctHfEtSumsLut, L1GctJetCounterLut, and L1GctJetEtCalibrationLut.

Referenced by L1GctLut< NAddressBits, NDataBits >::lutValue().


Friends And Related Function Documentation

template<int NAddressBits, int NDataBits>
std::ostream& operator<< ( std::ostream &  os,
const L1GctLut< NAddressBits, NDataBits > &  lut 
) [friend]

Overload << operator.

Definition at line 30 of file L1GctLut.h.

00031   {
00032     //----------------------------------------------------------------------------------------
00033     // Define the code here for the friend template function to get around
00034     // compiler/linker problems when instantiating the template class.
00035     // See https://www.parashift.com/c++-faq-lite/templates.html#faq-35.16
00036     static const int maxAddress=L1GctLut<NAddressBits, NDataBits>::MAX_ADDRESS_BITMASK;
00037     static const int width=L1GctLut<NAddressBits, NDataBits>::printWidth;
00038 
00039     os << lut.printHeader();
00040 
00041     for (int a=0; a<=maxAddress; a += width) {
00042       os << lut.printLine(a);
00043     }
00044     return os;
00045     // End of friend function definition
00046     //----------------------------------------------------------------------------------------
00047   }


Member Data Documentation

template<int NAddressBits, int NDataBits>
bool L1GctLut< NAddressBits, NDataBits >::m_setupOk [protected]

Definition at line 78 of file L1GctLut.h.

Referenced by L1GctLut< NAddressBits, NDataBits >::lutValue(), and L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::setupOk().

template<int NAddressBits, int NDataBits>
bool L1GctLut< NAddressBits, NDataBits >::m_verbose [protected]

Definition at line 79 of file L1GctLut.h.

Referenced by L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::setTerse(), and L1GctLut< L1GctHfLutSetup::kHfEtSumBits, L1GctHfLutSetup::kHfOutputBits >::setVerbose().

template<int NAddressBits, int NDataBits>
const uint16_t L1GctLut< NAddressBits, NDataBits >::MAX_ADDRESS_BITMASK = (1 << NAddressBits) - 1 [inline, static]

Definition at line 24 of file L1GctLut.h.

Referenced by L1GctLut< NAddressBits, NDataBits >::equalityCheck(), L1GctLut< NAddressBits, NDataBits >::lutValue(), L1GctLut< NAddressBits, NDataBits >::printHeader(), and L1GctLut< NAddressBits, NDataBits >::printLine().

template<int NAddressBits, int NDataBits>
const uint16_t L1GctLut< NAddressBits, NDataBits >::MAX_DATA_BITMASK = (1 << NDataBits) - 1 [inline, static]

Definition at line 25 of file L1GctLut.h.

Referenced by L1GctLut< NAddressBits, NDataBits >::lutValue().

template<int NAddressBits, int NDataBits>
const int L1GctLut< NAddressBits, NDataBits >::printWidth = 16 [inline, static, private]

Definition at line 84 of file L1GctLut.h.

Referenced by L1GctLut< NAddressBits, NDataBits >::printHeader(), and L1GctLut< NAddressBits, NDataBits >::printLine().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:26:38 2009 for CMSSW by  doxygen 1.5.4