85 float r_out = radius + epsilon/2;
88 float z_min = - z_max;
99 std::pair<TrajectoryStateOnSurface,double>
101 const Plane& plane)
const 110 std::pair<TrajectoryStateOnSurface,double>
122 std::pair<TrajectoryStateOnSurface,double>
124 const Plane& plane)
const 133 std::pair<TrajectoryStateOnSurface,double>
168 GlobalPoint gp(cylin.radius(),0.,(cylin.bounds().length())/2.);
virtual Propagator * clone() const =0
void initTkVolume(float epsilon)
build the tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
static float halfLength()
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=0)
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
virtual PropagationDirection propagationDirection() const final
FreeTrajectoryState const * freeState(bool withErrors=true) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
const MagneticField * theField
GlobalPoint position() const
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
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
~SmartPropagator() override
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
const PositionType & position() const
SmartPropagator * clone() const override
Virtual constructor (using copy c'tor)
const Propagator * getGenPropagator() const
return the propagator used outside tracker