63 Propagator(aProp.propagationDirection()), theTkProp(0), theGenProp(0) {
91 float r_out = radius + epsilon/2;
94 float z_min = - z_max;
105 const Surface& surface)
const {
111 const Plane& plane)
const {
132 std::pair<TrajectoryStateOnSurface,double>
134 const Plane& plane)
const
143 std::pair<TrajectoryStateOnSurface,double>
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Surface &surface) const
virtual ~SmartPropagator()
virtual float length() const =0
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
virtual Propagator * clone() const =0
static BoundCylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, const Bounds *bounds, MediumProperties *mp=0)
static float halfLength()
static ReferenceCountingPointer< BoundCylinder > & theTkVolume()
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
Scalar radius() const
Radius of the cylinder.
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
GlobalPoint position() const
const Bounds & bounds() const
Propagator * getGenPropagator() const
return the propagator used outside tracker
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Surface &surface) const
const PositionType & position() const