27 return StatusCode::SUCCESS;
36 seedContainer.
spacePoints().reserve(spContainer.size());
37 std::unique_ptr<GNN_DataStorage> storage = std::make_unique<GNN_DataStorage>(*
m_geo,
m_mlLUT);
43 float shift_x =
vertex.x() - beamSpotHandle->beamTilt(0)*
vertex.z();
44 float shift_y =
vertex.y() - beamSpotHandle->beamTilt(1)*
vertex.z();
46 std::vector<std::vector<GNN_Node> > node_storage;
49 for(
auto&
v : node_storage)
v.reserve(100000);
51 unsigned int nPixelLoaded = 0;
52 unsigned int nStripLoaded = 0;
54 for(
size_t idx=0;
idx<spContainer.size();
idx++){
55 const auto & sp = spContainer.at(
idx);
56 const auto & extSP = sp.externalSpacePoint();
58 const std::vector<xAOD::DetectorIDHashType>& elementlist = extSP.elementIdList() ;
60 bool isPixel(elementlist.size() == 1);
68 const auto&
pos = extSP.globalPosition();
79 assert(
dynamic_cast<const xAOD::PixelCluster*
>(extSP.measurements().front())!=
nullptr);
86 for(
size_t l = 0;
l < node_storage.size();
l++) {
88 const std::vector<GNN_Node>& nodes = node_storage[
l];
90 if(nodes.size() == 0)
continue;
98 ATH_MSG_DEBUG(
"Loaded "<<nPixelLoaded<<
" pixel spacepoints and "<<nStripLoaded<<
" strip spacepoints");
106 std::vector<GNN_Edge> edgeStorage;
110 std::pair<int, int> graphStats =
buildTheGraph(fakeRoi, storage, edgeStorage);
112 ATH_MSG_DEBUG(
"Created graph with "<<graphStats.first<<
" edges and "<<graphStats.second<<
" edge links");
114 if (graphStats.first == 0 || graphStats.second == 0)
return StatusCode::SUCCESS;
116 int maxLevel =
runCCA(graphStats.first, edgeStorage);
118 ATH_MSG_DEBUG(
"Reached Level "<<maxLevel<<
" after GNN iterations");
120 std::vector<std::tuple<float, int, std::vector<unsigned int> > > vSeedCandidates;
124 if (vSeedCandidates.empty())
return StatusCode::SUCCESS;
126 seedContainer.reserve(vSeedCandidates.size(), 7.0f);
128 for (
const auto& seed : vSeedCandidates) {
130 if (std::get<1>(seed) != 0)
continue;
134 seedContainer.
push_back(std::get<2>(seed));
138 ATH_MSG_DEBUG(
"GBTS created "<<seedContainer.size()<<
" seeds");
140 return StatusCode::SUCCESS;