37 std::shared_ptr<Acts::VolumeBounds> msBounds{};
39 msBounds = std::make_unique<Acts::CutoutCylinderVolumeBounds>(0, 4000, 14500, 22500, 3200);
41 msBounds = std::make_unique<Acts::CylinderVolumeBounds>(0, 14500, 22500);
44 auto surfCounter = make_array<unsigned, toInt(ChIndex::ChIndexMax)>(0);
45 std::vector<std::shared_ptr<const Acts::Surface>> msSurfaces{};
46 Acts::SurfaceVector rawSurfs{};
48 const unsigned chIdx =
toInt(
re->chamberIndex());
49 auto reSurfaces =
re->getSurfaces();
50 msSurfaces.reserve(msSurfaces.size() + reSurfaces.size());
51 for (std::shared_ptr<Acts::Surface>& surf :
re->getSurfaces()) {
52 surf->assignGeometryId(Acts::GeometryIdentifier{}.withLayer(chIdx +
m_firstLayId).withSensitive(++surfCounter[chIdx]));
53 msSurfaces.push_back(std::move(surf));
58 auto surfaceArray = std::make_unique<Acts::SurfaceArray>(std::make_unique<Acts::SurfaceArray::SingleElementLookup>(rawSurfs),
61 auto cylinder = Acts::CylinderLayer::create(Amg::Transform3D::Identity(),
62 std::make_shared<Acts::CylinderBounds>(14500, 22500),
66 auto material = std::make_unique<Acts::HomogeneousVolumeMaterial>(Acts::Material::Vacuum());
68 auto layerArray = std::make_unique<Acts::BinnedArrayXD<Acts::LayerPtr>>(cylinder);
70 return std::make_shared<Acts::TrackingVolume>(Acts::Transform3::Identity(), std::move(msBounds),
71 std::move(material), std::move(layerArray),
nullptr,
72 Acts::MutableTrackingVolumeVector{},
73 "Muon Spectrometer Envelope");