File indexing completed on 2026-11-13 10:01:53
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Units.hpp"
0012 #include "Acts/Seeding/GbtsLayerDescription.hpp"
0013 #include "Acts/Seeding/detail/GbtsFilterTypes.hpp"
0014 #include "Acts/Utilities/Logger.hpp"
0015
0016 #include <array>
0017 #include <cstdint>
0018 #include <memory>
0019 #include <vector>
0020
0021 namespace Acts::Experimental {
0022
0023 class GbtsGeometry;
0024 class GraphBasedTrackSeeder;
0025
0026
0027 class GbtsTrackingFilter final {
0028 public:
0029
0030 struct Config {
0031
0032 float sigmaMS = 0.016;
0033
0034 float radLen = 0.025;
0035
0036
0037 float sigmaX = 0.08 * Acts::UnitConstants::mm;
0038
0039 float sigmaY = 0.25 * Acts::UnitConstants::mm;
0040
0041
0042
0043 float sigmaXStrip = 0.03 * Acts::UnitConstants::mm;
0044
0045
0046 float weightX = 0.5;
0047
0048 float weightY = 0.5;
0049
0050
0051 float maxDChi2X = 5.0;
0052
0053 float maxDChi2Y = 6.0;
0054
0055
0056 float addHit = 14.0;
0057
0058
0059 float maxCurvature = 1e-3f / Acts::UnitConstants::mm;
0060
0061 float maxZ0 = 170.0 * Acts::UnitConstants::mm;
0062
0063
0064 std::array<float, 3> initialVarianceX = {0.25f, 0.001f, 0.001f};
0065
0066 std::array<float, 2> initialVarianceY = {1.5f, 0.001f};
0067 };
0068
0069
0070
0071
0072 GbtsTrackingFilter(const Config& config,
0073 const std::shared_ptr<const GbtsGeometry>& geometry,
0074 std::unique_ptr<const Logger> logger = getDefaultLogger(
0075 "GbtsTrackingFilter", Logging::Level::INFO));
0076
0077 private:
0078
0079 friend class GraphBasedTrackSeeder;
0080
0081 using State = detail::GbtsFilterState;
0082
0083
0084
0085
0086
0087
0088
0089 detail::GbtsEdgeState followTrack(State& state,
0090 const detail::GbtsNodeView& nodeView,
0091 std::vector<detail::GbtsEdge>& sb,
0092 detail::GbtsEdge& pS) const;
0093
0094
0095 Config m_cfg{};
0096
0097
0098 std::shared_ptr<const GbtsGeometry> m_geometry;
0099
0100
0101 std::unique_ptr<const Logger> m_logger;
0102
0103
0104
0105 const Logger& logger() const { return *m_logger; }
0106
0107
0108
0109
0110
0111
0112
0113 void propagate(State& state, const detail::GbtsNodeView& nodeView,
0114 std::vector<detail::GbtsEdge>& sb, detail::GbtsEdge& pS,
0115 detail::GbtsEdgeState& ts) const;
0116
0117
0118
0119
0120
0121
0122 bool update(const detail::GbtsNodeView& nodeView, const detail::GbtsEdge& pS,
0123 detail::GbtsEdgeState& ts) const;
0124
0125
0126
0127
0128 GbtsLayerType getLayerType(std::uint32_t layerIndex) const;
0129 };
0130
0131 }