27 class DetectorElementBase;
29 class ISurfaceMaterial;
49 public std::enable_shared_from_this<Surface> {
71 Surface(std::shared_ptr<const Transform3D> tform =
nullptr);
103 template <
class T,
typename... Args>
105 return std::shared_ptr<T>(
new T(std::forward<Args>(args)...));
184 const Vector2D& lposition)
const = 0;
387 const Vector3D& direction)
const = 0;
429 std::ostream& sl)
const;
432 virtual std::string
name()
const = 0;
447 size_t lseg)
const = 0;