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;
105 const Plane& plane)
const {
107 if (insideTkVol(fts) && insideTkVol(plane)) {
108 return getTkPropagator()->propagate(fts, plane);
110 return getGenPropagator()->propagate(fts, plane);
118 if (insideTkVol(fts) && insideTkVol(cylinder)) {
119 return getTkPropagator()->propagate(fts, cylinder);
121 return getGenPropagator()->propagate(fts, cylinder);
126 std::pair<TrajectoryStateOnSurface,double>
128 const Plane& plane)
const
130 if (insideTkVol(fts) && insideTkVol(plane)) {
131 return getTkPropagator()->propagateWithPath(fts, plane);
133 return getGenPropagator()->propagateWithPath(fts, plane);
137 std::pair<TrajectoryStateOnSurface,double>
141 if (insideTkVol(fts) && insideTkVol(cylinder)) {
142 return getTkPropagator()->propagateWithPath(fts, cylinder);
144 return getGenPropagator()->propagateWithPath(fts, cylinder);
158 bool SmartPropagator::insideTkVol(
const Surface& surface)
const {
170 bool SmartPropagator::insideTkVol(
const BoundCylinder& cylin)
const {
172 GlobalPoint gp(cylin.radius(),0.,(cylin.bounds().length())/2.);
181 bool SmartPropagator::insideTkVol(
const Plane& plane)
const {
192 const Propagator* SmartPropagator::getTkPropagator()
const {
199 const Propagator* SmartPropagator::getGenPropagator()
const {
static float halfLength()
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
GlobalPoint position() const
const PositionType & position() const