5#ifndef ACTSTRK_GRIDTRIPLETSEEDINGTOOL_GRIDTRIPLETSEEDINGTOOL_H
6#define ACTSTRK_GRIDTRIPLETSEEDINGTOOL_GRIDTRIPLETSEEDINGTOOL_H
17#include "Acts/EventData/SeedContainer2.hpp"
18#include "Acts/EventData/SpacePointContainer2.hpp"
19#include "Acts/Seeding2/BroadTripletSeedFilter.hpp"
20#include "Acts/Seeding2/CylindricalSpacePointGrid2.hpp"
21#include "Acts/Seeding2/TripletSeeder.hpp"
30 :
public extends<AthAlgTool, ActsTrk::ISeedingTool> {
33 const IInterface* parent);
38 const std::vector<const xAOD::SpacePointContainer*>&
39 spacePointCollections,
40 const Eigen::Vector3f& beamSpotPos,
float bFieldInZ,
45 this,
"doSeedQualitySelection",
true,
46 "Select seed according to quality criteria"};
50 Gaudi::Property<float>
m_minPt{
this,
"minPt", 900. * Acts::UnitConstants::MeV,
51 "lower pT cutoff for seeds"};
53 "cot of maximum theta angle"};
54 Gaudi::Property<float>
m_zMin{
this,
"zMin", -3000. * Acts::UnitConstants::mm,
55 "limiting location of measurements"};
56 Gaudi::Property<float>
m_zMax{
this,
"zMax", 3000. * Acts::UnitConstants::mm,
57 "limiting location of measurements"};
59 this,
"deltaRMax", 280. * Acts::UnitConstants::mm,
60 "maximum distance in r between two measurements within one "
63 2. * Acts::UnitConstants::mm,
64 "maximum impact parameter"};
68 {-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925.,
69 1400., 2500., 2700, 3000.},
70 "enable non equidistant binning in z"};
74 {0., 1100 * Acts::UnitConstants::mm},
75 "enable non equidistant binning in radius"};
77 this,
"gridRMax", 320. * Acts::UnitConstants::mm,
78 "radial extension of subdetector to be used in grid building"};
80 -std::numbers::pi_v<float>,
81 "phi min for space point grid formation"};
83 std::numbers::pi_v<float>,
84 "phi max for space point grid formation"};
86 this,
"phiBinDeflectionCoverage", 3,
87 "sets of consecutive phi bins to cover full deflection of minimum pT "
90 "max number of bins"};
93 Gaudi::Property<float>
m_rMax{
this,
"rMax", 320. * Acts::UnitConstants::mm,
94 "limiting location of measurements"};
96 this,
"binSizeR", 1. * Acts::UnitConstants::mm,
97 "defining radial bin for space point sorting"};
99 this,
"deltaRMin", 20. * Acts::UnitConstants::mm,
100 "minimum distance in r between two measurements within one "
103 this,
"deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
104 "minimum distance in r between middle and top SP"};
106 this,
"deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
107 "maximum distance in r between middle and top SP"};
109 this,
"deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
110 "minimum distance in r between middle and top SP"};
112 this,
"deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
113 "maximum distance in r between middle and top SP"};
115 this,
"deltaZMax", 600,
116 "maximum distance in z between two measurements within one seed"};
118 this,
"collisionRegionMin", -200. * Acts::UnitConstants::mm,
119 "limiting location of collision region in z"};
121 this,
"collisionRegionMax", 200. * Acts::UnitConstants::mm,
122 "limiting location of collision region in z"};
124 this,
"useHVCollisionRegion",
false,
125 "restrict collision region by Hough vertex position"};
127 this,
"hvCollisionRegionTolerance", 10. * Acts::UnitConstants::mm,
128 "size of collision region when using Hough vertex"};
130 this,
"sigmaScattering", 2.,
131 "how many sigmas of scattering angle should be considered"};
133 this,
"maxPtScattering", 10e6,
134 "Upper pt limit for scattering calculation"};
136 this,
"radLengthPerSeed", 0.098045,
137 "average radiation lengths of material on the length of a seed. used for "
140 this,
"maxSeedsPerSpM", 4,
141 "In dense environments many seeds may be found per middle space point. "
142 "Only seeds with the highest weight will be kept if this limit is "
145 this,
"interactionPointCut",
true,
146 "Enable cut on the compatibility between interaction point and SPs"};
149 "zBinsCustomLooping",
150 {2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8},
151 "defines order of z bins for looping"};
153 this,
"rBinsCustomLooping", {1},
"defines order of r bins for looping"};
155 this,
"useVariableMiddleSPRange",
true,
156 "Enable variable range to search for middle SPs"};
173 "radial range for middle SP"};
175 this,
"deltaRMiddleMinSPRange", 10.,
"delta R for middle SP range (min)"};
177 this,
"deltaRMiddleMaxSPRange", 10.,
"delta R for middle SP range (max)"};
179 "run seed confirmation"};
181 this,
"seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
182 "minimum z for central seed confirmation "};
184 this,
"seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
185 "maximum z for central seed confirmation "};
187 this,
"seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
188 "maximum r for central seed confirmation "};
190 this,
"seedConfCentralNTopLargeR", 1,
191 "nTop for large R central seed confirmation"};
193 this,
"seedConfCentralNTopSmallR", 2,
194 "nTop for small R central seed confirmation"};
196 this,
"seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
197 "Minimum radius for bottom SP in seed confirmation"};
199 this,
"seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
200 "Maximum zOrigin in seed confirmation"};
202 this,
"seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
203 "Minimum impact parameter for seed confirmation"};
205 this,
"seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
206 "minimum z for forward seed confirmation "};
208 this,
"seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
209 "maximum z for forward seed confirmation "};
211 this,
"seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
212 "maximum r for forward seed confirmation "};
214 this,
"seedConfForwardNTopLargeR", 1,
215 "nTop for large R forward seed confirmation"};
217 this,
"seedConfForwardNTopSmallR", 2,
218 "nTop for small R forward seed confirmation"};
220 this,
"seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
221 "Minimum radius for bottom SP in seed confirmation"};
223 this,
"seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
224 "Maximum zOrigin in seed confirmation"};
226 this,
"seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
227 "Minimum impact parameter for seed confirmation"};
229 this,
"useDetailedDoubleMeasurementInfo",
false,
230 "enable use of double measurement details"};
233 this,
"toleranceParam", 1.1 * Acts::UnitConstants::mm,
234 "tolerance parameter used to check the compatibility of SPs coordinates "
237 this,
"maxStripDeltaCotTheta", 1e10f,
238 "maximum allowed |cotTheta_bottom - cotTheta_top| pre-filter for strip "
239 "triplets before expensive coordinate checks"};
241 Gaudi::Property<float>
m_phiMin{
this,
"phiMin", -std::numbers::pi_v<float>,
243 Gaudi::Property<float>
m_phiMax{
this,
"phiMax", std::numbers::pi_v<float>,
245 Gaudi::Property<float>
m_rMin{
this,
"rMin", 0 * Acts::UnitConstants::mm,
""};
246 Gaudi::Property<float>
m_zAlign{
this,
"zAlign", 0 * Acts::UnitConstants::mm,
248 Gaudi::Property<float>
m_rAlign{
this,
"rAlign", 0 * Acts::UnitConstants::mm,
254 this,
"impactWeightFactor", 100.,
255 "the impact parameters (d0) is multiplied by this factor and subtracted "
259 this,
"compatSeedWeight", 100.,
260 "seed weight increased by this value if a compatible seed has been "
263 this,
"compatSeedLimit", 3,
264 "how often do you want to increase the weight of a seed for finding a "
267 this,
"seedWeightIncrement", 0.,
"increment in seed weight if needed"};
269 this,
"numSeedIncrement", 10e6,
270 "increment in seed weight is applied if the number of compatible seeds "
271 "is larger than numSeedIncrement"};
273 this,
"seedConfirmationInFilter",
true,
"run seed confirmation"};
275 this,
"maxSeedsPerSpMConf", 5,
276 "Maximum number of lower quality seeds in seed confirmation."};
278 this,
"maxQualitySeedsPerSpMConf", 5,
279 "Maximum number of quality seeds for each middle-bottom SP-duplet in "
280 "seed confirmation."};
282 this,
"useDeltaRorTopRadius",
true,
283 "use deltaR (top radius - middle radius) instead of top radius"};
285 this,
"deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
286 "the allowed delta between two inverted seed radii for them to be "
287 "considered compatible"};
289 this,
"absDeltaEtaWeightFactor", 0.,
290 "weight factor for abs(delta-eta) penalty between seed direction and "
291 "beamspot-to-PCA direction (0 = disabled, typical LRT value: 10)"};
293 this,
"absDeltaEtaMinImpact", 2. * Acts::UnitConstants::mm,
294 "minimum impact parameter to apply abs(delta-eta) weight"};
314 "vector containing the map of z bins in the top layers"};
317 "zBinNeighborsBottom",
331 "vector containing the map of z bins in the top layers"};
336 "vector containing the map of radius bins in the top layers"};
339 "rBinNeighborsBottom",
341 "vector containing the map of radius bins in the bottom layers"};
343 this,
"numPhiNeighbors", 1,
344 "number of phi bin neighbors at each side of the current bin that will "
345 "be used to search for SPs"};
351 this,
"stateVectorReserveSize", 500,
352 "Size of the initial Seeding State internal vectors"};
355 45. * Acts::UnitConstants::mm};
378 const Acts::ConstSpacePointProxy2& other,
379 float cotTheta,
bool isBottomCandidate)
const;
382 const Acts::ConstSpacePointProxy2& spM,
383 const Acts::Range1D<float>& rMiddleSpRange)
const;
This is an Identifier helper class for the Pixel subdetector.
Property holding a SG store/key/clid from which a ReadHandle is made.
This is an Identifier helper class for the Pixel subdetector.
Property holding a SG store/key/clid from which a ReadHandle is made.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...