36 #include <unordered_map>
40 #include <boost/container/small_vector.hpp>
44 class GlueVolumesDescriptor;
46 template <
typename object_t>
48 class GeometryIdentifier;
49 class IMaterialDecorator;
50 class ISurfaceMaterial;
51 class IVolumeMaterial;
54 struct GeometryIdentifierHook;
61 std::shared_ptr<const BoundarySurfaceT<TrackingVolume>>;
126 const std::shared_ptr<const TrackingVolumeArray>& containedVolumes =
147 std::vector<std::unique_ptr<Volume::BoundingBox>> boxStore,
148 std::vector<std::unique_ptr<const Volume>> descendants,
173 std::unique_ptr<const LayerArray> containedLayers =
nullptr,
174 std::shared_ptr<const TrackingVolumeArray> containedVolumes =
nullptr,
236 const Vector3& direction,
double angle,
248 const double tol = 0.)
const;
269 template <ACTS_CONCEPT(SurfaceVisitor) visitor_t>
275 if (
layer->surfaceArray() ==
nullptr) {
279 for (
const auto& srf :
layer->surfaceArray()->surfaces()) {
287 volume->visitSurfaces(visitor);
313 std::shared_ptr<const ISurfaceMaterial> surfaceMaterial,
347 const std::shared_ptr<TrackingVolumeArray>& neighbors,
361 bool checkmaterial =
true);
411 const std::shared_ptr<const TrackingVolumeArray>&
412 containedVolumeArray =
nullptr,
416 std::vector<std::unique_ptr<Volume::BoundingBox>> boxStore,
417 std::vector<std::unique_ptr<const Volume>> descendants,
419 std::shared_ptr<const IVolumeMaterial> volumeMaterial,
435 std::shared_ptr<const IVolumeMaterial> volumeMaterial,
436 std::unique_ptr<const LayerArray> staticLayerArray =
nullptr,
437 std::shared_ptr<const TrackingVolumeArray> containedVolumeArray =
nullptr,
465 const IMaterialDecorator* materialDecorator,
466 std::unordered_map<GeometryIdentifier, const TrackingVolume*>& volumeMap,
467 size_t& vol,
const GeometryIdentifierHook& hook,
515 inline const std::shared_ptr<const IVolumeMaterial>&
521 std::shared_ptr<const IVolumeMaterial>
material) {
533 inline std::shared_ptr<const TrackingVolumeArray>