File indexing completed on 2025-09-18 08:11:38
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Material/ISurfaceMaterial.hpp"
0013 #include "Acts/Material/MaterialSlab.hpp"
0014 #include "Acts/Utilities/BinUtility.hpp"
0015 #include "Acts/Utilities/ProtoAxis.hpp"
0016
0017 #include <iosfwd>
0018 #include <vector>
0019
0020 namespace Acts {
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 template <typename BinningType>
0032 class ProtoSurfaceMaterialT : public ISurfaceMaterial {
0033 public:
0034
0035 ProtoSurfaceMaterialT() = default;
0036
0037
0038
0039
0040 explicit ProtoSurfaceMaterialT(const BinningType& binning,
0041 MappingType mappingType = MappingType::Default)
0042 : ISurfaceMaterial(1., mappingType), m_binning(binning) {}
0043
0044
0045
0046
0047 ProtoSurfaceMaterialT(const ProtoSurfaceMaterialT<BinningType>& smproxy) =
0048 default;
0049
0050
0051
0052
0053 ProtoSurfaceMaterialT(ProtoSurfaceMaterialT<BinningType>&& smproxy) noexcept =
0054 default;
0055
0056
0057 ~ProtoSurfaceMaterialT() override = default;
0058
0059
0060
0061
0062 ProtoSurfaceMaterialT<BinningType>& operator=(
0063 const ProtoSurfaceMaterialT<BinningType>& smproxy) = default;
0064
0065
0066
0067
0068 ProtoSurfaceMaterialT<BinningType>& operator=(
0069 ProtoSurfaceMaterialT<BinningType>&& smproxy) noexcept = default;
0070
0071
0072
0073 ProtoSurfaceMaterialT<BinningType>& scale(double ) final {
0074 return (*this);
0075 }
0076
0077
0078 const BinningType& binning() const { return (m_binning); }
0079
0080
0081
0082
0083
0084 const MaterialSlab& materialSlab(const Vector2& ) const final {
0085 return (m_materialSlab);
0086 }
0087
0088
0089
0090
0091
0092 const MaterialSlab& materialSlab(const Vector3& ) const final {
0093 return (m_materialSlab);
0094 }
0095
0096
0097
0098
0099 std::ostream& toStream(std::ostream& sl) const final {
0100 sl << "Acts::ProtoSurfaceMaterial : " << std::endl;
0101 sl << m_binning << std::endl;
0102 return sl;
0103 }
0104
0105 private:
0106
0107 BinningType m_binning;
0108
0109
0110 MaterialSlab m_materialSlab = MaterialSlab::Nothing();
0111 };
0112
0113 using ProtoSurfaceMaterial = ProtoSurfaceMaterialT<Acts::BinUtility>;
0114
0115 using ProtoGridSurfaceMaterial =
0116 ProtoSurfaceMaterialT<std::vector<DirectedProtoAxis>>;
0117
0118 }