27 const std::shared_ptr<const DiscBounds>& dbounds,
28 std::unique_ptr<SurfaceArray> surfaceArray,
30 std::unique_ptr<ApproachDescriptor> ades,
32 : DiscSurface(transform, dbounds),
33 Layer(std::
move(surfaceArray), thickness, std::
move(ades), laytyp) {
36 dynamic_cast<const RadialBounds*
>(DiscSurface::m_bounds.get());
37 if (rBounds !=
nullptr) {
43 std::make_unique<AbstractVolume>(
m_transform, rVolumeBounds);
46 DiscSurface::associateLayer(*
this);
67 m_approachDescriptor.reset(
nullptr);
69 if (m_representingVolume !=
nullptr) {
71 const std::vector<std::shared_ptr<const BoundarySurfaceT<AbstractVolume>>>&
72 bSurfaces = m_representingVolume->boundarySurfaces();
74 std::vector<std::shared_ptr<const Surface>> aSurfaces;
76 bSurfaces.at(
negativeFaceXY)->surfaceRepresentation().getSharedPtr());
78 bSurfaces.at(
positiveFaceXY)->surfaceRepresentation().getSharedPtr());
80 bSurfaces.at(
tubeInnerCover)->surfaceRepresentation().getSharedPtr());
82 bSurfaces.at(
tubeOuterCover)->surfaceRepresentation().getSharedPtr());
84 m_approachDescriptor =
85 std::make_unique<const GenericApproachDescriptor>(
std::move(aSurfaces));
89 for (
auto& sfPtr : (m_approachDescriptor->containedSurfaces())) {
90 if (sfPtr !=
nullptr) {
91 auto& mutableSf = *(
const_cast<Surface*
>(sfPtr));
92 mutableSf.associateLayer(*
this);