21 std::shared_ptr<const Acts::TrackingVolumeArray>
32 std::sort(volumes.begin(), volumes.end(), volumeSorter);
36 std::vector<float> boundaries;
37 boundaries.reserve(tVolumes.size() + 1);
39 std::vector<TrackingVolumeOrderPosition> tVolumesOrdered;
42 for (
auto& tVolume : volumes) {
44 Vector3D binningPosition = tVolume->binningPosition(gctx, bValue);
45 double binningBorder = tVolume->volumeBounds().binningBorder(bValue);
47 double value = tVolume->binningPositionValue(gctx, bValue);
49 if (boundaries.empty()) {
50 boundaries.push_back(value - binningBorder);
53 boundaries.push_back(value + binningBorder);
55 tVolumesOrdered.push_back(
61 std::make_unique<const BinUtility>(boundaries,
open, bValue);
64 return std::make_shared<const BinnedArrayXD<TrackingVolumePtr>>(
65 tVolumesOrdered, std::move(binUtility));