BOSS
8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ComPackSignedExpFloat.cxx
Go to the documentation of this file.
1
//--------------------------------------------------------------------------
2
// File and Version Information:
3
// $Id: ComPackSignedExpFloat.cxx,v 1.2 2009/12/23 02:59:56 zhangy Exp $
4
//
5
// Description:
6
// class ComPackExpFloat
7
//
8
// Environment:
9
// Software developed for the BaBar Detector at the SLAC B-Factory.
10
//
11
// Author List:
12
// Dave Brown 10/12/00
13
//
14
// Copyright Information:
15
// Copyright (C) 2000 LBNL
16
//
17
// History:
18
// Migration for BESIII MDC
19
//
20
//
21
//--------------------------------------------------------------------------
22
23
// #include "BaBar/BaBar.hh"
24
#include "MdcRecoUtil/ComPackSignedExpFloat.h"
25
#include <assert.h>
26
#include <math.h>
27
using
std::endl;
28
using
std::ostream;
29
30
ComPackSignedExpFloat::ComPackSignedExpFloat
(
unsigned
nbits,
unsigned
maxexponent,
31
double
maxval,
bool
invert,
bool
center )
32
:
ComPackBase
<double>( -maxval, maxval, nbits )
33
, _packer( nbits - 1, maxexponent, invert ? maxval : 0.0, invert ? 0.0 : maxval, center )
34
, _signbit( 1 << nbits - 1 )
35
, _signmask( ~( 1 << nbits - 1 ) ) {
36
assert( maxval > 0.0 );
37
}
38
39
ComPackSignedExpFloat::~ComPackSignedExpFloat
() { ; }
40
41
ComPackBase<double>::StatusCode
ComPackSignedExpFloat::pack
(
const
double
value,
42
d_ULong
& packdata )
const
{
43
// first, pack the absolute value
44
ComPackBase<double>::StatusCode
retval = _packer.pack( fabs( value ), packdata );
45
if
( retval !=
TAG_BAD
)
46
{
47
if
( value > 0 ) packdata &= _signmask;
48
else
packdata |= _signbit;
49
}
50
return
retval;
51
}
52
53
ComPackBase<double>::StatusCode
ComPackSignedExpFloat::unpack
(
const
d_ULong
packdata,
54
double
& value )
const
{
55
ComPackBase<double>::StatusCode
retval = _packer.unpack( packdata, value );
56
if
( value < 0 ) value = 0;
57
else
if
( packdata & _signbit ) value *= -1.0;
58
return
retval;
59
}
60
61
void
ComPackSignedExpFloat::print
( ostream& os )
const
{
62
os <<
"Signed exponential packer using exponential packer as follows:"
<< endl;
63
_packer.
print
( os );
64
}
d_ULong
unsigned int d_ULong
Definition
InstallArea/x86_64-el9-gcc13-dbg/include/MdcRecoUtil/BesODMGTypes.h:95
ComPackBaseBase::StatusCode
StatusCode
Definition
InstallArea/x86_64-el9-gcc13-dbg/include/MdcRecoUtil/ComPackBaseBase.h:35
ComPackBaseBase::TAG_BAD
@ TAG_BAD
Definition
InstallArea/x86_64-el9-gcc13-dbg/include/MdcRecoUtil/ComPackBaseBase.h:35
ComPackBase< double >::ComPackBase
ComPackBase()
Definition
InstallArea/x86_64-el9-gcc13-dbg/include/MdcRecoUtil/ComPackBase.h:44
ComPackExpFloat::print
void print(std::ostream &os) const
ComPackSignedExpFloat::unpack
virtual StatusCode unpack(const d_ULong, double &) const
Definition
ComPackSignedExpFloat.cxx:53
ComPackSignedExpFloat::ComPackSignedExpFloat
ComPackSignedExpFloat(unsigned nbits, unsigned maxexponent, double maxval, bool invert=false, bool center=false)
Definition
ComPackSignedExpFloat.cxx:30
ComPackSignedExpFloat::print
void print(std::ostream &s=std::cout) const
ComPackSignedExpFloat::~ComPackSignedExpFloat
virtual ~ComPackSignedExpFloat()
Definition
ComPackSignedExpFloat.cxx:39
ComPackSignedExpFloat::pack
virtual StatusCode pack(const double, d_ULong &) const
Definition
ComPackSignedExpFloat.cxx:41
8.0.0
BOSS_Source
Reconstruction
MdcPatRec
MdcRecoUtil
src
ComPackSignedExpFloat.cxx
Generated by
1.16.1