Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SeedFinderOrthogonal.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SeedFinderOrthogonal.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 
18 
19 #include <array>
20 #include <iostream>
21 #include <list>
22 #include <map>
23 #include <memory>
24 #include <set>
25 #include <string>
26 #include <utility>
27 #include <vector>
28 
29 namespace Acts {
30 template <typename external_spacepoint_t>
32  public:
38  static constexpr std::size_t NDims = 3;
39 
44 
49 
57 
65 
69  ~SeedFinderOrthogonal() = default;
70 
71  SeedFinderOrthogonal() = default;
73  delete;
76 
106  template <typename input_container_t, typename output_container_t,
107  typename callable_t>
109  const input_container_t &spacePoints,
110  output_container_t &out_cont,
111  callable_t &&extract_coordinates) const;
112 
129  template <typename input_container_t, typename callable_t>
130  std::vector<seed_t> createSeeds(const Acts::SeedFinderOptions &options,
131  const input_container_t &spacePoints,
132  callable_t &&extract_coordinates) const;
133 
134  private:
138  enum Dim { DimPhi = 0, DimR = 1, DimZ = 2 };
139 
155  const internal_sp_t &low) const;
156 
172  const internal_sp_t &high) const;
173 
192  bool validTuple(const SeedFinderOptions &options, const internal_sp_t &low,
193  const internal_sp_t &high, bool isMiddleInverted) const;
194 
202  tree_t createTree(const std::vector<internal_sp_t *> &spacePoints) const;
203 
217  void filterCandidates(
218  const SeedFinderOptions &options, internal_sp_t &middle,
219  std::vector<internal_sp_t *> &bottom, std::vector<internal_sp_t *> &top,
220  SeedFilterState seedFilterState,
222  &candidates_collector,
223  Acts::SpacePointData &spacePointData) const;
224 
237  template <typename output_container_t>
239  output_container_t &out_cont,
240  const typename tree_t::pair_t &middle_p,
241  Acts::SpacePointData &spacePointData) const;
242 
247 };
248 } // namespace Acts
249