ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigTools
TrigInDetR3PattRecoTools
src
GNNR3_DataStorage.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TRIGINDETPATTRECOTOOLS_GNNR3_DATA_STORAGE_H
6
#define TRIGINDETPATTRECOTOOLS_GNNR3_DATA_STORAGE_H
7
8
#include<vector>
9
#include<map>
10
#include<algorithm>
11
#include<array>
12
#include<limits>
13
#define MAX_SEG_PER_NODE 1000
//was 30
14
#define N_SEG_CONNS 6
//was 6
15
16
class
TrigFTF_GNNR3_Geometry
;
17
18
struct
TrigFTF_GNNR3_Node
{
19
20
TrigFTF_GNNR3_Node
(
unsigned
short
l) :
m_x
(0),
m_y
(0),
m_z
(0),
m_r
(0),
m_phi
(0),
m_layer
(l),
m_pcw
(0) {};
21
22
inline
float
x
()
const
{
return
m_x
;}
23
inline
float
y
()
const
{
return
m_y
;}
24
25
inline
float
phi
()
const
{
return
m_phi
;}
26
inline
float
z
()
const
{
return
m_z
;}
27
inline
float
r
()
const
{
return
m_r
;}
28
inline
unsigned
short
layer
()
const
{
return
m_layer
;}
29
inline
float
pixelClusterWidth
()
const
{
return
m_pcw
;}
30
31
inline
int
sp_idx
()
const
{
return
m_idx
;}
32
33
float
m_x
,
m_y
,
m_z
,
m_r
,
m_phi
;
34
unsigned
short
m_layer
{10000};
35
unsigned
int
m_idx
{std::numeric_limits<unsigned int>::max()};
36
float
m_pcw
;
37
};
38
39
40
class
TrigFTF_GNNR3_EtaBin
{
41
public
:
42
43
struct
CompareNodesByPhi
{
44
45
bool
operator()
(
const
TrigFTF_GNNR3_Node
* n1,
const
TrigFTF_GNNR3_Node
* n2) {
46
return
n1->
phi
() < n2->
phi
();
47
}
48
49
};
50
51
TrigFTF_GNNR3_EtaBin
();
52
~TrigFTF_GNNR3_EtaBin
();
53
54
void
sortByPhi
();
55
void
initializeNodes
();
56
bool
empty
()
const
{
57
return
m_vn
.empty();
58
}
59
60
void
generatePhiIndexing
(
float
);
61
62
float
getMinBinRadius
()
const
{
63
return
m_minRadius
;
64
}
65
66
float
getMaxBinRadius
()
const
{
67
return
m_maxRadius
;
68
}
69
70
std::vector<const TrigFTF_GNNR3_Node*>
m_vn
;
//nodes of the graph
71
std::vector<std::pair<float, unsigned int> >
m_vPhiNodes
;
72
std::vector<std::vector<unsigned int> >
m_in
;
//vectors of incoming edges, stores indicies of edges in the edge vector
73
std::vector<std::array<float,5> >
m_params
;
//node attributes: m_minCutOnTau, m_maxCutOnTau, m_phi, m_r, m_z;
74
75
float
m_minRadius
,
m_maxRadius
;
76
77
};
78
79
class
TrigFTF_GNNR3_DataStorage
{
80
public
:
81
TrigFTF_GNNR3_DataStorage
(
const
TrigFTF_GNNR3_Geometry
&);
82
~TrigFTF_GNNR3_DataStorage
();
83
84
int
loadPixelGraphNodes
(
short
,
const
std::vector<TrigFTF_GNNR3_Node>&,
bool
);
85
int
loadStripGraphNodes
(
short
,
const
std::vector<TrigFTF_GNNR3_Node>&);
86
87
unsigned
int
numberOfNodes
()
const
;
88
void
sortByPhi
();
89
void
initializeNodes
(
bool
);
90
void
generatePhiIndexing
(
float
);
91
92
93
TrigFTF_GNNR3_EtaBin
&
getEtaBin
(
int
idx) {
94
if
(idx >=
static_cast<
int
>
(
m_etaBins
.size())) idx = idx-1;
95
return
m_etaBins
.at(idx);
96
}
97
98
protected
:
99
100
const
TrigFTF_GNNR3_Geometry
&
m_geo
;
101
102
std::vector<TrigFTF_GNNR3_EtaBin>
m_etaBins
;
103
104
};
105
106
class
TrigFTF_GNNR3_Edge
{
107
public
:
108
109
struct
CompareLevel
{
110
public
:
111
bool
operator()
(
const
TrigFTF_GNNR3_Edge
* pE1,
const
TrigFTF_GNNR3_Edge
* pE2) {
112
return
pE1->
m_level
> pE2->
m_level
;
113
}
114
};
115
116
TrigFTF_GNNR3_Edge
(
const
TrigFTF_GNNR3_Node
* n1,
const
TrigFTF_GNNR3_Node
* n2,
float
p1,
float
p2,
float
p3) :
m_n1
(n1),
m_n2
(n2),
m_level
(1),
m_next
(1),
m_nNei
(0) {
117
m_p
[0] = p1;
118
m_p
[1] = p2;
119
m_p
[2] = p3;
120
}
121
122
TrigFTF_GNNR3_Edge
() :
m_n1
(nullptr),
m_n2
(nullptr),
m_level
(-1),
m_next
(-1),
m_nNei
(0) {};
123
124
125
const
TrigFTF_GNNR3_Node
*
m_n1
{
nullptr
};
126
const
TrigFTF_GNNR3_Node
*
m_n2
{
nullptr
};
127
128
signed
char
m_level
{-1},
m_next
{-1};
129
130
unsigned
char
m_nNei
{0};
131
float
m_p
[3]{};
132
133
unsigned
int
m_vNei
[
N_SEG_CONNS
]{};
//global indices of the connected edges
134
135
};
136
137
#endif
138
N_SEG_CONNS
#define N_SEG_CONNS
Definition
GNNR3_DataStorage.h:14
TrigFTF_GNNR3_DataStorage::TrigFTF_GNNR3_DataStorage
TrigFTF_GNNR3_DataStorage(const TrigFTF_GNNR3_Geometry &)
Definition
GNNR3_DataStorage.cxx:95
TrigFTF_GNNR3_DataStorage::~TrigFTF_GNNR3_DataStorage
~TrigFTF_GNNR3_DataStorage()
Definition
GNNR3_DataStorage.cxx:100
TrigFTF_GNNR3_DataStorage::loadStripGraphNodes
int loadStripGraphNodes(short, const std::vector< TrigFTF_GNNR3_Node > &)
Definition
GNNR3_DataStorage.cxx:142
TrigFTF_GNNR3_DataStorage::getEtaBin
TrigFTF_GNNR3_EtaBin & getEtaBin(int idx)
Definition
GNNR3_DataStorage.h:93
TrigFTF_GNNR3_DataStorage::m_geo
const TrigFTF_GNNR3_Geometry & m_geo
Definition
GNNR3_DataStorage.h:100
TrigFTF_GNNR3_DataStorage::numberOfNodes
unsigned int numberOfNodes() const
Definition
GNNR3_DataStorage.cxx:167
TrigFTF_GNNR3_DataStorage::initializeNodes
void initializeNodes(bool)
Definition
GNNR3_DataStorage.cxx:182
TrigFTF_GNNR3_DataStorage::m_etaBins
std::vector< TrigFTF_GNNR3_EtaBin > m_etaBins
Definition
GNNR3_DataStorage.h:102
TrigFTF_GNNR3_DataStorage::generatePhiIndexing
void generatePhiIndexing(float)
Definition
GNNR3_DataStorage.cxx:226
TrigFTF_GNNR3_DataStorage::sortByPhi
void sortByPhi()
Definition
GNNR3_DataStorage.cxx:177
TrigFTF_GNNR3_DataStorage::loadPixelGraphNodes
int loadPixelGraphNodes(short, const std::vector< TrigFTF_GNNR3_Node > &, bool)
Definition
GNNR3_DataStorage.cxx:104
TrigFTF_GNNR3_Edge::m_p
float m_p[3]
Definition
GNNR3_DataStorage.h:131
TrigFTF_GNNR3_Edge::m_n2
const TrigFTF_GNNR3_Node * m_n2
Definition
GNNR3_DataStorage.h:126
TrigFTF_GNNR3_Edge::TrigFTF_GNNR3_Edge
TrigFTF_GNNR3_Edge()
Definition
GNNR3_DataStorage.h:122
TrigFTF_GNNR3_Edge::m_level
signed char m_level
Definition
GNNR3_DataStorage.h:128
TrigFTF_GNNR3_Edge::m_next
signed char m_next
Definition
GNNR3_DataStorage.h:128
TrigFTF_GNNR3_Edge::TrigFTF_GNNR3_Edge
TrigFTF_GNNR3_Edge(const TrigFTF_GNNR3_Node *n1, const TrigFTF_GNNR3_Node *n2, float p1, float p2, float p3)
Definition
GNNR3_DataStorage.h:116
TrigFTF_GNNR3_Edge::m_vNei
unsigned int m_vNei[N_SEG_CONNS]
Definition
GNNR3_DataStorage.h:133
TrigFTF_GNNR3_Edge::m_nNei
unsigned char m_nNei
Definition
GNNR3_DataStorage.h:130
TrigFTF_GNNR3_Edge::m_n1
const TrigFTF_GNNR3_Node * m_n1
Definition
GNNR3_DataStorage.h:125
TrigFTF_GNNR3_EtaBin
Definition
GNNR3_DataStorage.h:40
TrigFTF_GNNR3_EtaBin::generatePhiIndexing
void generatePhiIndexing(float)
Definition
GNNR3_DataStorage.cxx:71
TrigFTF_GNNR3_EtaBin::~TrigFTF_GNNR3_EtaBin
~TrigFTF_GNNR3_EtaBin()
Definition
GNNR3_DataStorage.cxx:22
TrigFTF_GNNR3_EtaBin::m_maxRadius
float m_maxRadius
Definition
GNNR3_DataStorage.h:75
TrigFTF_GNNR3_EtaBin::getMaxBinRadius
float getMaxBinRadius() const
Definition
GNNR3_DataStorage.h:66
TrigFTF_GNNR3_EtaBin::m_params
std::vector< std::array< float, 5 > > m_params
Definition
GNNR3_DataStorage.h:73
TrigFTF_GNNR3_EtaBin::getMinBinRadius
float getMinBinRadius() const
Definition
GNNR3_DataStorage.h:62
TrigFTF_GNNR3_EtaBin::TrigFTF_GNNR3_EtaBin
TrigFTF_GNNR3_EtaBin()
Definition
GNNR3_DataStorage.cxx:14
TrigFTF_GNNR3_EtaBin::empty
bool empty() const
Definition
GNNR3_DataStorage.h:56
TrigFTF_GNNR3_EtaBin::initializeNodes
void initializeNodes()
Definition
GNNR3_DataStorage.cxx:53
TrigFTF_GNNR3_EtaBin::m_vn
std::vector< const TrigFTF_GNNR3_Node * > m_vn
Definition
GNNR3_DataStorage.h:70
TrigFTF_GNNR3_EtaBin::m_minRadius
float m_minRadius
Definition
GNNR3_DataStorage.h:75
TrigFTF_GNNR3_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition
GNNR3_DataStorage.h:71
TrigFTF_GNNR3_EtaBin::m_in
std::vector< std::vector< unsigned int > > m_in
Definition
GNNR3_DataStorage.h:72
TrigFTF_GNNR3_EtaBin::sortByPhi
void sortByPhi()
Definition
GNNR3_DataStorage.cxx:28
TrigFTF_GNNR3_Geometry
Definition
GNNR3_Geometry.h:48
TrigFTF_GNNR3_Edge::CompareLevel
Definition
GNNR3_DataStorage.h:109
TrigFTF_GNNR3_Edge::CompareLevel::operator()
bool operator()(const TrigFTF_GNNR3_Edge *pE1, const TrigFTF_GNNR3_Edge *pE2)
Definition
GNNR3_DataStorage.h:111
TrigFTF_GNNR3_EtaBin::CompareNodesByPhi
Definition
GNNR3_DataStorage.h:43
TrigFTF_GNNR3_EtaBin::CompareNodesByPhi::operator()
bool operator()(const TrigFTF_GNNR3_Node *n1, const TrigFTF_GNNR3_Node *n2)
Definition
GNNR3_DataStorage.h:45
TrigFTF_GNNR3_Node
Definition
GNNR3_DataStorage.h:18
TrigFTF_GNNR3_Node::y
float y() const
Definition
GNNR3_DataStorage.h:23
TrigFTF_GNNR3_Node::m_pcw
float m_pcw
Definition
GNNR3_DataStorage.h:36
TrigFTF_GNNR3_Node::m_y
float m_y
Definition
GNNR3_DataStorage.h:33
TrigFTF_GNNR3_Node::z
float z() const
Definition
GNNR3_DataStorage.h:26
TrigFTF_GNNR3_Node::m_x
float m_x
Definition
GNNR3_DataStorage.h:33
TrigFTF_GNNR3_Node::r
float r() const
Definition
GNNR3_DataStorage.h:27
TrigFTF_GNNR3_Node::TrigFTF_GNNR3_Node
TrigFTF_GNNR3_Node(unsigned short l)
Definition
GNNR3_DataStorage.h:20
TrigFTF_GNNR3_Node::layer
unsigned short layer() const
Definition
GNNR3_DataStorage.h:28
TrigFTF_GNNR3_Node::pixelClusterWidth
float pixelClusterWidth() const
Definition
GNNR3_DataStorage.h:29
TrigFTF_GNNR3_Node::x
float x() const
Definition
GNNR3_DataStorage.h:22
TrigFTF_GNNR3_Node::m_r
float m_r
Definition
GNNR3_DataStorage.h:33
TrigFTF_GNNR3_Node::sp_idx
int sp_idx() const
Definition
GNNR3_DataStorage.h:31
TrigFTF_GNNR3_Node::m_idx
unsigned int m_idx
Definition
GNNR3_DataStorage.h:35
TrigFTF_GNNR3_Node::m_z
float m_z
Definition
GNNR3_DataStorage.h:33
TrigFTF_GNNR3_Node::m_layer
unsigned short m_layer
Definition
GNNR3_DataStorage.h:34
TrigFTF_GNNR3_Node::phi
float phi() const
Definition
GNNR3_DataStorage.h:25
TrigFTF_GNNR3_Node::m_phi
float m_phi
Definition
GNNR3_DataStorage.h:33
Generated on
for ATLAS Offline Software by
1.17.0