ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
EFTracking
FPGATrackSim
FPGATrackSimBinning
FPGATrackSimBinning
FPGATrackSimBinStep.h
Go to the documentation of this file.
1
// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
#ifndef FPGATrackSimBinStep_H
4
#define FPGATrackSimBinStep_H
5
24
#include "
AthenaBaseComps/AthAlgTool.h
"
25
26
27
#include "
FPGATrackSimBinning/FPGATrackSimBinArray.h
"
28
#include "
FPGATrackSimBinning/FPGATrackSimBinUtil.h
"
29
#include "
FPGATrackSimBinning/IFPGATrackSimBinDesc.h
"
30
31
#include "GaudiKernel/StatusCode.h"
32
33
#include <cmath>
34
#include <string>
35
#include <vector>
36
#include <array>
37
38
class
FPGATrackSimBinTool
;
39
40
//--------------------------------------------------------------------------------------------------
41
//
42
// Class to define the sub steps of the full binning
43
//
44
//--------------------------------------------------------------------------------------------------
45
class
FPGATrackSimBinStep
:
virtual
public
AthAlgTool
{
46
public
:
47
FPGATrackSimBinStep
(
const
std::string & algname,
const
std::string & name,
48
const
IInterface * ifc) :
AthAlgTool
(algname, name, ifc) {}
49
50
virtual
StatusCode
initialize
()
override
;
51
StatusCode
setRanges
(
FPGATrackSimBinStep
* prev,
const
FPGATrackSimBinUtil::ParSet
& parMin,
const
FPGATrackSimBinUtil::ParSet
& parMax);
52
53
// property of step
54
const
std::vector<unsigned>
stepIdx
(
FPGATrackSimBinUtil::IdxSet
idx)
const
;
// index for only the pars used in this step
55
const
std::vector<unsigned>
stepBins
()
const
;
// bin sizes for only the pars used in this step
56
const
std::vector<unsigned>&
stepPars
()
const
{
return
m_pars
;}
// parameters used for this step
57
const
std::vector<unsigned>
nBins
()
const
{
return
m_parBins
;}
// bin sizes for only the pars used in this step
58
const
std::string
stepName
()
const
{
return
this->name().substr(this->name().find_last_of(
"."
)+1);}
59
unsigned
stepNum
()
const
{
return
m_stepNum
;}
60
61
// Calculation of bin boundaries
62
double
binCenter
(
unsigned
par,
unsigned
bin
)
const
{
return
m_parMin
[par] +
m_parStep
[par] * (double(
bin
) + 0.5); }
63
double
binLowEdge
(
unsigned
par,
unsigned
bin
)
const
{
return
m_parMin
[par] +
m_parStep
[par] * (double(
bin
)); }
64
double
binHighEdge
(
unsigned
par,
unsigned
bin
)
const
{
return
m_parMin
[par] +
m_parStep
[par] * (double(
bin
) + 1.0);}
65
double
binWidth
(
unsigned
par)
const
{
return
m_parStep
[par]; }
66
FPGATrackSimBinUtil::ParSet
binLowEdge
(
const
FPGATrackSimBinUtil::IdxSet
&idx)
const
;
67
FPGATrackSimBinUtil::ParSet
binCenter
(
const
FPGATrackSimBinUtil::IdxSet
&idx)
const
;
68
69
// get bin value for a specific parameter value
70
unsigned
binIdx
(
unsigned
par,
double
val)
const
{
71
// Guard against both underflow and overflow.
72
if
(val <
m_parMin
[par])
return
0;
73
else
if
(val >
m_parMax
[par])
return
unsigned(floor((
m_parMax
[par] -
m_parMin
[par]) /
m_parStep
[par])) - 1;
74
else
return
unsigned(floor((val -
m_parMin
[par]) /
m_parStep
[par]));
75
}
76
77
// convert parset (the binning parameters) to a 5-d bin
78
FPGATrackSimBinUtil::IdxSet
binIdx
(
const
FPGATrackSimBinUtil::ParSet
&pars)
const
;
79
80
// Convert to previous steps idx
81
FPGATrackSimBinUtil::IdxSet
convertToPrev
(
const
FPGATrackSimBinUtil::IdxSet
&cur)
const
;
82
83
// Check if its the first step
84
bool
isFirstStep
()
const
{
return
m_prev
==0;}
85
86
//--------------------------------------------------------------------------------------------------
87
//
88
// Set which bins are valid
89
//
90
//--------------------------------------------------------------------------------------------------
91
// Which bins are consistent with the (pT, eta, pho, d0, z0)
92
// ranges computed from region definition defined in the eventselection
93
// service or set by the layer map
94
void
initValidBins
();
95
void
setValidBin
(
const
std::vector<unsigned>& idx);
// also sets SubBins
96
void
printValidBin
()
const
;
// dump an output to log for x-checks
97
const
FPGATrackSimBinArray<int>
&
validBinsFull
()
const
{
return
m_validBinFull
;}
98
const
FPGATrackSimBinArray<int>
&
validBinsLocal
()
const
{
return
m_validBinLocal
;}
99
100
private
:
101
Gaudi::Property<std::vector<unsigned>>
m_parBinsConfig
{
this
,
"parBins"
,{},
"Vector of number of bins for each parameter (expect 5)"
};
102
103
// pars used in this step
104
std::vector<unsigned>
m_pars
{};
105
106
// Array that has a true/false for if a bin is valid
107
// some bins may not be valid because they correspond to (pT,eta,phi,d0,z0)
108
// that are being targeted for reconstruction
109
FPGATrackSimBinArray<int>
m_validBinFull
;
// this is the full binning
110
FPGATrackSimBinArray<int>
m_validBinLocal
;
// this is for the pars used at this step
111
112
// pointer to FPGATrackSimBinStep of previous step
113
FPGATrackSimBinStep
*
m_prev
{0};
114
unsigned
m_stepNum
{};
// number of step
115
116
// the bins for this step
117
FPGATrackSimBinUtil::IdxSet
m_parBins
;
// one means no binning this step
118
FPGATrackSimBinUtil::ParSet
m_parStep
;
// step size of each bin
119
120
// reference to the full range defined in the "tool"
121
FPGATrackSimBinUtil::ParSet
m_parMin
;
122
FPGATrackSimBinUtil::ParSet
m_parMax
;
123
124
friend
FPGATrackSimBinTool
;
125
};
126
127
#endif
// FPGATrackSimBinStep_H
AthAlgTool.h
FPGATrackSimBinArray.h
Iterable Multidimensional Array Class for FPGATrackSimBinTool.
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
FPGATrackSimBinArray
Definition
FPGATrackSimBinArray.h:41
FPGATrackSimBinStep
Definition
FPGATrackSimBinStep.h:45
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::nBins
const std::vector< unsigned > nBins() const
Definition
FPGATrackSimBinStep.h:57
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::binHighEdge
double binHighEdge(unsigned par, unsigned bin) const
Definition
FPGATrackSimBinStep.h:64
FPGATrackSimBinStep::binWidth
double binWidth(unsigned par) const
Definition
FPGATrackSimBinStep.h:65
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::stepName
const std::string stepName() const
Definition
FPGATrackSimBinStep.h:58
FPGATrackSimBinStep::initialize
virtual StatusCode initialize() override
Definition
FPGATrackSimBinStep.cxx:19
FPGATrackSimBinStep::stepPars
const std::vector< unsigned > & stepPars() const
Definition
FPGATrackSimBinStep.h:56
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::stepNum
unsigned stepNum() const
Definition
FPGATrackSimBinStep.h:59
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::isFirstStep
bool isFirstStep() const
Definition
FPGATrackSimBinStep.h:84
FPGATrackSimBinStep::FPGATrackSimBinTool
friend FPGATrackSimBinTool
Definition
FPGATrackSimBinStep.h:124
FPGATrackSimBinStep::validBinsFull
const FPGATrackSimBinArray< int > & validBinsFull() const
Definition
FPGATrackSimBinStep.h:97
FPGATrackSimBinTool
Definition
FPGATrackSimBinTool.h:40
bin
Definition
BinsDiffFromStripMedian.h:43
FPGATrackSimBinUtil::IdxSet
Definition
FPGATrackSimBinUtil.h:41
FPGATrackSimBinUtil::ParSet
Definition
FPGATrackSimBinUtil.h:36
Generated on
for ATLAS Offline Software by
1.17.0