57 Propagator(aProp.propagationDirection()), theTkProp(0), theGenProp(0) {
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 ~SmartPropagator()
void initTkVolume(float epsilon)
build the tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
virtual Propagator * clone() const =0
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
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
FreeTrajectoryState const * freeState(bool withErrors=true) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
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)
const PositionType & position() const
const Propagator * getGenPropagator() const
return the propagator used outside tracker