19 declareInterface<IVertexMapper>(
this);
25 ATH_MSG_ERROR(
"Could not retrieve the tracking geometry. Bailing out.");
26 return StatusCode::FAILURE;
28 return StatusCode::SUCCESS;
43 std::span<Trk::Layer const * const> mLayerObjects = mLayerArray->
arrayObjects();
44 std::vector<const Trk::Layer*> mSensitiveLayers;
46 for (
const auto & mLayer : mLayerObjects){
47 if (mLayer->surfaceArray()){
49 mSensitiveLayers.push_back(mLayer);
53 if (!mSensitiveLayers.empty()){
55 double mDistance = 10e10;
56 const Layer* mLayer =
nullptr;
60 for (
auto& sLayer : mSensitiveLayers) {
65 (sLayer->surfaceRepresentation().type() ==
71 Intersection sIntersection = sLayer->surfaceRepresentation().straightLineIntersection(
vertex,mDirection,
false,
false);
73 if (sIntersection.
valid){
75 double currentDistance = fabs(sIntersection.
pathLength);
76 if ( currentDistance < mDistance ){
78 mDistance = currentDistance;
88 std::vector<SurfaceIntersection> testSurfaces;
97 for (
auto& tSurface : testSurfaces){
99 Intersection tsfInter = tSurface.object->straightLineIntersection(
vertex,mDirection,
false,
false);
104 mSurface = tSurface.object;
const ServiceHandle< StoreGateSvc > & detStore() const
virtual std::span< T *const > arrayObjects()=0
Return all objects of the Array non-const we can still modify the T.
Base Class for a Detector Layer in the Tracking realm.
const OverlapDescriptor * overlapDescriptor() const
gettint hte overlap descriptor
const Surface * subSurface(const Amg::Vector3D &gp) const
If no subSurface array is defined or no subSurface can be found to the given Amg::Vector3D,...
virtual bool reachableSurfaces(std::vector< SurfaceIntersection > &cSurfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const =0
get the compatible surfaces
Abstract Base Class for tracking surfaces.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
const LayerArray * confinedLayers() const
Return the subLayer array.
const TrackingGeometry & trackingGeometry() const
retrieve the tracking geometry
MappedVertex mapToLocal(const Amg::Vector3D &vertex) const
Record the vertex into the local frame of the closest module.
const TrackingGeometry * m_trackingGeometry
the tracking geometry owned by the navigator
Gaudi::Property< std::string > m_trackingGeometryName
VertexMapper(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
StatusCode updateTrackingGeometry() const
< retrieve TrackingGeometry
Eigen::Matrix< double, 3, 1 > Vector3D
BinnedArray< Layer > LayerArray
simply for the eye