5#ifndef ACTSTRK_GRIDTRIPLETSEEDINGTOOL_GRIDTRIPLETSEEDINGTOOL_H
6#define ACTSTRK_GRIDTRIPLETSEEDINGTOOL_GRIDTRIPLETSEEDINGTOOL_H
17#include "Acts/EventData/SeedContainer.hpp"
18#include "Acts/EventData/SpacePointContainer.hpp"
19#include "Acts/Seeding/BroadTripletSeedFilter.hpp"
20#include "Acts/Seeding/CylindricalSpacePointGrid.hpp"
21#include "Acts/Seeding/TripletSeeder.hpp"
31 :
public extends<AthAlgTool, ActsTrk::ISeedingTool> {
34 const IInterface* parent);
39 const std::vector<const xAOD::SpacePointContainer*>&
40 spacePointCollections,
41 const Eigen::Vector3f& beamSpotPos,
float bFieldInZ,
46 this,
"doSeedQualitySelection",
true,
47 "Select seed according to quality criteria"};
51 Gaudi::Property<float>
m_minPt{
this,
"minPt", 900. * Acts::UnitConstants::MeV,
52 "lower pT cutoff for seeds"};
54 "cot of maximum theta angle"};
55 Gaudi::Property<float>
m_zMin{
this,
"zMin", -3000. * Acts::UnitConstants::mm,
56 "limiting location of measurements"};
57 Gaudi::Property<float>
m_zMax{
this,
"zMax", 3000. * Acts::UnitConstants::mm,
58 "limiting location of measurements"};
60 this,
"deltaRMax", 280. * Acts::UnitConstants::mm,
61 "maximum distance in r between two measurements within one "
64 2. * Acts::UnitConstants::mm,
65 "maximum impact parameter"};
69 {-3000., -2700., -2500., -1400., -925., -500., -250., 250., 500., 925.,
70 1400., 2500., 2700, 3000.},
71 "enable non equidistant binning in z"};
75 {0., 1100 * Acts::UnitConstants::mm},
76 "enable non equidistant binning in radius"};
78 this,
"gridRMax", 320. * Acts::UnitConstants::mm,
79 "radial extension of subdetector to be used in grid building"};
81 -std::numbers::pi_v<float>,
82 "phi min for space point grid formation"};
84 std::numbers::pi_v<float>,
85 "phi max for space point grid formation"};
87 this,
"phiBinDeflectionCoverage", 3,
88 "sets of consecutive phi bins to cover full deflection of minimum pT "
91 "max number of bins"};
94 Gaudi::Property<float>
m_rMax{
this,
"rMax", 320. * Acts::UnitConstants::mm,
95 "limiting location of measurements"};
97 this,
"binSizeR", 1. * Acts::UnitConstants::mm,
98 "defining radial bin for space point sorting"};
100 this,
"deltaRMin", 20. * Acts::UnitConstants::mm,
101 "minimum distance in r between two measurements within one "
104 this,
"deltaRMinTopSP", 6. * Acts::UnitConstants::mm,
105 "minimum distance in r between middle and top SP"};
107 this,
"deltaRMaxTopSP", 280. * Acts::UnitConstants::mm,
108 "maximum distance in r between middle and top SP"};
110 this,
"deltaRMinBottomSP", 6. * Acts::UnitConstants::mm,
111 "minimum distance in r between middle and top SP"};
113 this,
"deltaRMaxBottomSP", 150. * Acts::UnitConstants::mm,
114 "maximum distance in r between middle and top SP"};
116 this,
"deltaZMax", 600,
117 "maximum distance in z between two measurements within one seed"};
119 this,
"collisionRegionMin", -200. * Acts::UnitConstants::mm,
120 "limiting location of collision region in z"};
122 this,
"collisionRegionMax", 200. * Acts::UnitConstants::mm,
123 "limiting location of collision region in z"};
125 this,
"useHVCollisionRegion",
false,
126 "restrict collision region by Hough vertex position"};
128 this,
"hvCollisionRegionTolerance", 10. * Acts::UnitConstants::mm,
129 "size of collision region when using Hough vertex"};
131 this,
"sigmaScattering", 2.,
132 "how many sigmas of scattering angle should be considered"};
134 this,
"maxPtScattering", 10e6,
135 "Upper pt limit for scattering calculation"};
137 this,
"radLengthPerSeed", 0.098045,
138 "average radiation lengths of material on the length of a seed. used for "
141 this,
"maxSeedsPerSpM", 4,
142 "In dense environments many seeds may be found per middle space point. "
143 "Only seeds with the highest weight will be kept if this limit is "
146 this,
"interactionPointCut",
true,
147 "Enable cut on the compatibility between interaction point and SPs"};
150 "zBinsCustomLooping",
151 {2, 3, 4, 5, 12, 11, 10, 9, 7, 6, 8},
152 "defines order of z bins for looping; entries are 1-based local bin "
153 "indices, i.e. within 1..(zBinEdges.size()-1), and must not repeat. "
154 "Listing a subset skips the remaining bins, empty means all bins in "
155 "their natural order"};
158 "rBinsCustomLooping",
160 "defines order of r bins for looping; entries are 1-based local bin "
161 "indices, i.e. within 1..(rBinEdges.size()-1), and must not repeat. "
162 "Listing a subset skips the remaining bins, empty means all bins in "
163 "their natural order"};
165 this,
"useVariableMiddleSPRange",
true,
166 "Enable variable range to search for middle SPs"};
183 "radial range for middle SP"};
185 this,
"deltaRMiddleMinSPRange", 10.,
"delta R for middle SP range (min)"};
187 this,
"deltaRMiddleMaxSPRange", 10.,
"delta R for middle SP range (max)"};
189 "run seed confirmation"};
191 this,
"seedConfCentralZMin", -250. * Acts::UnitConstants::mm,
192 "minimum z for central seed confirmation "};
194 this,
"seedConfCentralZMax", 250. * Acts::UnitConstants::mm,
195 "maximum z for central seed confirmation "};
197 this,
"seedConfCentralRMax", 140. * Acts::UnitConstants::mm,
198 "maximum r for central seed confirmation "};
200 this,
"seedConfCentralNTopLargeR", 1,
201 "nTop for large R central seed confirmation"};
203 this,
"seedConfCentralNTopSmallR", 2,
204 "nTop for small R central seed confirmation"};
206 this,
"seedConfCentralMinBottomRadius", 60 * Acts::UnitConstants::mm,
207 "Minimum radius for bottom SP in seed confirmation"};
209 this,
"seedConfCentralMaxZOrigin", 150 * Acts::UnitConstants::mm,
210 "Maximum zOrigin in seed confirmation"};
212 this,
"seedConfCentralMinImpact", 1. * Acts::UnitConstants::mm,
213 "Minimum impact parameter for seed confirmation"};
215 this,
"seedConfForwardZMin", -3000. * Acts::UnitConstants::mm,
216 "minimum z for forward seed confirmation "};
218 this,
"seedConfForwardZMax", 3000. * Acts::UnitConstants::mm,
219 "maximum z for forward seed confirmation "};
221 this,
"seedConfForwardRMax", 140. * Acts::UnitConstants::mm,
222 "maximum r for forward seed confirmation "};
224 this,
"seedConfForwardNTopLargeR", 1,
225 "nTop for large R forward seed confirmation"};
227 this,
"seedConfForwardNTopSmallR", 2,
228 "nTop for small R forward seed confirmation"};
230 this,
"seedConfForwardMinBottomRadius", 60 * Acts::UnitConstants::mm,
231 "Minimum radius for bottom SP in seed confirmation"};
233 this,
"seedConfForwardMaxZOrigin", 150 * Acts::UnitConstants::mm,
234 "Maximum zOrigin in seed confirmation"};
236 this,
"seedConfForwardMinImpact", 1. * Acts::UnitConstants::mm,
237 "Minimum impact parameter for seed confirmation"};
239 this,
"useDetailedDoubleMeasurementInfo",
false,
240 "enable use of double measurement details"};
243 this,
"toleranceParam", 1.1 * Acts::UnitConstants::mm,
244 "tolerance parameter used to check the compatibility of SPs coordinates "
247 this,
"maxStripDeltaCotTheta", 1e10f,
248 "maximum allowed |cotTheta_bottom - cotTheta_top| pre-filter for strip "
249 "triplets before expensive coordinate checks"};
251 Gaudi::Property<float>
m_phiMin{
this,
"phiMin", -std::numbers::pi_v<float>,
253 Gaudi::Property<float>
m_phiMax{
this,
"phiMax", std::numbers::pi_v<float>,
255 Gaudi::Property<float>
m_rMin{
this,
"rMin", 0 * Acts::UnitConstants::mm,
""};
256 Gaudi::Property<float>
m_zAlign{
this,
"zAlign", 0 * Acts::UnitConstants::mm,
258 Gaudi::Property<float>
m_rAlign{
this,
"rAlign", 0 * Acts::UnitConstants::mm,
264 this,
"impactWeightFactor", 100.,
265 "the impact parameters (d0) is multiplied by this factor and subtracted "
269 this,
"compatSeedWeight", 100.,
270 "seed weight increased by this value if a compatible seed has been "
273 this,
"compatSeedLimit", 3,
274 "how often do you want to increase the weight of a seed for finding a "
277 this,
"seedWeightIncrement", 0.,
"increment in seed weight if needed"};
279 this,
"numSeedIncrement", 10e6,
280 "increment in seed weight is applied if the number of compatible seeds "
281 "is larger than numSeedIncrement"};
283 this,
"seedConfirmationInFilter",
true,
"run seed confirmation"};
285 this,
"maxSeedsPerSpMConf", 5,
286 "Maximum number of lower quality seeds in seed confirmation."};
288 this,
"maxQualitySeedsPerSpMConf", 5,
289 "Maximum number of quality seeds for each middle-bottom SP-duplet in "
290 "seed confirmation."};
292 this,
"useDeltaRorTopRadius",
true,
293 "use deltaR (top radius - middle radius) instead of top radius"};
295 this,
"deltaInvHelixDiameter", 0.00003 * 1. / Acts::UnitConstants::mm,
296 "the allowed delta between two inverted seed radii for them to be "
297 "considered compatible"};
299 this,
"absDeltaEtaWeightFactor", 0.,
300 "weight factor for abs(delta-eta) penalty between seed direction and "
301 "beamspot-to-PCA direction (0 = disabled, typical LRT value: 10)"};
303 this,
"absDeltaEtaMinImpact", 2. * Acts::UnitConstants::mm,
304 "minimum impact parameter to apply abs(delta-eta) weight"};
324 "vector containing the map of z bins in the top layers"};
327 "zBinNeighborsBottom",
341 "vector containing the map of z bins in the top layers"};
346 "vector containing the map of radius bins in the top layers"};
349 "rBinNeighborsBottom",
351 "vector containing the map of radius bins in the bottom layers"};
353 this,
"numPhiNeighbors", 1,
354 "number of phi bin neighbors at each side of the current bin that will "
355 "be used to search for SPs"};
364 "apply the per-pair azimuthal-swing doublet cut"};
366 "impact parameter bounding the doublet phi swing; negative uses impactMax"};
368 "cap on the displaced phi-swing term [rad]"};
370 "constant term of the prompt doublet phi window [rad]"};
372 "curvature term of the prompt doublet phi window [rad/mm]"};
375 this,
"stateVectorReserveSize", 500,
376 "Size of the initial Seeding State internal vectors"};
379 45. * Acts::UnitConstants::mm};
403 const std::vector<float>& spAsinD0OverR,
404 const Acts::ConstSpacePointProxy& middle,
405 const Acts::ConstSpacePointProxy& other,
406 float cotTheta,
bool isBottomCandidate)
const;
409 const Acts::ConstSpacePointProxy& spM,
410 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...