1 #ifndef GeomPropagators_SmartPropagator_H
2 #define GeomPropagators_SmartPropagator_H
80 const Plane& plane)
const;
83 const Plane& plane)
const {
95 std::pair<TrajectoryStateOnSurface,double>
101 std::pair<TrajectoryStateOnSurface,double>
103 const Surface& surface)
const {
107 std::pair<TrajectoryStateOnSurface,double>
109 const Plane& plane)
const;
111 std::pair<TrajectoryStateOnSurface,double>
113 const Plane& plane)
const {
117 std::pair<TrajectoryStateOnSurface,double>
121 std::pair<TrajectoryStateOnSurface,double>
156 #endif // SMARTPROPAGATOR_H
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Surface &surface) const
virtual ~SmartPropagator()
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
static void initTkVolume(float epsilon)
build the tracker volume
SmartPropagator(Propagator *aTkProp, Propagator *aGenProp, const MagneticField *field, PropagationDirection dir=alongMomentum, float epsilon=5)
Defines which propagator is used inside Tk and which outside.
Propagator * getTkPropagator() const
return the propagator used inside tracker
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
static ReferenceCountingPointer< BoundCylinder > & theTkVolume()
void setPropagationDirection(PropagationDirection dir) const
setting the direction fo both components
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
const MagneticField * theField
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
Propagator * getGenPropagator() const
return the propagator used outside tracker
virtual const MagneticField * magneticField() const
return the magneticField
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Surface &surface) const
virtual void setPropagationDirection(PropagationDirection dir) const
virtual SmartPropagator * clone() const
Virtual constructor (using copy c'tor)