28 std::shared_ptr<const Acts::PlaneSurface>
32 std::shared_ptr<PlaneSurface>
surface;
40 surface = Surface::makeShared<PlaneSurface>(
45 surface = Surface::makeShared<PlaneSurface>(
46 std::make_shared<const Transform3D>(trafo), cfg.
rBounds);
48 surface->assignSurfaceMaterial(cfg.
surMat);
69 std::make_shared<const Transform3D>(trafo));
75 using namespace UnitLiterals;
77 std::pair<double, double> minMax = std::make_pair(
79 for (
const auto& layercfg : cfg.
layerCfg) {
81 if (layercfg.surfaceCfg.position.x() - 1
_um < minMax.first) {
82 minMax.first = layercfg.surfaceCfg.position.x() - 1
_um;
84 if (layercfg.surfaceCfg.position.x() + 1
_um > minMax.second) {
85 minMax.second = layercfg.surfaceCfg.position.x() + 1
_um;
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()) {
155 std::make_shared<const Transform3D>(trafo), bounds, cfg.
volumeMaterial,
160 std::make_shared<const Transform3D>(trafo), bounds, cfg.
volumeMaterial,
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(
220 std::make_shared<const Transform3D>(trafo),
volume, trVolArr,
"World"));