CMS 3D CMS Logo

List of all members | Public Member Functions
L1GctJetCount< nBits > Class Template Reference

Definition of unsigned integer types with increment and overflow. More...

#include <L1GctJetCount.h>

Inheritance diagram for L1GctJetCount< nBits >:
L1GctUnsignedInt< nBits >

Public Member Functions

 L1GctJetCount ()
 Construct a counter and initialise its value to zero. More...
 
 L1GctJetCount (unsigned value)
 Construct a counter, checking for overFlow. More...
 
template<int mBits>
 L1GctJetCount (const L1GctJetCount< mBits > &rhs)
 Copy contructor to move data between representations with different numbers of bits. More...
 
L1GctJetCount operator+ (const L1GctJetCount &rhs) const
 add two numbers More...
 
L1GctJetCountoperator++ ()
 Define increment operators, since this is a counter. More...
 
L1GctJetCount operator++ (int)
 
L1GctJetCountoperator= (int value)
 overload = operator More...
 
void setOverFlow (bool oflow)
 set the overflow bit More...
 
void setValue (unsigned value)
 Set value from unsigned. More...
 
 ~L1GctJetCount ()
 Destructor. More...
 
- Public Member Functions inherited from L1GctUnsignedInt< nBits >
 L1GctUnsignedInt ()
 Construct an unsigned integer with initial value zero. More...
 
 L1GctUnsignedInt (unsigned value)
 Construct an unsigned integer and check for overFlow. More...
 
template<int mBits>
 L1GctUnsignedInt (const L1GctUnsignedInt< mBits > &rhs)
 Copy contructor to move data between representations with different numbers of bits. More...
 
L1GctUnsignedInt operator+ (const L1GctUnsignedInt &rhs) const
 add two numbers More...
 
L1GctUnsignedIntoperator= (int value)
 overload = operator More...
 
bool overFlow () const
 access overflow More...
 
void reset ()
 reset value and overflow to zero More...
 
void setOverFlow (bool oflow)
 set the overflow bit More...
 
void setValue (unsigned value)
 Set value from unsigned. More...
 
int size () const
 return number of bits More...
 
unsigned value () const
 access value as unsigned More...
 
 ~L1GctUnsignedInt ()
 Destructor. More...
 

Additional Inherited Members

- Protected Attributes inherited from L1GctUnsignedInt< nBits >
int m_nBits
 
bool m_overFlow
 
unsigned m_value
 
- Static Protected Attributes inherited from L1GctUnsignedInt< nBits >
static const int MAX_NBITS = 24
 

Detailed Description

template<int nBits>
class L1GctJetCount< nBits >

Definition of unsigned integer types with increment and overflow.

This file defines the template class L1GctJetCount. It is used to store energy values that are represented in a given number of bits in hardware. The value is set to the maximum (all bits set to '1') to represent an overFlow condition, if the number to be represented is outside the allowed range for that number of bits. The counters are unsigned integers. Functions are defined to increment the counter, to add two values, and to copy data into a different number of bits.

this header file contains method definitions because these are template classes see http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12

Author
Jim Brooke & Greg Heath
Date
May 2006

Definition at line 30 of file L1GctJetCount.h.

Constructor & Destructor Documentation

template<int nBits>
L1GctJetCount< nBits >::L1GctJetCount ( )

Construct a counter and initialise its value to zero.

Definition at line 61 of file L1GctJetCount.h.

Definition of unsigned integer types with overflow.
template<int nBits>
L1GctJetCount< nBits >::L1GctJetCount ( unsigned  value)

Construct a counter, checking for overFlow.

Definition at line 64 of file L1GctJetCount.h.

Definition of unsigned integer types with overflow.
unsigned value() const
access value as unsigned
template<int nBits>
L1GctJetCount< nBits >::~L1GctJetCount ( )

Destructor.

Definition at line 67 of file L1GctJetCount.h.

67 {}
template<int nBits>
template<int mBits>
L1GctJetCount< nBits >::L1GctJetCount ( const L1GctJetCount< mBits > &  rhs)

Copy contructor to move data between representations with different numbers of bits.

Definition at line 73 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::m_nBits, L1GctUnsignedInt< nBits >::MAX_NBITS, L1GctUnsignedInt< nBits >::overFlow(), L1GctJetCount< nBits >::setOverFlow(), L1GctJetCount< nBits >::setValue(), and L1GctUnsignedInt< nBits >::value().

73  {
74  this->m_nBits = nBits > 0 && nBits < this->MAX_NBITS ? nBits : 16;
75  this->setValue(rhs.value());
76  this->setOverFlow(this->overFlow() || rhs.overFlow());
77 }
void setOverFlow(bool oflow)
set the overflow bit
Definition: L1GctJetCount.h:91
void setValue(unsigned value)
Set value from unsigned.
Definition: L1GctJetCount.h:80
unsigned value() const
access value as unsigned
static const int MAX_NBITS
bool overFlow() const
access overflow

Member Function Documentation

template<int nBits>
L1GctJetCount< nBits > L1GctJetCount< nBits >::operator+ ( const L1GctJetCount< nBits > &  rhs) const

add two numbers

Definition at line 115 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::overFlow(), L1GctJetCount< nBits >::setOverFlow(), L1GctJetCount< nBits >::setValue(), groupFilesInBlocks::temp, and L1GctUnsignedInt< nBits >::value().

115  {
116  // temporary variable for storing the result (need to set its size)
118 
119  unsigned sum;
120  bool ofl;
121 
122  // do the addition here
123  sum = this->value() + rhs.value();
124  ofl = this->overFlow() || rhs.overFlow();
125 
126  //fill the temporary argument
127  temp.setValue(sum);
128  temp.setOverFlow(temp.overFlow() || ofl);
129 
130  // return the temporary
131  return temp;
132 }
Definition of unsigned integer types with increment and overflow.
Definition: L1GctJetCount.h:30
void setOverFlow(bool oflow)
set the overflow bit
Definition: L1GctJetCount.h:91
void setValue(unsigned value)
Set value from unsigned.
Definition: L1GctJetCount.h:80
unsigned value() const
access value as unsigned
bool overFlow() const
access overflow
template<int nBits>
L1GctJetCount< nBits > & L1GctJetCount< nBits >::operator++ ( void  )

Define increment operators, since this is a counter.

Definition at line 100 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::m_value, and L1GctJetCount< nBits >::setValue().

100  {
101  this->setValue(this->m_value + 1);
102  return *this;
103 }
void setValue(unsigned value)
Set value from unsigned.
Definition: L1GctJetCount.h:80
template<int nBits>
L1GctJetCount< nBits > L1GctJetCount< nBits >::operator++ ( int  )

Definition at line 106 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::m_overFlow, L1GctUnsignedInt< nBits >::m_value, L1GctJetCount< nBits >::setOverFlow(), L1GctJetCount< nBits >::setValue(), and groupFilesInBlocks::temp.

106  {
108  temp.setOverFlow(this->m_overFlow);
109  this->setValue(this->m_value + 1);
110  return temp;
111 }
Definition of unsigned integer types with increment and overflow.
Definition: L1GctJetCount.h:30
void setValue(unsigned value)
Set value from unsigned.
Definition: L1GctJetCount.h:80
template<int nBits>
L1GctJetCount< nBits > & L1GctJetCount< nBits >::operator= ( int  value)

overload = operator

Definition at line 136 of file L1GctJetCount.h.

References L1GctJetCount< nBits >::setValue().

136  {
137  this->setValue(value);
138  return *this;
139 }
void setValue(unsigned value)
Set value from unsigned.
Definition: L1GctJetCount.h:80
Definition: value.py:1
template<int nBits>
void L1GctJetCount< nBits >::setOverFlow ( bool  oflow)

set the overflow bit

Definition at line 91 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::m_nBits, L1GctUnsignedInt< nBits >::m_overFlow, and L1GctUnsignedInt< nBits >::m_value.

Referenced by L1GctJetCount< nBits >::L1GctJetCount(), L1GctJetCount< nBits >::operator+(), and L1GctJetCount< nBits >::operator++().

91  {
92  this->m_overFlow = oflow;
93  if (oflow) {
94  this->m_value = ((1 << this->m_nBits) - 1);
95  }
96 }
template<int nBits>
void L1GctJetCount< nBits >::setValue ( unsigned  value)

Set value from unsigned.

Definition at line 80 of file L1GctJetCount.h.

References L1GctUnsignedInt< nBits >::m_nBits, L1GctUnsignedInt< nBits >::m_overFlow, L1GctUnsignedInt< nBits >::m_value, and L1GctUnsignedInt< nBits >::value().

Referenced by L1GctJetCount< nBits >::L1GctJetCount(), L1GctJetCount< nBits >::operator+(), L1GctJetCount< nBits >::operator++(), and L1GctJetCount< nBits >::operator=().

80  {
81  // check for overflow
82  if (value >= (static_cast<unsigned>((1 << this->m_nBits) - 1))) {
83  this->m_overFlow = true;
84  this->m_value = ((1 << this->m_nBits) - 1);
85  } else {
86  this->m_value = value;
87  }
88 }
unsigned value() const
access value as unsigned
Definition: value.py:1