ATLAS Offline Software
FPGATrackSimNNTrackTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimNNTRACKTOOL_H
4 #define FPGATrackSimNNTRACKTOOL_H
5 
14 #include "GaudiKernel/ServiceHandle.h"
16 
18 
25 
26 #include "GaudiKernel/ITHistSvc.h"
27 
29 
33 
34 
36 
38 {
40 
41  public:
42 
44  // AthAlgTool
45 
46  FPGATrackSimNNTrackTool(const std::string&, const std::string&, const IInterface*);
47 
48  virtual StatusCode initialize() override;
49  StatusCode getTracks_1st(std::vector<std::shared_ptr<const FPGATrackSimRoad>> &roads, std::vector<FPGATrackSimTrack> &tracks);
50  StatusCode getTracks_2nd(std::vector<std::shared_ptr<const FPGATrackSimRoad>> &roads, std::vector<FPGATrackSimTrack> &tracks);
51  StatusCode getTracks_GNN(std::vector<std::shared_ptr<const FPGATrackSimRoad>> &roads, std::vector<FPGATrackSimTrack> &tracks);
52  StatusCode setTrackParameters(std::vector<FPGATrackSimTrack> &tracks, bool isFirst, const FPGATrackSimTrackPars& min, const FPGATrackSimTrackPars& max);
53 
54  static float getXScale() { return 1015.;};
55  static float getYScale() { return 1015.;};
56  static float getZScale() { return 3000.;};
57  static float getQoverPtScale() { return 0.001;};
58  static float getEtaScale() { return 5.0;};
59  static float getPhiScale() { return 3.15;};
60  static float getD0Scale() { return 2.0;};
61  static float getZ0Scale() { return 200.;};
62  static float getRScale() {return 1015.;};
63 
64  // Flags
65  Gaudi::Property <unsigned int> m_minNumberOfRealHitsInATrack{ this, "MinNumberOfRealHitsInATrack", 4, "Minimum number of real hits in a track candidate to process" };
66  Gaudi::Property <bool> m_doGNNTracking{ this, "doGNNTracking", false, "Flag to turn on GNN Tracking configuration for road-to-track" };
67  Gaudi::Property <int> m_nInputsGNN{ this, "nInputsGNN", 9, "Number of Hit Inputs for NN for GNN configuration. Depends on which model is chosen."};
68  Gaudi::Property <bool> m_useCartesian { this, "useCartesian", true, "If true, NNs use Cartestian coordinates. If false,they use cylindrical coordiantes"};
69 
70  private:
71 
73  ServiceHandle<ITHistSvc> m_tHistSvc{this, "THistSvc","THistSvc"};
74 
79 
80  bool m_useParamNN_1st = true;
81  bool m_useParamNN_2nd = true;
82 
83  std::vector<float> m_x; // x position of hit in road
84  std::vector<float> m_y; // y pos
85  std::vector<float> m_z; // z pos
86  std::vector<float> m_barcodefrac; // truth barcode fraction for the hit
87  std::vector<int> m_barcode; // truth barcode for the hit
88  std::vector<int> m_eventindex; // event index for the hit
89  std::vector<unsigned int> m_isPixel; // is hit pixel? if 0 it is strip
90  std::vector<unsigned int> m_layer; // layer ID
91  std::vector<unsigned int> m_isBarrel; // is hit in barrel? if 0 it is endcap
92  std::vector<unsigned int> m_etawidth;
93  std::vector<unsigned int> m_phiwidth;
94  std::vector<unsigned int> m_etamodule;
95  std::vector<unsigned int> m_phimodule;
96  std::vector<unsigned int> m_ID; // ID hash for hit
97 
98  std::vector<float> m_truth_d0;
99  std::vector<float> m_truth_z0;
100  std::vector<float> m_truth_pt;
101  std::vector<float> m_truth_eta;
102  std::vector<float> m_truth_phi;
103  std::vector<float> m_truth_pdg;
104  std::vector<int> m_truth_q;
105  std::vector<int> m_truth_barcode;
106  std::vector<int> m_truth_eventindex;
107 
109  // NN stuff
110  std::vector<const char*> m_input_node_names;
111  std::vector<int64_t> m_input_node_dims;
112  std::vector<const char*> m_output_node_names;
113 
114  void compute_truth(FPGATrackSimTrack & newtrk) const;
115 
116 };
117 
118 
119 #endif // FPGATrackSimNNTRACKTOOL_H
FPGATrackSimTrackingToolBase.h
FPGATrackSimNNTrackTool::m_minNumberOfRealHitsInATrack
Gaudi::Property< unsigned int > m_minNumberOfRealHitsInATrack
Definition: FPGATrackSimNNTrackTool.h:65
FPGATrackSimNNTrackTool::m_input_node_dims
std::vector< int64_t > m_input_node_dims
Definition: FPGATrackSimNNTrackTool.h:111
FPGATrackSimNNTrackTool::m_output_node_names
std::vector< const char * > m_output_node_names
Definition: FPGATrackSimNNTrackTool.h:112
FPGATrackSimNNTrackTool::getRScale
static float getRScale()
Definition: FPGATrackSimNNTrackTool.h:62
FPGATrackSimNNTrackTool::m_truth_eta
std::vector< float > m_truth_eta
Definition: FPGATrackSimNNTrackTool.h:101
FPGATrackSimNNTrackTool::m_truth_z0
std::vector< float > m_truth_z0
Definition: FPGATrackSimNNTrackTool.h:99
FPGATrackSimNNTrackTool::m_useCartesian
Gaudi::Property< bool > m_useCartesian
Definition: FPGATrackSimNNTrackTool.h:68
FPGATrackSimTrack
Definition: FPGATrackSimTrack.h:18
FPGATrackSimPlaneMap.h
Maps physical layers to logical layers.
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimNNTrackTool::m_phiwidth
std::vector< unsigned int > m_phiwidth
Definition: FPGATrackSimNNTrackTool.h:93
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
IFPGATrackSimMappingSvc.h
FPGATrackSimNNTrackTool::m_doGNNTracking
Gaudi::Property< bool > m_doGNNTracking
Definition: FPGATrackSimNNTrackTool.h:66
FPGATrackSimNNTrackTool::m_phimodule
std::vector< unsigned int > m_phimodule
Definition: FPGATrackSimNNTrackTool.h:95
FPGATrackSimNNTrackTool::m_truth_eventindex
std::vector< int > m_truth_eventindex
Definition: FPGATrackSimNNTrackTool.h:106
FPGATrackSimNNTrackTool::m_y
std::vector< float > m_y
Definition: FPGATrackSimNNTrackTool.h:84
IFPGATrackSimMappingSvc
Definition: IFPGATrackSimMappingSvc.h:17
FPGATrackSimNNTrackTool::getXScale
static float getXScale()
Definition: FPGATrackSimNNTrackTool.h:54
FPGATrackSimMultiTruth.h
FPGATrackSimNNTrackTool::m_barcode
std::vector< int > m_barcode
Definition: FPGATrackSimNNTrackTool.h:87
FPGATrackSimNNTrackTool::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimNNTrackTool.h:73
FPGATrackSimNNTrackTool
Definition: FPGATrackSimNNTrackTool.h:38
FPGATrackSimTrackingToolBase
Definition: FPGATrackSimTrackingToolBase.h:21
FPGATrackSimNNTrackTool::m_paramNN_1st
OnnxRuntimeBase m_paramNN_1st
Definition: FPGATrackSimNNTrackTool.h:75
FPGATrackSimNNTrackTool::m_etawidth
std::vector< unsigned int > m_etawidth
Definition: FPGATrackSimNNTrackTool.h:92
OnnxRuntimeBase.h
FPGATrackSimNNTrackTool::getEtaScale
static float getEtaScale()
Definition: FPGATrackSimNNTrackTool.h:58
FPGATrackSimNNTrackTool::m_input_node_names
std::vector< const char * > m_input_node_names
Definition: FPGATrackSimNNTrackTool.h:110
FPGATrackSimNNTrackTool::m_eventindex
std::vector< int > m_eventindex
Definition: FPGATrackSimNNTrackTool.h:88
FPGATrackSimNNTrackTool::m_barcodefrac
std::vector< float > m_barcodefrac
Definition: FPGATrackSimNNTrackTool.h:86
FPGATrackSimNNTrackTool::getTracks_1st
StatusCode getTracks_1st(std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads, std::vector< FPGATrackSimTrack > &tracks)
Definition: FPGATrackSimNNTrackTool.cxx:233
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimNNTrackTool::setTrackParameters
StatusCode setTrackParameters(std::vector< FPGATrackSimTrack > &tracks, bool isFirst, const FPGATrackSimTrackPars &min, const FPGATrackSimTrackPars &max)
Definition: FPGATrackSimNNTrackTool.cxx:66
FPGATrackSimNNTrackTool::m_truth_q
std::vector< int > m_truth_q
Definition: FPGATrackSimNNTrackTool.h:104
FPGATrackSimNNTrackTool::m_truth_d0
std::vector< float > m_truth_d0
Definition: FPGATrackSimNNTrackTool.h:98
FPGATrackSimNNTrackTool::m_etamodule
std::vector< unsigned int > m_etamodule
Definition: FPGATrackSimNNTrackTool.h:94
AthAlgTool.h
FPGATrackSimNNTrackTool::m_x
std::vector< float > m_x
Definition: FPGATrackSimNNTrackTool.h:83
FPGATrackSimNNTrackTool::m_z
std::vector< float > m_z
Definition: FPGATrackSimNNTrackTool.h:85
FPGATrackSimNNTrackTool::m_layer
std::vector< unsigned int > m_layer
Definition: FPGATrackSimNNTrackTool.h:90
FPGATrackSimNNTrackTool::m_nInputsGNN
Gaudi::Property< int > m_nInputsGNN
Definition: FPGATrackSimNNTrackTool.h:67
FPGATrackSimNNTrackTool::getD0Scale
static float getD0Scale()
Definition: FPGATrackSimNNTrackTool.h:60
FPGATrackSimNNTrackTool::getTracks_2nd
StatusCode getTracks_2nd(std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads, std::vector< FPGATrackSimTrack > &tracks)
Definition: FPGATrackSimNNTrackTool.cxx:477
FPGATrackSimNNTrackTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimNNTrackTool.h:72
FPGATrackSimNNTrackTool::getZScale
static float getZScale()
Definition: FPGATrackSimNNTrackTool.h:56
FPGATrackSimNNTrackTool::m_fakeNN_2nd
OnnxRuntimeBase m_fakeNN_2nd
Definition: FPGATrackSimNNTrackTool.h:78
FPGATrackSimNNTrackTool::getYScale
static float getYScale()
Definition: FPGATrackSimNNTrackTool.h:55
FPGATrackSimNNTrackTool::FPGATrackSimNNTrackTool
FPGATrackSimNNTrackTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimNNTrackTool.cxx:21
OnnxRuntimeBase
Definition: OnnxRuntimeBase.h:13
FPGATrackSimNNTrackTool::m_truth_phi
std::vector< float > m_truth_phi
Definition: FPGATrackSimNNTrackTool.h:102
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimNNTrackTool::m_fakeNN_1st
OnnxRuntimeBase m_fakeNN_1st
Definition: FPGATrackSimNNTrackTool.h:77
FPGATrackSimNNTrackTool::m_truth_pdg
std::vector< float > m_truth_pdg
Definition: FPGATrackSimNNTrackTool.h:103
FPGATrackSimNNTrackTool::compute_truth
void compute_truth(FPGATrackSimTrack &newtrk) const
Definition: FPGATrackSimNNTrackTool.cxx:973
FPGATrackSimNNTrackTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimNNTrackTool.cxx:25
FPGATrackSimNNTrackTool::m_isPixel
std::vector< unsigned int > m_isPixel
Definition: FPGATrackSimNNTrackTool.h:89
FPGATrackSimNNTrackTool::getZ0Scale
static float getZ0Scale()
Definition: FPGATrackSimNNTrackTool.h:61
FPGATrackSimNNTrackTool::m_paramNN_2nd
OnnxRuntimeBase m_paramNN_2nd
Definition: FPGATrackSimNNTrackTool.h:76
FPGATrackSimNNTrackTool::m_isBarrel
std::vector< unsigned int > m_isBarrel
Definition: FPGATrackSimNNTrackTool.h:91
IFPGATrackSimBankSvc.h
FPGATrackSimNNTrackTool::m_truth_pt
std::vector< float > m_truth_pt
Definition: FPGATrackSimNNTrackTool.h:100
FPGATrackSimNNTrackTool::getPhiScale
static float getPhiScale()
Definition: FPGATrackSimNNTrackTool.h:59
FPGATrackSimNNTrackTool::m_useParamNN_2nd
bool m_useParamNN_2nd
Definition: FPGATrackSimNNTrackTool.h:81
OnnxRuntimeBase::OnnxRuntimeBase
OnnxRuntimeBase()
Definition: OnnxRuntimeBase.cxx:14
FPGATrackSimNNTrackTool::getQoverPtScale
static float getQoverPtScale()
Definition: FPGATrackSimNNTrackTool.h:57
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimNNTrackTool::m_useParamNN_1st
bool m_useParamNN_1st
Definition: FPGATrackSimNNTrackTool.h:80
FPGATrackSimNNTrackTool::m_truth_barcode
std::vector< int > m_truth_barcode
Definition: FPGATrackSimNNTrackTool.h:105
FPGATrackSimTruthTrack.h
FPGATrackSimNNTrackTool::getTracks_GNN
StatusCode getTracks_GNN(std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads, std::vector< FPGATrackSimTrack > &tracks)
Definition: FPGATrackSimNNTrackTool.cxx:720
FPGATrackSimNNTrackTool::m_ID
std::vector< unsigned int > m_ID
Definition: FPGATrackSimNNTrackTool.h:96
FPGATrackSimSectorBank.h
This file declares a class that stores the module IDs of the sectors.
FPGATrackSimTrack.h
ServiceHandle< IFPGATrackSimMappingSvc >