Warning, file /acts/Core/include/Acts/Material/interface/ISurfaceMaterialAccumulater.hpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/GeometryIdentifier.hpp"
0013 #include "Acts/Material/ISurfaceMaterial.hpp"
0014 #include "Acts/Material/MaterialInteraction.hpp"
0015 #include "Acts/Material/interface/IAssignmentFinder.hpp"
0016
0017 #include <map>
0018 #include <memory>
0019 #include <vector>
0020
0021 namespace Acts {
0022
0023 class Surface;
0024
0025
0026 class ISurfaceMaterialAccumulater {
0027 public:
0028
0029
0030 class State {
0031 public:
0032 virtual ~State() = default;
0033 };
0034
0035
0036 virtual ~ISurfaceMaterialAccumulater() = default;
0037
0038
0039 virtual std::unique_ptr<State> createState() const = 0;
0040
0041
0042
0043
0044
0045
0046
0047
0048 virtual void accumulate(
0049 State& state, const std::vector<MaterialInteraction>& interactions,
0050 const std::vector<IAssignmentFinder::SurfaceAssignment>&
0051 surfacesWithoutAssignment) const = 0;
0052
0053
0054
0055
0056
0057
0058 virtual std::map<GeometryIdentifier, std::shared_ptr<const ISurfaceMaterial>>
0059 finalizeMaterial(State& state) const = 0;
0060 };
0061
0062 }