1 #ifndef GeomPropagators_SmartPropagator_H
2 #define GeomPropagators_SmartPropagator_H
74 std::pair<TrajectoryStateOnSurface,double>
76 const Plane& plane)
const override;
79 std::pair<TrajectoryStateOnSurface,double>
81 const Cylinder& cylinder)
const override;
83 virtual std::pair< TrajectoryStateOnSurface, double>
86 virtual std::pair< TrajectoryStateOnSurface, double>
120 #endif // SMARTPROPAGATOR_H
virtual FreeTrajectoryState propagate(const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
virtual void setPropagationDirection(PropagationDirection dir)
virtual ~SmartPropagator()
void initTkVolume(float epsilon)
build the tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
void setPropagationDirection(PropagationDirection dir) override
setting the direction fo both components
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
const MagneticField * theField
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
SmartPropagator(const Propagator *aTkProp, const Propagator *aGenProp, const MagneticField *field, PropagationDirection dir=alongMomentum, float epsilon=5)
Defines which propagator is used inside Tk and which outside.
ReferenceCountingPointer< Cylinder > theTkVolume
virtual const MagneticField * magneticField() const
return the magneticField
const Propagator * getGenPropagator() const
return the propagator used outside tracker
virtual SmartPropagator * clone() const
Virtual constructor (using copy c'tor)