21 declareInterface<IVertexMapper>(
this);
39 return StatusCode::SUCCESS;
46 return StatusCode::SUCCESS;
53 ATH_MSG_ERROR(
"Could not retrieve the tracking geometry. Bailing out.");
54 return StatusCode::FAILURE;
56 return StatusCode::SUCCESS;
71 std::span<Trk::Layer const * const> mLayerObjects = mLayerArray->
arrayObjects();
72 std::vector<const Trk::Layer*> mSensitiveLayers;
74 for (
const auto & mLayer : mLayerObjects){
75 if (mLayer->surfaceArray()){
77 mSensitiveLayers.push_back(mLayer);
81 if (!mSensitiveLayers.empty()){
83 double mDistance = 10e10;
84 const Layer* mLayer =
nullptr;
88 for (
auto& sLayer : mSensitiveLayers) {
93 (sLayer->surfaceRepresentation().type() ==
99 Intersection sIntersection = sLayer->surfaceRepresentation().straightLineIntersection(
vertex,mDirection,
false,
false);
101 if (sIntersection.
valid){
103 double currentDistance = fabs(sIntersection.
pathLength);
104 if ( currentDistance < mDistance ){
106 mDistance = currentDistance;
116 std::vector<SurfaceIntersection> testSurfaces;
125 for (
auto& tSurface : testSurfaces){
127 Intersection tsfInter = tSurface.object->straightLineIntersection(
vertex,mDirection,
false,
false);
132 mSurface = tSurface.object;
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
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.
StatusCode initialize()
AlgTool initialize method.
const TrackingGeometry & trackingGeometry() const
retrieve the tracking geometry
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
MappedVertex mapToLocal(const Amg::Vector3D &vertex) const
Record the vertex into the local frame of the closest module.
StatusCode finalize()
AlgTool finalize method.
const TrackingGeometry * m_trackingGeometry
the tracking geometry owned by the navigator
VertexMapper(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
StatusCode updateTrackingGeometry() const
< retrieve TrackingGeometry
virtual ~VertexMapper()
Virtual destructor.
Eigen::Matrix< double, 3, 1 > Vector3D
BinnedArray< Layer > LayerArray
simply for the eye