|  | 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" 
   36 class MagneticFieldProperties;
 
   37 class TransportJacobian;
 
   38 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,
 
  229 #endif // TRKEXINTERFACES_PROPAGATOR_H 
  
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.
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.
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 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.
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.