10 #ifdef BENCHMARK_FPGATRACKSIM
24 return StatusCode::SUCCESS;
35 return StatusCode::SUCCESS;
37 ATH_MSG_DEBUG(
"I received " <<myProtoTracks->size()<<
" proto-tracks");
49 const Acts::GeometryContext tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
50 const Acts::MagneticFieldContext mfContext = m_extrapolationTool->getMagneticFieldContext(ctx);
55 Acts::VectorTrackContainer trackBackend;
56 Acts::VectorMultiTrajectory trackStateBackend;
58 std::move(trackStateBackend) );
60 if constexpr (
enableBenchmark) m_chrono->chronoStart(
"FPGATrackSimPrototrackFitterAlg: ACTS KF");
62 for (
auto & proto : *myProtoTracks){
63 auto res = m_actsFitter->fit(proto.measurements, *proto.parameters,
64 tgContext, mfContext, calContext);
67 if (
res->size() == 0 )
continue;
68 if(proto.measurements.empty())
continue;
69 ATH_MSG_DEBUG(
".......Done track with size "<< proto.measurements.size());
70 const auto trackProxy =
res->getTrack(0);
71 if (not trackProxy.hasReferenceSurface()) {
72 ATH_MSG_INFO(
"There is not reference surface for this track");
76 destProxy.copyFrom(trackProxy,
true);
78 if constexpr (
enableBenchmark) m_chrono->chronoStop(
"FPGATrackSimPrototrackFitterAlg: ACTS KF");
81 Acts::ConstVectorTrackContainer ctrackBackend( std::move(
trackContainer.container()) );
82 Acts::ConstVectorMultiTrajectory ctrackStateBackend( std::move(
trackContainer.trackStateContainer()) );
83 std::unique_ptr<ActsTrk::TrackContainer> constTracksContainer = std::make_unique<ActsTrk::TrackContainer>( std::move(ctrackBackend),
84 std::move(ctrackStateBackend) );
86 ATH_CHECK(trackContainerHandle.
record(std::move(constTracksContainer)));
88 return StatusCode::SUCCESS;