Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
GNN_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_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 #define MAX_SEG_PER_NODE 1000 //was 30
14 #define N_SEG_CONNS 6 //was 6
15 
17 
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) {};
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};
36  float m_pcw;
37 };
38 
39 
41 public:
42 
44 
45  bool operator()(const TrigFTF_GNN_Node* n1, const TrigFTF_GNN_Node* n2) {
46  return n1->phi() < n2->phi();
47  }
48 
49  };
50 
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_GNN_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
73  std::vector<std::array<float,5> > m_params;//node attributes: m_minCutOnTau, m_maxCutOnTau, m_phi, m_r, m_z;
74 
76 
77 };
78 
80 public:
83 
84  int loadPixelGraphNodes(short, const std::vector<TrigFTF_GNN_Node>&, bool);
85  int loadStripGraphNodes(short, const std::vector<TrigFTF_GNN_Node>&);
86 
87  unsigned int numberOfNodes() const;
88  void sortByPhi();
89  void initializeNodes(bool);
90  void generatePhiIndexing(float);
91 
92 
94  if(idx >= static_cast<int>(m_etaBins.size())) idx = idx-1;
95  return m_etaBins.at(idx);
96  }
97 
98 protected:
99 
101 
102  std::vector<TrigFTF_GNN_EtaBin> m_etaBins;
103 
104 };
105 
107 public:
108 
109  struct CompareLevel {
110  public:
111  bool operator()(const TrigFTF_GNN_Edge* pE1, const TrigFTF_GNN_Edge* pE2) {
112  return pE1->m_level > pE2->m_level;
113  }
114  };
115 
116  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) {
117  m_p[0] = p1;
118  m_p[1] = p2;
119  m_p[2] = p3;
120  }
121 
122  TrigFTF_GNN_Edge() : m_n1(nullptr), m_n2(nullptr), m_level(-1), m_next(-1), m_nNei(0) {};
123 
124 
125  const TrigFTF_GNN_Node* m_n1{nullptr};
126  const TrigFTF_GNN_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 
TrigFTF_GNN_EtaBin
Definition: GNN_DataStorage.h:40
TrigFTF_GNN_DataStorage
Definition: GNN_DataStorage.h:79
TrigFTF_GNN_EtaBin::m_in
std::vector< std::vector< unsigned int > > m_in
Definition: GNN_DataStorage.h:72
TrigFTF_GNN_Edge::CompareLevel
Definition: GNN_DataStorage.h:109
TrigFTF_GNN_DataStorage::sortByPhi
void sortByPhi()
Definition: GNN_DataStorage.cxx:177
TrigFTF_GNN_Node::y
float y() const
Definition: GNN_DataStorage.h:23
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
TrigFTF_GNN_Node::phi
float phi() const
Definition: GNN_DataStorage.h:25
TrigFTF_GNN_Edge::m_vNei
unsigned int m_vNei[N_SEG_CONNS]
Definition: GNN_DataStorage.h:133
TrigFTF_GNN_EtaBin::TrigFTF_GNN_EtaBin
TrigFTF_GNN_EtaBin()
Definition: GNN_DataStorage.cxx:14
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
TrigFTF_GNN_EtaBin::CompareNodesByPhi::operator()
bool operator()(const TrigFTF_GNN_Node *n1, const TrigFTF_GNN_Node *n2)
Definition: GNN_DataStorage.h:45
TrigFTF_GNN_Node::m_layer
unsigned short m_layer
Definition: GNN_DataStorage.h:34
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
TrigFTF_GNN_EtaBin::~TrigFTF_GNN_EtaBin
~TrigFTF_GNN_EtaBin()
Definition: GNN_DataStorage.cxx:22
TrigFTF_GNN_EtaBin::m_minRadius
float m_minRadius
Definition: GNN_DataStorage.h:75
TrigFTF_GNN_Node
Definition: GNN_DataStorage.h:18
TrigFTF_GNN_Edge::m_n2
const TrigFTF_GNN_Node * m_n2
Definition: GNN_DataStorage.h:126
TrigFTF_GNN_Node::sp_idx
int sp_idx() const
Definition: GNN_DataStorage.h:31
TrigFTF_GNN_Edge::TrigFTF_GNN_Edge
TrigFTF_GNN_Edge()
Definition: GNN_DataStorage.h:122
N_SEG_CONNS
#define N_SEG_CONNS
Definition: GNN_DataStorage.h:14
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
TrigFTF_GNN_EtaBin::empty
bool empty() const
Definition: GNN_DataStorage.h:56
TrigFTF_GNN_Node::m_x
float m_x
Definition: GNN_DataStorage.h:33
TrigFTF_GNN_Edge::m_next
signed char m_next
Definition: GNN_DataStorage.h:128
TrigFTF_GNN_DataStorage::m_etaBins
std::vector< TrigFTF_GNN_EtaBin > m_etaBins
Definition: GNN_DataStorage.h:102
TrigFTF_GNN_DataStorage::TrigFTF_GNN_DataStorage
TrigFTF_GNN_DataStorage(const TrigFTF_GNN_Geometry &)
Definition: GNN_DataStorage.cxx:95
TrigFTF_GNN_Edge
Definition: GNN_DataStorage.h:106
TrigFTF_GNN_DataStorage::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNN_DataStorage.cxx:226
TrigFTF_GNN_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition: GNN_DataStorage.h:71
TrigFTF_GNN_EtaBin::initializeNodes
void initializeNodes()
Definition: GNN_DataStorage.cxx:53
TrigFTF_GNN_Edge::m_level
signed char m_level
Definition: GNN_DataStorage.h:128
TrigFTF_GNN_Node::m_y
float m_y
Definition: GNN_DataStorage.h:33
TrigFTF_GNN_Node::m_phi
float m_phi
Definition: GNN_DataStorage.h:33
TrigFTF_GNN_EtaBin::m_maxRadius
float m_maxRadius
Definition: GNN_DataStorage.h:75
TrigFTF_GNN_DataStorage::numberOfNodes
unsigned int numberOfNodes() const
Definition: GNN_DataStorage.cxx:167
TrigFTF_GNN_DataStorage::getEtaBin
TrigFTF_GNN_EtaBin & getEtaBin(int idx)
Definition: GNN_DataStorage.h:93
TrigFTF_GNN_DataStorage::loadPixelGraphNodes
int loadPixelGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &, bool)
Definition: GNN_DataStorage.cxx:104
TrigFTF_GNN_Node::m_r
float m_r
Definition: GNN_DataStorage.h:33
TrigFTF_GNN_EtaBin::getMaxBinRadius
float getMaxBinRadius() const
Definition: GNN_DataStorage.h:66
TrigFTF_GNN_Node::TrigFTF_GNN_Node
TrigFTF_GNN_Node(unsigned short l)
Definition: GNN_DataStorage.h:20
TrigFTF_GNN_Node::layer
unsigned short layer() const
Definition: GNN_DataStorage.h:28
TrigFTF_GNN_DataStorage::initializeNodes
void initializeNodes(bool)
Definition: GNN_DataStorage.cxx:182
TrigFTF_GNN_EtaBin::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNN_DataStorage.cxx:71
TrigFTF_GNN_Geometry
Definition: GNN_Geometry.h:48
TrigFTF_GNN_Edge::m_nNei
unsigned char m_nNei
Definition: GNN_DataStorage.h:130
Rtt_histogram.n1
n1
Definition: Rtt_histogram.py:21
TrigFTF_GNN_Edge::CompareLevel::operator()
bool operator()(const TrigFTF_GNN_Edge *pE1, const TrigFTF_GNN_Edge *pE2)
Definition: GNN_DataStorage.h:111
TrigFTF_GNN_EtaBin::CompareNodesByPhi
Definition: GNN_DataStorage.h:43
TrigFTF_GNN_Edge::m_p
float m_p[3]
Definition: GNN_DataStorage.h:131
TrigFTF_GNN_Node::x
float x() const
Definition: GNN_DataStorage.h:22
TrigFTF_GNN_Node::m_pcw
float m_pcw
Definition: GNN_DataStorage.h:36
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TrigFTF_GNN_DataStorage::loadStripGraphNodes
int loadStripGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &)
Definition: GNN_DataStorage.cxx:142
TrigFTF_GNN_DataStorage::m_geo
const TrigFTF_GNN_Geometry & m_geo
Definition: GNN_DataStorage.h:100
TrigFTF_GNN_Node::pixelClusterWidth
float pixelClusterWidth() const
Definition: GNN_DataStorage.h:29
TrigFTF_GNN_EtaBin::sortByPhi
void sortByPhi()
Definition: GNN_DataStorage.cxx:28
TrigFTF_GNN_Node::z
float z() const
Definition: GNN_DataStorage.h:26
TRTCalib_cfilter.p3
p3
Definition: TRTCalib_cfilter.py:132
TrigFTF_GNN_EtaBin::m_vn
std::vector< const TrigFTF_GNN_Node * > m_vn
Definition: GNN_DataStorage.h:70
TrigFTF_GNN_DataStorage::~TrigFTF_GNN_DataStorage
~TrigFTF_GNN_DataStorage()
Definition: GNN_DataStorage.cxx:100
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:116
TrigFTF_GNN_Node::r
float r() const
Definition: GNN_DataStorage.h:27
TrigFTF_GNN_Edge::m_n1
const TrigFTF_GNN_Node * m_n1
Definition: GNN_DataStorage.h:125
TrigFTF_GNN_Node::m_z
float m_z
Definition: GNN_DataStorage.h:33
TrigFTF_GNN_Node::m_idx
unsigned int m_idx
Definition: GNN_DataStorage.h:35
TrigFTF_GNN_EtaBin::getMinBinRadius
float getMinBinRadius() const
Definition: GNN_DataStorage.h:62
TrigFTF_GNN_EtaBin::m_params
std::vector< std::array< float, 5 > > m_params
Definition: GNN_DataStorage.h:73