39 using BinningMap = std::map<uint64_t, std::pair<int, int>>;
42 std::map<GeometryIdentifier, std::shared_ptr<const IVolumeMaterial>>;
46 bool clearSurfaceMaterial =
true,
47 bool clearVolumeMaterial =
true)
62 surface.assignSurfaceMaterial(
nullptr);
67 ACTS_VERBOSE(
"-> Found material for surface, assigning");
77 ACTS_VERBOSE(
"Processing volume: " << volume.geometryId());
81 volume.assignVolumeMaterial(
nullptr);
87 volume.assignVolumeMaterial(vMaterial->second);
99 std::shared_ptr<const IVolumeMaterial>>& pair) {
133 for (
auto& lay : layers) {
134 auto& layRep = lay->surfaceRepresentation();
135 if (layRep.surfaceMaterial() !=
nullptr &&
138 {layRep.geometryId().value(), std::make_pair(1, 1)});
140 if (lay->approachDescriptor() !=
nullptr) {
141 for (
auto& asf : lay->approachDescriptor()->containedSurfaces()) {
142 if (asf->surfaceMaterial() !=
nullptr) {
144 {asf->geometryId().value(), std::make_pair(1, 1)});
148 if (lay->surfaceArray() !=
nullptr) {
149 for (
auto& ssf : lay->surfaceArray()->surfaces()) {
150 if (ssf->surfaceMaterial() !=
nullptr) {
152 {ssf->geometryId().value(), std::make_pair(1, 1)});
161 auto& bssfRep = bsurf->surfaceRepresentation();
163 if (bssfRep.surfaceMaterial() !=
nullptr) {
165 {bssfRep.geometryId().value(), std::make_pair(1, 1)});
175 const std::shared_ptr<const Acts::Surface>&
surface)
const {
176 auto bin =
m_binningMap.find(surface->geometryId().value());
179 ACTS_ERROR(
"No corresponding binning in the map to surface "
180 << surface->geometryId());
182 auto binning = bin->second;
196 if (radialBounds !=
nullptr) {
212 if (cylinderBounds !=
nullptr) {
230 if (annulusBounds !=
nullptr) {
239 if (rectangleBounds !=
nullptr) {
249 if (trapezoidBounds !=
nullptr) {
250 double halfLengthX = std::max(
262 return std::make_shared<Acts::ProtoSurfaceMaterial>(bUtility);