ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::GbtsSeedingTool Class Referencefinal

#include <GbtsSeedingTool.h>

Inheritance diagram for ActsTrk::GbtsSeedingTool:
Collaboration diagram for ActsTrk::GbtsSeedingTool:

Public Member Functions

 GbtsSeedingTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~GbtsSeedingTool ()=default
virtual StatusCode initialize () override
StatusCode createSeeds (const EventContext &ctx, const std::vector< const xAOD::SpacePointContainer * > &spacePointCollections, const Eigen::Vector3f &beamSpotPos, float bFieldInZ, ActsTrk::SeedContainer &seedContainer) const override

Private Member Functions

void printGbtsConfig () const
 prints all current config settings used either with default settings or properties changed by the gaudi options tells what the defaults in the config are
StatusCode prepareConfiguration ()
 sets configs based on gaudi properties defined below
StatusCode readConnections (const std::vector< Acts::Experimental::GbtsLayerDescription > &layers, std::vector< Acts::Experimental::GbtsLayerConnection > &connections, float &etaBinWidth) const
 Reads the connection table and keeps the connections this pass is for: both layers have to be layers this detector has, of one technology, and that technology has to be one the pass asked for.
StatusCode readTauLookupTable (Acts::Experimental::detail::GbtsTauLookupTable &tauLookupTable) const
 Reads the tau lookup table the cluster width cuts need: per line a cluster width, the bulk tau bounds and the near-edge ones.
const Acts::Logger & logger () const
 Private access to the logger.

Private Attributes

std::unique_ptr< const Acts::Logger > m_logger
 logging instance
Acts::Experimental::GraphBasedTrackSeeder::Config m_finderCfg
 steering for seeding algorithm
Acts::Experimental::GbtsTrackingFilter::Config m_filterCfg
 steering for track filter
std::optional< Acts::Experimental::GraphBasedTrackSeeder > m_finder
 the actual seed fining algorithm
std::optional< Acts::Experimental::GbtsTrackingFilter > m_filter
 the seed filter
std::optional< Acts::Experimental::GbtsRoiDescriptor > m_internalRoi
 region of interest for pixel seeding
const std::vector< short > * m_stripHashToLayer = nullptr
 Wafer hash to dense GBTS layer index, one map per technology.
const std::vector< short > * m_pixelHashToLayer = nullptr
ToolHandle< IGbtsLayerTool > m_layerTool {this, "layerTool", "ActsTrk::GbtsLayerTool/ActsGbtsLayerTool"}
 Builds the GBTS layers out of the ITk readout geometry.
Gaudi::Property< std::string > m_connectorInputFile {this, "connectorInputFile","binTables_ITK_RUN4.txt", "input file for making connector object"}
Gaudi::Property< bool > m_pixelConnections {this, "usePixelConnections", true, "keep the pixel to pixel connections of the table"}
Gaudi::Property< bool > m_stripConnections {this, "useStripConnections", false, "keep the strip to strip connections of the table"}
Gaudi::Property< std::string > m_lutFile {this, "lutInputFile", "gbts_ml_pixel_barrel_loose.lut", "file to LUT"}
Gaudi::Property< bool > m_usePixelLayers {this, "usePixelLayers", true, "seed on the pixel layers"}
 Which technologies this instance seeds on.
Gaudi::Property< bool > m_useStripLayers {this, "useStripLayers", false, "seed on the strip layers"}
Gaudi::Property< bool > m_LRTmode {this, "LRTmode", false, "whether strip or pixel hits are used"}
Gaudi::Property< bool > m_useML {this, "useML", true, "use the cluster width of the spacepoint"}
Gaudi::Property< bool > m_matchBeforeCreate {this, "matchBeforeCreate", true, "need to check what this does"}
Gaudi::Property< bool > m_useOldTunings {this, "useOldTunings", false, "use the tunings for 900MeV cut"}
Gaudi::Property< bool > m_beamSpotCorrection {this, "beamSpotCorrection", true, "apply primary vertex corrections to spacepoints"}
Gaudi::Property< bool > m_validateTriplets {this, "ValidateTriplets", true, "extra validation on pT and d0 performed to connected barrel edges"}
Gaudi::Property< bool > m_useAdaptiveCuts {this, "UseAdaptiveCuts", true, "allows for larger accpetance of candidate edges that skip layers"}
Gaudi::Property< bool > m_addTriplets {this, "addTriplets", false, "add seeds with three spacepoints in a defined eta region"}
Gaudi::Property< bool > m_useEtaBinning {this, "useEtaBinning",true, "bool to use eta binning from geometry structure"}
Gaudi::Property< bool > m_doubletFilterRZ {this, "doubletFilterRZ",true, "bool applies new Z cuts on doublets"}
Gaudi::Property< float > m_etaBinWidthOverride {this, "etaBinOverride", 0.0f, "apply custom binning for connections"}
Gaudi::Property< float > m_nMaxPhiSlice {this, "nMaxPhiSlice",53, "used to calculate phi slices"}
Gaudi::Property< float > m_tauRatioCut {this, "tauRatioCut",0.007, "tau cut for doublets and triplets"}
Gaudi::Property< float > m_tauRatioPrecut {this, "precutTauRatioMax",0.009f, "used to reject edges early if matchBeforCreate is on"}
Gaudi::Property< float > m_tauRatioCorr {this, "tauRatioCorrection", 0.006, "correction added to tau accpetance if candidate edge skips a layer"}
Gaudi::Property< float > m_minPt {this, "minPt", 1000.0, "Lower cutoff for seeds"}
Gaudi::Property< float > m_maxEtaAddTriplets {this, "maxEtaAddTriplets", 1.5, "eta region in which three sapcepoint seeds are allowed"}
Gaudi::Property< float > m_minDeltaRadius {this, "minDeltaRadius",2.0, " min dr for doublet"}
Gaudi::Property< int > m_nMaxEdges {this, "MaxEdges",3000000, " max number of Gbts edges/doublets"}
Gaudi::Property< float > m_cutDPhiMax {this, "cutDPhiMax", 0.012f, "not sure"}
Gaudi::Property< float > m_cutDCurvMax {this, "cutDCurvMax", 0.001f, "not sure"}
Gaudi::Property< float > m_minDeltaPhi {this, "minDeltaPhi", 0.001f, "not sure"}
Gaudi::Property< float > m_maxOuterRadius {this, "maxOuterRadius", 550.0f, "not sure"}
Gaudi::Property< float > m_minZ0 {this, "minZ0", -99999, "not sure"}
Gaudi::Property< float > m_maxZ0 {this, "maxZ0", -99999, "not sure"}
Gaudi::Property< float > m_d0Max {this, "d0Max", 3.0, "maximum d0 value allowed when using validateTiplets"}
Gaudi::Property< float > m_sigmaMS {this, "sigmaMS", 0.016, "process noise from multiple scattering"}
Gaudi::Property< float > m_radLen {this, "radLen", 0.025, "defines how much material scattering the kalman filter should take into account"}
Gaudi::Property< float > m_sigmaX {this, "sigmaX", 0.08, "measurement resolution for residual on y direction"}
Gaudi::Property< float > m_sigmaY {this, "sigmaY", 0.25, "measurement resolution on r-z plane"}
Gaudi::Property< float > m_weightX {this, "weightX", 0.5, "penalty weight for track"}
Gaudi::Property< float > m_weightY {this, "weightY", 0.5, "penalty weight for track"}
Gaudi::Property< float > m_maxDChi2X {this, "maxDChi2X", 5.0, "gate threshold for chi2 test"}
Gaudi::Property< float > m_maxDChi2Y {this, "maxDChi2Y", 6.0, "gate threshold for chi2 test"}
Gaudi::Property< float > m_addHit {this, "addHit", 14.0, "reward added to tracks for each accepted hit before chi2"}
Gaudi::Property< float > m_maxCurvature {this, "maxCurvature", 1e-3f, "maximum curvature allowed for candiadte tracklet"}
Gaudi::Property< float > m_filterMaxZ0 {this, "filterMaxZ0", 170.0, "maximum z0 allowed for candidate tracklet"}
Gaudi::Property< float > m_edgeMaskMinEta {this, "edgeMaskMinEta", 1.5, "minimum eta allowed for masking edges in graph so they are not used again"}
Gaudi::Property< float > m_hitShareThreshold {this, "hitShareThreshold", 0.49, "threshold of hits that are shared between seeds before one seed is labelled a clone"}
Gaudi::Property< float > m_maxEndcapClusterwidth {this, "maxEndcapClusterwidth", 0.35, "discards any spacepoints which dr/dz cant be accurately modelled"}

Detailed Description

Definition at line 45 of file GbtsSeedingTool.h.

Constructor & Destructor Documentation

◆ GbtsSeedingTool()

ActsTrk::GbtsSeedingTool::GbtsSeedingTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 24 of file GbtsSeedingTool.cxx.

27 : base_class(type, name, parent)
28 {}

◆ ~GbtsSeedingTool()

virtual ActsTrk::GbtsSeedingTool::~GbtsSeedingTool ( )
virtualdefault

Member Function Documentation

◆ createSeeds()

ATH_FLATTEN StatusCode ActsTrk::GbtsSeedingTool::createSeeds ( const EventContext & ctx,
const std::vector< const xAOD::SpacePointContainer * > & spacePointCollections,
const Eigen::Vector3f & beamSpotPos,
float bFieldInZ,
ActsTrk::SeedContainer & seedContainer ) const
override

Definition at line 86 of file GbtsSeedingTool.cxx.

91 {
92 // to avoid compile issues with unused veriables
93 (void) ctx;
94
95 const Acts::Experimental::GraphBasedTrackSeeder::Options options(bFieldInZ);
96
97
98 std::vector<const xAOD::SpacePoint*> tmpSpacePoints;
99
100 // add spacepoint pointers to singel container, this makes indexing them easier
101 for (const xAOD::SpacePointContainer* spacePoints : spacePointCollections) {
102 for (const xAOD::SpacePoint* sp : *spacePoints) {
103 tmpSpacePoints.emplace_back(sp);
104 }
105 }
106
107
108 // create the node storage and fill it from the xAOD space points
109 Acts::Experimental::GbtsNodeStorage nodeStorage = m_finder->makeNodeStorage();
110
111 // node positions are relative to the beam spot in x and y if the correction is on
112 const float offsetX = m_finderCfg.beamSpotCorrection ? beamSpotPos[0] : 0.0f;
113 const float offsetY = m_finderCfg.beamSpotCorrection ? beamSpotPos[1] : 0.0f;
114
115 std::size_t nPixelNodes = 0;
116 std::size_t nStripNodes = 0;
117
118 // space points GBTS has no layer for, counted rather than reported per
119 // space point: the loop runs over the whole event
120 std::size_t nUnmappedHashes = 0;
121 std::size_t nUngroupedModules = 0;
122
123 // add spacepoints to node storage
124 for(std::size_t idx = 0; idx < tmpSpacePoints.size(); ++idx){
125 // obtain module hash for spacepoint
126 const xAOD::SpacePoint* sp = tmpSpacePoints[idx];
127 const std::vector<xAOD::DetectorIDHashType>& elementlist = sp->elementIdList();
128
129 // a strip space point is made of one cluster on each side of a stereo pair
130 const bool isPixel(elementlist.size() == 1);
131
132 if (isPixel ? !m_usePixelLayers : !m_useStripLayers) {
133 continue;
134 }
135
136 const std::vector<short>& hashToLayer =
138 const auto hash = static_cast<std::size_t>(elementlist[0]);
139 if (hash >= hashToLayer.size()) [[unlikely]] {
140 ++nUnmappedHashes;
141 continue;
142 }
143
144 const short layer = hashToLayer[hash];
145 if (layer == IGbtsLayerTool::kNoLayer) {
146 // a wafer GBTS does not group into any of its layers
147 ++nUngroupedModules;
148 continue;
149 }
150
151 float clusterWidth = 0.0f;
152 float localPositionY = 0.0f;
153 if (m_finderCfg.useClusterWidthCuts && isPixel) {
154 assert(dynamic_cast<const xAOD::PixelCluster*>(sp->measurements().front())!=nullptr);
155 const xAOD::PixelCluster* pCL = static_cast<const xAOD::PixelCluster*>(sp->measurements().front());
156 clusterWidth = pCL->widthInEta();
157 localPositionY = pCL->localPosition<2>().y();
158 }
159
160 // the stereo pair of a strip space point, for the strip calibration in GBTS
161 Acts::OuterStripSpacePointCalibrationDetails stripDetails{};
162 const Acts::OuterStripSpacePointCalibrationDetails* strip = nullptr;
163 if (!isPixel) {
164 // topStripCenter is global, the node frame shifts only x and y
165 Eigen::Map<Eigen::Vector3f>(stripDetails.outerCenter.data()) =
166 sp->topStripCenter() - Eigen::Vector3f(offsetX, offsetY, 0.0f);
167 Eigen::Map<Eigen::Vector3f>(stripDetails.innerToOuterSeparation.data()) =
168 sp->stripCenterDistance();
169 Eigen::Map<Eigen::Vector3f>(stripDetails.outerHalfVector.data()) =
170 sp->topHalfStripLength() * sp->topStripDirection();
171 Eigen::Map<Eigen::Vector3f>(stripDetails.innerHalfVector.data()) =
172 sp->bottomHalfStripLength() * sp->bottomStripDirection();
173 strip = &stripDetails;
174 }
175
176 const float x = static_cast<float>(sp->x()) - offsetX;
177 const float y = static_cast<float>(sp->y()) - offsetY;
178 const std::optional<std::uint32_t> bin = nodeStorage.insert(
179 static_cast<Acts::SpacePointIndex>(idx), x, y,
180 static_cast<float>(sp->z()), std::hypot(x, y), std::atan2(y, x),
181 static_cast<std::uint32_t>(layer), clusterWidth, localPositionY, strip);
182
183 if (bin.has_value()) {
184 ++(isPixel ? nPixelNodes : nStripNodes);
185 }
186 }
187
188 ATH_MSG_DEBUG("Inserted " << nPixelNodes << " pixel and " << nStripNodes
189 << " strip nodes; the graph "
190 << (nodeStorage.hasStrips() ? "carries" : "does not carry")
191 << " stereo pairs");
192
193 if (nUnmappedHashes != 0) [[unlikely]] {
194 ATH_MSG_WARNING(nUnmappedHashes << " space points sit on a wafer hash "
195 "outside the GBTS layer map and were dropped");
196 }
197 if (nUngroupedModules != 0) {
198 ATH_MSG_DEBUG(nUngroupedModules << " space points sit on a wafer GBTS "
199 "does not group into a layer");
200 }
201
202 // order the nodes and build the derived per-node data
203 nodeStorage.finalize();
204
205 ATH_MSG_VERBOSE("Spacepoints successfully added to node storage");
206
207 Acts::SeedContainer seeds;
208 m_finder->createSeeds(nodeStorage, m_internalRoi.value(), *m_filter, options, seeds);
209
210 // add seeds to the output container
211 seedContainer.reserve(seedContainer.size() + seeds.size(), 7.0f);
212 for (auto seed : seeds) {
213 seedContainer.push_back(
214 seed.asConst(),
215 [&](const Acts::SpacePointIndex spIndex) {
216 return tmpSpacePoints[spIndex];
217 });
218 }
219
220 ATH_MSG_VERBOSE("Number of seeds created is " << seedContainer.size());
221 return StatusCode::SUCCESS;
222 }
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
static Double_t sp
#define y
#define x
Gaudi::Property< bool > m_usePixelLayers
Which technologies this instance seeds on.
std::optional< Acts::Experimental::GbtsRoiDescriptor > m_internalRoi
region of interest for pixel seeding
Gaudi::Property< bool > m_useStripLayers
Acts::Experimental::GraphBasedTrackSeeder::Config m_finderCfg
steering for seeding algorithm
std::optional< Acts::Experimental::GbtsTrackingFilter > m_filter
the seed filter
std::optional< Acts::Experimental::GraphBasedTrackSeeder > m_finder
the actual seed fining algorithm
const std::vector< short > * m_stripHashToLayer
Wafer hash to dense GBTS layer index, one map per technology.
const std::vector< short > * m_pixelHashToLayer
static constexpr short kNoLayer
Value stored in the hash maps for a module GBTS does not use.
float widthInEta() const
Returns the width of the cluster in phi (x) and eta (y) directions, respectively.
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.
@ layer
Definition HitInfo.h:79
SpacePointContainer_v1 SpacePointContainer
Define the version of the space point container.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
#define unlikely(x)
Seed push_back(SpacePointRange spacePoints, float quality, float vertexZ)
void reserve(std::size_t size, float averageSpacePoints=3) noexcept
std::size_t size() const noexcept

◆ initialize()

StatusCode ActsTrk::GbtsSeedingTool::initialize ( )
overridevirtual

Definition at line 30 of file GbtsSeedingTool.cxx.

30 {
31 ATH_CHECK(m_layerTool.retrieve());
32 ATH_MSG_DEBUG("Initializing " << name() << "...");
33
34 // Make the logger And Propagate to ACTS routines
35 m_logger = makeActsAthenaLogger(this, "Acts");
36
37 // etaMin,etaMax,zMin,zMax
38 m_internalRoi.emplace(-4.5, 4.5, -150.0, 150.0);
39
42
43 // The layer tool builds the GBTS layers, in dense layer index order, and
44 // knows which layer each module hash belongs to and what it is made of.
45 const std::vector<Acts::Experimental::GbtsLayerDescription>& layers =
46 m_layerTool->layerDescriptions();
47
48 m_pixelHashToLayer = &m_layerTool->pixelLayers();
49 m_stripHashToLayer = &m_layerTool->stripLayers();
50
52 ATH_MSG_ERROR("Neither pixel nor strip layers are enabled, there is "
53 "nothing to seed on.");
54 return StatusCode::FAILURE;
55 }
56
57 std::vector<Acts::Experimental::GbtsLayerConnection> connections;
58 float etaBinWidth = 0.0f;
59 ATH_CHECK(readConnections(layers, connections, etaBinWidth));
60
61 // option that allows for adding custom eta binning (default is at 0.2)
62 if (m_etaBinWidthOverride.value() != 0.0f) {
63 etaBinWidth = m_etaBinWidthOverride.value();
64 }
65
66 // the cluster width cuts are the only user of the tau lookup table
67 if (m_finderCfg.useClusterWidthCuts) {
69 }
70
71 // create geoemtry object that holds allowed pairing of allowed eta regions in each layer
72 // holds all geometry information (m_layergeomtry and connection table)
73 auto gbtsGeo = std::make_shared<Acts::Experimental::GbtsGeometry>(
74 layers, connections, etaBinWidth, Acts::Experimental::GbtsZ0Range{}, logger());
75
76 m_finder = Acts::Experimental::GraphBasedTrackSeeder(
77 Acts::Experimental::GraphBasedTrackSeeder::DerivedConfig(m_finderCfg),
78 gbtsGeo, logger().cloneWithSuffix("gbtsFinder"));
79
80 m_filter = Acts::Experimental::GbtsTrackingFilter(m_filterCfg, gbtsGeo);
81
82 return StatusCode::SUCCESS;
83 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Definition Logger.cxx:64
std::unique_ptr< const Acts::Logger > m_logger
logging instance
StatusCode readTauLookupTable(Acts::Experimental::detail::GbtsTauLookupTable &tauLookupTable) const
Reads the tau lookup table the cluster width cuts need: per line a cluster width, the bulk tau bounds...
Gaudi::Property< float > m_etaBinWidthOverride
const Acts::Logger & logger() const
Private access to the logger.
Acts::Experimental::GbtsTrackingFilter::Config m_filterCfg
steering for track filter
void printGbtsConfig() const
prints all current config settings used either with default settings or properties changed by the gau...
StatusCode prepareConfiguration()
sets configs based on gaudi properties defined below
ToolHandle< IGbtsLayerTool > m_layerTool
Builds the GBTS layers out of the ITk readout geometry.
StatusCode readConnections(const std::vector< Acts::Experimental::GbtsLayerDescription > &layers, std::vector< Acts::Experimental::GbtsLayerConnection > &connections, float &etaBinWidth) const
Reads the connection table and keeps the connections this pass is for: both layers have to be layers ...

◆ logger()

const Acts::Logger & ActsTrk::GbtsSeedingTool::logger ( ) const
inlineprivate

Private access to the logger.

Definition at line 88 of file GbtsSeedingTool.h.

88{ return *m_logger; }

◆ prepareConfiguration()

StatusCode ActsTrk::GbtsSeedingTool::prepareConfiguration ( )
private

sets configs based on gaudi properties defined below

Definition at line 354 of file GbtsSeedingTool.cxx.

354 {
355 m_finderCfg.useStripConnections = m_stripConnections;
356 m_finderCfg.useClusterWidthCuts = m_useML;
357 m_finderCfg.matchBeforeCreate = m_matchBeforeCreate;
358 // useOldTunings gated the curvature bounds and the phi window together,
359 // while LRT mode only wanted the first, so the seeder now has them apart
360 m_finderCfg.useOldTuningsCurvature = m_useOldTunings || m_LRTmode;
361 m_finderCfg.useOldTuningsPhiWindow = m_useOldTunings;
362 m_finderCfg.beamSpotCorrection = m_beamSpotCorrection;
363 m_finderCfg.minPt = m_minPt;
364 m_finderCfg.nMaxPhiSlice = m_nMaxPhiSlice;
365 m_finderCfg.useEtaBinning = m_useEtaBinning;
366 m_finderCfg.doubletFilterRZ = m_doubletFilterRZ;
367 m_finderCfg.minDeltaRadius = m_minDeltaRadius;
368 m_finderCfg.nMaxEdges = m_nMaxEdges;
369 m_finderCfg.tauRatioCut = m_tauRatioCut;
370 m_finderCfg.tauRatioPrecut = m_tauRatioPrecut;
371 m_finderCfg.edgeMaskMinEta = m_edgeMaskMinEta;
372 m_finderCfg.hitShareThreshold = m_hitShareThreshold;
373 m_finderCfg.maxEndcapClusterWidth = m_maxEndcapClusterwidth;
374 m_finderCfg.d0Max = m_d0Max;
375
376 //use roi for pixel and given value for strip
377 m_finderCfg.maxZ0 = m_LRTmode ? m_maxZ0.value() : m_internalRoi->zMax();
378 m_finderCfg.minZ0 = m_LRTmode ? m_minZ0.value() : m_internalRoi->zMin();
379
380 m_finderCfg.validateTriplets = m_validateTriplets;
381 m_finderCfg.useAdaptiveCuts = m_useAdaptiveCuts;
382 m_finderCfg.tauRatioCorr = m_tauRatioCorr;
383 m_finderCfg.addTriplets = m_addTriplets;
384 m_finderCfg.maxAbsEtaAddTriplets = m_maxEtaAddTriplets;
385 m_finderCfg.cutDPhiMax = m_cutDPhiMax;
386 m_finderCfg.cutDCurvMax = m_cutDCurvMax;
387 m_finderCfg.minDeltaPhi = m_minDeltaPhi;
388 m_finderCfg.maxOuterRadius = m_maxOuterRadius;
389
390 // The seeder no longer recognises an LRT mode, so spell out the rest of
391 // what it used to imply: the whole of maxCurv for the curvature bounds and
392 // the phi window, and a triplet with no confirmation.
393 if (m_LRTmode) {
394 m_finderCfg.oldTuningsCurvatureHighEtaFraction = 1.f;
395 m_finderCfg.oldTuningsCurvatureLowEtaFraction = 1.f;
396 m_finderCfg.oldTuningsPhiWindowFraction = 1.f;
397 m_finderCfg.minSeedLevel = 2;
398 }
399
400 m_filterCfg.sigmaMS = m_sigmaMS;
401 m_filterCfg.radLen = m_radLen;
402 m_filterCfg.sigmaX = m_sigmaX;
403 m_filterCfg.sigmaY = m_sigmaY;
404 m_filterCfg.weightX = m_weightX;
405 m_filterCfg.weightY = m_weightY;
406 m_filterCfg.maxDChi2X = m_maxDChi2X;
407 m_filterCfg.maxDChi2Y = m_maxDChi2Y;
408 m_filterCfg.addHit = m_addHit;
409 m_filterCfg.maxCurvature = m_maxCurvature;
411
412 return StatusCode::SUCCESS;
413 }
Gaudi::Property< bool > m_doubletFilterRZ
Gaudi::Property< float > m_maxZ0
Gaudi::Property< int > m_nMaxEdges
Gaudi::Property< float > m_maxEtaAddTriplets
Gaudi::Property< float > m_filterMaxZ0
Gaudi::Property< float > m_minPt
Gaudi::Property< bool > m_useAdaptiveCuts
Gaudi::Property< float > m_maxDChi2X
Gaudi::Property< float > m_weightX
Gaudi::Property< float > m_sigmaMS
Gaudi::Property< float > m_cutDPhiMax
Gaudi::Property< bool > m_validateTriplets
Gaudi::Property< float > m_sigmaY
Gaudi::Property< bool > m_LRTmode
Gaudi::Property< float > m_edgeMaskMinEta
Gaudi::Property< float > m_addHit
Gaudi::Property< bool > m_stripConnections
Gaudi::Property< float > m_nMaxPhiSlice
Gaudi::Property< float > m_maxCurvature
Gaudi::Property< float > m_maxOuterRadius
Gaudi::Property< bool > m_useOldTunings
Gaudi::Property< float > m_minZ0
Gaudi::Property< float > m_maxDChi2Y
Gaudi::Property< float > m_cutDCurvMax
Gaudi::Property< float > m_minDeltaPhi
Gaudi::Property< bool > m_useML
Gaudi::Property< float > m_minDeltaRadius
Gaudi::Property< float > m_tauRatioPrecut
Gaudi::Property< bool > m_useEtaBinning
Gaudi::Property< bool > m_matchBeforeCreate
Gaudi::Property< float > m_maxEndcapClusterwidth
Gaudi::Property< float > m_tauRatioCorr
Gaudi::Property< float > m_hitShareThreshold
Gaudi::Property< float > m_sigmaX
Gaudi::Property< bool > m_beamSpotCorrection
Gaudi::Property< float > m_weightY
Gaudi::Property< float > m_tauRatioCut
Gaudi::Property< float > m_d0Max
Gaudi::Property< bool > m_addTriplets
Gaudi::Property< float > m_radLen

◆ printGbtsConfig()

void ActsTrk::GbtsSeedingTool::printGbtsConfig ( ) const
private

prints all current config settings used either with default settings or properties changed by the gaudi options tells what the defaults in the config are

Definition at line 416 of file GbtsSeedingTool.cxx.

416 {
417 ATH_MSG_DEBUG("===== GBTS finder config =====");
418 ATH_MSG_DEBUG( "beamSpotCorrection: " << m_finderCfg.beamSpotCorrection);
419 ATH_MSG_DEBUG( "connectorInputFile: " << m_connectorInputFile.value());
420 ATH_MSG_DEBUG( "lutInputFile: " << m_lutFile.value());
421 ATH_MSG_DEBUG( "LRTmode: " << m_LRTmode.value());
422 ATH_MSG_DEBUG( "useStripConnections: " << m_finderCfg.useStripConnections);
423 ATH_MSG_DEBUG( "useClusterWidthCuts: " << m_finderCfg.useClusterWidthCuts);
424 ATH_MSG_DEBUG( "matchBeforeCreate: " << m_finderCfg.matchBeforeCreate);
425 ATH_MSG_DEBUG( "useOldTuningsCurvature: " << m_finderCfg.useOldTuningsCurvature);
426 ATH_MSG_DEBUG( "useOldTuningsPhiWindow: " << m_finderCfg.useOldTuningsPhiWindow);
427 ATH_MSG_DEBUG( "minSeedLevel: " << m_finderCfg.minSeedLevel);
428 ATH_MSG_DEBUG( "tauRatioPrecut: " << m_finderCfg.tauRatioPrecut);
429 ATH_MSG_DEBUG( "tauRatioCut: " << m_finderCfg.tauRatioCut);
430 ATH_MSG_DEBUG( "tauRatioCorr: " << m_finderCfg.tauRatioCorr);
431 ATH_MSG_DEBUG( "etaBinWidthOverride: " << m_etaBinWidthOverride.value());
432 ATH_MSG_DEBUG( "nMaxPhiSlice: " << m_finderCfg.nMaxPhiSlice);
433 ATH_MSG_DEBUG( "minPt: " << m_finderCfg.minPt);
434 ATH_MSG_DEBUG( "useEtaBinning: " << m_finderCfg.useEtaBinning);
435 ATH_MSG_DEBUG( "doubletFilterRZ: " << m_finderCfg.doubletFilterRZ);
436 ATH_MSG_DEBUG( "nMaxEdges: " << m_finderCfg.nMaxEdges);
437 ATH_MSG_DEBUG( "minDeltaRadius: " << m_finderCfg.minDeltaRadius);
438 ATH_MSG_DEBUG( "edgeMaskMinEta: " << m_finderCfg.edgeMaskMinEta);
439 ATH_MSG_DEBUG( "hitShareThreshold: " << m_finderCfg.hitShareThreshold);
440 ATH_MSG_DEBUG( "maxEndcapClusterWidth: " << m_finderCfg.maxEndcapClusterWidth);
441 ATH_MSG_DEBUG( "d0Max: " << m_finderCfg.d0Max);
442 ATH_MSG_DEBUG("maxZ0: " << m_finderCfg.maxZ0);
443 ATH_MSG_DEBUG("minZ0: " << m_finderCfg.minZ0);
444 ATH_MSG_DEBUG( "validateTriplets: " << m_finderCfg.validateTriplets);
445 ATH_MSG_DEBUG( "useAdaptiveCuts: " << m_finderCfg.useAdaptiveCuts);
446 ATH_MSG_DEBUG( "addTriplets: " << m_finderCfg.addTriplets);
447 ATH_MSG_DEBUG( "maxEtaAddTriplets: " << m_finderCfg.maxAbsEtaAddTriplets);
448 ATH_MSG_DEBUG("cutDphiMax: " << m_finderCfg.cutDPhiMax);
449 ATH_MSG_DEBUG("cutDCurvMax: " << m_finderCfg.cutDCurvMax);
450 ATH_MSG_DEBUG("minDeltaPhi: " << m_finderCfg.minDeltaPhi);
451 ATH_MSG_DEBUG("maxOuterRadius: " << m_finderCfg.maxOuterRadius);
452
453 ATH_MSG_DEBUG("===== GBTS filter config =====");
454 ATH_MSG_DEBUG( "sigmaMS: " << m_filterCfg.sigmaMS);
455 ATH_MSG_DEBUG( "radLen: " << m_filterCfg.radLen);
456 ATH_MSG_DEBUG( "sigmaX: " << m_filterCfg.sigmaX);
457 ATH_MSG_DEBUG( "sigmaY: " << m_filterCfg.sigmaY);
458 ATH_MSG_DEBUG( "weightX: " << m_filterCfg.weightX);
459 ATH_MSG_DEBUG( "weightY: " << m_filterCfg.weightY);
460 ATH_MSG_DEBUG( "maxDChi2X: " << m_filterCfg.maxDChi2X);
461 ATH_MSG_DEBUG( "maxDChi2Y: " << m_filterCfg.maxDChi2Y);
462 ATH_MSG_DEBUG( "addHit: " << m_filterCfg.addHit);
463 ATH_MSG_DEBUG( "maxCurvature: " << m_filterCfg.maxCurvature);
464 ATH_MSG_DEBUG( "filterMaxZ0: " << m_filterCfg.maxZ0);
465}
Gaudi::Property< std::string > m_connectorInputFile
Gaudi::Property< std::string > m_lutFile

◆ readConnections()

StatusCode ActsTrk::GbtsSeedingTool::readConnections ( const std::vector< Acts::Experimental::GbtsLayerDescription > & layers,
std::vector< Acts::Experimental::GbtsLayerConnection > & connections,
float & etaBinWidth ) const
private

Reads the connection table and keeps the connections this pass is for: both layers have to be layers this detector has, of one technology, and that technology has to be one the pass asked for.

Parameters
connectionsfilled with the layer pairs, in stage order
etaBinWidthfilled with the eta bin width the table was made for

Definition at line 227 of file GbtsSeedingTool.cxx.

231 {
232 std::ifstream connectionStream(m_connectorInputFile.value());
233 if (!connectionStream.is_open()) {
234 ATH_MSG_ERROR("Cannot open the GBTS connection table "
235 << m_connectorInputFile.value());
236 return StatusCode::FAILURE;
237 }
238
239 GbtsConnectionTable::ReadResult table;
240 try {
241 table = GbtsConnectionTable::read(connectionStream);
242 } catch (const std::exception& e) {
243 ATH_MSG_ERROR("Cannot read " << m_connectorInputFile.value() << ": "
244 << e.what());
245 return StatusCode::FAILURE;
246 }
247
248 // the table names a layer by its id, the layer tool by its dense index
249 std::unordered_map<std::uint32_t, Acts::Experimental::GbtsLayerTechnology>
250 layerTechnologies;
251 layerTechnologies.reserve(layers.size());
252 for (const Acts::Experimental::GbtsLayerDescription& layer : layers) {
253 layerTechnologies.emplace(static_cast<std::uint32_t>(layer.id),
254 layer.technology);
255 }
256
257 etaBinWidth = table.etaBinWidth;
258
259 // the stage column only fixes the order the connections are handed over in
260 std::vector<std::pair<std::uint32_t, Acts::Experimental::GbtsLayerConnection>> staged;
261 staged.reserve(table.connections.size());
262
263 std::size_t nOtherTechnology = 0;
264 std::size_t nUnknownLayer = 0;
265
266 for (const GbtsConnectionTable::Connection& connection :
267 table.connections) {
268 const auto src = layerTechnologies.find(connection.src);
269 const auto dst = layerTechnologies.find(connection.dst);
270 if (src == layerTechnologies.end() || dst == layerTechnologies.end()) {
271 ++nUnknownLayer;
272 continue;
273 }
274
275 // GBTS pairs a layer only with one of its own technology
276 const bool wanted = src->second == dst->second &&
277 (src->second ==
278 Acts::Experimental::GbtsLayerTechnology::Pixel
279 ? m_pixelConnections.value()
280 : m_stripConnections.value());
281 if (!wanted) {
282 ++nOtherTechnology;
283 continue;
284 }
285
286 staged.emplace_back(connection.stage,
287 Acts::Experimental::GbtsLayerConnection{connection.src,
288 connection.dst});
289 }
290
291 std::ranges::stable_sort(staged, {}, [](const auto& entry) { return entry.first; });
292
293 connections.clear();
294 connections.reserve(staged.size());
295 for (const auto& entry : staged) {
296 connections.push_back(entry.second);
297 }
298 const std::size_t nKept = connections.size();
299
300 if (nUnknownLayer != 0) {
301 ATH_MSG_WARNING(nUnknownLayer << " connections of "
302 << m_connectorInputFile.value() << " name no GBTS layer "
303 "and were dropped");
304 }
305 if (nKept == 0) {
306 ATH_MSG_ERROR("None of the connections of "
307 << m_connectorInputFile.value() << " are usable: the table "
308 "does not match the detector this job is reconstructing");
309 return StatusCode::FAILURE;
310 }
311 ATH_MSG_DEBUG("Kept " << nKept << " GBTS layer connections, dropping "
312 << nOtherTechnology << " of a technology not asked for, eta bin width "
313 << etaBinWidth);
314
315 return StatusCode::SUCCESS;
316 }
Gaudi::Property< bool > m_pixelConnections
ReadResult read(std::istream &inputStream)
Read the GBTS layer connection table.

◆ readTauLookupTable()

StatusCode ActsTrk::GbtsSeedingTool::readTauLookupTable ( Acts::Experimental::detail::GbtsTauLookupTable & tauLookupTable) const
private

Reads the tau lookup table the cluster width cuts need: per line a cluster width, the bulk tau bounds and the near-edge ones.

Definition at line 318 of file GbtsSeedingTool.cxx.

320 {
321 std::ifstream lutStream(m_lutFile.value());
322 if (!lutStream.is_open()) {
323 ATH_MSG_ERROR("Cannot open the GBTS tau lookup table " << m_lutFile.value());
324 return StatusCode::FAILURE;
325 }
326
327 tauLookupTable.clear();
328
329 // the width is dropped: a row is located by index, one row per
330 // tauLutBinWidth of cluster width, never searched
331 float clusterWidth = 0.0f;
332 Acts::Experimental::detail::GbtsTauBounds bounds;
333 while (lutStream >> clusterWidth >> bounds.minTau >> bounds.maxTau >>
334 bounds.minTauNearEdge >> bounds.maxTauNearEdge) {
335 tauLookupTable.push_back(bounds);
336 }
337
338 if (!lutStream.eof()) {
339 // ended on a parse error, not on a clean end of file
340 ATH_MSG_ERROR("Malformed GBTS tau lookup table " << m_lutFile.value());
341 return StatusCode::FAILURE;
342 }
343 if (tauLookupTable.empty()) {
344 ATH_MSG_ERROR("The GBTS tau lookup table " << m_lutFile.value() << " is empty");
345 return StatusCode::FAILURE;
346 }
347
348 ATH_MSG_DEBUG("Read " << tauLookupTable.size() << " rows of the GBTS tau lookup table "
349 << m_lutFile.value());
350
351 return StatusCode::SUCCESS;
352 }

Member Data Documentation

◆ m_addHit

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_addHit {this, "addHit", 14.0, "reward added to tracks for each accepted hit before chi2"}
private

Definition at line 172 of file GbtsSeedingTool.h.

172{this, "addHit", 14.0, "reward added to tracks for each accepted hit before chi2"};

◆ m_addTriplets

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_addTriplets {this, "addTriplets", false, "add seeds with three spacepoints in a defined eta region"}
private

Definition at line 135 of file GbtsSeedingTool.h.

135{this, "addTriplets", false, "add seeds with three spacepoints in a defined eta region"};

◆ m_beamSpotCorrection

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_beamSpotCorrection {this, "beamSpotCorrection", true, "apply primary vertex corrections to spacepoints"}
private

Definition at line 132 of file GbtsSeedingTool.h.

132{this, "beamSpotCorrection", true, "apply primary vertex corrections to spacepoints"};

◆ m_connectorInputFile

Gaudi::Property<std::string> ActsTrk::GbtsSeedingTool::m_connectorInputFile {this, "connectorInputFile","binTables_ITK_RUN4.txt", "input file for making connector object"}
private

Definition at line 117 of file GbtsSeedingTool.h.

117{this, "connectorInputFile","binTables_ITK_RUN4.txt", "input file for making connector object"};

◆ m_cutDCurvMax

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_cutDCurvMax {this, "cutDCurvMax", 0.001f, "not sure"}
private

Definition at line 151 of file GbtsSeedingTool.h.

151{this, "cutDCurvMax", 0.001f, "not sure"};

◆ m_cutDPhiMax

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_cutDPhiMax {this, "cutDPhiMax", 0.012f, "not sure"}
private

Definition at line 150 of file GbtsSeedingTool.h.

150{this, "cutDPhiMax", 0.012f, "not sure"};

◆ m_d0Max

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_d0Max {this, "d0Max", 3.0, "maximum d0 value allowed when using validateTiplets"}
private

Definition at line 161 of file GbtsSeedingTool.h.

161{this, "d0Max", 3.0, "maximum d0 value allowed when using validateTiplets"};

◆ m_doubletFilterRZ

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_doubletFilterRZ {this, "doubletFilterRZ",true, "bool applies new Z cuts on doublets"}
private

Definition at line 137 of file GbtsSeedingTool.h.

137{this, "doubletFilterRZ",true, "bool applies new Z cuts on doublets"};

◆ m_edgeMaskMinEta

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_edgeMaskMinEta {this, "edgeMaskMinEta", 1.5, "minimum eta allowed for masking edges in graph so they are not used again"}
private

Definition at line 175 of file GbtsSeedingTool.h.

175{this, "edgeMaskMinEta", 1.5, "minimum eta allowed for masking edges in graph so they are not used again"};

◆ m_etaBinWidthOverride

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_etaBinWidthOverride {this, "etaBinOverride", 0.0f, "apply custom binning for connections"}
private

Definition at line 139 of file GbtsSeedingTool.h.

139{this, "etaBinOverride", 0.0f, "apply custom binning for connections"};

◆ m_filter

std::optional<Acts::Experimental::GbtsTrackingFilter> ActsTrk::GbtsSeedingTool::m_filter
private

the seed filter

Definition at line 103 of file GbtsSeedingTool.h.

◆ m_filterCfg

Acts::Experimental::GbtsTrackingFilter::Config ActsTrk::GbtsSeedingTool::m_filterCfg
private

steering for track filter

Definition at line 97 of file GbtsSeedingTool.h.

◆ m_filterMaxZ0

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_filterMaxZ0 {this, "filterMaxZ0", 170.0, "maximum z0 allowed for candidate tracklet"}
private

Definition at line 174 of file GbtsSeedingTool.h.

174{this, "filterMaxZ0", 170.0, "maximum z0 allowed for candidate tracklet"};

◆ m_finder

std::optional<Acts::Experimental::GraphBasedTrackSeeder> ActsTrk::GbtsSeedingTool::m_finder
private

the actual seed fining algorithm

Definition at line 100 of file GbtsSeedingTool.h.

◆ m_finderCfg

Acts::Experimental::GraphBasedTrackSeeder::Config ActsTrk::GbtsSeedingTool::m_finderCfg
private

steering for seeding algorithm

Definition at line 94 of file GbtsSeedingTool.h.

◆ m_hitShareThreshold

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_hitShareThreshold {this, "hitShareThreshold", 0.49, "threshold of hits that are shared between seeds before one seed is labelled a clone"}
private

Definition at line 176 of file GbtsSeedingTool.h.

176{this, "hitShareThreshold", 0.49, "threshold of hits that are shared between seeds before one seed is labelled a clone"};

◆ m_internalRoi

std::optional<Acts::Experimental::GbtsRoiDescriptor> ActsTrk::GbtsSeedingTool::m_internalRoi
private

region of interest for pixel seeding

Definition at line 106 of file GbtsSeedingTool.h.

◆ m_layerTool

ToolHandle<IGbtsLayerTool> ActsTrk::GbtsSeedingTool::m_layerTool {this, "layerTool", "ActsTrk::GbtsLayerTool/ActsGbtsLayerTool"}
private

Builds the GBTS layers out of the ITk readout geometry.

Definition at line 114 of file GbtsSeedingTool.h.

114{this, "layerTool", "ActsTrk::GbtsLayerTool/ActsGbtsLayerTool"};

◆ m_logger

std::unique_ptr<const Acts::Logger> ActsTrk::GbtsSeedingTool::m_logger
private

logging instance

Definition at line 91 of file GbtsSeedingTool.h.

◆ m_LRTmode

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_LRTmode {this, "LRTmode", false, "whether strip or pixel hits are used"}
private

Definition at line 128 of file GbtsSeedingTool.h.

128{this, "LRTmode", false, "whether strip or pixel hits are used"};

◆ m_lutFile

Gaudi::Property<std::string> ActsTrk::GbtsSeedingTool::m_lutFile {this, "lutInputFile", "gbts_ml_pixel_barrel_loose.lut", "file to LUT"}
private

Definition at line 120 of file GbtsSeedingTool.h.

120{this, "lutInputFile", "gbts_ml_pixel_barrel_loose.lut", "file to LUT"};

◆ m_matchBeforeCreate

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_matchBeforeCreate {this, "matchBeforeCreate", true, "need to check what this does"}
private

Definition at line 130 of file GbtsSeedingTool.h.

130{this, "matchBeforeCreate", true, "need to check what this does"};

◆ m_maxCurvature

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxCurvature {this, "maxCurvature", 1e-3f, "maximum curvature allowed for candiadte tracklet"}
private

Definition at line 173 of file GbtsSeedingTool.h.

173{this, "maxCurvature", 1e-3f, "maximum curvature allowed for candiadte tracklet"};

◆ m_maxDChi2X

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxDChi2X {this, "maxDChi2X", 5.0, "gate threshold for chi2 test"}
private

Definition at line 170 of file GbtsSeedingTool.h.

170{this, "maxDChi2X", 5.0, "gate threshold for chi2 test"};

◆ m_maxDChi2Y

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxDChi2Y {this, "maxDChi2Y", 6.0, "gate threshold for chi2 test"}
private

Definition at line 171 of file GbtsSeedingTool.h.

171{this, "maxDChi2Y", 6.0, "gate threshold for chi2 test"};

◆ m_maxEndcapClusterwidth

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxEndcapClusterwidth {this, "maxEndcapClusterwidth", 0.35, "discards any spacepoints which dr/dz cant be accurately modelled"}
private

Definition at line 179 of file GbtsSeedingTool.h.

179{this, "maxEndcapClusterwidth", 0.35, "discards any spacepoints which dr/dz cant be accurately modelled"};

◆ m_maxEtaAddTriplets

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxEtaAddTriplets {this, "maxEtaAddTriplets", 1.5, "eta region in which three sapcepoint seeds are allowed"}
private

Definition at line 147 of file GbtsSeedingTool.h.

147{this, "maxEtaAddTriplets", 1.5, "eta region in which three sapcepoint seeds are allowed"};

◆ m_maxOuterRadius

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxOuterRadius {this, "maxOuterRadius", 550.0f, "not sure"}
private

Definition at line 153 of file GbtsSeedingTool.h.

153{this, "maxOuterRadius", 550.0f, "not sure"};

◆ m_maxZ0

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_maxZ0 {this, "maxZ0", -99999, "not sure"}
private

Definition at line 158 of file GbtsSeedingTool.h.

158{this, "maxZ0", -99999, "not sure"};

◆ m_minDeltaPhi

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minDeltaPhi {this, "minDeltaPhi", 0.001f, "not sure"}
private

Definition at line 152 of file GbtsSeedingTool.h.

152{this, "minDeltaPhi", 0.001f, "not sure"};

◆ m_minDeltaRadius

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minDeltaRadius {this, "minDeltaRadius",2.0, " min dr for doublet"}
private

Definition at line 148 of file GbtsSeedingTool.h.

148{this, "minDeltaRadius",2.0, " min dr for doublet"};

◆ m_minPt

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minPt {this, "minPt", 1000.0, "Lower cutoff for seeds"}
private

Definition at line 146 of file GbtsSeedingTool.h.

146{this, "minPt", 1000.0, "Lower cutoff for seeds"};

◆ m_minZ0

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_minZ0 {this, "minZ0", -99999, "not sure"}
private

Definition at line 157 of file GbtsSeedingTool.h.

157{this, "minZ0", -99999, "not sure"};

◆ m_nMaxEdges

Gaudi::Property<int> ActsTrk::GbtsSeedingTool::m_nMaxEdges {this, "MaxEdges",3000000, " max number of Gbts edges/doublets"}
private

Definition at line 149 of file GbtsSeedingTool.h.

149{this, "MaxEdges",3000000, " max number of Gbts edges/doublets"};

◆ m_nMaxPhiSlice

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_nMaxPhiSlice {this, "nMaxPhiSlice",53, "used to calculate phi slices"}
private

Definition at line 140 of file GbtsSeedingTool.h.

140{this, "nMaxPhiSlice",53, "used to calculate phi slices"};

◆ m_pixelConnections

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_pixelConnections {this, "usePixelConnections", true, "keep the pixel to pixel connections of the table"}
private

Definition at line 118 of file GbtsSeedingTool.h.

118{this, "usePixelConnections", true, "keep the pixel to pixel connections of the table"};

◆ m_pixelHashToLayer

const std::vector<short>* ActsTrk::GbtsSeedingTool::m_pixelHashToLayer = nullptr
private

Definition at line 111 of file GbtsSeedingTool.h.

◆ m_radLen

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_radLen {this, "radLen", 0.025, "defines how much material scattering the kalman filter should take into account"}
private

Definition at line 165 of file GbtsSeedingTool.h.

165{this, "radLen", 0.025, "defines how much material scattering the kalman filter should take into account"};

◆ m_sigmaMS

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_sigmaMS {this, "sigmaMS", 0.016, "process noise from multiple scattering"}
private

Definition at line 164 of file GbtsSeedingTool.h.

164{this, "sigmaMS", 0.016, "process noise from multiple scattering"};

◆ m_sigmaX

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_sigmaX {this, "sigmaX", 0.08, "measurement resolution for residual on y direction"}
private

Definition at line 166 of file GbtsSeedingTool.h.

166{this, "sigmaX", 0.08, "measurement resolution for residual on y direction"};

◆ m_sigmaY

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_sigmaY {this, "sigmaY", 0.25, "measurement resolution on r-z plane"}
private

Definition at line 167 of file GbtsSeedingTool.h.

167{this, "sigmaY", 0.25, "measurement resolution on r-z plane"};

◆ m_stripConnections

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_stripConnections {this, "useStripConnections", false, "keep the strip to strip connections of the table"}
private

Definition at line 119 of file GbtsSeedingTool.h.

119{this, "useStripConnections", false, "keep the strip to strip connections of the table"};

◆ m_stripHashToLayer

const std::vector<short>* ActsTrk::GbtsSeedingTool::m_stripHashToLayer = nullptr
private

Wafer hash to dense GBTS layer index, one map per technology.

Used to put a space point on the layer its module belongs to.

Definition at line 110 of file GbtsSeedingTool.h.

◆ m_tauRatioCorr

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tauRatioCorr {this, "tauRatioCorrection", 0.006, "correction added to tau accpetance if candidate edge skips a layer"}
private

Definition at line 145 of file GbtsSeedingTool.h.

145{this, "tauRatioCorrection", 0.006, "correction added to tau accpetance if candidate edge skips a layer"};

◆ m_tauRatioCut

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tauRatioCut {this, "tauRatioCut",0.007, "tau cut for doublets and triplets"}
private

Definition at line 143 of file GbtsSeedingTool.h.

143{this, "tauRatioCut",0.007, "tau cut for doublets and triplets"};

◆ m_tauRatioPrecut

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_tauRatioPrecut {this, "precutTauRatioMax",0.009f, "used to reject edges early if matchBeforCreate is on"}
private

Definition at line 144 of file GbtsSeedingTool.h.

144{this, "precutTauRatioMax",0.009f, "used to reject edges early if matchBeforCreate is on"};

◆ m_useAdaptiveCuts

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useAdaptiveCuts {this, "UseAdaptiveCuts", true, "allows for larger accpetance of candidate edges that skip layers"}
private

Definition at line 134 of file GbtsSeedingTool.h.

134{this, "UseAdaptiveCuts", true, "allows for larger accpetance of candidate edges that skip layers"};

◆ m_useEtaBinning

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useEtaBinning {this, "useEtaBinning",true, "bool to use eta binning from geometry structure"}
private

Definition at line 136 of file GbtsSeedingTool.h.

136{this, "useEtaBinning",true, "bool to use eta binning from geometry structure"};

◆ m_useML

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useML {this, "useML", true, "use the cluster width of the spacepoint"}
private

Definition at line 129 of file GbtsSeedingTool.h.

129{this, "useML", true, "use the cluster width of the spacepoint"};

◆ m_useOldTunings

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useOldTunings {this, "useOldTunings", false, "use the tunings for 900MeV cut"}
private

Definition at line 131 of file GbtsSeedingTool.h.

131{this, "useOldTunings", false, "use the tunings for 900MeV cut"};

◆ m_usePixelLayers

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_usePixelLayers {this, "usePixelLayers", true, "seed on the pixel layers"}
private

Which technologies this instance seeds on.

A space point is used only when its layer is enabled.

Definition at line 124 of file GbtsSeedingTool.h.

124{this, "usePixelLayers", true, "seed on the pixel layers"};

◆ m_useStripLayers

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_useStripLayers {this, "useStripLayers", false, "seed on the strip layers"}
private

Definition at line 125 of file GbtsSeedingTool.h.

125{this, "useStripLayers", false, "seed on the strip layers"};

◆ m_validateTriplets

Gaudi::Property<bool> ActsTrk::GbtsSeedingTool::m_validateTriplets {this, "ValidateTriplets", true, "extra validation on pT and d0 performed to connected barrel edges"}
private

Definition at line 133 of file GbtsSeedingTool.h.

133{this, "ValidateTriplets", true, "extra validation on pT and d0 performed to connected barrel edges"};

◆ m_weightX

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_weightX {this, "weightX", 0.5, "penalty weight for track"}
private

Definition at line 168 of file GbtsSeedingTool.h.

168{this, "weightX", 0.5, "penalty weight for track"};

◆ m_weightY

Gaudi::Property<float> ActsTrk::GbtsSeedingTool::m_weightY {this, "weightY", 0.5, "penalty weight for track"}
private

Definition at line 169 of file GbtsSeedingTool.h.

169{this, "weightY", 0.5, "penalty weight for track"};

The documentation for this class was generated from the following files: