File indexing completed on 2026-10-26 08:45:08
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 float z0Tolerance = 5.0f * UnitConstants::mm;
0039 };
0040
0041
0042 class GbtsGeometry final {
0043 public:
0044
0045
0046
0047
0048
0049
0050 GbtsGeometry(std::span<const GbtsLayerDescription> layerDescriptions,
0051 std::span<const GbtsLayerConnection> layerConnections,
0052 float etaBinWidth, const GbtsZ0Range& z0Range = {},
0053 const Logger& logger = getDummyLogger());
0054
0055
0056
0057 std::size_t numLayers() const { return m_layers.size(); }
0058
0059
0060
0061 std::uint32_t numBins() const { return m_nEtaBins; }
0062
0063
0064
0065
0066 std::optional<GbtsLayerIndex> layerIndex(GbtsExperimentLayerId id) const;
0067
0068
0069
0070
0071 const GbtsLayerDescription& layerDescription(GbtsLayerIndex idx) const {
0072 return layerByIndex(idx).layerDescription();
0073 }
0074
0075
0076
0077
0078 const GbtsLayerBinning& layerBinning(GbtsLayerIndex idx) const {
0079 return layerByIndex(idx).binning();
0080 }
0081
0082
0083
0084 std::span<const GbtsBinGroup> binGroups() const { return m_binGroups; }
0085
0086 private:
0087
0088 friend class GbtsNodeStorage;
0089 friend class GbtsTrackingFilter;
0090 friend class GraphBasedTrackSeeder;
0091
0092
0093
0094
0095 const detail::GbtsLayer* layerById(GbtsExperimentLayerId id) const;
0096
0097
0098
0099
0100 const detail::GbtsLayer& layerByIndex(GbtsLayerIndex idx) const;
0101
0102
0103
0104
0105 const detail::GbtsLayer& createLayer(
0106 const GbtsLayerDescription& layerDescription, std::uint32_t bin0);
0107
0108
0109 float m_etaBinWidth{};
0110
0111
0112 std::vector<detail::GbtsLayer> m_layers;
0113
0114 std::map<GbtsExperimentLayerId, GbtsLayerIndex> m_layerFromUserIdMap;
0115
0116 std::uint32_t m_nEtaBins{};
0117
0118
0119 std::vector<GbtsBinGroup> m_binGroups;
0120 };
0121
0122 }