File indexing completed on 2025-07-11 08:04:18
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/EventData/SpacePointData.hpp"
0012 #include "Acts/Seeding/CandidatesForMiddleSp.hpp"
0013 #include "Acts/Seeding/IExperimentCuts.hpp"
0014 #include "Acts/Seeding/InternalSeed.hpp"
0015 #include "Acts/Seeding/Seed.hpp"
0016 #include "Acts/Seeding/SeedFilterConfig.hpp"
0017
0018 #include <memory>
0019 #include <mutex>
0020 #include <queue>
0021 #include <tuple>
0022 #include <vector>
0023
0024 namespace Acts {
0025 struct SeedFilterState {
0026
0027 float zOrigin = 0;
0028
0029 std::size_t nTopSeedConf = 0;
0030
0031
0032 float rMaxSeedConf =
0033 std::numeric_limits<float>::max();
0034 };
0035
0036
0037
0038 template <typename external_spacepoint_t>
0039 class SeedFilter final {
0040 public:
0041 SeedFilter(SeedFilterConfig config,
0042 IExperimentCuts<external_spacepoint_t>* expCuts = nullptr);
0043
0044 SeedFilter() = delete;
0045 ~SeedFilter() = default;
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 void filterSeeds_2SpFixed(
0059 Acts::SpacePointData& spacePointData,
0060 const InternalSpacePoint<external_spacepoint_t>& bottomSP,
0061 const InternalSpacePoint<external_spacepoint_t>& middleSP,
0062 const std::vector<const InternalSpacePoint<external_spacepoint_t>*>&
0063 topSpVec,
0064 const std::vector<float>& invHelixDiameterVec,
0065 const std::vector<float>& impactParametersVec,
0066 SeedFilterState& seedFilterState,
0067 CandidatesForMiddleSp<const InternalSpacePoint<external_spacepoint_t>>&
0068 candidates_collector) const;
0069
0070
0071
0072
0073
0074
0075 template <typename collection_t>
0076 void filterSeeds_1SpFixed(
0077 Acts::SpacePointData& spacePointData,
0078 CandidatesForMiddleSp<const InternalSpacePoint<external_spacepoint_t>>&
0079 candidates_collector,
0080 collection_t& outputCollection) const;
0081
0082
0083
0084
0085
0086
0087
0088 template <typename collection_t>
0089 void filterSeeds_1SpFixed(
0090 Acts::SpacePointData& spacePointData,
0091 std::vector<typename CandidatesForMiddleSp<
0092 const InternalSpacePoint<external_spacepoint_t>>::value_type>&
0093 candidates,
0094 const std::size_t numQualitySeeds, collection_t& outputCollection) const;
0095
0096 const SeedFilterConfig getSeedFilterConfig() const { return m_cfg; }
0097 const IExperimentCuts<external_spacepoint_t>* getExperimentCuts() const {
0098 return m_experimentCuts;
0099 }
0100
0101 private:
0102 const SeedFilterConfig m_cfg;
0103 const IExperimentCuts<external_spacepoint_t>* m_experimentCuts;
0104 };
0105 }
0106 #include "Acts/Seeding/SeedFilter.ipp"