Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SeedFilter.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SeedFilter.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2023 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
15 #include "Acts/Seeding/Seed.hpp"
17 
18 #include <memory>
19 #include <mutex>
20 #include <queue>
21 #include <tuple>
22 #include <vector>
23 
24 namespace Acts {
26  // longitudinal impact parameter as defined by bottom and middle space point
27  float zOrigin = 0;
28  // number of minimum top SPs in seed confirmation
29  size_t nTopSeedConf = 0;
30  // radius of bottom component of seed that is used to define the number of
31  // compatible top required
32  float rMaxSeedConf =
33  std::numeric_limits<float>::max(); // Acts::UnitConstants::mm
34  // number of high quality seeds in seed confirmation
35  std::size_t numQualitySeeds = 0;
36  // number of seeds that did not pass the quality confirmation but were still
37  // accepted, if quality confirmation is not used this is the total number of
38  // seeds
39  std::size_t numSeeds = 0;
40 };
41 
44 template <typename external_spacepoint_t>
45 class SeedFilter {
46  public:
48  IExperimentCuts<external_spacepoint_t>* expCuts = nullptr);
49 
50  SeedFilter() = delete;
51  virtual ~SeedFilter() = default;
52 
64  virtual void filterSeeds_2SpFixed(
65  Acts::SpacePointData& spacePointData,
68  const std::vector<const InternalSpacePoint<external_spacepoint_t>*>&
69  topSpVec,
70  const std::vector<float>& invHelixDiameterVec,
71  const std::vector<float>& impactParametersVec,
72  SeedFilterState& seedFilterState,
74  candidates_collector) const;
75 
82  virtual void filterSeeds_1SpFixed(
83  Acts::SpacePointData& spacePointData,
85  candidates_collector,
86  const std::size_t numQualitySeeds,
87  std::back_insert_iterator<std::vector<Seed<external_spacepoint_t>>> outIt)
88  const;
89 
96  virtual void filterSeeds_1SpFixed(
97  Acts::SpacePointData& spacePointData,
98  std::vector<typename CandidatesForMiddleSp<
100  candidates,
101  const std::size_t numQualitySeeds,
102  std::back_insert_iterator<std::vector<Seed<external_spacepoint_t>>> outIt)
103  const;
104 
105  const SeedFilterConfig getSeedFilterConfig() const { return m_cfg; }
107  return m_experimentCuts;
108  }
109 
110  private:
113 };
114 } // namespace Acts