ATLAS Offline Software
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());
12  ATH_CHECK(m_GNNRootOutputTool.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 
29 StatusCode 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 
FPGATrackSimGNNPatternRecoTool::m_GNNEdgeClassifierTools
ToolHandleArray< FPGATrackSimGNNEdgeClassifierTool > m_GNNEdgeClassifierTools
Definition: FPGATrackSimGNNPatternRecoTool.h:64
FPGATrackSimGNNPatternRecoTool::m_doGNNRootOutput
Gaudi::Property< bool > m_doGNNRootOutput
Definition: FPGATrackSimGNNPatternRecoTool.h:57
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimGNNPatternRecoTool::m_regionNum
Gaudi::Property< int > m_regionNum
Definition: FPGATrackSimGNNPatternRecoTool.h:58
FPGATrackSimGNNPatternRecoTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimGNNPatternRecoTool.cxx:6
FPGATrackSimGNNPatternRecoTool::m_GNNGraphHitSelectorTool
ToolHandle< FPGATrackSimGNNGraphHitSelectorTool > m_GNNGraphHitSelectorTool
Definition: FPGATrackSimGNNPatternRecoTool.h:62
FPGATrackSimGNNPatternRecoTool::m_selectedGNNEdgeClassifierTool
ToolHandle< FPGATrackSimGNNEdgeClassifierTool > m_selectedGNNEdgeClassifierTool
Definition: FPGATrackSimGNNPatternRecoTool.h:65
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
FPGATrackSimGNNPatternRecoTool::m_GNNGraphConstructionTool
ToolHandle< FPGATrackSimGNNGraphConstructionTool > m_GNNGraphConstructionTool
Definition: FPGATrackSimGNNPatternRecoTool.h:63
FPGATrackSimGNNPatternRecoTool::m_GNNRoadMakerTool
ToolHandle< FPGATrackSimGNNRoadMakerTool > m_GNNRoadMakerTool
Definition: FPGATrackSimGNNPatternRecoTool.h:66
FPGATrackSimGNNPatternRecoTool::m_GNNRootOutputTool
ToolHandle< FPGATrackSimGNNRootOutputTool > m_GNNRootOutputTool
Definition: FPGATrackSimGNNPatternRecoTool.h:67
FPGATrackSimGNNPatternRecoTool.h
Implements road finding using GNNs for pattern recognition.
FPGATrackSimGNNPatternRecoTool::getRoads
virtual StatusCode getRoads(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads) override
Definition: FPGATrackSimGNNPatternRecoTool.cxx:29