BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ComPackFlatFloat Class Reference

#include <ComPackFlatFloat.h>

Inheritance diagram for ComPackFlatFloat:

Public Member Functions

 ComPackFlatFloat (const double, const double, size_t)
virtual ~ComPackFlatFloat ()
StatusCode pack (const double, d_ULong &) const
StatusCode unpack (const d_ULong, double &) const
void testMe (size_t, double &)
 ComPackFlatFloat (const double, const double, size_t)
virtual ~ComPackFlatFloat ()
StatusCode pack (const double, d_ULong &) const
StatusCode unpack (const d_ULong, double &) const
void testMe (size_t, double &)
 ComPackFlatFloat (const double, const double, size_t)
virtual ~ComPackFlatFloat ()
StatusCode pack (const double, d_ULong &) const
StatusCode unpack (const d_ULong, double &) const
void testMe (size_t, double &)
Public Member Functions inherited from ComPackBase< double >
 ComPackBase ()
virtual ~ComPackBase ()
virtual const double & getMinVal () const
virtual const double & getMaxVal () const
virtual const double & getRange () const
d_ULong bitRange () const
d_ULong bitMask () const
ComPackBaseoperator= (const ComPackBase &)

Additional Inherited Members

Public Types inherited from ComPackBaseBase
enum  StatusCode {
  TAG_OK , TAG_BAD , TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN ,
  TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD , TAG_RANGE_ERROR ,
  TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD ,
  TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP
}
enum  StatusCode {
  TAG_OK , TAG_BAD , TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN ,
  TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD , TAG_RANGE_ERROR ,
  TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD ,
  TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP
}
enum  StatusCode {
  TAG_OK , TAG_BAD , TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN ,
  TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD , TAG_RANGE_ERROR ,
  TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP , TAG_OK , TAG_BAD ,
  TAG_RANGE_ERROR , TAG_VAL_ROUND_DOWN , TAG_VAL_ROUND_UP
}
Protected Types inherited from ComPackBase< double >
enum  
enum  
enum  
Protected Attributes inherited from ComPackBase< double >
double _minVal
double _maxVal
double _valRange
d_ULong _bitRange
d_ULong _bitMask

Detailed Description

Constructor & Destructor Documentation

◆ ComPackFlatFloat() [1/3]

ComPackFlatFloat::ComPackFlatFloat ( const double val_one,
const double val_two,
size_t bits )

Definition at line 59 of file ComPackFlatFloat.cxx.

59 {
60 if ( val_one > val_two )
61 {
62 _minVal = val_two;
63 _maxVal = val_one;
64 }
65 else
66 {
67 _minVal = val_one;
68 _maxVal = val_two;
69 }
70
71 // this is a stupid test. I wanted to packa a number in nano-seconds,
72 // and it refused. I've removed the test dnb 11/17/00
73 // const double epsilon = 0.0001;
74 const double epsilon = 0.0;
75 if ( ( _maxVal - _minVal ) <= epsilon )
76 {
77 cout << " ErrMsg(fatal) "
78 << "Error : Range is zero!" << endl;
79 abort();
80 }
82
83 if ( bits > _maxlongbits )
84 {
85 bits = _maxlongbits;
86 cout << " ErrMsg(fatal) "
87 << "Warning : Number of bits truncated! "
88 << "Reason : Number of bits too large for " << _maxlongbits
89 << " bit packing operations! "
90 << "This is probably caused by a serious typo somewhere!" << endl;
91 abort();
92 }
93 _bitRange = bits;
94 _bitMask = ( 1 << _bitRange ) - 1;
95 if ( 0 == _bitMask )
96 { // check for wrap around
97 _bitMask--;
98 }
99 // preset packing.
100 _pacfac = ( 1 << _bitRange ) / _valRange;
101 _upacfac = 1.0 / _pacfac;
102}
const double epsilon

◆ ~ComPackFlatFloat() [1/3]

ComPackFlatFloat::~ComPackFlatFloat ( )
virtual

Definition at line 104 of file ComPackFlatFloat.cxx.

104{}

◆ ComPackFlatFloat() [2/3]

ComPackFlatFloat::ComPackFlatFloat ( const double ,
const double ,
size_t  )

◆ ~ComPackFlatFloat() [2/3]

virtual ComPackFlatFloat::~ComPackFlatFloat ( )
virtual

◆ ComPackFlatFloat() [3/3]

ComPackFlatFloat::ComPackFlatFloat ( const double ,
const double ,
size_t  )

◆ ~ComPackFlatFloat() [3/3]

virtual ComPackFlatFloat::~ComPackFlatFloat ( )
virtual

Member Function Documentation

◆ pack() [1/3]

ComPackBase< double >::StatusCode ComPackFlatFloat::pack ( const double theval,
d_ULong & packedval ) const
virtual

Implements ComPackBase< double >.

Definition at line 106 of file ComPackFlatFloat.cxx.

107 {
108 StatusCode retval( TAG_OK );
109 double dpack = ( theval - _minVal ) * _pacfac;
110 packedval = (d_ULong)dpack;
111 if ( dpack > _bitMask )
112 {
113 packedval = _bitMask;
114 retval = TAG_VAL_ROUND_DOWN;
115 }
116 else if ( dpack < 0 )
117 {
118 packedval = 0; // clamp
119 retval = TAG_VAL_ROUND_UP;
120 }
121 return retval;
122}

Referenced by testMe().

◆ pack() [2/3]

StatusCode ComPackFlatFloat::pack ( const double ,
d_ULong &  ) const
virtual

Implements ComPackBase< double >.

◆ pack() [3/3]

StatusCode ComPackFlatFloat::pack ( const double ,
d_ULong &  ) const
virtual

Implements ComPackBase< double >.

◆ testMe() [1/3]

void ComPackFlatFloat::testMe ( size_t numsteps,
double & toterror )

Definition at line 130 of file ComPackFlatFloat.cxx.

130 {
131 if ( 0 == numsteps ) return;
132 toterror = 0.;
133 const double incstep = double( _valRange ) / double( numsteps );
134 for ( double i = _minVal; i <= _maxVal; i += incstep )
135 {
136 d_ULong tagVal;
137 pack( i, tagVal );
138 double unTagVal;
139 unpack( tagVal, unTagVal );
140 cout << i << " is converted to :" << tagVal << ". Upon unpacking :" << unTagVal << endl;
141 toterror += fabs( i - unTagVal );
142 }
143}
StatusCode unpack(const d_ULong, double &) const
StatusCode pack(const double, d_ULong &) const

◆ testMe() [2/3]

void ComPackFlatFloat::testMe ( size_t ,
double &  )

◆ testMe() [3/3]

void ComPackFlatFloat::testMe ( size_t ,
double &  )

◆ unpack() [1/3]

ComPackBase< double >::StatusCode ComPackFlatFloat::unpack ( const d_ULong val,
double & unpackedval ) const
virtual

Implements ComPackBase< double >.

Definition at line 124 of file ComPackFlatFloat.cxx.

125 {
126 unpackedval = ( ( val & _bitMask ) + 0.5 ) * _upacfac + _minVal;
127 return TAG_OK;
128}

Referenced by testMe().

◆ unpack() [2/3]

StatusCode ComPackFlatFloat::unpack ( const d_ULong ,
double &  ) const
virtual

Implements ComPackBase< double >.

◆ unpack() [3/3]

StatusCode ComPackFlatFloat::unpack ( const d_ULong ,
double &  ) const
virtual

Implements ComPackBase< double >.


The documentation for this class was generated from the following files: