Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /acts/Core/src/Navigation/TryAllNavigationPolicy.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #include "Acts/Navigation/TryAllNavigationPolicy.hpp"
0010 
0011 #include "Acts/Geometry/TrackingVolume.hpp"
0012 #include "Acts/Navigation/NavigationStream.hpp"
0013 
0014 namespace Acts {
0015 
0016 TryAllNavigationPolicy::TryAllNavigationPolicy(const GeometryContext& /*gctx*/,
0017                                                const TrackingVolume& volume,
0018                                                const Logger& logger,
0019                                                const Config& config)
0020     : m_cfg{config}, m_volume(&volume) {
0021   assert(m_volume != nullptr);
0022   ACTS_VERBOSE("TryAllNavigationPolicy created for volume "
0023                << m_volume->volumeName());
0024 }
0025 
0026 TryAllNavigationPolicy::TryAllNavigationPolicy(const GeometryContext& gctx,
0027                                                const TrackingVolume& volume,
0028                                                const Logger& logger)
0029     : TryAllNavigationPolicy(gctx, volume, logger, {}) {}
0030 
0031 void TryAllNavigationPolicy::initializeCandidates(
0032     const NavigationArguments& args, AppendOnlyNavigationStream& stream,
0033     const Logger& logger) const {
0034   ACTS_VERBOSE("TryAllNavigationPolicy");
0035   assert(m_volume != nullptr);
0036 
0037   if (m_cfg.portals && args.wantsPortals) {
0038     for (const auto& portal : m_volume->portals()) {
0039       stream.addPortalCandidate(portal);
0040     }
0041   }
0042 
0043   if (m_cfg.sensitives && args.wantsSurfaces) {
0044     for (const auto& surface : m_volume->surfaces()) {
0045       // skip no sensitive surfaces
0046       if (surface.associatedDetectorElement() == nullptr) {
0047         continue;
0048       }
0049       stream.addSurfaceCandidate(surface, args.tolerance);
0050     }
0051   }
0052 }
0053 
0054 void TryAllNavigationPolicy::connect(NavigationDelegate& delegate) const {
0055   connectDefault<TryAllNavigationPolicy>(delegate);
0056 }
0057 
0058 }  // namespace Acts