Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimWindowExtensionTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimWINDOWEXTENSION_H
4 #define FPGATrackSimWINDOWEXTENSION_H
5 
13 #include "GaudiKernel/ServiceHandle.h"
15 
16 // add public header directory to algorithms for this?
18 
31 
32 #include <vector>
33 
34 class FPGATrackSimWindowExtensionTool : public extends <AthAlgTool, IFPGATrackSimTrackExtensionTool>
35 {
36  public:
38  using base_class::base_class;
39 
40  virtual StatusCode initialize() override;
41 
42  virtual StatusCode extendTracks(const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits,
43  const std::vector<std::shared_ptr<const FPGATrackSimTrack>> & tracks,
44  std::vector<std::shared_ptr<const FPGATrackSimRoad>> & roads) override;
45 
46  // We don't have a "union" tool that sits in front of the extension tool, so this is needed here.
47  virtual StatusCode setupSlices(FPGATrackSimLogicalEventInputHeader *slicedHitHeader) override {
48  m_slicedHitHeader = slicedHitHeader;
49  return StatusCode::SUCCESS;
50  };
51 
52  // Helper functions to extend a single track using different methods.
53  bool extendTrackSliced(std::shared_ptr<const FPGATrackSimTrack> track, std::vector<int>& numHits, layer_bitmask_t& hitLayers,
54  std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>>& road_hits);
55  bool extendTrackBinned(std::shared_ptr<const FPGATrackSimTrack> track, std::vector<int>& numHits, layer_bitmask_t& hitLayers,
56  std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>>& road_hits);
57 
58  private:
59 
60  ToolHandle<FPGATrackSimBinnedHits> m_hitBinningTool {this, "BinningTool", "FPGATrackSimBinning/FPGATrackSimBinnedHits"};
61 
62  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
63  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
64 
65  // We'll definitely need properties, but I don't know which ones.
66  Gaudi::Property<int> m_threshold { this, "threshold", 11, "Minimum number of hits to fire a road"};
67  Gaudi::Property<std::vector<float>> m_windows {this, "phiWindow", {}, "Default window settings for phi, must be size nlayers."};
68  Gaudi::Property<std::vector<float>> m_zwindows {this, "zWindow", {}, "Default window settings for z, must be size nlayers."};
69  Gaudi::Property<bool> m_fieldCorrection {this, "fieldCorrection", true, "Use magnetic field correction for Hough transform"};
70  Gaudi::Property<bool> m_idealGeoRoads {this, "IdealGeoRoads", true, "Do sector assignment of second stage roads"};
71  Gaudi::Property<bool> m_doBinning {this, "doBinning", false, "Use second stage binning to sort hits, not the plane map"};
72 
73  // Options only needed for sector assignment.
74  // The eta pattern option here should probably be dropped, because we're not using it
75  // and supporting it requires having two sets of eta patterns (one for the first stage, one for the second)
76  // and then running the eta pattern filter a second time.
77  Gaudi::Property <bool> m_doRegionalMapping { this, "RegionalMapping", false, "Use the sub-region maps to define the sector"};
78  Gaudi::Property <bool> m_doEtaPatternConsts { this, "doEtaPatternConsts", false, "Whether to use the eta pattern tool for constant generation"};
79  Gaudi::Property <bool> m_useSpacePoints { this, "useSpacePoints", false, "Whether we are using spacepoints."};
80 
81  std::vector<FPGATrackSimRoad> m_roads;
82  //This is a map(dict python equivalent) of slice IDs that have a map of layer IDs in it. That map has a vector of hits associated with it
83  std::map<unsigned, std::map<unsigned, std::vector<std::shared_ptr<const FPGATrackSimHit>>>> m_phits_atLayer;
84  unsigned m_nLayers_1stStage = 0;
85  unsigned m_nLayers_2ndStage = 0;
86  unsigned m_maxMiss = 0;
87 
88  // Internal storage for the sliced hits (implemented as a LogicalEventInputHeader,
89  // so we can easily copy to the output ROOT file).
91 
92 };
93 
94 #endif
FPGATrackSimLogicalEventInputHeader
Definition: FPGATrackSimLogicalEventInputHeader.h:21
FPGATrackSimWindowExtensionTool::setupSlices
virtual StatusCode setupSlices(FPGATrackSimLogicalEventInputHeader *slicedHitHeader) override
Definition: FPGATrackSimWindowExtensionTool.h:47
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimWindowExtensionTool::m_fieldCorrection
Gaudi::Property< bool > m_fieldCorrection
Definition: FPGATrackSimWindowExtensionTool.h:69
FPGATrackSimWindowExtensionTool::m_useSpacePoints
Gaudi::Property< bool > m_useSpacePoints
Definition: FPGATrackSimWindowExtensionTool.h:79
FPGATrackSimPlaneMap.h
Maps physical layers to logical layers.
FPGATrackSimNNTrackTool.h
Utilize NN score to build track candidates.
FPGATrackSimTowerInputHeader.h
IFPGATrackSimMappingSvc.h
IFPGATrackSimTrackExtensionTool.h
Interface declaration for track extension tools (tracks + hits -> roads)
FPGATrackSimBinnedHits.h
Binning Classes for GenScanTool.
FPGATrackSimWindowExtensionTool::m_slicedHitHeader
FPGATrackSimLogicalEventInputHeader * m_slicedHitHeader
Definition: FPGATrackSimWindowExtensionTool.h:90
FPGATrackSimWindowExtensionTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimWindowExtensionTool.h:62
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
FPGATrackSimWindowExtensionTool::extendTracks
virtual StatusCode extendTracks(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, const std::vector< std::shared_ptr< const FPGATrackSimTrack >> &tracks, std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads) override
Definition: FPGATrackSimWindowExtensionTool.cxx:61
FPGATrackSimWindowExtensionTool::m_doRegionalMapping
Gaudi::Property< bool > m_doRegionalMapping
Definition: FPGATrackSimWindowExtensionTool.h:77
FPGATrackSimWindowExtensionTool
Definition: FPGATrackSimWindowExtensionTool.h:35
FPGATrackSimWindowExtensionTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimWindowExtensionTool.cxx:29
FPGATrackSimWindowExtensionTool::m_roads
std::vector< FPGATrackSimRoad > m_roads
Definition: FPGATrackSimWindowExtensionTool.h:81
FPGATrackSimWindowExtensionTool::m_maxMiss
unsigned m_maxMiss
Definition: FPGATrackSimWindowExtensionTool.h:86
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
FPGATrackSimWindowExtensionTool::m_windows
Gaudi::Property< std::vector< float > > m_windows
Definition: FPGATrackSimWindowExtensionTool.h:67
FPGATrackSimWindowExtensionTool::m_doBinning
Gaudi::Property< bool > m_doBinning
Definition: FPGATrackSimWindowExtensionTool.h:71
FPGATrackSimWindowExtensionTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimWindowExtensionTool.h:63
FPGATrackSimWindowExtensionTool::extendTrackBinned
bool extendTrackBinned(std::shared_ptr< const FPGATrackSimTrack > track, std::vector< int > &numHits, layer_bitmask_t &hitLayers, std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &road_hits)
Definition: FPGATrackSimWindowExtensionTool.cxx:245
FPGATrackSimFunctions.h
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimWindowExtensionTool::m_nLayers_2ndStage
unsigned m_nLayers_2ndStage
Definition: FPGATrackSimWindowExtensionTool.h:85
FPGATrackSimWindowExtensionTool::m_nLayers_1stStage
unsigned m_nLayers_1stStage
Definition: FPGATrackSimWindowExtensionTool.h:84
FPGATrackSimWindowExtensionTool::m_phits_atLayer
std::map< unsigned, std::map< unsigned, std::vector< std::shared_ptr< const FPGATrackSimHit > > > > m_phits_atLayer
Definition: FPGATrackSimWindowExtensionTool.h:83
FPGATrackSimWindowExtensionTool::m_threshold
Gaudi::Property< int > m_threshold
Definition: FPGATrackSimWindowExtensionTool.h:66
FPGATrackSimWindowExtensionTool::extendTrackSliced
bool extendTrackSliced(std::shared_ptr< const FPGATrackSimTrack > track, std::vector< int > &numHits, layer_bitmask_t &hitLayers, std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &road_hits)
Definition: FPGATrackSimWindowExtensionTool.cxx:194
FPGATrackSimWindowExtensionTool::m_idealGeoRoads
Gaudi::Property< bool > m_idealGeoRoads
Definition: FPGATrackSimWindowExtensionTool.h:70
FPGATrackSimWindowExtensionTool::m_zwindows
Gaudi::Property< std::vector< float > > m_zwindows
Definition: FPGATrackSimWindowExtensionTool.h:68
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
IFPGATrackSimBankSvc.h
FPGATrackSimWindowExtensionTool::m_doEtaPatternConsts
Gaudi::Property< bool > m_doEtaPatternConsts
Definition: FPGATrackSimWindowExtensionTool.h:78
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimTypes.h
FPGATrackSimTrack.h
FPGATrackSimWindowExtensionTool::m_hitBinningTool
ToolHandle< FPGATrackSimBinnedHits > m_hitBinningTool
Definition: FPGATrackSimWindowExtensionTool.h:60
ServiceHandle< IFPGATrackSimBankSvc >