19 std::vector<Trk::SurfaceIntersection>& cSurfaces,
27 int nextInt =
checkAndFill(cSurfaces, tsf, position, dir);
44 int strawMax = trtBaseElement->
nStraws() - 1;
47 if (strawInt != 0 && strawInt < strawMax && strawMax != -999) {
51 const Trk::Surface* nextStraw = (strawInt > 1 && strawInt < strawMax)
52 ? (&(trtBaseElement->
surface(nextID)))
55 nextInt =
checkAndFill(cSurfaces, *nextStraw, position, dir);
64 std::vector<Trk::SurfaceIntersection>& cSurfaces,
70 sf.straightLineIntersection(pos, dir,
false,
false);
72 if (sfIntersection.
valid) {
74 double rSurface2 = sf.bounds().r() * sf.bounds().r();
77 const Amg::Vector3D sDirection = sf.transform().rotation().col(2);
80 (sDirection.cross((sfIntersection.
position - sCenter))).squaredNorm();
85 cSurfaces.emplace_back(sfIntersection, &sf);
89 : (sfIntersection.
position.phi() > sf.center().phi() ? 1 : -1));
92 return (pos.phi() > sf.center().phi() ? 1 : -1);
Virtual base class of TRT readout elements.
unsigned int nStraws() const
Number of straws in the element.
virtual Identifier identify() const override final
identifier of this detector element:
virtual const Trk::Surface & surface() const override final
Element Surface: access to the Surface (straw layer)
double m_outsideTolerance
accept even if it outside the bounds by this tolerance
double m_breakTolerance
if the straight line intersection is within this fraction of the bounds - don't look for neighbours
int checkAndFill(std::vector< Trk::SurfaceIntersection > &cSurfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
const TRT_ID * m_trtIdHelper
the Id helper
bool reachableSurfaces(std::vector< Trk::SurfaceIntersection > &cSurfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
get the compatible surfaces
Abstract Base Class for tracking surfaces.
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
Eigen::Matrix< double, 3, 1 > Vector3D