ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::TrackFindingGNNAlg Class Reference

#include <TrackFindingGNNAlg.h>

Inheritance diagram for ActsTrk::TrackFindingGNNAlg:
Collaboration diagram for ActsTrk::TrackFindingGNNAlg:

Public Member Functions

 TrackFindingGNNAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TrackFindingGNNAlg ()
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

const Acts::Logger & logger () const
 Private access to the logger.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< GenericMonitoringToolm_monTool
ToolHandle< ActsTrk::IExtrapolationToolm_extrapolationTool
PublicToolHandle< ITrackingGeometryToolm_trackingGeometryTool
ToolHandle< ActsTrk::ITrackParamsEstimationToolm_paramEstimationTool
ToolHandle< ActsTrk::IFitterToolm_fitterTool
ServiceHandle< IChronoStatSvc > m_chronoSvc {"ChronoStatSvc", name()}
detail::xAODUncalibMeasSurfAcc m_uncalibMeasSurfAccessor {}
detail::OnTrackCalibrator< ActsTrk::MutableTrackStateBackendm_uncalibMeasCalibrator {}
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodPixelSpacePointContainerKey
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodStripSpacePointContainerKey
SG::ReadHandleKey< xAOD::SpacePointContainerm_xaodStripSpacePointOverlapContainerKey
SG::WriteHandleKey< ActsTrk::TrackContainerm_trackContainerKey
Gaudi::Property< unsigned int > m_maxPropagationStep
Gaudi::Property< std::string > m_moduleMapPath
Gaudi::Property< std::string > m_gnnPath
Gaudi::Property< bool > m_usePhiOverlapSps
Gaudi::Property< unsigned int > m_maxGpuInstances
Gaudi::Property< unsigned int > m_numTrtContexts
Gaudi::Property< double > m_varianceInflation
Gaudi::Property< bool > m_tightSeeds
Gaudi::Property< double > m_edgeCut
Gaudi::Property< unsigned int > m_minCandidateMeasurements
Gaudi::Property< double > m_minDeltaR
Gaudi::Property< bool > m_relaxCentralHoleSel
Gaudi::Property< bool > m_relaxMeasurementSel
Gaudi::Property< bool > m_offlineZ0Sel
Gaudi::Property< int > m_cudaDeviceIndex
std::unique_ptr< ActsPlugins::GnnPipeline > m_gnnPipeline
const SCT_IDm_stripIdHelper = nullptr
Acts::TrackSelector::EtaBinnedConfig m_trackSelectorConfig
std::unique_ptr< const Acts::Logger > m_logger
 logging instance
std::optional< std::counting_semaphore<> > m_gpuInstanceCount ATLAS_THREAD_SAFE {}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 66 of file TrackFindingGNNAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TrackFindingGNNAlg()

ActsTrk::TrackFindingGNNAlg::TrackFindingGNNAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 77 of file TrackFindingGNNAlg.cxx.

79 : AthReentrantAlgorithm(name, pSvcLocator) {}

◆ ~TrackFindingGNNAlg()

ActsTrk::TrackFindingGNNAlg::~TrackFindingGNNAlg ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

62{
63 return 0;
64}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode ActsTrk::TrackFindingGNNAlg::execute ( const EventContext & ctx) const
overridevirtual

m_usePhiOverlapSps.value() &&

Definition at line 221 of file TrackFindingGNNAlg.cxx.

221 {
222 ACTS_DEBUG("TrackFindingGNNAlg::execute() - begin");
223
224 std::optional<Athena::Chrono> timer;
225 timer.emplace("GNN get spacepoint handles", m_chronoSvc.get());
226
227 Acts::GeometryContext gctx =
228 m_trackingGeometryTool->getGeometryContext(ctx).context();
229 Acts::MagneticFieldContext mctx =
230 m_extrapolationTool->getMagneticFieldContext(ctx);
231 Acts::CalibrationContext cctx = ActsTrk::getCalibrationContext(ctx);
232
233 auto detElToGeoIdMap = m_trackingGeometryTool->surfaceIdMap();
234
235 // Build features
236 auto pixelSPHandle = SG::makeHandle(m_xaodPixelSpacePointContainerKey, ctx);
237 ATH_CHECK(pixelSPHandle.isValid());
238 const auto &pixelSPContainer = *pixelSPHandle.cptr();
239
240 auto stripSPHandle = SG::makeHandle(m_xaodStripSpacePointContainerKey, ctx);
241 ATH_CHECK(stripSPHandle.isValid());
242 const auto &stripSPContainer = *stripSPHandle.cptr();
243
244 auto stripSPOVHandle =
246 ATH_CHECK(stripSPOVHandle.isValid());
247 const auto &stripSPOVContainer = *stripSPOVHandle.cptr();
248
249 constexpr std::size_t nFeatures = 12;
250 std::size_t nSP = pixelSPContainer.size() + stripSPContainer.size() +
251 stripSPOVContainer.size();
252
253 ACTS_DEBUG("Number spacepoints: "
254 << nSP << " (" << "pixel: " << pixelSPContainer.size() << ", "
255 << "strip: " << stripSPContainer.size() << ", "
256 << "strip overlap: " << stripSPOVContainer.size() << ")");
257
258
259 timer.emplace("GNN extract data", m_chronoSvc.get());
260
261 std::vector<std::uint64_t> moduleIds;
262 moduleIds.reserve(nSP);
263 std::vector<const xAOD::SpacePoint *> allSPPtrs;
264 allSPPtrs.reserve(nSP);
265 std::vector<Acts::GeometryIdentifier> geoIds, sortedGeoIds(nSP);
266 geoIds.reserve(nSP);
267
268 std::size_t skipped = 0;
269 for (const auto &spc :
270 {pixelSPContainer, stripSPContainer, stripSPOVContainer}) {
271 for (auto sp : spc) {
272 auto cl1 = sp->measurements().front();
273 auto geoIdCl1 =
274 ActsTrk::getSurfaceGeometryIdOfMeasurement(*detElToGeoIdMap, *cl1);
275 Identifier atlasIdCl1(static_cast<Identifier::value_type>(cl1->identifier()));
276
277 if ( sp->measurements().size() == 2) {
278 auto cl2 = sp->measurements().at(1);
279 Identifier atlasIdCl2(static_cast<Identifier::value_type>(cl2->identifier()));
280
281 auto overlapFlag =
282 compute_overlap_SP_flag(m_stripIdHelper->eta_module(atlasIdCl1),
283 m_stripIdHelper->phi_module(atlasIdCl1),
284 m_stripIdHelper->eta_module(atlasIdCl2),
285 m_stripIdHelper->phi_module(atlasIdCl2));
286
287 if (overlapFlag == 2 || overlapFlag == 3) {
288 skipped++;
289 ACTS_VERBOSE("Skip phi overlap spacepoint (flag=" << overlapFlag
290 << ")");
291 continue;
292 }
293 }
294
295 geoIds.push_back(geoIdCl1);
296 moduleIds.push_back(atlasIdCl1.get_compact());
297 allSPPtrs.push_back(sp);
298 }
299 }
300
301 ACTS_DEBUG("Skipped " << skipped << " SPs because of phi overlap");
302 nSP = allSPPtrs.size();
303 ACTS_DEBUG("Keep " << nSP << " SPs for feature creation");
304
305 timer.emplace("GNN build input tensor", m_chronoSvc.get());
306
307 std::vector<std::size_t> idxs(nSP);
308 std::iota(idxs.begin(), idxs.end(), 0);
309
310 std::ranges::sort(
311 idxs, [&](auto a, auto b) { return moduleIds.at(a) < moduleIds.at(b); });
312 std::ranges::sort(moduleIds);
313
314 std::vector<float> features(nFeatures * nSP);
315 std::vector<boost::container::static_vector<Acts::SourceLink, 2>> sourceLinks(
316 nSP);
317 std::vector<int> id(nSP);
318
319 for (auto k = 0ul; k < nSP; k++) {
320 id.at(k) = k;
321 auto i = idxs.at(k);
322
323 std::span<float> f(features.data() + k * nFeatures, nFeatures);
324 const auto &sp = *allSPPtrs.at(i);
325
326 using namespace Acts::VectorHelpers;
327 using namespace Acts::AngleHelpers;
328
329 Acts::Vector3 spp{sp.x(), sp.y(), sp.z()};
330
331 if (sp.measurements().size() == 1) {
332 for (auto j = 0ul; j < nFeatures; j += 4) {
333 f[j + 0] = perp(spp) / 1000.f;
334 f[j + 1] = phi(spp) / std::numbers::pi_v<float>;
335 f[j + 2] = sp.z() / 1000.f;
336 f[j + 3] = eta(spp);
337 }
338 } else {
339 std::size_t j = 0;
340 f[j + 0] = perp(spp) / 1000.f;
341 f[j + 1] = phi(spp) / std::numbers::pi_v<float>;
342 f[j + 2] = sp.z() / 1000.f;
343 f[j + 3] = eta(spp);
344
345 for (auto m : sp.measurements()) {
346 auto cl = static_cast<const xAOD::StripCluster *>(m);
347 auto gp = cl->globalPosition();
348 j += 4;
349 f[j + 0] = perp(gp) / 1000.f;
350 f[j + 1] = phi(gp) / std::numbers::pi_v<float>;
351 f[j + 2] = gp.z() / 1000.f;
352 f[j + 3] = eta(gp);
353 }
354 }
355
356 for (const xAOD::UncalibratedMeasurement* m : sp.measurements()) {
357 sourceLinks.at(k).push_back(detail::MeasurementCalibratorBase::pack(m));
358 }
359
360 sortedGeoIds.at(k) = geoIds.at(i);
361 }
362
363 timer.reset();
364 timer.emplace("GNN inference", m_chronoSvc.get());
365
366 m_gpuInstanceCount->acquire();
367 auto candidates =
368 m_gnnPipeline->run(features, moduleIds, id, ActsPlugins::Device::Cuda(m_cudaDeviceIndex.value()));
369 m_gpuInstanceCount->release();
370
371 ACTS_DEBUG("Have " << candidates.size() << " candidates after GNN");
372
373 // Remove candidates if they either have less then the configured amount of measurements, or no pixel hit
374 auto candidateSelector = [&](const std::vector<int> &c) {
375 bool tooFewMeasurements = std::accumulate(c.begin(), c.end(), 0ul, [&](auto sum, auto spi) {
376 return sum + allSPPtrs.at(spi)->measurements().size();
377 }) < m_minCandidateMeasurements.value();
378 bool noPixelHits = !std::ranges::any_of(c, [&](auto spi) { return allSPPtrs.at(spi)->measurements().size() == 1; });
379 return tooFewMeasurements || noPixelHits;
380 };
381
382 candidates.erase(std::remove_if(candidates.begin(), candidates.end(), candidateSelector),
383 candidates.end());
384 ACTS_DEBUG("Candidates left with >= " << m_minCandidateMeasurements.value()
385 << " measurements: " << candidates.size());
386
387 timer.reset();
388 timer.emplace("GNN parameter estimation + fit", m_chronoSvc.get());
389
390 Acts::VectorTrackContainer trackBackend;
391 Acts::VectorMultiTrajectory trackStateBackend;
392 constexpr std::size_t nTracksExpected = 3000;
393 trackBackend.reserve(nTracksExpected);
394 trackStateBackend.reserve(nTracksExpected * 30);
395 detail::RecoTrackContainer tracks(trackBackend, trackStateBackend);
396
397 // v45: Create SeedContainer to hold seeds (Seeds are now proxy objects)
398 ActsTrk::SeedContainer seedContainer;
399
400 auto makeSeedFromCandidate = [&](const std::vector<int> &cand) -> std::optional<boost::container::small_vector<const xAOD::SpacePoint*, 3>> {
401 // Select at least 3 SPs with deltaR spacing in cylindrical coordinates
402 boost::container::small_vector<const xAOD::SpacePoint*, 3> picked;
403 if (cand.empty()) return std::nullopt;
404 auto r_of = [&](const xAOD::SpacePoint* sp) {
405 Acts::Vector3 v{sp->x(), sp->y(), sp->z()};
406 return v.perp();
407 };
408 const xAOD::SpacePoint* last = allSPPtrs.at(cand.front());
409 picked.push_back(last);
410 for (std::size_t i = 1; i < cand.size() && picked.size() < 3; ++i) {
411 const xAOD::SpacePoint* sp = allSPPtrs.at(cand.at(i));
412 if (std::abs(r_of(sp) - r_of(last)) > m_minDeltaR.value()) {
413 picked.push_back(sp);
414 last = sp;
415 }
416 }
417 if (picked.size() < 3) return std::nullopt;
418 return picked;
419 };
420
421 auto retrieveSurface = [&](const ActsTrk::Seed& seed, bool useTopSp) -> const Acts::Surface& {
422 const xAOD::SpacePoint* sp = useTopSp ? seed.sp().front() : seed.sp().back();
423 auto geoId = ActsTrk::getSurfaceGeometryIdOfMeasurement(*detElToGeoIdMap, *sp->measurements().front());
424 const auto* surface = m_trackingGeometryTool->trackingGeometry()->findSurface(geoId);
425 if (!surface) {
426 throw std::runtime_error("retrieveSurface: no Acts surface for GeometryIdentifier " + std::to_string(geoId.value()));
427 }
428 return *surface;
429 };
430
431 auto R_of = [](const xAOD::SpacePoint* sp) {
432 return Acts::fastHypot(sp->x(), sp->y(), sp->z());
433 };
434
435 for (const auto &cand : candidates) {
436 auto pickedOpt = makeSeedFromCandidate(cand);
437 if (!pickedOpt.has_value()) continue;
438
439 auto picked = *pickedOpt;
440 std::sort(picked.begin(), picked.end(),
441 [&](const xAOD::SpacePoint* a, const xAOD::SpacePoint* b) {
442 return R_of(a) < R_of(b);
443 });
444 ActsTrk::Seed seed = seedContainer.push_back(
445 ActsTrk::SpacePointRange(picked.data(), picked.size()), 0.f, 0.f);
446
447 auto initialParamsOpt = m_paramEstimationTool->estimateTrackParameters(
448 seed, /*useTopSp=*/true, gctx, mctx, retrieveSurface);
449 if (!initialParamsOpt.has_value()) continue;
450
451 boost::container::small_vector<const xAOD::SpacePoint*, 16> sortedSP;
452 sortedSP.reserve(cand.size());
453 for (int spi : cand) sortedSP.push_back(allSPPtrs.at(spi));
454 std::sort(sortedSP.begin(), sortedSP.end(),
455 [&](const xAOD::SpacePoint* a, const xAOD::SpacePoint* b) {
456 return R_of(a) < R_of(b);
457 });
458
459 std::vector<const xAOD::UncalibratedMeasurement*> measList;
460 measList.reserve(sortedSP.size() * 2);
461 for (const xAOD::SpacePoint* sp : sortedSP) {
462 for (const xAOD::UncalibratedMeasurement* m : sp->measurements()) {
463 measList.push_back(m);
464 }
465 }
466
467 auto fitted = m_fitterTool->fit(measList, *initialParamsOpt, gctx, mctx, cctx);
468 if (fitted) {
469 for (auto track : *fitted) {
470 auto newTrack = tracks.makeTrack();
471 newTrack.copyFrom(track);
472 }
473 }
474 }
475
476 ACTS_DEBUG("After track fit: " << tracks.size() << " / " << candidates.size()
477 << " successfull");
478
479 // For single muon/electron case
480 if (candidates.size() == 1 && tracks.size() == 1) {
481 const auto &t = *tracks.begin();
482 ACTS_DEBUG("Single particle case: " << candidates.front().size() << " -> "
483 << t.nMeasurements()
484 << " measurements");
485 }
486
487 timer.reset();
488 timer.emplace("Track selection & conversion", m_chronoSvc.get());
489
490 Acts::VectorTrackContainer selTrackBackend;
491 selTrackBackend.reserve(trackBackend.size());
492 detail::RecoTrackContainer selectedTracks(selTrackBackend, trackStateBackend);
493
494 Acts::TrackSelector selector(m_trackSelectorConfig);
495 for (auto track : tracks) {
496 if (selector.isValidTrack(track)) {
497 auto newTrack = selectedTracks.makeTrack();
498
499 // v45: copyFrom now copies everything including tip/stem indices
500 newTrack.copyFrom(track);
501 }
502 }
503
504 ACTS_DEBUG("GNN cand: " << candidates.size() << ", fitted: " << tracks.size()
505 << ", selected: " << selectedTracks.size());
506
507 // Write tracks to storage again
508 Acts::ConstVectorTrackContainer constTrackBackend(std::move(selTrackBackend));
509 Acts::ConstVectorMultiTrajectory constTrackStateBackend(std::move(trackStateBackend));
510 std::unique_ptr<ActsTrk::TrackContainer> constTracksContainer
511 = std::make_unique<ActsTrk::TrackContainer>(std::move(constTrackBackend), std::move(constTrackStateBackend) );
512
513 ACTS_DEBUG("Storing track collection with key '" << m_trackContainerKey.key() << "'");
514 SG::WriteHandle<ActsTrk::TrackContainer> trackContainerHandle = SG::makeHandle(m_trackContainerKey, ctx);
515 ATH_CHECK(trackContainerHandle.record(std::move(constTracksContainer)));
516
517 return StatusCode::SUCCESS;
518}
Scalar eta() const
pseudorapidity method
Scalar perp() const
perp method - perpendicular length
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
static Double_t sp
static Double_t a
ToolHandle< ActsTrk::IFitterTool > m_fitterTool
Acts::TrackSelector::EtaBinnedConfig m_trackSelectorConfig
ToolHandle< ActsTrk::ITrackParamsEstimationTool > m_paramEstimationTool
std::unique_ptr< ActsPlugins::GnnPipeline > m_gnnPipeline
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodStripSpacePointOverlapContainerKey
SG::WriteHandleKey< ActsTrk::TrackContainer > m_trackContainerKey
PublicToolHandle< ITrackingGeometryTool > m_trackingGeometryTool
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodPixelSpacePointContainerKey
Gaudi::Property< unsigned int > m_minCandidateMeasurements
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
Gaudi::Property< double > m_minDeltaR
ServiceHandle< IChronoStatSvc > m_chronoSvc
SG::ReadHandleKey< xAOD::SpacePointContainer > m_xaodStripSpacePointContainerKey
Gaudi::Property< int > m_cudaDeviceIndex
static Acts::SourceLink pack(const Ptr_t &measurement)
Pack the measurement type pointer to an Acts::SourceLink including the intermediate conversion into a...
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory > RecoTrackContainer
Acts::GeometryIdentifier getSurfaceGeometryIdOfMeasurement(const DetectorElementToActsGeometryIdMap &detector_element_to_geoid, const xAOD::UncalibratedMeasurement &measurement)
Acts::CalibrationContext getCalibrationContext(const EventContext &ctx)
The Acts::Calibration context is piped through the Acts fitters to (re)calibrate the Acts::SourceLink...
int compute_overlap_SP_flag(const int &eta_module_cl1, const int &phi_module_cl1, const int &eta_module_cl2, const int &phi_module_cl2)
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
timer(name, disabled=False)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.
StripCluster_v1 StripCluster
Define the version of the strip cluster class.
UncalibratedMeasurement_v1 UncalibratedMeasurement
Define the version of the uncalibrated measurement class.
Seed push_back(SpacePointRange spacePoints, float quality, float vertexZ)

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

88{
89 // If we didn't find any symlinks to add, just return the collection
90 // from the base class. Otherwise, return the extended collection.
91 if (!m_extendedExtraObjects.empty()) {
93 }
95}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ initialize()

StatusCode ActsTrk::TrackFindingGNNAlg::initialize ( )
overridevirtual

Definition at line 85 of file TrackFindingGNNAlg.cxx.

85 {
86 // Athena tools
87 m_logger = makeActsAthenaLogger(this, "Acts GNN Algorithm");
88 ACTS_DEBUG("TrackFindingGNNAlg::initialize() - begin");
91 ATH_CHECK(m_trackContainerKey.initialize());
95 ATH_CHECK(m_trackContainerKey.initialize());
96 ATH_CHECK(m_chronoSvc.retrieve());
98 ATH_CHECK(m_fitterTool.retrieve());
99
101 detail::xAODUncalibMeasSurfAcc{m_trackingGeometryTool.get()};
105
106 // ACTS tools
107 ActsPlugins::ModuleMapCuda::Config gcCfg;
108 gcCfg.rScale = 1000.f;
109 gcCfg.zScale = 1000.f;
110 gcCfg.phiScale = std::numbers::pi_v<float>;
111 gcCfg.moduleMapPath = m_moduleMapPath.value();
112 gcCfg.gpuBlocks = 512;
113 std::shared_ptr<ActsPlugins::GraphConstructionBase> gc =
114 std::make_shared<ActsPlugins::ModuleMapCuda>(
115 gcCfg, m_logger->cloneWithSuffix("ModuleMap"));
116
117 std::shared_ptr<ActsPlugins::EdgeClassificationBase> gnn;
118 if (m_gnnPath.value().find(".onnx") != std::string::npos) {
119#ifdef ACTS_GNN_ONNX_BACKEND
120 ActsPlugins::OnnxEdgeClassifier::Config gnnCfg;
121 gnnCfg.modelPath = m_gnnPath.value();
122 gnnCfg.cut = m_edgeCut.value();
123 gnn = std::make_shared<ActsPlugins::OnnxEdgeClassifier>(
124 gnnCfg, m_logger->cloneWithSuffix("GNN"));
125#else
126 ATH_MSG_ERROR("GNN .onnx selected but build lacks ONNX backend");
127 return StatusCode::FAILURE;
128#endif
129 } else if (m_gnnPath.value().find(".pt") != std::string::npos) {
130#ifdef ACTS_GNN_TORCH_BACKEND
131 ActsPlugins::TorchEdgeClassifier::Config gnnCfg;
132 gnnCfg.modelPath = m_gnnPath.value();
133 gnnCfg.cut = m_edgeCut.value();
134 gnnCfg.useEdgeFeatures = true;
135 gnn = std::make_shared<ActsPlugins::TorchEdgeClassifier>(
136 gnnCfg, m_logger->cloneWithSuffix("GNN"));
137#else
138 ATH_MSG_ERROR("GNN .pt selected but build lacks libtorch backend");
139 return StatusCode::FAILURE;
140#endif
141 } else if (m_gnnPath.value().find(".engine") != std::string::npos) {
142#ifdef ACTS_GNN_WITH_TENSORRT
143 ActsPlugins::TensorRTEdgeClassifier::Config gnnCfg;
144 gnnCfg.cut = m_edgeCut.value();
145 gnnCfg.modelPath = m_gnnPath.value();
146 gnnCfg.numExecutionContexts = m_numTrtContexts.value();
147 gnn = std::make_shared<ActsPlugins::TensorRTEdgeClassifier>(
148 gnnCfg, m_logger->cloneWithSuffix("GNN"));
149#else
150 ATH_MSG_ERROR("GNN .engine selected but build lacks TensorRT backend");
151 return StatusCode::FAILURE;
152#endif
153 } else {
154 ATH_MSG_ERROR("Unknown GNN model extension: " << m_gnnPath.value());
155 return StatusCode::FAILURE;
156 }
157
158 ActsPlugins::CudaTrackBuilding::Config tbCfg;
159 tbCfg.doJunctionRemoval = true;
160 std::shared_ptr<ActsPlugins::TrackBuildingBase> tb =
161 std::make_shared<ActsPlugins::CudaTrackBuilding>(
162 tbCfg, m_logger->cloneWithSuffix("GraphSeg"));
163
164 m_gnnPipeline = std::make_unique<ActsPlugins::GnnPipeline>(
165 gc, std::vector{gnn}, tb, m_logger->cloneWithSuffix("Pipeline"));
166
167 // Limit the total number of instances on the GPU to avoid out of memory
168 m_gpuInstanceCount.emplace(m_maxGpuInstances.value());
169
170 // Parameter estimation and fitter come from Athena tools now
171
172 ATH_CHECK(detStore()->retrieve(m_stripIdHelper, "SCT_ID"));
173 ACTS_INFO("Use phi overlap spacepoints: " << std::boolalpha
174 << m_usePhiOverlapSps.value());
175
176 using TSC = Acts::TrackSelector::Config;
177 m_trackSelectorConfig = Acts::TrackSelector::EtaBinnedConfig(0.0);
178
179 auto commonConfig = [&](TSC &config) {
180 config.requireReferenceSurface = true;
181 config.loc1Min = m_offlineZ0Sel.value() ? -200_mm : -150_mm; // z0 min
182 config.loc1Max = m_offlineZ0Sel.value() ? 200_mm : 150_mm; // z0 max
183 };
184
186 .addCuts(2.0,
187 [&](TSC &config) {
188 commonConfig(config);
189 config.maxHoles = m_relaxCentralHoleSel.value() ? 4 : 2;
190 config.minMeasurements = m_relaxMeasurementSel.value() ? 7 : 9;
191 config.ptMin = 900_MeV;
192 config.loc0Max = 2_mm; // d0 max
193 config.loc0Min = -2_mm; // d0 min
194 })
195 .addCuts(2.6,
196 [&](TSC &config) {
197 commonConfig(config);
198 config.maxHoles = m_relaxCentralHoleSel.value() ? 4 : 2;
199 config.minMeasurements = m_relaxMeasurementSel.value() ? 7 : 8;
200 config.ptMin = 400_MeV;
201 config.loc0Max = 2_mm; // d0 max
202 config.loc0Min = -2_mm; // d0 min
203 })
204 .addCuts([&](TSC &config) {
205 commonConfig(config);
206 config.maxHoles = 2;
207 config.minMeasurements = 7;
208 config.ptMin = 400_MeV;
209 config.loc0Max = 10_mm; // d0 max
210 config.loc0Min = -10_mm; // d0 min
211 });
212
213 ACTS_INFO("Track selector config:\n" << m_trackSelectorConfig);
214
215 ACTS_DEBUG("TrackFindingGNNAlg::initialize() - end");
216 return StatusCode::SUCCESS;
217}
#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)
Gaudi::Property< std::string > m_moduleMapPath
Gaudi::Property< std::string > m_gnnPath
Gaudi::Property< bool > m_relaxCentralHoleSel
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Gaudi::Property< unsigned int > m_numTrtContexts
Gaudi::Property< double > m_edgeCut
Gaudi::Property< bool > m_relaxMeasurementSel
Gaudi::Property< bool > m_offlineZ0Sel
detail::OnTrackCalibrator< ActsTrk::MutableTrackStateBackend > m_uncalibMeasCalibrator
Gaudi::Property< unsigned int > m_maxGpuInstances
Gaudi::Property< bool > m_usePhiOverlapSps
detail::xAODUncalibMeasSurfAcc m_uncalibMeasSurfAccessor
static OnTrackCalibrator NoCalibration(const ActsTrk::ITrackingGeometryTool *trackGeoTool)
Constructs a calibrator which copies the local position & covariance of the ITk measurements onto the...
const ServiceHandle< StoreGateSvc > & detStore() const

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ logger()

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

Private access to the logger.

Definition at line 168 of file TrackFindingGNNAlg.h.

168{ return *m_logger; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

75{
76 return BaseAlg::sysExecute (ctx);
77}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

105 {
107
108 if (sc.isFailure()) {
109 return sc;
110 }
111
112 ServiceHandle<ICondSvc> cs("CondSvc",name());
113 for (auto h : outputHandles()) {
114 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
115 // do this inside the loop so we don't create the CondSvc until needed
116 if ( cs.retrieve().isFailure() ) {
117 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
118 return StatusCode::SUCCESS;
119 }
120 if (cs->regHandle(this,*h).isFailure()) {
122 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
123 << " with CondSvc");
124 }
125 }
126 }
127 return sc;
128}
#define ATH_MSG_WARNING(x)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::optional<std::counting_semaphore<> > m_gpuInstanceCount ActsTrk::TrackFindingGNNAlg::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 174 of file TrackFindingGNNAlg.h.

174{};

◆ m_chronoSvc

ServiceHandle<IChronoStatSvc> ActsTrk::TrackFindingGNNAlg::m_chronoSvc {"ChronoStatSvc", name()}
private

Definition at line 87 of file TrackFindingGNNAlg.h.

87{"ChronoStatSvc", name()};

◆ m_cudaDeviceIndex

Gaudi::Property<int> ActsTrk::TrackFindingGNNAlg::m_cudaDeviceIndex
private
Initial value:
{this, "cudaDeviceIndex", 0,
"CUDA device index for GNN inference"}

Definition at line 158 of file TrackFindingGNNAlg.h.

158 {this, "cudaDeviceIndex", 0,
159 "CUDA device index for GNN inference"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_edgeCut

Gaudi::Property<double> ActsTrk::TrackFindingGNNAlg::m_edgeCut
private
Initial value:
{this, "edgeCut", 0.5,
"Edge cut to apply after the GNN"}

Definition at line 138 of file TrackFindingGNNAlg.h.

138 {this, "edgeCut", 0.5,
139 "Edge cut to apply after the GNN"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_extrapolationTool

ToolHandle<ActsTrk::IExtrapolationTool> ActsTrk::TrackFindingGNNAlg::m_extrapolationTool
private
Initial value:
{
this, "ExtrapolationTool", ""}

Definition at line 78 of file TrackFindingGNNAlg.h.

78 {
79 this, "ExtrapolationTool", ""};

◆ m_fitterTool

ToolHandle<ActsTrk::IFitterTool> ActsTrk::TrackFindingGNNAlg::m_fitterTool
private
Initial value:
{
this, "FitterTool", "", "Track fitting tool"}

Definition at line 84 of file TrackFindingGNNAlg.h.

84 {
85 this, "FitterTool", "", "Track fitting tool"};

◆ m_gnnPath

Gaudi::Property<std::string> ActsTrk::TrackFindingGNNAlg::m_gnnPath
private
Initial value:
{this, "gnnPath", "",
"Path to the gnn file"}

Definition at line 117 of file TrackFindingGNNAlg.h.

117 {this, "gnnPath", "",
118 "Path to the gnn file"};

◆ m_gnnPipeline

std::unique_ptr<ActsPlugins::GnnPipeline> ActsTrk::TrackFindingGNNAlg::m_gnnPipeline
private

Definition at line 161 of file TrackFindingGNNAlg.h.

◆ m_logger

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

logging instance

Definition at line 171 of file TrackFindingGNNAlg.h.

◆ m_maxGpuInstances

Gaudi::Property<unsigned int> ActsTrk::TrackFindingGNNAlg::m_maxGpuInstances
private
Initial value:
{
this, "maxGpuInstances", 1,
"Number of events that can be on GPU in parallel"}

Definition at line 123 of file TrackFindingGNNAlg.h.

123 {
124 this, "maxGpuInstances", 1,
125 "Number of events that can be on GPU in parallel"};

◆ m_maxPropagationStep

Gaudi::Property<unsigned int> ActsTrk::TrackFindingGNNAlg::m_maxPropagationStep
private
Initial value:
{
this, "maxPropagationStep", 1000,
"Maximum number of steps for one propagate call"}

Definition at line 110 of file TrackFindingGNNAlg.h.

110 {
111 this, "maxPropagationStep", 1000,
112 "Maximum number of steps for one propagate call"};

◆ m_minCandidateMeasurements

Gaudi::Property<unsigned int> ActsTrk::TrackFindingGNNAlg::m_minCandidateMeasurements
private
Initial value:
{
this, "minCandidateMeasurements", 7,
"Minimum number of spacepoints to cut for in the GNN candidates"}

Definition at line 141 of file TrackFindingGNNAlg.h.

141 {
142 this, "minCandidateMeasurements", 7,
143 "Minimum number of spacepoints to cut for in the GNN candidates"};

◆ m_minDeltaR

Gaudi::Property<double> ActsTrk::TrackFindingGNNAlg::m_minDeltaR
private
Initial value:
{
this, "minDeltaR", 10.0,
"Minimum difference in R to build the initial parameters"}

Definition at line 145 of file TrackFindingGNNAlg.h.

145 {
146 this, "minDeltaR", 10.0,
147 "Minimum difference in R to build the initial parameters"};

◆ m_moduleMapPath

Gaudi::Property<std::string> ActsTrk::TrackFindingGNNAlg::m_moduleMapPath
private
Initial value:
{this, "moduleMapPath", "",
"Path to the module map files"}

Definition at line 114 of file TrackFindingGNNAlg.h.

114 {this, "moduleMapPath", "",
115 "Path to the module map files"};

◆ m_monTool

ToolHandle<GenericMonitoringTool> ActsTrk::TrackFindingGNNAlg::m_monTool
private
Initial value:
{this, "MonTool", "",
"Monitoring tool"}

Definition at line 76 of file TrackFindingGNNAlg.h.

76 {this, "MonTool", "",
77 "Monitoring tool"};

◆ m_numTrtContexts

Gaudi::Property<unsigned int> ActsTrk::TrackFindingGNNAlg::m_numTrtContexts
private
Initial value:
{
this, "numTrtContexts", 1, "Number of TensorRT contexts to allocate"}

Definition at line 127 of file TrackFindingGNNAlg.h.

127 {
128 this, "numTrtContexts", 1, "Number of TensorRT contexts to allocate"};

◆ m_offlineZ0Sel

Gaudi::Property<bool> ActsTrk::TrackFindingGNNAlg::m_offlineZ0Sel
private
Initial value:
{
this, "offlineZ0Sel", false, "Apply offline z0 selection"}

Definition at line 155 of file TrackFindingGNNAlg.h.

155 {
156 this, "offlineZ0Sel", false, "Apply offline z0 selection"};

◆ m_paramEstimationTool

ToolHandle<ActsTrk::ITrackParamsEstimationTool> ActsTrk::TrackFindingGNNAlg::m_paramEstimationTool
private
Initial value:
{
this, "TrackParamsEstimationTool", "", "Track Param Estimation from Seeds"}

Definition at line 82 of file TrackFindingGNNAlg.h.

82 {
83 this, "TrackParamsEstimationTool", "", "Track Param Estimation from Seeds"};

◆ m_relaxCentralHoleSel

Gaudi::Property<bool> ActsTrk::TrackFindingGNNAlg::m_relaxCentralHoleSel
private
Initial value:
{
this, "relaxCentralHoleSel", false, "Relax holes from 2 to 4 in central region"}

Definition at line 149 of file TrackFindingGNNAlg.h.

149 {
150 this, "relaxCentralHoleSel", false, "Relax holes from 2 to 4 in central region"};

◆ m_relaxMeasurementSel

Gaudi::Property<bool> ActsTrk::TrackFindingGNNAlg::m_relaxMeasurementSel
private
Initial value:
{
this, "relaxMeasurementSel", true, "Apply 7,7,7 measurement sel"}

Definition at line 152 of file TrackFindingGNNAlg.h.

152 {
153 this, "relaxMeasurementSel", true, "Apply 7,7,7 measurement sel"};

◆ m_stripIdHelper

const SCT_ID* ActsTrk::TrackFindingGNNAlg::m_stripIdHelper = nullptr
private

Definition at line 163 of file TrackFindingGNNAlg.h.

◆ m_tightSeeds

Gaudi::Property<bool> ActsTrk::TrackFindingGNNAlg::m_tightSeeds
private
Initial value:
{
this, "tightSeeds", false,
"Use tight seeds instead of spread seeds for param estimation"}

Definition at line 134 of file TrackFindingGNNAlg.h.

134 {
135 this, "tightSeeds", false,
136 "Use tight seeds instead of spread seeds for param estimation"};

◆ m_trackContainerKey

SG::WriteHandleKey<ActsTrk::TrackContainer> ActsTrk::TrackFindingGNNAlg::m_trackContainerKey
private
Initial value:
{
this, "ACTSTracksLocation", "",
"Output track collection (ActsTrk variant)"}

Definition at line 105 of file TrackFindingGNNAlg.h.

105 {
106 this, "ACTSTracksLocation", "",
107 "Output track collection (ActsTrk variant)"};

◆ m_trackingGeometryTool

PublicToolHandle<ITrackingGeometryTool> ActsTrk::TrackFindingGNNAlg::m_trackingGeometryTool
private
Initial value:
{
this, "TrackingGeometryTool", ""}

Definition at line 80 of file TrackFindingGNNAlg.h.

80 {
81 this, "TrackingGeometryTool", ""};

◆ m_trackSelectorConfig

Acts::TrackSelector::EtaBinnedConfig ActsTrk::TrackFindingGNNAlg::m_trackSelectorConfig
private

Definition at line 165 of file TrackFindingGNNAlg.h.

◆ m_uncalibMeasCalibrator

detail::OnTrackCalibrator<ActsTrk::MutableTrackStateBackend> ActsTrk::TrackFindingGNNAlg::m_uncalibMeasCalibrator {}
private

Definition at line 91 of file TrackFindingGNNAlg.h.

91{};

◆ m_uncalibMeasSurfAccessor

detail::xAODUncalibMeasSurfAcc ActsTrk::TrackFindingGNNAlg::m_uncalibMeasSurfAccessor {}
private

Definition at line 89 of file TrackFindingGNNAlg.h.

89{};

◆ m_usePhiOverlapSps

Gaudi::Property<bool> ActsTrk::TrackFindingGNNAlg::m_usePhiOverlapSps
private
Initial value:
{
this, "usePhiOverlapSps", false, "Wether to use phi overlap spacepoints"}

Definition at line 120 of file TrackFindingGNNAlg.h.

120 {
121 this, "usePhiOverlapSps", false, "Wether to use phi overlap spacepoints"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_varianceInflation

Gaudi::Property<double> ActsTrk::TrackFindingGNNAlg::m_varianceInflation
private
Initial value:
{
this, "varianceInflation", 1.0,
"Factor that is multiplied to all initial variances"}

Definition at line 130 of file TrackFindingGNNAlg.h.

130 {
131 this, "varianceInflation", 1.0,
132 "Factor that is multiplied to all initial variances"};

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xaodPixelSpacePointContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> ActsTrk::TrackFindingGNNAlg::m_xaodPixelSpacePointContainerKey
private
Initial value:
{this, "xAODInputPixelSpacePoints",
"ITkPixelSpacePoints"}

Definition at line 95 of file TrackFindingGNNAlg.h.

95 {this, "xAODInputPixelSpacePoints",
96 "ITkPixelSpacePoints"};

◆ m_xaodStripSpacePointContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> ActsTrk::TrackFindingGNNAlg::m_xaodStripSpacePointContainerKey
private
Initial value:
{
this, "xAODInputSpacePointsContainerKey", "ITkStripSpacePoints"}

Definition at line 98 of file TrackFindingGNNAlg.h.

98 {
99 this, "xAODInputSpacePointsContainerKey", "ITkStripSpacePoints"};

◆ m_xaodStripSpacePointOverlapContainerKey

SG::ReadHandleKey<xAOD::SpacePointContainer> ActsTrk::TrackFindingGNNAlg::m_xaodStripSpacePointOverlapContainerKey
private
Initial value:
{
this, "xAODInputSpacePointsOverlapContainerKey",
"ITkStripOverlapSpacePoints"}

Definition at line 101 of file TrackFindingGNNAlg.h.

101 {
102 this, "xAODInputSpacePointsOverlapContainerKey",
103 "ITkStripOverlapSpacePoints"};

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