|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #ifndef TRKEXINTERFACES_IPROPAGATOR_H
10 #define TRKEXINTERFACES_IPROPAGATOR_H
13 #include "GaudiKernel/EventContext.h"
14 #include "GaudiKernel/IAlgTool.h"
15 #include "GaudiKernel/ThreadLocalContext.h"
37 class MagneticFieldProperties;
38 class TransportJacobian;
39 class TrackStateOnSurface;
45 typedef std::pair<const Surface*, BoundaryCheck>
DestSurf;
48 static const InterfaceID IID_IPropagator(
"IPropagator", 1, 0);
61 static const InterfaceID&
interfaceID() {
return IID_IPropagator; }
64 virtual std::unique_ptr<NeutralParameters>
propagate(
69 bool returnCurv =
false)
const = 0;
73 const EventContext& ctx,
80 bool returnCurv =
false,
85 const EventContext& ctx,
95 const EventContext& ctx,
97 std::vector<DestSurf>& sfs,
101 std::vector<unsigned int>& solutions,
103 bool usePathLim =
false,
104 bool returnCurv =
false,
110 const EventContext& ctx,
112 std::vector<DestSurf>& sfs,
116 std::vector<unsigned int>& solutions,
121 std::vector<Trk::HitInfo>*&
hitVector)
const = 0;
128 const EventContext& ctx,
130 std::vector<DestSurf>& sfs,
134 std::vector<unsigned int>& solutions,
135 std::vector<const Trk::TrackStateOnSurface*>*& matstates,
136 std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>,
int>>*
139 bool usePathLim =
false,
140 bool returnCurv =
false,
146 const EventContext& ctx,
152 std::optional<TransportJacobian>& jacob,
155 bool returnCurv =
false,
161 const EventContext& ctx,
168 bool returnCurv =
false,
174 const EventContext& ctx,
180 std::optional<TransportJacobian>& jacob,
182 bool returnCurv =
false,
189 virtual std::optional<TrackSurfaceIntersection>
intersect(
190 const EventContext& ctx,
200 const EventContext& ctx,
217 std::deque<Amg::Vector3D>& positionslist,
228 const EventContext& ctx,
237 #endif // TRKEXINTERFACES_PROPAGATOR_H
virtual std::unique_ptr< TrackParameters > propagateM(const EventContext &ctx, const TrackParameters &parm, std::vector< DestSurf > &sfs, PropDirection dir, const MagneticFieldProperties &mprop, ParticleHypothesis particle, std::vector< unsigned int > &solutions, std::vector< const Trk::TrackStateOnSurface * > *&matstates, std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int >> *intersections, double &path, bool usePathLim=false, bool returnCurv=false, const TrackingVolume *tVol=nullptr, Trk::ExtrapolationCache *cache=nullptr) const =0
Propagation interface: The propagation method with internal material collection.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
virtual std::unique_ptr< TrackParameters > propagateT(const EventContext &ctx, const TrackParameters &parm, std::vector< DestSurf > &sfs, PropDirection dir, const MagneticFieldProperties &mprop, ParticleHypothesis particle, std::vector< unsigned int > &solutions, PathLimit &pathLim, TimeLimit &timeLim, bool returnCurv, const TrackingVolume *tVol, std::vector< Trk::HitInfo > *&hitVector) const =0
Propagate parameters and covariance with search of closest surface time included.
path
python interpreter configuration --------------------------------------—
virtual ~IPropagator()=default
Virtual destructor.
virtual std::unique_ptr< TrackParameters > propagate(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 =0
Main propagation method without transport jacobian production.
virtual std::unique_ptr< TrackParameters > propagate(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, const MagneticFieldProperties &mprop, std::optional< TransportJacobian > &jacob, double &pathLength, ParticleHypothesis particle=pion, bool returnCurv=false, const TrackingVolume *tVol=nullptr) const =0
Main propagation method with transport jacobian production.
std::vector< FPGATrackSimHit > hitVector
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
virtual Trk::MultiComponentState multiStatePropagate(const EventContext &ctx, const MultiComponentState &multiComponentState, const Surface &surface, const MagneticFieldProperties &fieldProperties, const PropDirection direction=Trk::anyDirection, const BoundaryCheck &boundaryCheck=true, const ParticleHypothesis particleHypothesis=nonInteracting) const =0
Main propagation method for Multi Component state.
std::pair< const TrackParameters *, double > TrackParametersWithPath
typedef for return type TrackParameters, pathlength
std::vector< ComponentParameters > MultiComponentState
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
virtual std::optional< TrackSurfaceIntersection > intersect(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, const MagneticFieldProperties &mprop, ParticleHypothesis particle=pion, const TrackingVolume *tVol=nullptr) const =0
Intersection interface: The intersection interface might be used by the material service as well to e...
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 =0
Main propagation method for parameters only.
Ensure that the ATLAS eigen extensions are properly loaded.
virtual std::optional< TrackSurfaceIntersection > intersectSurface(const EventContext &ctx, const Surface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP, const MagneticFieldProperties &mft, ParticleHypothesis particle) const =0
Intersection and Intersector interface:
virtual Trk::ExtrapolationCode propagate(const EventContext &ctx, Trk::ExCellCharged &eCell, Trk::TargetSurfaces &sfs, Trk::TargetSurfaceVector &solutions) const =0
Propagation method needed for StepEngine.
virtual std::unique_ptr< TrackParameters > propagate(const EventContext &ctx, const TrackParameters &parm, std::vector< DestSurf > &sfs, PropDirection dir, const MagneticFieldProperties &mprop, ParticleHypothesis particle, std::vector< unsigned int > &solutions, double &path, bool usePathLim=false, bool returnCurv=false, const TrackingVolume *tVol=nullptr) const =0
Propagate parameters and covariance with search of closest surface.
Definition of component parameters for use in a mixture of many components. In this regime each track...
virtual std::unique_ptr< NeutralParameters > propagate(const NeutralParameters ¶meters, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, bool returnCurv=false) const =0
Main propagation method for NeutralParameters.
std::vector< TargetSurface > TargetSurfaceVector
virtual void globalPositions(const EventContext &ctx, std::deque< Amg::Vector3D > &positionslist, const TrackParameters &parm, const MagneticFieldProperties &mprop, const CylinderBounds &cylbo, double stepSize, ParticleHypothesis particle=pion, const TrackingVolume *tVol=nullptr) const =0
GlobalPositions list interface: This is used mostly in pattern recognition in the road finder,...
virtual std::unique_ptr< TrackParameters > propagateParameters(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, const MagneticFieldProperties &mprop, std::optional< TransportJacobian > &jacob, ParticleHypothesis particle=pion, bool returnCurv=false, const TrackingVolume *tVol=nullptr) const =0
Main propagation method for parameters only with transport jacobian production.