CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
L1MuPseudoSignedPacking Class Reference

#include <L1MuPacking.h>

Inheritance diagram for L1MuPseudoSignedPacking:
L1MuPacking

Public Member Functions

int idxFromPacked (unsigned packed) const override
 get the value from the packed notation (+/-) More...
 
 L1MuPseudoSignedPacking ()
 
 L1MuPseudoSignedPacking (unsigned int nbits)
 
unsigned packedFromIdx (int idx) const override
 get the packed notation of a value, check range More...
 
virtual unsigned packedFromIdx (int idx, int sig) const
 get the packed notation of a value, check range; sets the sign separately, 1 is neg. sign(!) More...
 
int signFromPacked (unsigned packed) const override
 get the (pseudo-)sign from the packed notation (0=positive, 1=negative) More...
 
 ~L1MuPseudoSignedPacking () override
 
- Public Member Functions inherited from L1MuPacking
virtual ~L1MuPacking ()
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

unsigned int m_nbits
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

Detailed Description

Packing of a signed int in a bit field (pseudo-sign)

There is a -0 and a +0 in the pseudo-signed scale

Definition at line 150 of file L1MuPacking.h.

Constructor & Destructor Documentation

◆ L1MuPseudoSignedPacking() [1/2]

L1MuPseudoSignedPacking::L1MuPseudoSignedPacking ( )
inline

Definition at line 152 of file L1MuPacking.h.

152 {}

◆ ~L1MuPseudoSignedPacking()

L1MuPseudoSignedPacking::~L1MuPseudoSignedPacking ( )
inlineoverride

Definition at line 153 of file L1MuPacking.h.

153 {};

◆ L1MuPseudoSignedPacking() [2/2]

L1MuPseudoSignedPacking::L1MuPseudoSignedPacking ( unsigned int  nbits)
inline

Definition at line 154 of file L1MuPacking.h.

154 : m_nbits(nbits){};

Member Function Documentation

◆ idxFromPacked()

int L1MuPseudoSignedPacking::idxFromPacked ( unsigned  packed) const
inlineoverridevirtual

get the value from the packed notation (+/-)

Implements L1MuPacking.

Definition at line 160 of file L1MuPacking.h.

References createfilelist::int, m_nbits, and ALPAKA_ACCELERATOR_NAMESPACE::pixelClustering::pixelStatus::mask.

Referenced by L1MuSymmetricBinnedScale::getCenter(), and L1MuSymmetricBinnedScale::getLowEdge().

160  {
161  unsigned mask = (1 << (m_nbits - 1)) - 1; // for lower bits
162  int absidx = (int)(packed & mask);
163  unsigned psmask = (1 << (m_nbits - 1));
164  return absidx * (((packed & psmask) == psmask) ? -1 : 1); // pseudo sign==1 is negative
165  };

◆ packedFromIdx() [1/2]

unsigned L1MuPseudoSignedPacking::packedFromIdx ( int  idx) const
inlineoverridevirtual

get the packed notation of a value, check range

Implements L1MuPacking.

Definition at line 167 of file L1MuPacking.h.

References funct::abs(), heavyIonCSV_trainingSettings::idx, and m_nbits.

Referenced by L1MuSymmetricBinnedScale::getPacked().

167  {
168  unsigned packed = std::abs(idx);
169  unsigned maxabs = (1 << (m_nbits - 1)) - 1;
170  if (packed > maxabs)
171  edm::LogWarning("ScaleRangeViolation") << "L1MuPseudoSignedPacking::packedFromIdx: warning value " << idx
172  << "exceeds " << m_nbits << "-bit range !!!";
173  if (idx < 0)
174  packed |= 1 << (m_nbits - 1);
175  return packed;
176  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Log< level::Warning, false > LogWarning

◆ packedFromIdx() [2/2]

virtual unsigned L1MuPseudoSignedPacking::packedFromIdx ( int  idx,
int  sig 
) const
inlinevirtual

get the packed notation of a value, check range; sets the sign separately, 1 is neg. sign(!)

Definition at line 179 of file L1MuPacking.h.

References funct::abs(), heavyIonCSV_trainingSettings::idx, and m_nbits.

179  {
180  unsigned packed = std::abs(idx);
181  unsigned maxabs = (1 << (m_nbits - 1)) - 1;
182  if (packed > maxabs)
183  edm::LogWarning("ScaleRangeViolation") << "L1MuPseudoSignedPacking::packedFromIdx: warning value " << idx
184  << "exceeds " << m_nbits << "-bit range !!!";
185  if (sig == 1)
186  packed |= 1 << (m_nbits - 1); // sig==1 is negative
187  return packed;
188  }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Log< level::Warning, false > LogWarning

◆ serialize()

template<class Archive >
void L1MuPseudoSignedPacking::serialize ( Archive &  ar,
const unsigned int  version 
)
private

◆ signFromPacked()

int L1MuPseudoSignedPacking::signFromPacked ( unsigned  packed) const
inlineoverridevirtual

get the (pseudo-)sign from the packed notation (0=positive, 1=negative)

Implements L1MuPacking.

Definition at line 157 of file L1MuPacking.h.

References m_nbits.

Referenced by L1MuSymmetricBinnedScale::getCenter(), and L1MuSymmetricBinnedScale::getLowEdge().

157 { return (packed & (1 << (m_nbits - 1))) ? 1 : 0; };

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Definition at line 193 of file L1MuPacking.h.

◆ cond::serialization::access

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 193 of file L1MuPacking.h.

Member Data Documentation

◆ m_nbits

unsigned int L1MuPseudoSignedPacking::m_nbits
private

Definition at line 191 of file L1MuPacking.h.

Referenced by idxFromPacked(), packedFromIdx(), and signFromPacked().