ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimRegionMergingAlg.h
Go to the documentation of this file.
1// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3#ifndef FPGATrackSim_REGIONMERGING_H
4#define FPGATrackSim_REGIONMERGING_H
5
6// Athena libraries
11
12// FPGATrackSim libraries
17
18
24namespace FPGATrackSim {
26 public:
27 FPGATrackSimRegionMergingAlg(const std::string& name, ISvcLocator* pSvcLocator);
28 virtual ~FPGATrackSimRegionMergingAlg() = default;
29
30 virtual StatusCode initialize() override final;
31 virtual StatusCode execute(const EventContext& ctx) const override final;
32 virtual StatusCode finalize() override final;
33
34 private:
35 // Gaudi Properties
36 Gaudi::Property<bool> m_doOverlapRemoval {this, "doOverlapRemoval", true , "flag to enable the overlap removal"};
37 Gaudi::Property<bool> m_useRoads {this, "useRoads", false, "If set to truth it merges roads instead of tracks (tracking is set to False)"};
38
39 // Tools
40 mutable ToolHandle<FPGATrackSimOverlapRemovalTool> m_overlapRemovalTool ATLAS_THREAD_SAFE{ this, "OverlapRemovalTool", "FPGATrackSimOverlapRemovalTool/FPGATrackSimOverlapRemovalTool", "Overla removal tool to run on overlapping regions" };
41
42 // Handles
43 SG::ReadHandleKeyArray<FPGATrackSimTrackCollection> m_FPGATrackCollectionKeys {this, "FPGATrackSimTrackCollections",{},"List of FPGA track collections from different regions"};
44 SG::ReadHandleKeyArray<FPGATrackSimRoadCollection> m_FPGARoadCollectionKeys {this, "FPGATrackSimRoadCollections",{},"List of FPGA road collections from different regions"};
45
46 SG::WriteHandleKey<FPGATrackSimTrackCollection> m_FinalFPGATrackCollectionKey {this, "FinalFPGATrackCollection","FPGATracks","Outgoing FPGA track collection containing tracks after region merging and OR"};
47 SG::WriteHandleKey<FPGATrackSimRoadCollection> m_FinalFPGARoadkCollectionKey {this, "FinalFPGARoadCollection","FPGARoads","Outgoing FPGA road collection containing roads after region merging"};
48
49 // chrono service
50 ServiceHandle<IChronoStatSvc> m_chrono{this,"ChronoStatSvc","ChronoStatSvc"};
51
52
53 // internal members
54 StatusCode mergeTracks(const std::vector<const FPGATrackSimTrackCollection*>& inputTracksPtrs,
55 std::unique_ptr<FPGATrackSimTrackCollection>& outputTracks) const;
56 StatusCode mergeRoads(const std::vector<const FPGATrackSimRoadCollection*>& inputRoads,
57 std::unique_ptr<FPGATrackSimRoadCollection>& outputRoads) const;
58
59 mutable std::atomic<size_t> m_allIncomingTracks{0}, m_nPreORTracks{0}, m_nPostORTracks{0};
60 };
61}
62
63#endif
Overlap removal tool for FPGATrackSimTrack.
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
ToolHandle< FPGATrackSimOverlapRemovalTool > m_overlapRemovalTool ATLAS_THREAD_SAFE
StatusCode mergeTracks(const std::vector< const FPGATrackSimTrackCollection * > &inputTracksPtrs, std::unique_ptr< FPGATrackSimTrackCollection > &outputTracks) const
FPGATrackSimRegionMergingAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadHandleKeyArray< FPGATrackSimTrackCollection > m_FPGATrackCollectionKeys
SG::ReadHandleKeyArray< FPGATrackSimRoadCollection > m_FPGARoadCollectionKeys
SG::WriteHandleKey< FPGATrackSimTrackCollection > m_FinalFPGATrackCollectionKey
StatusCode mergeRoads(const std::vector< const FPGATrackSimRoadCollection * > &inputRoads, std::unique_ptr< FPGATrackSimRoadCollection > &outputRoads) const
SG::WriteHandleKey< FPGATrackSimRoadCollection > m_FinalFPGARoadkCollectionKey
virtual StatusCode execute(const EventContext &ctx) const override final
Support class for PropertyMgr.
Definition Property.h:23
Property holding a SG store/key/clid from which a WriteHandle is made.
=============================================================================
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
#define private