File indexing completed on 2026-06-17 07:59:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Seeding2/GbtsConfig.hpp"
0012 #include "Acts/Seeding2/GbtsDataStorage.hpp"
0013 #include "Acts/Seeding2/GbtsGeometry.hpp"
0014
0015 #include <cstring>
0016 #include <vector>
0017
0018 namespace Acts::Experimental {
0019
0020
0021 struct GbtsEdgeState final {
0022 public:
0023 GbtsEdgeState() = default;
0024
0025
0026
0027 explicit GbtsEdgeState(bool f) : initialized(f) {}
0028
0029
0030
0031 void initialize(const GbtsEdge& pS);
0032
0033
0034 bool initialized{false};
0035
0036
0037 float j{};
0038
0039
0040 std::vector<GbtsEdge*> vs;
0041
0042
0043 std::array<float, 3> x{};
0044
0045 std::array<float, 2> y{};
0046
0047 std::array<std::array<float, 3>, 3> cx{};
0048
0049 std::array<std::array<float, 2>, 2> cy{};
0050
0051 float refX{};
0052
0053 float refY{};
0054
0055 float c{};
0056
0057 float s{};
0058 };
0059
0060
0061 class GbtsTrackingFilter final {
0062 public:
0063
0064 static constexpr std::uint32_t GbtsMaxEdgeState = 2500;
0065
0066
0067
0068
0069
0070 GbtsTrackingFilter(const GbtsConfig& config,
0071 const std::vector<TrigInDetSiLayer>& layerGeometry,
0072 std::vector<GbtsEdge>& sb);
0073
0074
0075
0076
0077 GbtsEdgeState followTrack(GbtsEdge& pS);
0078
0079 private:
0080
0081
0082
0083 void propagate(GbtsEdge& pS, GbtsEdgeState& ts);
0084
0085
0086
0087
0088
0089 bool update(const GbtsEdge& pS, GbtsEdgeState& ts) const;
0090
0091
0092
0093
0094 std::uint32_t getLayerType(std::uint32_t l) const;
0095
0096
0097 const GbtsConfig* m_cfg{};
0098
0099
0100 const std::vector<TrigInDetSiLayer>* m_layerGeometry{};
0101
0102
0103 std::vector<GbtsEdge>* m_segStore{};
0104
0105
0106 std::vector<GbtsEdgeState*> m_stateVec;
0107
0108
0109 std::array<GbtsEdgeState, GbtsMaxEdgeState> m_stateStore{};
0110
0111
0112 std::uint32_t m_globalStateCounter{0};
0113 };
0114
0115 }