File indexing completed on 2025-10-29 07:53:45
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 
0114 
0115 using ProtoSurfaceMaterial = ProtoSurfaceMaterialT<Acts::BinUtility>;
0116 
0117 
0118 
0119 using ProtoGridSurfaceMaterial =
0120     ProtoSurfaceMaterialT<std::vector<DirectedProtoAxis>>;
0121 
0122 }