ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileRecUtils
src
TileNNEmulator.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TILERECUTILS_TILENNEMULATOR_H
6
#define TILERECUTILS_TILENNEMULATOR_H
7
#include <cstdint>
8
#include <string>
9
#include <vector>
10
15
class
TileNNEmulator
{
16
public
:
17
26
bool
load
(
const
std::string& jsonText, std::string&
error
);
27
int
nSamples
()
const
{
return
m_nSamples
; }
28
30
float
sValue
(
float
hg,
float
lg)
const
;
31
35
int64_t
run
(
const
float
* s)
const
;
36
38
int
outFracBits
()
const
{
return
m_layers
.back().outT.frac(); }
39
double
amplitudeScale
()
const
{
return
m_ampScale
; }
40
41
private
:
42
enum class
Round
{
RND_CONV
,
TRN
};
43
enum class
Sat
{
SAT
,
SAT_SYM
,
WRAP
};
44
45
struct
FixSpec
{
46
int
w
= 0;
47
int
i
= 0;
48
Round
round
=
Round::TRN
;
49
Sat
sat
=
Sat::WRAP
;
50
int
frac
()
const
{
return
w
-
i
; }
51
};
52
53
enum class
Op
{
Dense
,
LeakyRelu
};
54
55
struct
Layer
{
56
Op
op
=
Op::Dense
;
57
int
nIn
= 0;
58
int
nOut
= 0;
59
int
alphaShift
= 0;
60
FixSpec
weightT
,
accumT
,
biasT
,
outT
;
61
std::vector<int64_t>
w
,
b
;
62
};
63
64
static
int64_t
rshiftRoundHalfEven
(int64_t v,
int
k);
65
static
int64_t
castTo
(int64_t v,
int
fracFrom,
const
FixSpec
& spec);
66
int
m_nSamples
= 0;
67
double
m_lgScale
= 0.0;
68
double
m_denominator
= 0.0;
69
double
m_ampScale
= 0.0;
70
FixSpec
m_inT
,
m_castT
;
71
std::vector<Layer>
m_layers
;
72
};
73
74
#endif
// TILERECUTILS_TILENNEMULATOR_H
TileNNEmulator
Bit-exact software emulator of the TilePPr neural-network energy reconstruction.
Definition
TileNNEmulator.h:15
TileNNEmulator::m_lgScale
double m_lgScale
Definition
TileNNEmulator.h:67
TileNNEmulator::m_castT
FixSpec m_castT
Definition
TileNNEmulator.h:70
TileNNEmulator::amplitudeScale
double amplitudeScale() const
Definition
TileNNEmulator.h:39
TileNNEmulator::m_denominator
double m_denominator
Definition
TileNNEmulator.h:68
TileNNEmulator::castTo
static int64_t castTo(int64_t v, int fracFrom, const FixSpec &spec)
Definition
TileNNEmulator.cxx:20
TileNNEmulator::sValue
float sValue(float hg, float lg) const
Combined dual-gain input sample S = (hg + lgScale*lg) / denominator.
Definition
TileNNEmulator.cxx:46
TileNNEmulator::m_nSamples
int m_nSamples
Definition
TileNNEmulator.h:66
TileNNEmulator::rshiftRoundHalfEven
static int64_t rshiftRoundHalfEven(int64_t v, int k)
Definition
TileNNEmulator.cxx:10
TileNNEmulator::m_layers
std::vector< Layer > m_layers
Definition
TileNNEmulator.h:71
TileNNEmulator::Round
Round
Definition
TileNNEmulator.h:42
TileNNEmulator::Round::TRN
@ TRN
Definition
TileNNEmulator.h:42
TileNNEmulator::Round::RND_CONV
@ RND_CONV
Definition
TileNNEmulator.h:42
TileNNEmulator::run
int64_t run(const float *s) const
Definition
TileNNEmulator.cxx:50
TileNNEmulator::m_ampScale
double m_ampScale
Definition
TileNNEmulator.h:69
TileNNEmulator::Sat
Sat
Definition
TileNNEmulator.h:43
TileNNEmulator::Sat::SAT_SYM
@ SAT_SYM
Definition
TileNNEmulator.h:43
TileNNEmulator::Sat::SAT
@ SAT
Definition
TileNNEmulator.h:43
TileNNEmulator::Sat::WRAP
@ WRAP
Definition
TileNNEmulator.h:43
TileNNEmulator::m_inT
FixSpec m_inT
Definition
TileNNEmulator.h:70
TileNNEmulator::Op
Op
Definition
TileNNEmulator.h:53
TileNNEmulator::Op::Dense
@ Dense
Definition
TileNNEmulator.h:53
TileNNEmulator::Op::LeakyRelu
@ LeakyRelu
Definition
TileNNEmulator.h:53
TileNNEmulator::outFracBits
int outFracBits() const
Fractional bits of the output word (code * 2^-outFracBits() = value).
Definition
TileNNEmulator.h:38
TileNNEmulator::nSamples
int nSamples() const
Definition
TileNNEmulator.h:27
TileNNEmulator::load
bool load(const std::string &jsonText, std::string &error)
Definition
TileNNEmulator.cxx:98
error
Definition
IImpactPoint3dEstimator.h:72
TileNNEmulator::FixSpec
Definition
TileNNEmulator.h:45
TileNNEmulator::FixSpec::i
int i
Definition
TileNNEmulator.h:47
TileNNEmulator::FixSpec::frac
int frac() const
Definition
TileNNEmulator.h:50
TileNNEmulator::FixSpec::w
int w
Definition
TileNNEmulator.h:46
TileNNEmulator::FixSpec::round
Round round
Definition
TileNNEmulator.h:48
TileNNEmulator::FixSpec::sat
Sat sat
Definition
TileNNEmulator.h:49
TileNNEmulator::Layer
Definition
TileNNEmulator.h:55
TileNNEmulator::Layer::nOut
int nOut
Definition
TileNNEmulator.h:58
TileNNEmulator::Layer::outT
FixSpec outT
Definition
TileNNEmulator.h:60
TileNNEmulator::Layer::op
Op op
Definition
TileNNEmulator.h:56
TileNNEmulator::Layer::accumT
FixSpec accumT
Definition
TileNNEmulator.h:60
TileNNEmulator::Layer::biasT
FixSpec biasT
Definition
TileNNEmulator.h:60
TileNNEmulator::Layer::w
std::vector< int64_t > w
Definition
TileNNEmulator.h:61
TileNNEmulator::Layer::weightT
FixSpec weightT
Definition
TileNNEmulator.h:60
TileNNEmulator::Layer::nIn
int nIn
Definition
TileNNEmulator.h:57
TileNNEmulator::Layer::alphaShift
int alphaShift
Definition
TileNNEmulator.h:59
TileNNEmulator::Layer::b
std::vector< int64_t > b
Definition
TileNNEmulator.h:61
Generated on
for ATLAS Offline Software by
1.17.0