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