28 const std::shared_ptr<const DiscBounds>& dbounds,
29 std::unique_ptr<SurfaceArray> surfaceArray,
31 std::unique_ptr<ApproachDescriptor> ades,
33 : DiscSurface(transform, dbounds),
34 Layer(std::move(surfaceArray), thickness, std::move(ades), laytyp) {
37 dynamic_cast<const RadialBounds*
>(DiscSurface::m_bounds.get());
38 if (rBounds !=
nullptr) {
41 std::make_shared<const CylinderVolumeBounds>(*rBounds,
thickness);
44 std::make_unique<AbstractVolume>(m_transform, rVolumeBounds);
47 DiscSurface::associateLayer(*
this);
68 m_approachDescriptor.reset(
nullptr);
70 if (m_representingVolume !=
nullptr) {
72 const std::vector<std::shared_ptr<const BoundarySurfaceT<AbstractVolume>>>&
73 bSurfaces = m_representingVolume->boundarySurfaces();
75 std::vector<std::shared_ptr<const Surface>> aSurfaces;
77 bSurfaces.at(
negativeFaceXY)->surfaceRepresentation().getSharedPtr());
79 bSurfaces.at(
positiveFaceXY)->surfaceRepresentation().getSharedPtr());
81 m_approachDescriptor =
82 std::make_unique<const GenericApproachDescriptor>(std::move(aSurfaces));
86 for (
auto& sfPtr : (m_approachDescriptor->containedSurfaces())) {
87 if (sfPtr !=
nullptr) {
88 auto& mutableSf = *(
const_cast<Surface*
>(sfPtr));
89 mutableSf.associateLayer(*
this);