ATLAS Offline Software
SeedingTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSTRKSEEDINGTOOL_SEEDINGTOOL_H
6 #define ACTSTRKSEEDINGTOOL_SEEDINGTOOL_H
7 
8 
9 
10 // gcc12 gives false positive warnings from copying boost::small_vector.
11 #if __GNUC__ >= 12
12 # pragma GCC diagnostic ignored "-Wstringop-overread"
13 #endif
14 
15 
16 // ATHENA
19 #include "ActsInterop/Logger.h"
20 
21 // ACTS CORE
22 #include "Acts/Definitions/Units.hpp"
23 #include "Acts/Definitions/Common.hpp"
24 #include "Acts/Definitions/Algebra.hpp"
25 #include "Acts/Seeding/SpacePointGrid.hpp"
26 #include "Acts/Utilities/GridBinFinder.hpp"
27 #include "Acts/Seeding/BinnedGroup.hpp"
28 #include "Acts/Seeding/SeedFinderConfig.hpp"
29 #include "Acts/Seeding/SeedFilterConfig.hpp"
30 #include "Acts/Seeding/SeedFilter.hpp"
31 #include "Acts/Seeding/SeedFinder.hpp"
32 #include "Acts/EventData/Seed.hpp"
33 
35 
36 #include <numbers>
37 
38 namespace ActsTrk {
39 
40  class SeedingTool :
41  public extends<AthAlgTool, ActsTrk::ISeedingTool> {
42  public:
43  using value_type = typename Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>::SpacePointProxyType;
44  using seed_type = Acts::Seed< value_type, 3ul >;
45  using external_type = typename std::conditional<
48  typename value_type::ValueType
49  >::type;
50 
51 
52  SeedingTool(const std::string& type,
53  const std::string& name,
54  const IInterface* parent);
55  virtual ~SeedingTool() = default;
56 
57  virtual StatusCode initialize() override;
58 
59  // Interface
60  virtual StatusCode
61  createSeeds(const EventContext& ctx,
62  const Acts::SpacePointContainer<ActsTrk::SpacePointCollector, Acts::detail::RefHolder>& spContainer,
63  const Acts::Vector3& beamSpotPos,
64  const Acts::Vector3& bField,
65  ActsTrk::SeedContainer& seedContainer ) const override;
66  protected:
67  // metafunction to obtain correct type in iterated container given the iterator type
68  template<typename spacepoint_iterator_t>
70  using type = typename std::conditional<
74  >::type;
75  };
76 
77  template< typename external_iterator_t >
79  createSeeds( external_iterator_t spBegin,
80  external_iterator_t spEnd,
81  const Acts::Vector3& beamSpotPos,
82  const Acts::Vector3& bField,
83  ActsTrk::SeedContainer& seeds ) const;
84 
86 
87  // *********************************************************************
88  // *********************************************************************
89 
90  protected:
91 
92  const PixelID* m_pixelId{ nullptr };
93 
94  Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid<value_type> > m_finder;
95  Acts::SeedFinderConfig< value_type > m_finderCfg;
96  Acts::CylindricalSpacePointGridConfig m_gridCfg;
97 
98  // See quality selection
99  Gaudi::Property< bool > m_seedQualitySelection {this, "doSeedQualitySelection", true,
100  "Select seed according to quality criteria"};
101 
102  // Properties to set SpacePointGridConfig
103  Gaudi::Property< float > m_minPt {this, "minPt", 900. * Acts::UnitConstants::MeV,
104  "lower pT cutoff for seeds"}; // Used in SeedfinderConfig as well
105  Gaudi::Property< float > m_cotThetaMax {this, "cotThetaMax", 27.2899,
106  "cot of maximum theta angle"}; // Used in SeedfinderConfig as well
107  Gaudi::Property< float > m_zMin {this, "zMin", -3000. * Acts::UnitConstants::mm,
108  "limiting location of measurements"}; // Used in SeedfinderConfig as well
109  Gaudi::Property< float > m_zMax {this, "zMax", 3000. * Acts::UnitConstants::mm,
110  "limiting location of measurements"}; // Used in SeedfinderConfig as well
111  Gaudi::Property< float > m_deltaRMax {this, "deltaRMax", 280. * Acts::UnitConstants::mm,
112  "maximum distance in r between two measurements within one seed"}; // Used in SeedfinderConfig as well
113  Gaudi::Property< float > m_impactMax {this, "impactMax", 2. * Acts::UnitConstants::mm,
114  "maximum impact parameter"}; // Used in SeedfinderConfig as well
115  Gaudi::Property< std::vector< float > > m_zBinEdges {this, "zBinEdges",
116  {-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925., 1400., 2500., 2700, 3000.},
117  "enable non equidistant binning in z"}; // Used in SeedfinderConfig as well
118  Gaudi::Property< std::vector< float > > m_rBinEdges {this, "rBinEdges", {0., 1100 * Acts::UnitConstants::mm},
119  "enable non equidistant binning in radius"};
120  Gaudi::Property< float > m_gridRMax {this, "gridRMax", 320. * Acts::UnitConstants::mm,
121  "radial extension of subdetector to be used in grid building"};
122  Gaudi::Property< float > m_gridPhiMin {this, "gridPhiMin", -std::numbers::pi_v<float>,
123  "phi min for space point grid formation"};
124  Gaudi::Property< float > m_gridPhiMax {this, "gridPhiMax", std::numbers::pi_v<float>,
125  "phi max for space point grid formation"};
126  Gaudi::Property< int > m_phiBinDeflectionCoverage {this, "phiBinDeflectionCoverage", 3,
127  "sets of consecutive phi bins to cover full deflection of minimum pT particle"};
128  Gaudi::Property< int > m_maxPhiBins {this, "maxPhiBins", 200, "max number of bins"};
129 
130  // Properties to set SeedfinderConfig
131  Gaudi::Property< float > m_rMax {this, "rMax", 320. * Acts::UnitConstants::mm,
132  "limiting location of measurements"};
133  Gaudi::Property< float > m_binSizeR {this, "binSizeR", 1. * Acts::UnitConstants::mm,
134  "defining radial bin for space point sorting"};
135  Gaudi::Property< float > m_deltaRMin {this, "deltaRMin", 20. * Acts::UnitConstants::mm,
136  "minimum distance in r between two measurements within one seed"}; // Used in SeedFilterConfig as well
137  Gaudi::Property< float > m_deltaRMinTopSP {this, "deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
138  "minimum distance in r between middle and top SP"};
139  Gaudi::Property< float > m_deltaRMaxTopSP {this, "deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
140  "maximum distance in r between middle and top SP"};
141  Gaudi::Property< float > m_deltaRMinBottomSP {this, "deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
142  "minimum distance in r between middle and top SP"};
143  Gaudi::Property< float > m_deltaRMaxBottomSP {this, "deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
144  "maximum distance in r between middle and top SP"};
145  Gaudi::Property< float > m_deltaZMax {this, "deltaZMax", 600,
146  "maximum distance in z between two measurements within one seed"};
147  Gaudi::Property< float > m_collisionRegionMin {this, "collisionRegionMin", -200. * Acts::UnitConstants::mm,
148  "limiting location of collision region in z"};
149  Gaudi::Property< float > m_collisionRegionMax {this, "collisionRegionMax", 200. * Acts::UnitConstants::mm,
150  "limiting location of collision region in z"};
151  Gaudi::Property< float > m_sigmaScattering {this, "sigmaScattering", 2.,
152  "how many sigmas of scattering angle should be considered"};
153  Gaudi::Property< float > m_maxPtScattering {this, "maxPtScattering", 10e6,
154  "Upper pt limit for scattering calculation"};
155  Gaudi::Property< float > m_radLengthPerSeed {this, "radLengthPerSeed", 0.098045,
156  "average radiation lengths of material on the length of a seed. used for scattering"};
157  Gaudi::Property< int > m_maxSeedsPerSpM {this, "maxSeedsPerSpM", 4,
158  "In dense environments many seeds may be found per middle space point. Only seeds with the highest weight will be kept if this limit is reached."}; // Used in SeedFilterConfig as well
159  Gaudi::Property< bool > m_interactionPointCut {this, "interactionPointCut", true,
160  "Enable cut on the compatibility between interaction point and SPs"};
161  Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping {this, "zBinsCustomLooping",
162  {2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8} , "defines order of z bins for looping"};
163  Gaudi::Property< std::vector<std::size_t> > m_rBinsCustomLooping {this, "rBinsCustomLooping", {1},
164  "defines order of r bins for looping"};
165  Gaudi::Property< bool > m_useVariableMiddleSPRange {this, "useVariableMiddleSPRange", true,
166  "Enable variable range to search for middle SPs"};
167  Gaudi::Property< std::vector<std::vector<double>> > m_rRangeMiddleSP {this, "rRangeMiddleSP",
168  {{40.0, 90.0}, {40.0, 90.0}, {40.0, 200.0}, {46.0, 200.0}, {46.0, 200.0}, {46.0, 250.0}, {46.0, 250.0}, {46.0, 250.0}, {46.0, 200.0}, {46.0, 200.0}, {40.0, 200.0}, {40.0, 90.0}, {40.0, 90.0}},
169  "radial range for middle SP"};
170  Gaudi::Property< float > m_deltaRMiddleMinSPRange {this, "deltaRMiddleMinSPRange", 10.,
171  "delta R for middle SP range (min)"};
172  Gaudi::Property< float > m_deltaRMiddleMaxSPRange {this, "deltaRMiddleMaxSPRange", 10.,
173  "delta R for middle SP range (max)"};
174  Gaudi::Property< bool > m_seedConfirmation {this, "seedConfirmation", true,
175  "run seed confirmation"};
176  Gaudi::Property< float > m_seedConfCentralZMin {this, "seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
177  "minimum z for central seed confirmation "};
178  // Used in SeedFilterConfig as well
179  Gaudi::Property< float > m_seedConfCentralZMax {this, "seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
180  "maximum z for central seed confirmation "};
181  // Used in SeedFilterConfig as well
182  Gaudi::Property< float > m_seedConfCentralRMax {this, "seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
183  "maximum r for central seed confirmation "};
184  // Used in SeedFilterConfig as well
185  Gaudi::Property< size_t > m_seedConfCentralNTopLargeR {this, "seedConfCentralNTopLargeR", 1,
186  "nTop for large R central seed confirmation"};
187  // Used in SeedFilterConfig as well
188  Gaudi::Property< size_t > m_seedConfCentralNTopSmallR {this, "seedConfCentralNTopSmallR", 2,
189  "nTop for small R central seed confirmation"};
190  // Used in SeedFilterConfig as well
191  Gaudi::Property< float > m_seedConfCentralMinBottomRadius {this, "seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
192  "Minimum radius for bottom SP in seed confirmation"};
193  // Used in SeedFilterConfig as well
194  Gaudi::Property< float > m_seedConfCentralMaxZOrigin {this, "seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
195  "Maximum zOrigin in seed confirmation"};
196  // Used in SeedFilterConfig as well
197  Gaudi::Property< float > m_seedConfCentralMinImpact {this, "seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
198  "Minimum impact parameter for seed confirmation"};
199  // Used in SeedFilterConfig as well
200  Gaudi::Property< float > m_seedConfForwardZMin {this, "seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
201  "minimum z for forward seed confirmation "};
202  // Used in SeedFilterConfig as well
203  Gaudi::Property< float > m_seedConfForwardZMax {this, "seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
204  "maximum z for forward seed confirmation "};
205  // Used in SeedFilterConfig as well
206  Gaudi::Property< float > m_seedConfForwardRMax {this, "seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
207  "maximum r for forward seed confirmation "};
208  // Used in SeedFilterConfig as well
209  Gaudi::Property< size_t > m_seedConfForwardNTopLargeR {this, "seedConfForwardNTopLargeR", 1,
210  "nTop for large R forward seed confirmation"};
211  // Used in SeedFilterConfig as well
212  Gaudi::Property< size_t > m_seedConfForwardNTopSmallR {this, "seedConfForwardNTopSmallR", 2,
213  "nTop for small R forward seed confirmation"};
214  // Used in SeedFilterConfig as well
215  Gaudi::Property< float > m_seedConfForwardMinBottomRadius {this, "seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
216  "Minimum radius for bottom SP in seed confirmation"};
217  // Used in SeedFilterConfig as well
218  Gaudi::Property< float > m_seedConfForwardMaxZOrigin {this, "seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
219  "Maximum zOrigin in seed confirmation"};
220  // Used in SeedFilterConfig as well
221  Gaudi::Property< float > m_seedConfForwardMinImpact {this, "seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
222  "Minimum impact parameter for seed confirmation"};
223  // Used in SeedFilterConfig as well
224  Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo {this, "useDetailedDoubleMeasurementInfo", false,
225  "enable use of double measurement details"};
226 
227  Gaudi::Property<float> m_toleranceParam {this, "toleranceParam", 1.1 * Acts::UnitConstants::mm,
228  "tolerance parameter used to check the compatibility of SPs coordinates in xyz"};
229  Gaudi::Property<float> m_phiMin {this, "phiMin", -std::numbers::pi_v<float>, ""};
230  Gaudi::Property<float> m_phiMax {this, "phiMax", std::numbers::pi_v<float>, ""};
231  Gaudi::Property<float> m_rMin {this, "rMin", 0 * Acts::UnitConstants::mm, ""};
232  Gaudi::Property<float> m_zAlign {this, "zAlign", 0 * Acts::UnitConstants::mm, ""};
233  Gaudi::Property<float> m_rAlign {this, "rAlign", 0 * Acts::UnitConstants::mm, ""};
234  Gaudi::Property<float> m_sigmaError {this, "sigmaError", 5, ""};
235 
236  // Properties to set SeedFilterConfig
237  Gaudi::Property< float > m_impactWeightFactor {this, "impactWeightFactor", 100.,
238  "the impact parameters (d0) is multiplied by this factor and subtracted from weight"};
239  Gaudi::Property< float > m_zOriginWeightFactor {this, "zOriginWeightFactor", 1.};
240  Gaudi::Property< float > m_compatSeedWeight {this, "compatSeedWeight", 100.,
241  "seed weight increased by this value if a compatible seed has been found"};
242  Gaudi::Property< std::size_t > m_compatSeedLimit {this, "compatSeedLimit", 3,
243  "how often do you want to increase the weight of a seed for finding a compatible seed"};
244  Gaudi::Property< float > m_seedWeightIncrement {this, "seedWeightIncrement", 0.,
245  "increment in seed weight if needed"};
246  Gaudi::Property< float > m_numSeedIncrement {this, "numSeedIncrement", 10e6,
247  "increment in seed weight is applied if the number of compatible seeds is larger than numSeedIncrement"};
248  Gaudi::Property< bool > m_seedConfirmationInFilter {this, "seedConfirmationInFilter", true,
249  "run seed confirmation"};
250  Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf {this, "maxSeedsPerSpMConf", 5,
251  "Maximum number of lower quality seeds in seed confirmation."};
252  Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf {this, "maxQualitySeedsPerSpMConf", 5,
253  "Maximum number of quality seeds for each middle-bottom SP-duplet in seed confirmation."};
254  Gaudi::Property< bool > m_useDeltaRorTopRadius {this, "useDeltaRorTopRadius", true,
255  "use deltaR (top radius - middle radius) instead of top radius"};
256  Gaudi::Property<float> m_deltaInvHelixDiameter {this, "deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
257  "the allowed delta between two inverted seed radii for them to be considered compatible"};
258 
259  // Properties to set other objects used in
260  // seeding algorithm
261  Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsTop{this,
262  "zBinNeighborsTop",
263  {{0, 0}, {-1, 0}, {-2, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 2} , {0, 1}, {0, 0}},
264  "vector containing the map of z bins in the top layers"};
265  Gaudi::Property< std::vector<std::pair<int, int>> > m_zBinNeighborsBottom{this, "zBinNeighborsBottom",
266  {{0, 0}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {0, 0}},
267  "vector containing the map of z bins in the top layers"};
268  Gaudi::Property< std::vector<std::pair<int, int>> > m_rBinNeighborsTop{this, "rBinNeighborsTop", {{0, 0}},
269  "vector containing the map of radius bins in the top layers"};
270  Gaudi::Property< std::vector<std::pair<int, int>> > m_rBinNeighborsBottom{this, "rBinNeighborsBottom", {{0, 0}},
271  "vector containing the map of radius bins in the bottom layers"};
272  Gaudi::Property< int > m_numPhiNeighbors {this, "numPhiNeighbors", 1,
273  "number of phi bin neighbors at each side of the current bin that will be used to search for SPs"};
274 
275  Gaudi::Property< bool > m_useExperimentCuts {this, "useExperimentCuts", false, ""};
276 
277  Gaudi::Property< int > m_stateVectorReserveSize {this, "stateVectorReserveSize", 500, "Size of the initial Seeding State internal vectors"};
278 
279  private:
280  std::unique_ptr< Acts::GridBinFinder< 3ul > > m_bottomBinFinder{nullptr};
281  std::unique_ptr< Acts::GridBinFinder< 3ul > > m_topBinFinder{nullptr};
282 
283  std::array<std::vector<std::size_t>, 3ul> m_navigation{};
284 
286  const Acts::Logger &logger() const { return *m_logger; }
288  std::unique_ptr<const Acts::Logger> m_logger {nullptr};
289 
290  // A conservative guess of the size of the vectors needed for seeding
291 
292  Gaudi::Property<float> m_ExpCutrMin {this, "SpSelectionExpCutrMin", 45. * Acts::UnitConstants::mm};
293 
294  inline bool spacePointSelectionFunction(const value_type& sp) const {
295 
296  float r = sp.radius();
297  float zabs = std::abs(sp.z());
298  float absCotTheta = zabs / r;
299 
300  // checking configuration to remove pixel space points
301  Identifier identifier = m_pixelId->wafer_id(sp.externalSpacePoint().elementIdList().at(0));
303  if (zabs > 200 and
304  r < 40)
305  return false;
306 
307  return true;
308  }
309 
310  // Inner layers
311  // Below 1.20 - accept all
312  static constexpr float cotThetaEta120 = 1.5095;
313  if (absCotTheta < cotThetaEta120)
314  return true;
315 
316  // Below 3.40 - remove if too close to beamline
317  static constexpr float cotThetaEta340 = 14.9654;
318  if (absCotTheta < cotThetaEta340 and
319  r < m_ExpCutrMin)
320  return false;
321 
322 
323  // Outer layers
324  // Above 2.20
325  static constexpr float cotThetaEta220 = 4.4571;
326  if (absCotTheta > cotThetaEta220 and
327  r > 260.)
328  return false;
329 
330  // Above 2.60
331  static constexpr float cotThetaEta260 = 6.6947;
332  if (absCotTheta > cotThetaEta260 and
333  r > 200.)
334  return false;
335 
336  // Above 3.20
337  static constexpr float cotThetaEta320 = 12.2459;
338  if (absCotTheta > cotThetaEta320 and
339  r > 140.)
340  return false;
341 
342  // Above 4.00
343  static constexpr float cotThetaEta400 = 27.2899;
344  if (absCotTheta > cotThetaEta400)
345  return false;
346 
347  return true;
348  }
349 
351  const value_type& middle,
352  const value_type& other,
353  float cotTheta, bool isBottomCandidate) const {
354  // We remove some doublets that have the middle space point in some specific areas
355  // This should eventually be moved inside ACTS and allow a veto mechanism according
356  // to the user desire.
357  // As of now we cannot really do this since we define a range of validity of the middle
358  // candidate, and if we want to veto some sub-regions inside it, we need to do it here.
359  if (std::abs(middle.z()) > 1500 and
360  middle.radius() > 100 and middle.radius() < 150) {
361  return false;
362  }
363 
364  // We remove here some seeds, in case the bottom space point radius is
365  // too small (i.e. < fastTrackingRMin)
366 
367  // This operation is done only within a specific eta window
368  // Instead of eta we use the doublet cottheta
369  static constexpr float cotThetaEta120 = 1.5095;
370  static constexpr float cotThetaEta360 = 18.2855;
371 
372  float absCotTheta = std::abs(cotTheta);
373  if (isBottomCandidate and other.radius() < m_ExpCutrMin and
374  absCotTheta > cotThetaEta120 and
375  absCotTheta < cotThetaEta360) {
376  return false;
377  }
378 
379  return true;
380  }
381  };
382 
383 } // namespace
384 
385 #endif
386 
ActsTrk::SeedingTool::m_deltaRMaxTopSP
Gaudi::Property< float > m_deltaRMaxTopSP
Definition: SeedingTool.h:139
ActsTrk::SeedingTool::m_gridPhiMax
Gaudi::Property< float > m_gridPhiMax
Definition: SeedingTool.h:124
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
beamspotman.r
def r
Definition: beamspotman.py:672
ActsTrk::SeedingTool::m_compatSeedLimit
Gaudi::Property< std::size_t > m_compatSeedLimit
Definition: SeedingTool.h:242
ActsTrk::SeedContainer
Definition: SeedContainer.h:19
ActsTrk::SeedingTool::m_seedConfCentralMaxZOrigin
Gaudi::Property< float > m_seedConfCentralMaxZOrigin
Definition: SeedingTool.h:194
python.SystemOfUnits.mm
float mm
Definition: SystemOfUnits.py:98
ActsTrk::SeedingTool::~SeedingTool
virtual ~SeedingTool()=default
ActsTrk::SeedingTool::m_finderCfg
Acts::SeedFinderConfig< value_type > m_finderCfg
Definition: SeedingTool.h:95
ActsTrk::SeedingTool::m_seedConfCentralMinBottomRadius
Gaudi::Property< float > m_seedConfCentralMinBottomRadius
Definition: SeedingTool.h:191
ActsTrk::SeedingTool::m_compatSeedWeight
Gaudi::Property< float > m_compatSeedWeight
Definition: SeedingTool.h:240
ActsTrk::SeedingTool::m_sigmaScattering
Gaudi::Property< float > m_sigmaScattering
Definition: SeedingTool.h:151
ActsTrk::SeedingTool::m_maxSeedsPerSpM
Gaudi::Property< int > m_maxSeedsPerSpM
Definition: SeedingTool.h:157
ActsTrk::SeedingTool::m_bottomBinFinder
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_bottomBinFinder
Definition: SeedingTool.h:280
ActsTrk::SeedingTool::m_seedConfForwardMaxZOrigin
Gaudi::Property< float > m_seedConfForwardMaxZOrigin
Definition: SeedingTool.h:218
ActsTrk::SeedingTool::m_maxQualitySeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxQualitySeedsPerSpMConf
Definition: SeedingTool.h:252
ActsTrk::SeedingTool::m_seedConfirmation
Gaudi::Property< bool > m_seedConfirmation
Definition: SeedingTool.h:174
ActsTrk::SeedingTool::m_phiBinDeflectionCoverage
Gaudi::Property< int > m_phiBinDeflectionCoverage
Definition: SeedingTool.h:126
ActsTrk::SeedingTool::m_phiMin
Gaudi::Property< float > m_phiMin
Definition: SeedingTool.h:229
ActsTrk::SeedingTool::m_deltaRMinTopSP
Gaudi::Property< float > m_deltaRMinTopSP
Definition: SeedingTool.h:137
ActsTrk::SeedingTool::m_deltaRMaxBottomSP
Gaudi::Property< float > m_deltaRMaxBottomSP
Definition: SeedingTool.h:143
ActsTrk::SeedingTool
Definition: SeedingTool.h:41
ActsTrk::SeedingTool::m_useVariableMiddleSPRange
Gaudi::Property< bool > m_useVariableMiddleSPRange
Definition: SeedingTool.h:165
ISeedingTool.h
ActsTrk::SeedingTool::createSeeds
virtual StatusCode createSeeds(const EventContext &ctx, const Acts::SpacePointContainer< ActsTrk::SpacePointCollector, Acts::detail::RefHolder > &spContainer, const Acts::Vector3 &beamSpotPos, const Acts::Vector3 &bField, ActsTrk::SeedContainer &seedContainer) const override
Definition: SeedingTool.cxx:218
ActsTrk::SeedingTool::external_spacepoint::type
typename std::conditional< std::is_pointer< typename spacepoint_iterator_t::value_type >::value, typename std::remove_const< typename std::remove_pointer< typename spacepoint_iterator_t::value_type >::type >::type, typename std::remove_const< typename spacepoint_iterator_t::value_type >::type >::type type
Definition: SeedingTool.h:74
ActsTrk::SeedingTool::m_rMin
Gaudi::Property< float > m_rMin
Definition: SeedingTool.h:231
ActsTrk::SeedingTool::m_rAlign
Gaudi::Property< float > m_rAlign
Definition: SeedingTool.h:233
ActsTrk::SeedingTool::m_seedConfCentralNTopLargeR
Gaudi::Property< size_t > m_seedConfCentralNTopLargeR
Definition: SeedingTool.h:185
athena.value
value
Definition: athena.py:124
ActsTrk::SeedingTool::SeedingTool
SeedingTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: SeedingTool.cxx:24
ActsTrk::SeedingTool::m_deltaRMax
Gaudi::Property< float > m_deltaRMax
Definition: SeedingTool.h:111
ActsTrk::SeedingTool::m_deltaRMinBottomSP
Gaudi::Property< float > m_deltaRMinBottomSP
Definition: SeedingTool.h:141
ActsTrk::SeedingTool::external_type
typename std::conditional< std::is_const< typename value_type::ValueType >::value, typename std::remove_const< typename value_type::ValueType >::type, typename value_type::ValueType >::type external_type
Definition: SeedingTool.h:49
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
ActsTrk::SeedingTool::m_finder
Acts::SeedFinder< value_type, Acts::CylindricalSpacePointGrid< value_type > > m_finder
Definition: SeedingTool.h:94
ActsTrk::SeedingTool::m_useExperimentCuts
Gaudi::Property< bool > m_useExperimentCuts
Definition: SeedingTool.h:275
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ActsTrk::SeedingTool::m_rMax
Gaudi::Property< float > m_rMax
Definition: SeedingTool.h:131
PixelID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
Definition: PixelID.h:360
ActsTrk::SeedingTool::doubletSelectionFunction
bool doubletSelectionFunction(const value_type &middle, const value_type &other, float cotTheta, bool isBottomCandidate) const
Definition: SeedingTool.h:350
ActsTrk::SeedingTool::m_zAlign
Gaudi::Property< float > m_zAlign
Definition: SeedingTool.h:232
ActsTrk::SeedingTool::m_seedConfCentralZMax
Gaudi::Property< float > m_seedConfCentralZMax
Definition: SeedingTool.h:179
ActsTrk::SeedingTool::m_zBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsTop
Definition: SeedingTool.h:261
python.SystemOfUnits.MeV
float MeV
Definition: SystemOfUnits.py:172
ActsTrk::SeedingTool::m_impactMax
Gaudi::Property< float > m_impactMax
Definition: SeedingTool.h:113
ActsTrk::SeedingTool::m_impactWeightFactor
Gaudi::Property< float > m_impactWeightFactor
Definition: SeedingTool.h:237
ActsTrk::SeedingTool::m_seedQualitySelection
Gaudi::Property< bool > m_seedQualitySelection
Definition: SeedingTool.h:99
ActsTrk::SeedingTool::m_zBinEdges
Gaudi::Property< std::vector< float > > m_zBinEdges
Definition: SeedingTool.h:115
PixelID::is_barrel
bool is_barrel(const Identifier &id) const
Test for barrel - WARNING: id MUST be pixel id, otherwise answer is not accurate. Use SiliconID for g...
Definition: PixelID.h:586
ActsTrk::SeedingTool::m_zMax
Gaudi::Property< float > m_zMax
Definition: SeedingTool.h:109
ActsTrk::SeedingTool::m_seedConfForwardZMax
Gaudi::Property< float > m_seedConfForwardZMax
Definition: SeedingTool.h:203
ActsTrk::SeedingTool::m_minPt
Gaudi::Property< float > m_minPt
Definition: SeedingTool.h:103
ActsTrk::SeedingTool::m_deltaZMax
Gaudi::Property< float > m_deltaZMax
Definition: SeedingTool.h:145
ActsTrk::SeedingTool::m_maxSeedsPerSpMConf
Gaudi::Property< std::size_t > m_maxSeedsPerSpMConf
Definition: SeedingTool.h:250
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ActsTrk::SeedingTool::spacePointSelectionFunction
bool spacePointSelectionFunction(const value_type &sp) const
Definition: SeedingTool.h:294
ActsTrk::SeedingTool::m_binSizeR
Gaudi::Property< float > m_binSizeR
Definition: SeedingTool.h:133
AthAlgTool.h
ActsTrk::SeedingTool::m_topBinFinder
std::unique_ptr< Acts::GridBinFinder< 3ul > > m_topBinFinder
Definition: SeedingTool.h:281
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ActsTrk::SeedingTool::m_seedConfForwardRMax
Gaudi::Property< float > m_seedConfForwardRMax
Definition: SeedingTool.h:206
detail::ul
unsigned long ul
Definition: PrimitiveHelpers.h:46
ActsTrk::SeedingTool::m_seedConfCentralMinImpact
Gaudi::Property< float > m_seedConfCentralMinImpact
Definition: SeedingTool.h:197
ActsTrk::SeedingTool::m_seedConfForwardMinImpact
Gaudi::Property< float > m_seedConfForwardMinImpact
Definition: SeedingTool.h:221
ActsTrk::SeedingTool::m_rBinNeighborsTop
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsTop
Definition: SeedingTool.h:268
ActsTrk::SeedingTool::m_gridRMax
Gaudi::Property< float > m_gridRMax
Definition: SeedingTool.h:120
ActsTrk::SeedingTool::m_radLengthPerSeed
Gaudi::Property< float > m_radLengthPerSeed
Definition: SeedingTool.h:155
ActsTrk::SeedingTool::m_deltaInvHelixDiameter
Gaudi::Property< float > m_deltaInvHelixDiameter
Definition: SeedingTool.h:256
ActsTrk::SeedingTool::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: SeedingTool.h:286
ActsTrk::SeedingTool::m_seedConfCentralRMax
Gaudi::Property< float > m_seedConfCentralRMax
Definition: SeedingTool.h:182
ActsTrk::SeedingTool::m_collisionRegionMax
Gaudi::Property< float > m_collisionRegionMax
Definition: SeedingTool.h:149
ActsTrk::SeedingTool::m_rBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_rBinNeighborsBottom
Definition: SeedingTool.h:270
ActsTrk::SeedingTool::m_rBinsCustomLooping
Gaudi::Property< std::vector< std::size_t > > m_rBinsCustomLooping
Definition: SeedingTool.h:163
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::SeedingTool::m_deltaRMiddleMaxSPRange
Gaudi::Property< float > m_deltaRMiddleMaxSPRange
Definition: SeedingTool.h:172
ActsTrk::SeedingTool::m_deltaRMiddleMinSPRange
Gaudi::Property< float > m_deltaRMiddleMinSPRange
Definition: SeedingTool.h:170
ActsTrk::SeedingTool::m_ExpCutrMin
Gaudi::Property< float > m_ExpCutrMin
Definition: SeedingTool.h:292
ActsTrk::SeedingTool::m_navigation
std::array< std::vector< std::size_t >, 3ul > m_navigation
Definition: SeedingTool.h:283
ActsTrk::SeedingTool::m_seedConfCentralZMin
Gaudi::Property< float > m_seedConfCentralZMin
Definition: SeedingTool.h:176
ActsTrk::SeedingTool::m_zBinsCustomLooping
Gaudi::Property< std::vector< size_t > > m_zBinsCustomLooping
Definition: SeedingTool.h:161
ActsTrk::SeedingTool::prepareConfiguration
StatusCode prepareConfiguration()
Definition: SeedingTool.cxx:367
ActsTrk::SeedingTool::m_phiMax
Gaudi::Property< float > m_phiMax
Definition: SeedingTool.h:230
ActsTrk::SeedingTool::m_collisionRegionMin
Gaudi::Property< float > m_collisionRegionMin
Definition: SeedingTool.h:147
ActsTrk::SeedingTool::m_seedConfCentralNTopSmallR
Gaudi::Property< size_t > m_seedConfCentralNTopSmallR
Definition: SeedingTool.h:188
ActsTrk::SeedingTool::m_cotThetaMax
Gaudi::Property< float > m_cotThetaMax
Definition: SeedingTool.h:105
ActsTrk::SeedingTool::m_maxPhiBins
Gaudi::Property< int > m_maxPhiBins
Definition: SeedingTool.h:128
ActsTrk::SeedingTool::initialize
virtual StatusCode initialize() override
Definition: SeedingTool.cxx:30
ActsTrk::SeedingTool::m_toleranceParam
Gaudi::Property< float > m_toleranceParam
Definition: SeedingTool.h:227
ActsTrk::SeedingTool::external_spacepoint
Definition: SeedingTool.h:69
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
ActsTrk::SeedingTool::seed_type
Acts::Seed< value_type, 3ul > seed_type
Definition: SeedingTool.h:44
ActsTrk::SeedingTool::m_deltaRMin
Gaudi::Property< float > m_deltaRMin
Definition: SeedingTool.h:135
ActsTrk::SeedingTool::m_stateVectorReserveSize
Gaudi::Property< int > m_stateVectorReserveSize
Definition: SeedingTool.h:277
ActsTrk::SeedingTool::m_seedWeightIncrement
Gaudi::Property< float > m_seedWeightIncrement
Definition: SeedingTool.h:244
ActsTrk::SeedingTool::m_numPhiNeighbors
Gaudi::Property< int > m_numPhiNeighbors
Definition: SeedingTool.h:272
ActsTrk::SeedingTool::m_seedConfForwardNTopLargeR
Gaudi::Property< size_t > m_seedConfForwardNTopLargeR
Definition: SeedingTool.h:209
ActsTrk::SeedingTool::m_seedConfForwardZMin
Gaudi::Property< float > m_seedConfForwardZMin
Definition: SeedingTool.h:200
TRT::Track::cotTheta
@ cotTheta
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:65
ActsTrk::SeedingTool::m_seedConfirmationInFilter
Gaudi::Property< bool > m_seedConfirmationInFilter
Definition: SeedingTool.h:248
ActsTrk::SeedingTool::m_rBinEdges
Gaudi::Property< std::vector< float > > m_rBinEdges
Definition: SeedingTool.h:118
ActsTrk::SeedingTool::m_interactionPointCut
Gaudi::Property< bool > m_interactionPointCut
Definition: SeedingTool.h:159
ActsTrk::SeedingTool::m_rRangeMiddleSP
Gaudi::Property< std::vector< std::vector< double > > > m_rRangeMiddleSP
Definition: SeedingTool.h:167
ActsTrk::SeedingTool::m_useDeltaRorTopRadius
Gaudi::Property< bool > m_useDeltaRorTopRadius
Definition: SeedingTool.h:254
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MdtCalibInput.h:31
ActsTrk::SeedingTool::m_seedConfForwardNTopSmallR
Gaudi::Property< size_t > m_seedConfForwardNTopSmallR
Definition: SeedingTool.h:212
ActsTrk::SeedingTool::m_gridCfg
Acts::CylindricalSpacePointGridConfig m_gridCfg
Definition: SeedingTool.h:96
ActsTrk::SeedingTool::m_zOriginWeightFactor
Gaudi::Property< float > m_zOriginWeightFactor
Definition: SeedingTool.h:239
Logger.h
ActsTrk::SeedingTool::m_useDetailedDoubleMeasurementInfo
Gaudi::Property< bool > m_useDetailedDoubleMeasurementInfo
Definition: SeedingTool.h:224
ActsTrk::SeedingTool::m_zBinNeighborsBottom
Gaudi::Property< std::vector< std::pair< int, int > > > m_zBinNeighborsBottom
Definition: SeedingTool.h:265
PixelID
Definition: PixelID.h:67
value_type
Definition: EDM_MasterSearch.h:11
ActsTrk::SeedingTool::m_gridPhiMin
Gaudi::Property< float > m_gridPhiMin
Definition: SeedingTool.h:122
ActsTrk::SeedingTool::m_sigmaError
Gaudi::Property< float > m_sigmaError
Definition: SeedingTool.h:234
ActsTrk::SeedingTool::m_logger
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Definition: SeedingTool.h:288
ActsTrk::SeedingTool::m_pixelId
const PixelID * m_pixelId
Definition: SeedingTool.h:92
ActsTrk::SeedingTool::m_maxPtScattering
Gaudi::Property< float > m_maxPtScattering
Definition: SeedingTool.h:153
ActsTrk::SeedingTool::m_numSeedIncrement
Gaudi::Property< float > m_numSeedIncrement
Definition: SeedingTool.h:246
ActsTrk::SeedingTool::m_seedConfForwardMinBottomRadius
Gaudi::Property< float > m_seedConfForwardMinBottomRadius
Definition: SeedingTool.h:215
ActsTrk::SeedingTool::m_zMin
Gaudi::Property< float > m_zMin
Definition: SeedingTool.h:107
Identifier
Definition: IdentifierFieldParser.cxx:14