ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimGNNPatternRecoTool.cxx
Go to the documentation of this file.
1// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
4
5
7{
11 ATH_CHECK(m_GNNRoadMakerTool.retrieve());
13
14 // Need to selected the right tool based on region
15 for (auto& tool : m_GNNEdgeClassifierTools) {
16 if (tool->regionNum() == m_regionNum) {
18 break;
19 }
20 }
21 if (!m_selectedGNNEdgeClassifierTool.isValid()) {
22 ATH_MSG_ERROR("No GNNEdgeClassifierTool found for region " << m_regionNum);
23 return StatusCode::FAILURE;
24 }
25
26 return StatusCode::SUCCESS;
27}
28
29StatusCode FPGATrackSimGNNPatternRecoTool::getRoads(const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits, std::vector<std::shared_ptr<const FPGATrackSimRoad>> & roads)
30{
31 std::vector<std::shared_ptr<FPGATrackSimGNNHit>> graph_hits;
32 std::vector<std::shared_ptr<FPGATrackSimGNNEdge>> graph_edges;
33
34 ATH_CHECK(m_GNNGraphHitSelectorTool->selectHits(hits, graph_hits)); // Go from FPGATrackSimHits to FPGATrackSimGNNHit -> get information needed for GNNPipeline
35 ATH_CHECK(m_GNNGraphConstructionTool->getEdges(graph_hits, graph_edges)); // Build edges using module map (or metric learning)
36 ATH_CHECK(m_selectedGNNEdgeClassifierTool->scoreEdges(graph_hits, graph_edges)); // Score edges using IN GNN
37 ATH_CHECK(m_GNNRoadMakerTool->makeRoads(hits, graph_hits, graph_edges, roads)); // Build road candidates using connected components (need to make a C++ version of it)
38 if(m_doGNNRootOutput) ATH_CHECK(m_GNNRootOutputTool->fillTree(hits, graph_hits, graph_edges, roads)); // Output the hit/edge/road information into a ROOT file
39
40 graph_hits.clear();
41 graph_edges.clear();
42 return StatusCode::SUCCESS;
43}
44
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
Implements road finding using GNNs for pattern recognition.
ToolHandle< FPGATrackSimGNNGraphHitSelectorTool > m_GNNGraphHitSelectorTool
ToolHandle< FPGATrackSimGNNRootOutputTool > m_GNNRootOutputTool
virtual StatusCode getRoads(const std::vector< std::shared_ptr< const FPGATrackSimHit > > &hits, std::vector< std::shared_ptr< const FPGATrackSimRoad > > &roads) override
ToolHandle< FPGATrackSimGNNEdgeClassifierTool > m_selectedGNNEdgeClassifierTool
ToolHandleArray< FPGATrackSimGNNEdgeClassifierTool > m_GNNEdgeClassifierTools
ToolHandle< FPGATrackSimGNNRoadMakerTool > m_GNNRoadMakerTool
ToolHandle< FPGATrackSimGNNGraphConstructionTool > m_GNNGraphConstructionTool