ATLAS Offline Software
GNN_DataStorage.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 #include "GNN_DataStorage.h"
10 
11 #include<cmath>
12 #include<cstring>
13 #include<algorithm>
14 
15 TrigFTF_GNN_Node::TrigFTF_GNN_Node(const TrigSiSpacePointBase& p, float minT = -100.0, float maxT = 100.0) : m_sp(p), m_minCutOnTau(minT), m_maxCutOnTau(maxT) {
16  m_in.clear();
17  m_out.clear();
18 }
19 
21 
22 }
23 
25  m_vn.clear();
26 }
27 
29  for(std::vector<TrigFTF_GNN_Node*>::iterator it = m_vn.begin();it!=m_vn.end();++it) {
30  delete (*it);
31  }
32  m_vn.clear();
33 }
34 
36  std::sort(m_vn.begin(), m_vn.end(), TrigFTF_GNN_Node::CompareByPhi());
37 }
38 
39 
41 
42  for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
43 
44  TrigFTF_GNN_Node* pN = m_vn.at(nIdx);
45  float phi = pN->m_sp.phi();
46  if(phi <= M_PI-dphi) continue;
47 
48  m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi - 2*M_PI, nIdx));
49 
50  }
51 
52  for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
53  TrigFTF_GNN_Node* pN = m_vn.at(nIdx);
54  float phi = pN->m_sp.phi();
55  m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi, nIdx));
56  }
57 
58  for(unsigned int nIdx=0;nIdx<m_vn.size();nIdx++) {
59  TrigFTF_GNN_Node* pN = m_vn.at(nIdx);
60  float phi = pN->m_sp.phi();
61  if(phi >= -M_PI + dphi) break;
62  m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi + 2*M_PI, nIdx));
63  }
64 }
65 
66 
68 
69 
70  for(int k=0;k<g.num_bins();k++) {
71  m_etaBins.push_back(TrigFTF_GNN_EtaBin());
72  }
73 }
74 
76 
77 }
78 
80 
82  if(pL==nullptr) return -1;
83 
84  int binIndex = pL->getEtaBin(sp.z(), sp.r());
85 
86  if(binIndex == -1) {
87  return -2;
88  }
89 
90  bool isBarrel = (pL->m_layer.m_type == 0);
91 
92  if(isBarrel) {
93  float min_tau = -100.0;
94  float max_tau = 100.0;
95  if (useML) {
96  const Trk::SpacePoint* osp = sp.offlineSpacePoint();
97  const InDet::PixelCluster* pCL = dynamic_cast<const InDet::PixelCluster*>(osp->clusterList().first);
98  float cluster_width = pCL->width().widthPhiRZ().y();
99  min_tau = 6.7*(cluster_width - 0.2);
100  max_tau = 1.6 + 0.15/(cluster_width + 0.2) + 6.1*(cluster_width - 0.2);
101  }
102  m_etaBins.at(binIndex).m_vn.push_back(new TrigFTF_GNN_Node(sp, min_tau, max_tau));
103  }
104  else {
105  if (useML) {
106  const Trk::SpacePoint* osp = sp.offlineSpacePoint();
107  const InDet::PixelCluster* pCL = dynamic_cast<const InDet::PixelCluster*>(osp->clusterList().first);
108  float cluster_width = pCL->width().widthPhiRZ().y();
109  if(cluster_width > 0.2) return -3;
110  }
111  m_etaBins.at(binIndex).m_vn.push_back(new TrigFTF_GNN_Node(sp));
112  }
113 
114  return 0;
115 }
116 
118 
119  unsigned int n=0;
120 
121  for(auto& b : m_etaBins) {
122  n += b.m_vn.size();
123  }
124  return n;
125 }
126 
128  for(auto& b : m_etaBins) b.sortByPhi();
129 }
130 
132  for(auto& b : m_etaBins) b.generatePhiIndexing(dphi);
133 }
134 
135 
136 void TrigFTF_GNN_DataStorage::getConnectingNodes(std::vector<const TrigFTF_GNN_Node*>& vn) {
137 
138  vn.clear();
139  vn.reserve(numberOfNodes());
140 
141  for(const auto& b : m_etaBins) {
142  for(std::vector<TrigFTF_GNN_Node*>::const_iterator nIt = b.m_vn.begin();nIt!=b.m_vn.end();++nIt) {
143  if((*nIt)->m_in.empty()) continue;
144  if((*nIt)->m_out.empty()) continue;
145  vn.push_back(*nIt);
146  }
147  }
148 }
TrigFTF_GNN_EtaBin
Definition: GNN_DataStorage.h:65
Trk::SpacePoint::clusterList
const std::pair< const PrepRawData *, const PrepRawData * > & clusterList() const
return the pair of cluster pointers by reference
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:127
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TrigSiSpacePointBase::phi
void phi(const double phi)
Definition: TrigSiSpacePointBase.h:52
Trk::SpacePoint
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:35
TrigFTF_GNN_DataStorage::addSpacePoint
int addSpacePoint(const TrigSiSpacePointBase &, bool)
Definition: GNN_DataStorage.cxx:79
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TrigFTF_GNN_Node::m_sp
const TrigSiSpacePointBase & m_sp
Definition: GNN_DataStorage.h:57
PixelCluster.h
TrigFTF_GNN_DataStorage::sortByPhi
void sortByPhi()
Definition: GNN_DataStorage.cxx:127
InDet::SiWidth::widthPhiRZ
const Amg::Vector2D & widthPhiRZ() const
Definition: SiWidth.h:121
TrigFTF_GNN_EtaBin::TrigFTF_GNN_EtaBin
TrigFTF_GNN_EtaBin()
Definition: GNN_DataStorage.cxx:24
skel.it
it
Definition: skel.GENtoEVGEN.py:423
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrigFTF_GNN_EtaBin::~TrigFTF_GNN_EtaBin
~TrigFTF_GNN_EtaBin()
Definition: GNN_DataStorage.cxx:28
TrigSiSpacePointBase::offlineSpacePoint
const Trk::SpacePoint * offlineSpacePoint() const
Definition: TrigSiSpacePointBase.h:81
TrigSiSpacePointBase::z
void z(const double z)
Definition: TrigSiSpacePointBase.h:53
TrigSiSpacePointBase::layer
long layer() const
Definition: TrigSiSpacePointBase.h:68
TrigInDetSiLayer.h
TrigSiSpacePointBase::r
void r(const double r)
Definition: TrigSiSpacePointBase.h:51
TrigFTF_GNN_Node::~TrigFTF_GNN_Node
~TrigFTF_GNN_Node()
Definition: GNN_DataStorage.cxx:20
TrigFTF_GNN_DataStorage::m_etaBins
std::vector< TrigFTF_GNN_EtaBin > m_etaBins
Definition: GNN_DataStorage.h:104
TrigFTF_GNN_DataStorage::TrigFTF_GNN_DataStorage
TrigFTF_GNN_DataStorage(const TrigFTF_GNN_Geometry &)
Definition: GNN_DataStorage.cxx:67
TrigFTF_GNN_Node
Definition: GNN_DataStorage.h:20
TrigFTF_GNN_DataStorage::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNN_DataStorage.cxx:131
TrigFTF_GNN_EtaBin::m_vPhiNodes
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
Definition: GNN_DataStorage.h:79
TrigSiSpacePointBase.h
beamspotman.n
n
Definition: beamspotman.py:731
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
TrigFTF_GNN_Layer::m_layer
const TrigInDetSiLayer & m_layer
Definition: GNN_Geometry.h:30
TrigFTF_GNN_EtaBin::m_vn
std::vector< TrigFTF_GNN_Node * > m_vn
Definition: GNN_DataStorage.h:78
TrigFTF_GNN_DataStorage::numberOfNodes
unsigned int numberOfNodes() const
Definition: GNN_DataStorage.cxx:117
TrigFTF_GNN_Node::CompareByPhi
Definition: GNN_DataStorage.h:23
IDPVM::binIndex
unsigned int binIndex(const T &val, const std::vector< T > &partitions)
general utility function to return bin index given a value and the upper endpoints of each bin
Definition: InDetPhysValMonitoringUtilities.h:43
TrigInDetSiLayer::m_type
int m_type
Definition: TrigInDetSiLayer.h:11
TrigFTF_GNN_Geometry::getTrigFTF_GNN_LayerByIndex
const TrigFTF_GNN_Layer * getTrigFTF_GNN_LayerByIndex(int) const
Definition: GNN_Geometry.cxx:284
TrigFTF_GNN_Layer
Definition: GNN_Geometry.h:16
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TrigFTF_GNN_EtaBin::generatePhiIndexing
void generatePhiIndexing(float)
Definition: GNN_DataStorage.cxx:40
TrigFTF_GNN_Geometry
Definition: GNN_Geometry.h:50
InDet::PixelCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelCluster.h:49
InDet::SiCluster::width
const InDet::SiWidth & width() const
return width class reference
TrigFTF_GNN_DataStorage::getConnectingNodes
void getConnectingNodes(std::vector< const TrigFTF_GNN_Node * > &)
Definition: GNN_DataStorage.cxx:136
python.LArCondContChannels.isBarrel
isBarrel
Definition: LArCondContChannels.py:659
TrigFTF_GNN_Node::m_out
std::vector< unsigned int > m_out
Definition: GNN_DataStorage.h:60
TrigFTF_GNN_DataStorage::m_geo
const TrigFTF_GNN_Geometry & m_geo
Definition: GNN_DataStorage.h:102
TrigFTF_GNN_Node::m_in
std::vector< unsigned int > m_in
Definition: GNN_DataStorage.h:59
TrigFTF_GNN_EtaBin::sortByPhi
void sortByPhi()
Definition: GNN_DataStorage.cxx:35
TrigSiSpacePointBase
Definition: TrigSiSpacePointBase.h:23
GNN_DataStorage.h
TrigFTF_GNN_Layer::getEtaBin
int getEtaBin(float, float) const
Definition: GNN_Geometry.cxx:184
TrigFTF_GNN_DataStorage::~TrigFTF_GNN_DataStorage
~TrigFTF_GNN_DataStorage()
Definition: GNN_DataStorage.cxx:75
TrigFTF_GNN_Node::TrigFTF_GNN_Node
TrigFTF_GNN_Node(const TrigSiSpacePointBase &, float, float)
Definition: GNN_DataStorage.cxx:15
fitman.k
k
Definition: fitman.py:528
GNN_Geometry.h