12#include "GaudiKernel/SystemOfUnits.h"
32 const std::string& name,
33 const IInterface* parent)
36 declareInterface<Trk::IPropagator>(
this);
55 return StatusCode::SUCCESS;
61 return StatusCode::SUCCESS;
64std::unique_ptr<NeutralParameters>
69 bool curvilinear)
const
71 return m_linePropagator->propagate(parameters,surface,dir,boundsCheck,curvilinear);
74std::unique_ptr<TrackParameters>
91std::unique_ptr<TrackParameters>
98 std::optional<TransportJacobian>& ,
110std::unique_ptr<TrackParameters>
128std::unique_ptr<TrackParameters>
135 std::optional<TransportJacobian>& ,
146std::optional<Trk::TrackSurfaceIntersection>
166 bool curvilinear)
const
194 cache.
m_charge = parameters.charge();
224 ATH_MSG_DEBUG(
" requested oppositeMomentum, but pathlength "
233 <<
" intersection at r,phi,z "
234 << std::setw(10) << std::setprecision(1) << cache.
m_intersection->position().perp()
235 << std::setw(9) << std::setprecision(4) << cache.
m_intersection->position().phi()
236 << std::setw(10) << std::setprecision(1) << cache.
m_intersection->position().z()
238 << std::setw(9) << std::setprecision(3) << 1./std::abs(cache.
m_qOverP*Gaudi::Units::GeV) );
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
bool msgLvl(const MSG::Level lvl) const
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
ToolHandle< IIntersector > m_intersector
virtual std::unique_ptr< TrackParameters > propagateParameters(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, const MagneticFieldProperties &mprop, ParticleHypothesis particle=pion, bool returnCurv=false, const TrackingVolume *tVol=nullptr) const override final
Propagation interface without Covariance matrix propagation the pathlength has to be returned for eve...
virtual std::optional< Trk::TrackSurfaceIntersection > intersect(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, const MagneticFieldProperties &mprop, ParticleHypothesis particle=pion, const TrackingVolume *tVol=nullptr) const override final
Intersection interface: The intersection interface might be used by the material service as well to e...
IntersectorWrapper(const std::string &type, const std::string &name, const IInterface *parent)
void findIntersection(Cache &cache, const TrackParameters ¶meters, const Surface &surface, PropDirection dir=Trk::anyDirection) const
void createParameters(Cache &cache, const Surface &surface, const BoundaryCheck &boundsCheck, bool curvilinear) const
~IntersectorWrapper(void)
virtual StatusCode initialize() override final
virtual std::unique_ptr< NeutralParameters > propagate(const NeutralParameters &, const Surface &, PropDirection, const BoundaryCheck &, bool) const override final
N 0) Neutral parameters method
ToolHandle< IPropagator > m_linePropagator
virtual StatusCode finalize() override final
magnetic field properties to steer the behavior of the extrapolation
Abstract Base Class for tracking surfaces.
virtual ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theat, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const =0
Use the Surface as a ParametersBase constructor, from local parameters - charged.
An intersection with a Surface is given by.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
ParametersBase< TrackParametersDim, Charged > TrackParameters
std::optional< TrackSurfaceIntersection > m_intersection
std::unique_ptr< TrackParameters > m_parameters