Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SeedFilterConfig.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SeedFilterConfig.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2020 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 
13 
14 #include <cstddef>
15 #include <cstdint>
16 #include <stdexcept>
17 
18 namespace Acts {
20  // the allowed delta between two inverted seed radii for them to be considered
21  // compatible.
23  // the transverse impact parameters (d0) is multiplied by this factor and
24  // subtracted from weight
25  float impactWeightFactor = 1.;
26  // the logitudinal impact parameters (z0) is multiplied by this factor and
27  // subtracted from weight
28  float zOriginWeightFactor = 1.;
29  // seed weight increased by this value if a compatible seed has been found.
30  float compatSeedWeight = 200.;
31  // minimum distance between compatible seeds to be considered for weight boost
33  // in dense environments many seeds may be found per middle space point.
34  // only seeds with the highest weight will be kept if this limit is reached.
35  unsigned int maxSeedsPerSpM = 10;
36  // how often do you want to increase the weight of a seed for finding a
37  // compatible seed?
38  size_t compatSeedLimit = 2;
39  // Tool to apply experiment specific cuts on collected middle space points
40 
41  // increment in seed weight if the number of compatible seeds is larger than
42  // numSeedIncrement, this is used in case of high occupancy scenarios if we
43  // want to increase the weight of the seed by seedWeightIncrement when the
44  // number of compatible seeds is higher than a certain value
46  float numSeedIncrement = std::numeric_limits<float>::infinity();
47 
48  // seedConfirmation enables seed confirmation cuts - keep seeds if they have
49  // specific values of impact parameter, z-origin and number of compatible
50  // seeds inside a pre-defined range that also depends on the region of the
51  // detector (i.e. forward or central region) defined by SeedConfirmationRange
52  bool seedConfirmation = false;
53  // contains parameters for central seed confirmation
55  // contains parameters for forward seed confirmation
57 
58  // maximum number of lower quality seeds in seed confirmation
59  std::size_t maxSeedsPerSpMConf = std::numeric_limits<std::size_t>::max();
60  // maximum number of quality seeds for each middle-bottom SP-dublet in seed
61  // confirmation if the limit is reached we check if there is a lower quality
62  // seed to be replaced
64  std::numeric_limits<std::size_t>::max();
65 
66  // use deltaR between top and middle SP instead of top radius to search for
67  // compatible SPs
68  bool useDeltaRorTopRadius = false;
69 
70  bool isInInternalUnits = false;
72  if (isInInternalUnits) {
73  throw std::runtime_error(
74  "Repeated conversion to internal units for SeedFilterConfig");
75  }
76  using namespace Acts::UnitLiterals;
77  SeedFilterConfig config = *this;
78  config.isInInternalUnits = true;
79  config.deltaRMin /= 1_mm;
80  config.deltaInvHelixDiameter /= 1. / 1_mm;
81 
82  return config;
83  }
84 };
85 
86 } // namespace Acts