42 initTkVolume(epsilon);
51 initTkVolume(epsilon);
57 Propagator(aProp.propagationDirection()), theTkProp(0), theGenProp(0) {
59 theTkProp=aProp.getTkPropagator()->clone();
61 theTkProp=aProp.getGenPropagator()->clone();
70 SmartPropagator::~SmartPropagator() {
79 void SmartPropagator::initTkVolume(
float epsilon) {
85 float r_out = radius + epsilon/2;
88 float z_min = - z_max;
99 std::pair<TrajectoryStateOnSurface,double>
101 const Plane& plane)
const
103 if (insideTkVol(fts) && insideTkVol(plane)) {
104 return getTkPropagator()->propagateWithPath(fts, plane);
106 return getGenPropagator()->propagateWithPath(fts, plane);
110 std::pair<TrajectoryStateOnSurface,double>
114 if (insideTkVol(fts) && insideTkVol(cylinder)) {
115 return getTkPropagator()->propagateWithPath(fts, cylinder);
117 return getGenPropagator()->propagateWithPath(fts, cylinder);
122 std::pair<TrajectoryStateOnSurface,double>
124 const Plane& plane)
const
126 if (insideTkVol(*fts.
freeState()) && insideTkVol(plane)) {
127 return getTkPropagator()->propagateWithPath(fts, plane);
129 return getGenPropagator()->propagateWithPath(fts, plane);
133 std::pair<TrajectoryStateOnSurface,double>
137 if (insideTkVol(*fts.
freeState()) && insideTkVol(cylinder)) {
138 return getTkPropagator()->propagateWithPath(fts, cylinder);
140 return getGenPropagator()->propagateWithPath(fts, cylinder);
154 bool SmartPropagator::insideTkVol(
const Surface& surface)
const {
166 bool SmartPropagator::insideTkVol(
const BoundCylinder& cylin)
const {
168 GlobalPoint gp(cylin.radius(),0.,(cylin.bounds().length())/2.);
177 bool SmartPropagator::insideTkVol(
const Plane& plane)
const {
188 const Propagator* SmartPropagator::getTkPropagator()
const {
195 const Propagator* SmartPropagator::getGenPropagator()
const {
static float halfLength()
FreeTrajectoryState const * freeState(bool withErrors=true) const
GlobalPoint position() const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
const PositionType & position() const