22 Portal& portal,
const std::shared_ptr<DetectorVolume>& volume,
26 std::make_unique<const Acts::Experimental::SingleDetectorVolumeImpl>(
38 const std::vector<std::shared_ptr<DetectorVolume>>&
volumes,
39 const Direction& direction,
const std::vector<ActsScalar>& boundaries,
44 auto volumes1D = std::make_unique<const BoundVolumesGrid1Impl>(
46 pTransform.inverse());
55 const std::vector<std::shared_ptr<DetectorVolume>>&
volumes,
56 std::vector<PortalReplacement>& pReplacements) {
61 for (
auto& [
p,
i, dir, boundaries, binning] : pReplacements) {
63 const auto pTransform =
p->surface().transform(gctx);
65 auto volumes1D = std::make_unique<const BoundVolumesGrid1Impl>(
66 boundaries, binning, cVolumes, pTransform.inverse());
74 std::vector<std::shared_ptr<Acts::Experimental::DetectorVolume>>
76 Portal& portal) noexcept(
false) {
77 auto& attachedVolumes = portal.attachedDetectorVolumes();
78 if (not attachedVolumes[0
u].empty() and not attachedVolumes[1
u].empty()) {
79 throw std::invalid_argument(
80 "PortalHelper: trying to get attachedVolumes from already populated "
83 unsigned int iu = attachedVolumes[0
u].empty() ? 1
u : 0
u;
84 return attachedVolumes[iu];