ATLAS Offline Software
Loading...
Searching...
No Matches
TrigFTF_GNN_EtaBin Class Reference

#include <GNN_DataStorage.h>

Collaboration diagram for TrigFTF_GNN_EtaBin:

Classes

struct  CompareNodesByPhi

Public Member Functions

 TrigFTF_GNN_EtaBin ()
 ~TrigFTF_GNN_EtaBin ()
void sortByPhi ()
void initializeNodes ()
bool empty () const
void generatePhiIndexing (float)
float getMinBinRadius () const
float getMaxBinRadius () const

Public Attributes

std::vector< const TrigFTF_GNN_Node * > m_vn
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
std::vector< std::array< float, 5 > > m_params
std::vector< unsigned int > m_vFirstEdge
std::vector< unsigned short > m_vNumEdges
float m_minRadius
float m_maxRadius
unsigned int m_layerKey {0}

Detailed Description

Definition at line 41 of file GNN_DataStorage.h.

Constructor & Destructor Documentation

◆ TrigFTF_GNN_EtaBin()

TrigFTF_GNN_EtaBin::TrigFTF_GNN_EtaBin ( )

Definition at line 15 of file GNN_DataStorage.cxx.

15 : m_minRadius(0), m_maxRadius(0) {
16 m_vn.clear();
17 m_params.clear();
18 m_vn.reserve(1000);
19 m_vFirstEdge.reserve(1000);
20 m_vNumEdges.reserve(1000);
21}
std::vector< const TrigFTF_GNN_Node * > m_vn
std::vector< unsigned int > m_vFirstEdge
std::vector< std::array< float, 5 > > m_params
std::vector< unsigned short > m_vNumEdges

◆ ~TrigFTF_GNN_EtaBin()

TrigFTF_GNN_EtaBin::~TrigFTF_GNN_EtaBin ( )

Definition at line 23 of file GNN_DataStorage.cxx.

23 {
24 m_vn.clear();
25 m_params.clear();
26}

Member Function Documentation

◆ empty()

bool TrigFTF_GNN_EtaBin::empty ( ) const
inline

Definition at line 57 of file GNN_DataStorage.h.

57 {
58 return m_vn.empty();
59 }

◆ generatePhiIndexing()

void TrigFTF_GNN_EtaBin::generatePhiIndexing ( float dphi)

Definition at line 70 of file GNN_DataStorage.cxx.

70 {
71
72 for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
73
74 float phi = m_params[nIdx][2];
75 if(phi <= M_PI-dphi) continue;
76 m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi - 2*M_PI, nIdx));
77
78 }
79
80 for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
81 float phi = m_params[nIdx][2];
82 m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi, nIdx));
83 }
84
85 for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
86
87 float phi = m_params[nIdx][2];
88 if(phi >= -M_PI + dphi) break;
89 m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi + 2*M_PI, nIdx));
90 }
91
92}
#define M_PI
Scalar phi() const
phi method
std::vector< std::pair< float, unsigned int > > m_vPhiNodes

◆ getMaxBinRadius()

float TrigFTF_GNN_EtaBin::getMaxBinRadius ( ) const
inline

Definition at line 67 of file GNN_DataStorage.h.

67 {
68 return m_maxRadius;
69 }

◆ getMinBinRadius()

float TrigFTF_GNN_EtaBin::getMinBinRadius ( ) const
inline

Definition at line 63 of file GNN_DataStorage.h.

63 {
64 return m_minRadius;
65 }

◆ initializeNodes()

void TrigFTF_GNN_EtaBin::initializeNodes ( )

Definition at line 53 of file GNN_DataStorage.cxx.

53 {
54
55 if(m_vn.empty()) return;
56
57 m_params.resize(m_vn.size());
58 m_vFirstEdge.resize(m_vn.size(), 0);
59 m_vNumEdges.resize(m_vn.size(), 0);
60
61 std::transform(m_vn.begin(), m_vn.end(), m_params.begin(),
62 [](const TrigFTF_GNN_Node* pN) { std::array<float,5> a = {-100.0, 100.0, pN->phi(), pN->r(), pN->z()}; return a;});
63
64 auto [min_iter, max_iter] = std::minmax_element(m_vn.begin(), m_vn.end(),
65 [](const TrigFTF_GNN_Node* s, const TrigFTF_GNN_Node* s1) { return (s->r() < s1->r()); });
66 m_maxRadius = (*max_iter)->r();
67 m_minRadius = (*min_iter)->r();
68}
static Double_t a

◆ sortByPhi()

void TrigFTF_GNN_EtaBin::sortByPhi ( )

Definition at line 28 of file GNN_DataStorage.cxx.

28 {
29
30 std::vector<std::pair<float, const TrigFTF_GNN_Node*> > phiBuckets[32];
31
32 int nBuckets = 31;
33
34 for(const auto& n : m_vn) {
35 int bIdx = (int)(0.5*nBuckets*(n->phi()/(float)M_PI + 1.0f));
36 phiBuckets[bIdx].push_back(std::make_pair(n->phi(), n));
37 }
38
39 for(auto& b : phiBuckets) {
40 std::sort(b.begin(), b.end());
41 }
42
43 int idx = 0;
44 for(const auto& b : phiBuckets) {
45 for(const auto& p : b) {
46 m_vn[idx++] = p.second;
47 }
48 }
49
50}
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

Member Data Documentation

◆ m_layerKey

unsigned int TrigFTF_GNN_EtaBin::m_layerKey {0}

Definition at line 79 of file GNN_DataStorage.h.

79{0};

◆ m_maxRadius

float TrigFTF_GNN_EtaBin::m_maxRadius

Definition at line 78 of file GNN_DataStorage.h.

◆ m_minRadius

float TrigFTF_GNN_EtaBin::m_minRadius

Definition at line 78 of file GNN_DataStorage.h.

◆ m_params

std::vector<std::array<float,5> > TrigFTF_GNN_EtaBin::m_params

Definition at line 74 of file GNN_DataStorage.h.

◆ m_vFirstEdge

std::vector<unsigned int> TrigFTF_GNN_EtaBin::m_vFirstEdge

Definition at line 75 of file GNN_DataStorage.h.

◆ m_vn

std::vector<const TrigFTF_GNN_Node*> TrigFTF_GNN_EtaBin::m_vn

Definition at line 71 of file GNN_DataStorage.h.

◆ m_vNumEdges

std::vector<unsigned short> TrigFTF_GNN_EtaBin::m_vNumEdges

Definition at line 76 of file GNN_DataStorage.h.

◆ m_vPhiNodes

std::vector<std::pair<float, unsigned int> > TrigFTF_GNN_EtaBin::m_vPhiNodes

Definition at line 72 of file GNN_DataStorage.h.


The documentation for this class was generated from the following files: