ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
EventCommonTPCnv
EventCommonTPCnv
ErrorMatrixCompressor.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/*
6
* ErrorMatrixCompressor.h
7
*
8
* Created by Dmitry Emeliyanov on 12/11/2008.
9
* <Dmitry.Emeliyanov@cern.ch>
10
*
11
*/
12
13
#ifndef EVENTCOMMONTPCNV_ERROR_MATRIX_COMPRESSOR_H
14
#define EVENTCOMMONTPCNV_ERROR_MATRIX_COMPRESSOR_H
15
16
#include <vector>
17
#include <bit>
18
#include <cstdint>
19
20
21
class
DecoderFloat_IEEE754
22
{
23
24
public
:
25
26
void
setF
(
float
f)
27
{
28
m_data
=std::bit_cast<std::uint32_t>(f);
29
}
30
float
getF
()
31
{
32
auto
myUint =
m_data
;
33
if
(myUint==0x80000000u)
34
return
0.0;
35
else
36
return
std::bit_cast<float>(
m_data
);
37
}
38
void
setL
(
int
l)
39
{
40
m_data
=l;
41
}
42
unsigned
int
getL
()
43
{
44
return
m_data
;
45
}
46
void
print
();
47
short
int
getExponent
();
48
unsigned
int
getMantissa
();
49
void
setExponent
(
short
int
);
50
void
setSign
(
int
);
51
52
std::uint32_t
m_data
{};
53
};
54
55
class
FloatRep
56
{
57
public
:
58
FloatRep
(
char
s,
unsigned
short
e,
unsigned
int
m) :
59
m_sign
(s),
m_exp
(e),
m_mant
(m)
60
{
61
62
}
63
~FloatRep
(){};
64
float
restore
()
65
{
66
67
68
if
((
m_mant
==0)&&(
m_sign
!=0))
69
return
0.0;
70
71
std::uint32_t buf=0x00000000u;
72
73
buf =
m_mant
;
74
buf = buf | (
m_exp
<< 23);
75
if
(
m_sign
!=0)
76
buf = buf | 0x80000000u;
77
return
std::bit_cast<float>(buf);
78
}
79
char
sign
()
const
80
{
81
return
m_sign
;
82
}
83
unsigned
short
exponent
()
const
84
{
85
return
m_exp
;
86
}
87
unsigned
int
mantissa
()
const
88
{
89
return
m_mant
;
90
}
91
void
sign
(
char
s)
92
{
93
m_sign
=(s==0)?0:1;
94
}
95
void
exponent
(
unsigned
short
int
e)
96
{
97
m_exp
=e;
98
}
99
void
mantissa
(
unsigned
int
m)
100
{
101
m_mant
=m;
102
}
103
104
private
:
105
char
m_sign
{};
106
std::uint32_t
m_exp
{};
107
std::uint32_t
m_mant
{};
108
};
109
110
111
112
class
ErrorMatrixCompressor
{
113
114
class
Triplet
{
115
116
public :
117
Triplet
(
int
d,
int
nd1,
int
nd2) :
m_d
(d),
m_nd1
(nd1),
m_nd2
(nd2)
118
{
119
120
}
121
~Triplet
(){};
122
int
m_d
,
m_nd1
,
m_nd2
;
123
};
124
125
public
:
126
127
ErrorMatrixCompressor
(
int
);
128
~ErrorMatrixCompressor
(){
m_tripVec
.clear();}
129
130
bool
compress
(
const
std::vector<double>&, std::vector<unsigned int>&);
131
bool
restore
(
const
std::vector<unsigned int>&, std::vector<double>&);
132
void
setBiases
(
const
int
b[6]);
133
void
setUpperLimits
(
const
int
l[2]);
134
135
protected
:
136
137
bool
CholeskyDecomposition
(
double
a
[5][5],
double
L[5][5]);
138
bool
compressFR
(
const
std::vector<FloatRep>&,std::vector<unsigned short>&);
139
bool
restoreFR
(
const
std::vector<unsigned short>&,std::vector<FloatRep>&);
140
141
short
int
m_biases
[6]{};
142
short
int
m_limits
[2]{};
143
double
m_scales
[5]{};
144
145
int
m_bitStrip
{};
146
147
private
:
148
DecoderFloat_IEEE754
m_decoder
;
149
unsigned
int
m_srcMasks
[16]{};
150
std::vector<Triplet>
m_tripVec
;
151
};
152
153
#endif
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
DecoderFloat_IEEE754
Definition
ErrorMatrixCompressor.h:22
DecoderFloat_IEEE754::getExponent
short int getExponent()
Definition
ErrorMatrixCompressor.cxx:25
DecoderFloat_IEEE754::getL
unsigned int getL()
Definition
ErrorMatrixCompressor.h:42
DecoderFloat_IEEE754::setF
void setF(float f)
Definition
ErrorMatrixCompressor.h:26
DecoderFloat_IEEE754::m_data
std::uint32_t m_data
Definition
ErrorMatrixCompressor.h:52
DecoderFloat_IEEE754::getMantissa
unsigned int getMantissa()
Definition
ErrorMatrixCompressor.cxx:31
DecoderFloat_IEEE754::getF
float getF()
Definition
ErrorMatrixCompressor.h:30
DecoderFloat_IEEE754::setL
void setL(int l)
Definition
ErrorMatrixCompressor.h:38
DecoderFloat_IEEE754::setExponent
void setExponent(short int)
Definition
ErrorMatrixCompressor.cxx:38
DecoderFloat_IEEE754::print
void print()
Definition
ErrorMatrixCompressor.cxx:20
DecoderFloat_IEEE754::setSign
void setSign(int)
Definition
ErrorMatrixCompressor.cxx:46
ErrorMatrixCompressor::Triplet::m_nd2
int m_nd2
Definition
ErrorMatrixCompressor.h:122
ErrorMatrixCompressor::Triplet::m_nd1
int m_nd1
Definition
ErrorMatrixCompressor.h:122
ErrorMatrixCompressor::Triplet::~Triplet
~Triplet()
Definition
ErrorMatrixCompressor.h:121
ErrorMatrixCompressor::Triplet::m_d
int m_d
Definition
ErrorMatrixCompressor.h:122
ErrorMatrixCompressor::Triplet::Triplet
Triplet(int d, int nd1, int nd2)
Definition
ErrorMatrixCompressor.h:117
ErrorMatrixCompressor::m_srcMasks
unsigned int m_srcMasks[16]
Definition
ErrorMatrixCompressor.h:149
ErrorMatrixCompressor::compressFR
bool compressFR(const std::vector< FloatRep > &, std::vector< unsigned short > &)
Definition
ErrorMatrixCompressor.cxx:283
ErrorMatrixCompressor::m_biases
short int m_biases[6]
Definition
ErrorMatrixCompressor.h:141
ErrorMatrixCompressor::~ErrorMatrixCompressor
~ErrorMatrixCompressor()
Definition
ErrorMatrixCompressor.h:128
ErrorMatrixCompressor::setUpperLimits
void setUpperLimits(const int l[2])
Definition
ErrorMatrixCompressor.cxx:109
ErrorMatrixCompressor::m_limits
short int m_limits[2]
Definition
ErrorMatrixCompressor.h:142
ErrorMatrixCompressor::restore
bool restore(const std::vector< unsigned int > &, std::vector< double > &)
Definition
ErrorMatrixCompressor.cxx:225
ErrorMatrixCompressor::m_tripVec
std::vector< Triplet > m_tripVec
Definition
ErrorMatrixCompressor.h:150
ErrorMatrixCompressor::m_scales
double m_scales[5]
Definition
ErrorMatrixCompressor.h:143
ErrorMatrixCompressor::compress
bool compress(const std::vector< double > &, std::vector< unsigned int > &)
Definition
ErrorMatrixCompressor.cxx:151
ErrorMatrixCompressor::m_bitStrip
int m_bitStrip
Definition
ErrorMatrixCompressor.h:145
ErrorMatrixCompressor::ErrorMatrixCompressor
ErrorMatrixCompressor(int)
Definition
ErrorMatrixCompressor.cxx:59
ErrorMatrixCompressor::m_decoder
DecoderFloat_IEEE754 m_decoder
Definition
ErrorMatrixCompressor.h:148
ErrorMatrixCompressor::CholeskyDecomposition
bool CholeskyDecomposition(double a[5][5], double L[5][5])
Definition
ErrorMatrixCompressor.cxx:118
ErrorMatrixCompressor::restoreFR
bool restoreFR(const std::vector< unsigned short > &, std::vector< FloatRep > &)
Definition
ErrorMatrixCompressor.cxx:410
ErrorMatrixCompressor::setBiases
void setBiases(const int b[6])
Definition
ErrorMatrixCompressor.cxx:101
FloatRep::exponent
void exponent(unsigned short int e)
Definition
ErrorMatrixCompressor.h:95
FloatRep::exponent
unsigned short exponent() const
Definition
ErrorMatrixCompressor.h:83
FloatRep::sign
char sign() const
Definition
ErrorMatrixCompressor.h:79
FloatRep::restore
float restore()
Definition
ErrorMatrixCompressor.h:64
FloatRep::~FloatRep
~FloatRep()
Definition
ErrorMatrixCompressor.h:63
FloatRep::sign
void sign(char s)
Definition
ErrorMatrixCompressor.h:91
FloatRep::m_sign
char m_sign
Definition
ErrorMatrixCompressor.h:105
FloatRep::mantissa
void mantissa(unsigned int m)
Definition
ErrorMatrixCompressor.h:99
FloatRep::m_mant
std::uint32_t m_mant
Definition
ErrorMatrixCompressor.h:107
FloatRep::m_exp
std::uint32_t m_exp
Definition
ErrorMatrixCompressor.h:106
FloatRep::FloatRep
FloatRep(char s, unsigned short e, unsigned int m)
Definition
ErrorMatrixCompressor.h:58
FloatRep::mantissa
unsigned int mantissa() const
Definition
ErrorMatrixCompressor.h:87
Generated on
for ATLAS Offline Software by
1.17.0