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