13#include "Acts/Surfaces/PerigeeSurface.hpp"
20 const std::string &name, ISvcLocator *pSvcLocator)
35 std::string backendname{};
39 catch (
const std::runtime_error &ee){
44 return StatusCode::SUCCESS;
48 ATH_MSG_INFO(
"====> GSF fitting Statistics ============");
51 ATH_MSG_INFO(
"<========================================");
52 return StatusCode::SUCCESS;
60 Acts::VectorTrackContainer trackBackend;
61 Acts::VectorMultiTrajectory trackStateBackend;
63 std::move(trackStateBackend) );
65 std::vector<const xAOD::TrackParticle *> siliconTrackParticles;
66 siliconTrackParticles.reserve(16);
69 int nSiliconHits_trk =
74 siliconTrackParticles.push_back(trackParticle);
81 Acts::ConstVectorTrackContainer ctrackBackend( std::move(trackContainer.container()) );
82 Acts::ConstVectorMultiTrajectory ctrackStateBackend( std::move(trackContainer.trackStateContainer()) );
83 std::unique_ptr<ActsTrk::TrackContainer> outputTracks = std::make_unique<ActsTrk::TrackContainer>( std::move(ctrackBackend),
84 std::move(ctrackStateBackend) );
86 m_nInputTracks.fetch_add(selectedTrackParticles->size(), std::memory_order_relaxed);
91 if (refittedTrackHandle.
record(std::move(outputTracks)).isFailure()) {
92 ATH_MSG_ERROR(
"Failed to record refitted ACTS tracks with key "
94 return StatusCode::FAILURE;
97 return StatusCode::SUCCESS;
101 const EventContext &ctx,
102 const std::vector<const xAOD::TrackParticle *> &input,
110 Acts::Vector3 beamPos( beamSpotData->
beamPos().x() * Acts::UnitConstants::mm,
111 beamSpotData->
beamPos().y() * Acts::UnitConstants::mm,
115 std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(beamPos);
123 decoHandleActsTrackLink(*in);
125 if (!actsTrackLink.
isValid()) {
126 ATH_MSG_WARNING(
"Invalid ElementLink to ACTS track for track particle ");
130 std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track =
132 if (!optional_track.has_value()) {
134 "Could not retrieve track from valid ElementLink for track particle");
138 ActsTrk::TrackContainer::ConstTrackProxy actstrack = optional_track.value();
142 return StatusCode::SUCCESS;
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Helpers for checking error return status codes and reporting errors.
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
Gaudi::Property< int > m_MinNoSiHits
@Cut on minimum silicon hits
ActsEMBremCollectionBuilder(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode execute(const EventContext &ctx) const override final
SG::WriteHandleKey< ActsTrk::TrackContainer > m_refittedTracksKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
StatusCode refitActsTracks(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &input, ActsTrk::MutableTrackContainer &trackContainer) const
std::atomic_uint m_nRefittedTracks
ActsTrk::MutableTrackContainerHandlesHelper m_refittedTracksBackendHandles
std::atomic_uint m_nInputTracks
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
virtual StatusCode initialize() override final
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_actsTrackLinkKey
virtual StatusCode finalize() override final
ToolHandle< ActsTrk::IFitterTool > m_actsFitter
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_selectedTrackParticleContainerKey
Names of input output collections.
An algorithm that can be simultaneously executed in multiple threads.
ElementLink implementation for ROOT usage.
bool isValid() const
Test to see if the link can be dereferenced.
const Amg::Vector3D & beamPos() const noexcept
const_pointer_type cptr()
Handle class for reading a decoration on an object.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
std::string prefixFromTrackContainerName(const std::string &tracks)
Parse TrackContainer name to get the prefix for backends The name has to contain XYZTracks,...
Acts::TrackContainer< MutableTrackBackend, MutableTrackStateBackend, Acts::detail::ValueHolder > MutableTrackContainer
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].