25 const std::shared_ptr<const DiscBounds>& dbounds,
26 std::unique_ptr<SurfaceArray> surfaceArray,
28 std::unique_ptr<ApproachDescriptor> ades,
30 : DiscSurface(transform, dbounds),
31 Layer(std::move(surfaceArray), thickness, std::move(ades), laytyp) {
34 dynamic_cast<const RadialBounds*
>(DiscSurface::m_bounds.get());
35 if (rBounds !=
nullptr) {
38 std::make_shared<const CylinderVolumeBounds>(*rBounds,
thickness);
41 std::make_unique<AbstractVolume>(
m_transform, rVolumeBounds);
44 DiscSurface::associateLayer(*
this);
65 m_approachDescriptor.reset(
nullptr);
67 if (m_representingVolume !=
nullptr) {
69 const std::vector<std::shared_ptr<const BoundarySurfaceT<AbstractVolume>>>&
70 bSurfaces = m_representingVolume->boundarySurfaces();
72 std::vector<std::shared_ptr<const Surface>> aSurfaces;
74 bSurfaces.at(
negativeFaceXY)->surfaceRepresentation().getSharedPtr());
76 bSurfaces.at(
positiveFaceXY)->surfaceRepresentation().getSharedPtr());
78 m_approachDescriptor =
79 std::make_unique<const GenericApproachDescriptor>(std::move(aSurfaces));
83 for (
auto& sfPtr : (m_approachDescriptor->containedSurfaces())) {
84 if (sfPtr !=
nullptr) {
85 auto& mutableSf = *(
const_cast<Surface*
>(sfPtr));
86 mutableSf.associateLayer(*
this);