ECCE @ EIC 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) 2018 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 
11 #include <memory>
12 #include <mutex>
13 #include <queue>
14 #include <vector>
15 
18 #include "Acts/Seeding/Seed.hpp"
19 
20 namespace Acts {
22  // the allowed delta between two inverted seed radii for them to be considered
23  // compatible.
24  float deltaInvHelixDiameter = 0.00003;
25  // the impact parameters (d0) is multiplied by this factor and subtracted from
26  // weight
27  float impactWeightFactor = 1.;
28  // seed weight increased by this value if a compatible seed has been found.
29  float compatSeedWeight = 200.;
30  // minimum distance between compatible seeds to be considered for weight boost
31  float deltaRMin = 5.;
32  // in dense environments many seeds may be found per middle space point.
33  // only seeds with the highest weight will be kept if this limit is reached.
34  unsigned int maxSeedsPerSpM = 10;
35  // how often do you want to increase the weight of a seed for finding a
36  // compatible seed?
37  size_t compatSeedLimit = 2;
38  // Tool to apply experiment specific cuts on collected middle space points
39 };
40 
43 template <typename external_spacepoint_t>
44 class SeedFilter {
45  public:
48 
49  SeedFilter() = delete;
50  virtual ~SeedFilter() = default;
51 
61  virtual std::vector<std::pair<
62  float, std::unique_ptr<const InternalSeed<external_spacepoint_t>>>>
66  std::vector<const InternalSpacePoint<external_spacepoint_t>*>& topSpVec,
67  std::vector<float>& invHelixDiameterVec,
68  std::vector<float>& impactParametersVec, float zOrigin) const;
69 
74  virtual void filterSeeds_1SpFixed(
75  std::vector<std::pair<
76  float, std::unique_ptr<const InternalSeed<external_spacepoint_t>>>>&
77  seedsPerSpM,
78  std::vector<Seed<external_spacepoint_t>>& outVec) const;
79 
80  private:
83 };
84 } // namespace Acts