File indexing completed on 2026-09-26 08:01:18
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Units.hpp"
0012 #include "Acts/Seeding/GbtsBinning.hpp"
0013 #include "Acts/Seeding/GbtsLayerConnection.hpp"
0014 #include "Acts/Seeding/GbtsLayerDescription.hpp"
0015 #include "Acts/Seeding/detail/GbtsLayer.hpp"
0016 #include "Acts/Utilities/Logger.hpp"
0017
0018 #include <cstdint>
0019 #include <map>
0020 #include <optional>
0021 #include <span>
0022 #include <vector>
0023
0024 namespace Acts::Experimental {
0025
0026 class GbtsNodeStorage;
0027 class GbtsTrackingFilter;
0028 class GraphBasedTrackSeeder;
0029
0030
0031
0032 struct GbtsZ0Range final {
0033
0034 float min = -168.0f * UnitConstants::mm;
0035
0036 float max = 168.0f * UnitConstants::mm;
0037 };
0038
0039
0040 class GbtsGeometry final {
0041 public:
0042
0043
0044
0045
0046
0047
0048 GbtsGeometry(std::span<const GbtsLayerDescription> layerDescriptions,
0049 std::span<const GbtsLayerConnection> layerConnections,
0050 float etaBinWidth, const GbtsZ0Range& z0Range = {},
0051 const Logger& logger = getDummyLogger());
0052
0053
0054
0055 std::size_t numLayers() const { return m_layers.size(); }
0056
0057
0058
0059 std::uint32_t numBins() const { return m_nEtaBins; }
0060
0061
0062
0063
0064 std::optional<GbtsLayerIndex> layerIndex(GbtsExperimentLayerId id) const;
0065
0066
0067
0068
0069 const GbtsLayerDescription& layerDescription(GbtsLayerIndex idx) const {
0070 return layerByIndex(idx).layerDescription();
0071 }
0072
0073
0074
0075
0076 const GbtsLayerBinning& layerBinning(GbtsLayerIndex idx) const {
0077 return layerByIndex(idx).binning();
0078 }
0079
0080
0081
0082 std::span<const GbtsBinGroup> binGroups() const { return m_binGroups; }
0083
0084 private:
0085
0086 friend class GbtsNodeStorage;
0087 friend class GbtsTrackingFilter;
0088 friend class GraphBasedTrackSeeder;
0089
0090
0091
0092
0093 const detail::GbtsLayer* layerById(GbtsExperimentLayerId id) const;
0094
0095
0096
0097
0098 const detail::GbtsLayer& layerByIndex(GbtsLayerIndex idx) const;
0099
0100
0101
0102
0103 const detail::GbtsLayer& createLayer(
0104 const GbtsLayerDescription& layerDescription, std::uint32_t bin0);
0105
0106
0107 float m_etaBinWidth{};
0108
0109
0110 std::vector<detail::GbtsLayer> m_layers;
0111
0112 std::map<GbtsExperimentLayerId, GbtsLayerIndex> m_layerFromUserIdMap;
0113
0114 std::uint32_t m_nEtaBins{};
0115
0116
0117 std::vector<GbtsBinGroup> m_binGroups;
0118 };
0119
0120 }