28 std::shared_ptr<const Acts::PlaneSurface>
 
   32   std::shared_ptr<PlaneSurface> 
surface;
 
   40     surface = Surface::makeShared<PlaneSurface>(
 
   44     surface = Surface::makeShared<PlaneSurface>(trafo, cfg.
rBounds);
 
   46   surface->assignSurfaceMaterial(cfg.
surMat);
 
   71   using namespace UnitLiterals;
 
   73   std::pair<double, double> minMax = std::make_pair(
 
   75   for (
const auto& layercfg : cfg.
layerCfg) {
 
   77         layercfg.surfaceCfg.position.x() - layercfg.surfaceCfg.thickness / 2.;
 
   79         layercfg.surfaceCfg.position.x() + layercfg.surfaceCfg.thickness / 2.;
 
   81     if (surfacePosMin < minMax.first) {
 
   82       minMax.first = surfacePosMin;
 
   84     if (surfacePosMax > minMax.second) {
 
   85       minMax.second = surfacePosMax;
 
   98   auto bounds = std::make_shared<const CuboidVolumeBounds>(
 
  113     sCfg.
rBounds = std::make_shared<const RectangleBounds>(
 
  127     for (
auto& layerCfg : cfg.
layerCfg) {
 
  128       cfg.
layers.push_back(buildLayer(gctx, layerCfg));
 
  129       layVec.push_back(cfg.
layers.back());
 
  132     for (
auto& lay : cfg.
layers) {
 
  133       layVec.push_back(lay);
 
  138   std::pair<double, double> minMax = binningRange(gctx, cfg);
 
  142   std::unique_ptr<const LayerArray> layArr(
 
  143       layArrCreator.
layerArray(gctx, layVec, minMax.first, minMax.second,
 
  151   std::shared_ptr<TrackingVolume> trackVolume;
 
  152   if (layVec.empty()) {
 
  160                                          std::move(layArr), 
nullptr,
 
  170   std::vector<std::shared_ptr<TrackingVolume>> volumes;
 
  171   volumes.reserve(m_cfg.volumeCfg.size());
 
  173     volumes.push_back(buildVolume(gctx, volCfg));
 
  177   for (
unsigned int i = 0; i < volumes.size() - 1; i++) {
 
  178     volumes[i + 1]->glueTrackingVolume(
 
  182                                    volumes[i + 1].
get(),
 
  188   trafo.translation() = m_cfg.position;
 
  191   auto volume = std::make_shared<const CuboidVolumeBounds>(
 
  192       m_cfg.length.x() * 0.5, m_cfg.length.y() * 0.5, m_cfg.length.z() * 0.5);
 
  195   std::vector<std::pair<TrackingVolumePtr, Vector3D>> tapVec;
 
  196   tapVec.reserve(m_cfg.volumeCfg.size());
 
  197   for (
auto& tVol : volumes) {
 
  198     tapVec.push_back(std::make_pair(tVol, tVol->center()));
 
  202   std::vector<float> binBoundaries;
 
  203   binBoundaries.push_back(volumes[0]->center().
x() -
 
  204                           m_cfg.volumeCfg[0].length.x() * 0.5);
 
  205   for (
size_t i = 0; i < volumes.size(); i++) {
 
  206     binBoundaries.push_back(volumes[i]->center().
x() +
 
  207                             m_cfg.volumeCfg[i].length.x() * 0.5);
 
  212   auto bu = std::make_unique<const BinUtility>(binData);
 
  215   std::shared_ptr<const TrackingVolumeArray> trVolArr(