File indexing completed on 2026-05-17 07:48:34
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011
0012 #include "Acts/Seeding/GbtsDataStorage.hpp" //includes geo which has trigindetsilayer, may move this to trigbase
0013 #include "Acts/Seeding/GbtsGeometry.hpp"
0014 #include "Acts/Seeding/SeedFinderGbtsConfig.hpp"
0015
0016 #include <cmath>
0017 #include <cstring>
0018 #include <vector>
0019
0020 namespace Acts::Experimental {
0021
0022
0023 struct GbtsEdgeState {
0024 public:
0025
0026 struct Compare {
0027
0028
0029
0030
0031 bool operator()(const struct GbtsEdgeState* s1,
0032 const struct GbtsEdgeState* s2) {
0033 return s1->m_J > s2->m_J;
0034 }
0035 };
0036
0037 GbtsEdgeState() = default;
0038
0039
0040
0041 explicit GbtsEdgeState(bool f) : m_initialized(f) {}
0042
0043
0044
0045 void initialize(GbtsEdge& pS);
0046
0047
0048 void clone(const struct GbtsEdgeState& st);
0049
0050
0051
0052 float m_J{};
0053
0054
0055 std::vector<GbtsEdge*> m_vs;
0056
0057
0058 float m_X[3]{};
0059
0060 float m_Y[2]{};
0061
0062 float m_Cx[3][3]{};
0063
0064 float m_Cy[2][2]{};
0065
0066 float m_refX{};
0067
0068 float m_refY{};
0069
0070 float m_c{};
0071
0072 float m_s{};
0073
0074
0075 bool m_initialized{false};
0076 };
0077
0078
0079 class GbtsTrackingFilter {
0080 public:
0081
0082 static constexpr std::uint32_t GbtsMaxEdgeState = 2500;
0083
0084
0085
0086
0087 GbtsTrackingFilter(const std::vector<TrigInDetSiLayer>& g,
0088 std::vector<GbtsEdge>& sb,
0089 const SeedFinderGbtsConfig& config);
0090
0091
0092
0093
0094 void followTrack(GbtsEdge& pS, GbtsEdgeState& output);
0095
0096 protected:
0097
0098
0099
0100 void propagate(GbtsEdge& pS, GbtsEdgeState& ts);
0101
0102
0103
0104
0105
0106 bool update(GbtsEdge& pS, GbtsEdgeState& ts);
0107
0108
0109
0110
0111 std::uint32_t getLayerType(std::uint32_t l);
0112
0113
0114 const std::vector<TrigInDetSiLayer>& m_geo;
0115
0116
0117 std::vector<GbtsEdge>& m_segStore;
0118
0119
0120 std::vector<GbtsEdgeState*> m_stateVec;
0121
0122
0123 std::array<GbtsEdgeState, GbtsMaxEdgeState> m_stateStore;
0124
0125
0126 std::uint32_t m_globalStateCounter{0};
0127
0128
0129 const SeedFinderGbtsConfig& m_config;
0130 };
0131
0132 }