ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
EFTracking
FPGATrackSim
FPGATrackSimBinning
src
FPGATrackSimBinStep.cxx
Go to the documentation of this file.
1
2
// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
10
11
#include "
AthenaBaseComps/AthMsgStreamMacros.h
"
12
#include "
FPGATrackSimBinning/IFPGATrackSimBinDesc.h
"
13
#include <GaudiKernel/StatusCode.h>
14
#include "
FPGATrackSimBinning/FPGATrackSimBinStep.h
"
15
16
using
FPGATrackSimBinUtil::ParSet
;
17
using
FPGATrackSimBinUtil::IdxSet
;
18
19
StatusCode
FPGATrackSimBinStep::initialize
()
20
{
21
// Dump the configuration to make sure it propagated through right
22
const
std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
23
for
( Gaudi::Details::PropertyBase* prop : props ) {
24
if
(prop->ownerTypeName()==this->type()) {
25
ATH_MSG_DEBUG
(
"Property:\t"
<< prop->name() <<
"\t : \t"
<< prop->toString());
26
}
27
}
28
29
return
StatusCode::SUCCESS;
30
}
31
32
StatusCode
FPGATrackSimBinStep::setRanges
(
FPGATrackSimBinStep
*prev,
33
const
ParSet
&parMin,
34
const
ParSet
&parMax) {
35
36
m_prev
= prev;
37
if
(prev) {
38
m_stepNum
= prev->
m_stepNum
+1;
39
}
else
{
40
m_stepNum
= 0;
41
}
42
m_parMin
= parMin;
43
m_parMax
= parMax;
44
m_parBins
= std::vector<unsigned>(
m_parBinsConfig
);
45
for
(
unsigned
par = 0; par <
FPGATrackSimTrackPars::NPARS
; par++) {
46
if
(
m_parBins
[par] <= 0) {
47
ATH_MSG_FATAL
(
"Every dimension must be at least one bin"
);
48
return
StatusCode::FAILURE;
49
}
50
m_parStep
[par] = (
m_parMax
[par] -
m_parMin
[par]) /
m_parBins
[par];
51
if
(
m_parBins
[par] <= 0)
52
{
53
ATH_MSG_FATAL
(
"Every dimension must be at least one bin (set #bins=1 for not binning in that parameter)"
);
54
}
55
if
(prev) {
56
if
(
m_parBins
[par] < prev->
m_parBins
[par]) {
57
ATH_MSG_FATAL
(
"Number of bins can only increase with each step"
);
58
return
StatusCode::FAILURE;
59
}
60
if
(
m_parBins
[par] % prev->
m_parBins
[par] !=0) {
61
ATH_MSG_FATAL
(
"Number of bins must be integer multiple of bins in previous step"
);
62
return
StatusCode::FAILURE;
63
}
64
if
(
m_parBins
[par] != prev->
m_parBins
[par]) {
65
// This step involves this parameter
66
m_pars
.push_back(par);
67
}
68
}
else
{
69
if
(
m_parBins
[par] != 1) {
70
// This step involves this parameter
71
m_pars
.push_back(par);
72
}
73
}
74
}
75
76
ATH_MSG_DEBUG
(
"Parameters = "
<<
m_pars
);
77
78
return
StatusCode::SUCCESS;
79
}
80
81
ParSet
FPGATrackSimBinStep::binLowEdge
(
const
IdxSet
&idx)
const
82
{
83
ParSet
parset;
84
for
(
unsigned
i = 0; i <
FPGATrackSimTrackPars::NPARS
; i++)
85
{
86
parset[i] =
binLowEdge
(i, idx[i]);
87
}
88
return
parset;
89
}
90
91
ParSet
FPGATrackSimBinStep::binCenter
(
const
IdxSet
&idx)
const
92
{
93
ParSet
parset;
94
for
(
unsigned
i = 0; i <
FPGATrackSimTrackPars::NPARS
; i++)
95
{
96
parset[i] =
binCenter
(i, idx[i]);
97
}
98
return
parset;
99
}
100
101
IdxSet
FPGATrackSimBinStep::binIdx
(
const
ParSet
&pars)
const
102
{
103
IdxSet
retv;
104
for
(
unsigned
i = 0; i <
FPGATrackSimTrackPars::NPARS
; i++)
105
{
106
retv[i] =
binIdx
(i, pars[i]);
107
}
108
return
retv;
109
}
110
111
112
113
// Convert to previous steps idx
114
IdxSet
FPGATrackSimBinStep::convertToPrev
(
const
FPGATrackSimBinUtil::IdxSet
&cur)
const
{
115
IdxSet
retv{};
116
if
(
m_prev
) {
117
for
(
unsigned
par =0; par <
FPGATrackSimTrackPars::NPARS
; par++) {
118
retv[par] = int(cur[par]*((
const
FPGATrackSimBinStep
*)
m_prev
)->
m_parBins
[par]/
m_parBins
[par]);
119
}
120
}
else
{
121
ATH_MSG_FATAL
(
"convertToPrev called, but no previous"
);
122
}
123
return
retv;
124
}
125
126
127
const
std::vector<unsigned>
FPGATrackSimBinStep::stepIdx
(
IdxSet
idx)
const
{
128
return
FPGATrackSimBinUtil::subVec
(
m_pars
, idx);}
129
130
const
std::vector<unsigned>
FPGATrackSimBinStep::stepBins
()
const
{
131
return
FPGATrackSimBinUtil::subVec
(
m_pars
,
m_parBins
);}
132
133
void
FPGATrackSimBinStep::setValidBin
(
const
std::vector<unsigned>& idx) {
134
m_validBinFull
[idx] =
true
;
135
m_validBinLocal
[
stepIdx
(idx)] =
true
;
136
if
(
m_prev
)
m_prev
->setValidBin(
convertToPrev
(idx));
137
}
138
139
void
FPGATrackSimBinStep::initValidBins
() {
140
m_validBinFull
.setsize(
m_parBins
,
false
);
141
m_validBinLocal
.setsize(
stepIdx
(
m_parBins
),
false
);
142
}
143
144
void
FPGATrackSimBinStep::printValidBin
()
const
{
145
// count valid bins
146
int
validBinsFull
= 0;
147
148
for
(
FPGATrackSimBinArray<int>::ConstIterator
bin
:
m_validBinFull
) {
149
if
(
bin
.data())
150
validBinsFull
++;
151
}
152
ATH_MSG_INFO
(
"Step"
<< name() <<
"Valid Bins Full: "
<<
validBinsFull
);
153
154
// count valid bins local
155
int
validBinsLocal
= 0;
156
for
(
FPGATrackSimBinArray<int>::ConstIterator
bin
:
m_validBinLocal
) {
157
if
(
bin
.data())
158
validBinsLocal
++;
159
}
160
ATH_MSG_INFO
(
"Step"
<< name() <<
"Valid Bins Local: "
<<
validBinsLocal
);
161
162
}
163
AthMsgStreamMacros.h
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
FPGATrackSimBinStep.h
Binning Classes for BinStep.
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimBinStep::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition
FPGATrackSimBinStep.h:62
FPGATrackSimBinStep::validBinsLocal
const FPGATrackSimBinArray< int > & validBinsLocal() const
Definition
FPGATrackSimBinStep.h:98
FPGATrackSimBinStep::m_stepNum
unsigned m_stepNum
Definition
FPGATrackSimBinStep.h:114
FPGATrackSimBinStep::FPGATrackSimBinStep
FPGATrackSimBinStep(const std::string &algname, const std::string &name, const IInterface *ifc)
Definition
FPGATrackSimBinStep.h:47
FPGATrackSimBinStep::m_validBinLocal
FPGATrackSimBinArray< int > m_validBinLocal
Definition
FPGATrackSimBinStep.h:110
FPGATrackSimBinStep::m_parBinsConfig
Gaudi::Property< std::vector< unsigned > > m_parBinsConfig
Definition
FPGATrackSimBinStep.h:101
FPGATrackSimBinStep::binIdx
unsigned binIdx(unsigned par, double val) const
Definition
FPGATrackSimBinStep.h:70
FPGATrackSimBinStep::m_parMin
FPGATrackSimBinUtil::ParSet m_parMin
Definition
FPGATrackSimBinStep.h:121
FPGATrackSimBinStep::m_validBinFull
FPGATrackSimBinArray< int > m_validBinFull
Definition
FPGATrackSimBinStep.h:109
FPGATrackSimBinStep::convertToPrev
FPGATrackSimBinUtil::IdxSet convertToPrev(const FPGATrackSimBinUtil::IdxSet &cur) const
Definition
FPGATrackSimBinStep.cxx:114
FPGATrackSimBinStep::m_prev
FPGATrackSimBinStep * m_prev
Definition
FPGATrackSimBinStep.h:113
FPGATrackSimBinStep::m_pars
std::vector< unsigned > m_pars
Definition
FPGATrackSimBinStep.h:104
FPGATrackSimBinStep::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition
FPGATrackSimBinStep.cxx:133
FPGATrackSimBinStep::printValidBin
void printValidBin() const
Definition
FPGATrackSimBinStep.cxx:144
FPGATrackSimBinStep::m_parMax
FPGATrackSimBinUtil::ParSet m_parMax
Definition
FPGATrackSimBinStep.h:122
FPGATrackSimBinStep::initValidBins
void initValidBins()
Definition
FPGATrackSimBinStep.cxx:139
FPGATrackSimBinStep::initialize
virtual StatusCode initialize() override
Definition
FPGATrackSimBinStep.cxx:19
FPGATrackSimBinStep::m_parStep
FPGATrackSimBinUtil::ParSet m_parStep
Definition
FPGATrackSimBinStep.h:118
FPGATrackSimBinStep::binLowEdge
double binLowEdge(unsigned par, unsigned bin) const
Definition
FPGATrackSimBinStep.h:63
FPGATrackSimBinStep::setRanges
StatusCode setRanges(FPGATrackSimBinStep *prev, const FPGATrackSimBinUtil::ParSet &parMin, const FPGATrackSimBinUtil::ParSet &parMax)
Definition
FPGATrackSimBinStep.cxx:32
FPGATrackSimBinStep::m_parBins
FPGATrackSimBinUtil::IdxSet m_parBins
Definition
FPGATrackSimBinStep.h:117
FPGATrackSimBinStep::stepIdx
const std::vector< unsigned > stepIdx(FPGATrackSimBinUtil::IdxSet idx) const
Definition
FPGATrackSimBinStep.cxx:127
FPGATrackSimBinStep::stepBins
const std::vector< unsigned > stepBins() const
Definition
FPGATrackSimBinStep.cxx:130
FPGATrackSimBinStep::validBinsFull
const FPGATrackSimBinArray< int > & validBinsFull() const
Definition
FPGATrackSimBinStep.h:97
FPGATrackSimTrackPars::NPARS
@ NPARS
Definition
FPGATrackSimTrackPars.h:49
bin
Definition
BinsDiffFromStripMedian.h:43
FPGATrackSimBinUtil::subVec
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec)
Definition
FPGATrackSimBinUtil.cxx:61
FPGATrackSimBinArray::ConstIterator
Definition
FPGATrackSimBinArray.h:137
FPGATrackSimBinUtil::IdxSet
Definition
FPGATrackSimBinUtil.h:41
FPGATrackSimBinUtil::ParSet
Definition
FPGATrackSimBinUtil.h:36
Generated on
for ATLAS Offline Software by
1.17.0