32 std::vector<SG::ReadHandle<FPGATrackSimTrackCollection>> incomingFPGATrackSimTrackCollections =
m_FPGATrackCollectionKeys.makeHandles(ctx);
35 std::vector<SG::ReadHandle<FPGATrackSimRoadCollection>> incomingFPGARoadSimTrackCollections =
m_FPGARoadCollectionKeys.makeHandles(ctx);
38 std::vector<const FPGATrackSimTrackCollection*> incomingFPGATrackSimTrackCollectionsPtrs;
41 if (!trackCollection.isValid())
43 ATH_MSG_ERROR(
"Invalid FPGATrackCollection key with name " << trackCollection.key());
44 return StatusCode::FAILURE;
46 incomingFPGATrackSimTrackCollectionsPtrs.push_back(trackCollection.cptr());
49 std::unique_ptr<FPGATrackSimTrackCollection> finalFPGATracksPtr = std::make_unique<FPGATrackSimTrackCollection>();
51 finalFPGATracksHandle = std::move(finalFPGATracksPtr);
54 std::vector<const FPGATrackSimRoadCollection*> incomingFPGARoadSimTrackCollectionsPtrs;
57 if (!roadCollection.isValid())
59 ATH_MSG_ERROR(
"Invalid FPGARoadCollection key with name " << roadCollection.key());
60 return StatusCode::FAILURE;
62 incomingFPGARoadSimTrackCollectionsPtrs.push_back(roadCollection.cptr());
65 std::unique_ptr<FPGATrackSimRoadCollection> finalFPGARoadsPtr = std::make_unique<FPGATrackSimRoadCollection>();
68 finalFPGARoads = std::move(finalFPGARoadsPtr);
73 return StatusCode::SUCCESS;
83 std::unique_ptr<FPGATrackSimTrackCollection>& outputTracks)
const {
84 size_t numberOfAllTracks = 0;
87 numberOfAllTracks += tracksInRegion->size();
90 ATH_MSG_INFO(
"Filtering and concatenating " << numberOfAllTracks <<
" tracks from " << inputTracksPtrs.size() <<
" regions");
93 regionFilteredTracks.reserve(numberOfAllTracks);
100 regionFilteredTracks.push_back(track);
112 outputTracks->reserve(numberOfAllTracks);
115 if(track.passedOR()) outputTracks->push_back(track);
119 m_nPreORTracks.fetch_add(regionFilteredTracks.size(), std::memory_order_relaxed);
121 m_nPostORTracks.fetch_add(outputTracks->size(), std::memory_order_relaxed);
123 return StatusCode::SUCCESS;
128 std::unique_ptr<FPGATrackSimRoadCollection>& outputRoads)
const{
129 size_t numberOfAllRoads = 0;
131 numberOfAllRoads += roadCollection->size();
134 ATH_MSG_INFO(
"Filtering and concatenating " << numberOfAllRoads <<
" roads from " << inputRoads.size() <<
" regions");
136 outputRoads->reserve(numberOfAllRoads);
139 outputRoads->insert(outputRoads->end(), roadCollection->begin(), roadCollection->end());
143 return StatusCode::SUCCESS;