|
||||
File indexing completed on 2025-01-19 09:23:23
0001 // This file is part of the Acts project. 0002 // 0003 // Copyright (C) 2024 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 http://mozilla.org/MPL/2.0/. 0008 0009 #pragma once 0010 0011 #include "Acts/Geometry/GeometryContext.hpp" 0012 #include "Acts/MagneticField/MagneticFieldContext.hpp" 0013 #include "Acts/Material/MaterialInteraction.hpp" 0014 0015 #include <tuple> 0016 #include <utility> 0017 #include <vector> 0018 0019 namespace Acts { 0020 0021 /// @brief Interface for the material mapping that seeks the possible 0022 /// assignment candidates for the material interactiosn 0023 class IAssignmentFinder { 0024 public: 0025 /// Virtual destructor 0026 virtual ~IAssignmentFinder() = default; 0027 0028 /// @brief SurfaceAssignment is a surface, a position and a direction 0029 struct SurfaceAssignment { 0030 /// The surface to which the material interaction is assigned to 0031 const Surface* surface = nullptr; 0032 /// Position of the assignment 0033 Vector3 position = Vector3::Zero(); 0034 // Direction of the assignment 0035 Vector3 direction = Vector3::Zero(); 0036 }; 0037 0038 /// @brief VolumeAssignment is a volume and a entry and exit of the volume 0039 struct VolumeAssignment { 0040 /// The volume to which the material interaction is assigned to 0041 InteractionVolume volume{}; 0042 /// Entry point of the volume 0043 Vector3 entry = Vector3::Zero(); 0044 /// Exit point of the volume 0045 Vector3 exit = Vector3::Zero(); 0046 }; 0047 0048 /// @brief Interface method for generating assignment candidates for the 0049 /// material interaction assignment to surfaces or volumes 0050 /// 0051 /// @param gctx is the geometry context 0052 /// @param mctx is the magnetic field context 0053 /// @param position is the position of the initial ray 0054 /// @param direction is the direction of initial ray 0055 /// 0056 /// @return a vector of Surface Assignments and Volume Assignments 0057 virtual std::pair<std::vector<SurfaceAssignment>, 0058 std::vector<VolumeAssignment>> 0059 assignmentCandidates(const GeometryContext& gctx, 0060 const MagneticFieldContext& mctx, 0061 const Vector3& position, 0062 const Vector3& direction) const = 0; 0063 }; 0064 0065 } // namespace Acts
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |