ATLAS Offline Software
AmbiguityResolutionAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSTRKFINDING_AMBIGUITYRESOLUTIONALG_H
6 #define ACTSTRKFINDING_AMBIGUITYRESOLUTIONALG_H 1
7 
8 // Base Class
10 
11 // Gaudi includes
12 #include "GaudiKernel/ToolHandle.h"
13 #include "Gaudi/Property.h"
14 
15 // ACTS
17 #include "Acts/Utilities/Logger.hpp"
18 #include "Acts/AmbiguityResolution/GreedyAmbiguityResolution.hpp"
19 
20 // Athena
26 
27 // Handle Keys
31 
32 #include <string>
33 #include <memory>
34 
35 namespace ActsTrk
36 {
37 
39  {
40  public:
41  AmbiguityResolutionAlg(const std::string &name,
42  ISvcLocator *pSvcLocator);
43 
44  virtual StatusCode initialize() override;
45  virtual StatusCode finalize() override;
46  virtual StatusCode execute(const EventContext &ctx) const override;
47 
48  private:
49  ToolHandle< GenericMonitoringTool > m_monTool {this, "MonTool", "", "Monitoring tool"};
50 
52  {this, "TracksLocation", "", "Input track collection"};
54  {this, "ResolvedTracksLocation", "", "Ambiguity resolved output track collection"};
55 
56  Gaudi::Property<unsigned int> m_maximumSharedHits
57  {this, "MaximumSharedHits", 3u, "Maximum number of shared hits per track."};
58  Gaudi::Property<unsigned int> m_maximumIterations
59  {this, "MaximumIterations", 10000u, "Maximum number of iterations to resolve ambiguities among all tracks."};
60  Gaudi::Property<unsigned int> m_nMeasurementsMin
61  {this, "NMeasurementsMin", 7u, "Minimum number of measurements per track."};
62  Gaudi::Property<bool> m_countSharedHits{this, "countSharedHits", true, "add shared hit flags to tracks"};
63 
64  std::unique_ptr<Acts::GreedyAmbiguityResolution> m_ambi {nullptr};
65 
66  public:
67  enum EStat {
71  kNStat
72  };
73 
74  private:
75  mutable std::array<std::atomic<unsigned int>, kNStat> m_stat ATLAS_THREAD_SAFE{};
76  };
77 
78 } // namespace
79 
80 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
ActsTrk::AmbiguityResolutionAlg::m_countSharedHits
Gaudi::Property< bool > m_countSharedHits
Definition: AmbiguityResolutionAlg.h:62
ActsTrk::AmbiguityResolutionAlg::ATLAS_THREAD_SAFE
std::array< std::atomic< unsigned int >, kNStat > m_stat ATLAS_THREAD_SAFE
Definition: AmbiguityResolutionAlg.h:75
ActsTrk::AmbiguityResolutionAlg::kNSharedHits
@ kNSharedHits
Definition: AmbiguityResolutionAlg.h:70
ActsTrk::AmbiguityResolutionAlg::kNStat
@ kNStat
Definition: AmbiguityResolutionAlg.h:71
ActsTrk::AmbiguityResolutionAlg::m_maximumIterations
Gaudi::Property< unsigned int > m_maximumIterations
Definition: AmbiguityResolutionAlg.h:59
ActsTrk::AmbiguityResolutionAlg::finalize
virtual StatusCode finalize() override
Definition: AmbiguityResolutionAlg.cxx:68
ActsTrk::AmbiguityResolutionAlg::EStat
EStat
Definition: AmbiguityResolutionAlg.h:67
SG::ReadHandleKey< ActsTrk::TrackContainer >
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
ActsTrk::AmbiguityResolutionAlg::m_ambi
std::unique_ptr< Acts::GreedyAmbiguityResolution > m_ambi
Definition: AmbiguityResolutionAlg.h:64
GenericMonitoringTool.h
ActsTrk::AmbiguityResolutionAlg
Definition: AmbiguityResolutionAlg.h:39
SG::WriteHandleKey< ActsTrk::TrackContainer >
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PixelClusterContainer.h
ActsTrk::AmbiguityResolutionAlg::m_nMeasurementsMin
Gaudi::Property< unsigned int > m_nMeasurementsMin
Definition: AmbiguityResolutionAlg.h:61
ActsTrk::AmbiguityResolutionAlg::initialize
virtual StatusCode initialize() override
Definition: AmbiguityResolutionAlg.cxx:51
ActsTrk::AmbiguityResolutionAlg::AmbiguityResolutionAlg
AmbiguityResolutionAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: AmbiguityResolutionAlg.cxx:45
ActsTrk::AmbiguityResolutionAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: AmbiguityResolutionAlg.h:49
AthReentrantAlgorithm.h
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::AmbiguityResolutionAlg::m_maximumSharedHits
Gaudi::Property< unsigned int > m_maximumSharedHits
Definition: AmbiguityResolutionAlg.h:57
SiDetectorElementCollection.h
ActsTrk::AmbiguityResolutionAlg::m_resolvedTracksKey
SG::WriteHandleKey< ActsTrk::TrackContainer > m_resolvedTracksKey
Definition: AmbiguityResolutionAlg.h:54
StripClusterContainer.h
ITrackingGeometryTool.h
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MSTrackingVolumeBuilder.cxx:25
TrackContainerHandlesHelper.h
ActsTrk::AmbiguityResolutionAlg::m_tracksKey
SG::ReadHandleKey< ActsTrk::TrackContainer > m_tracksKey
Definition: AmbiguityResolutionAlg.h:52
ActsTrk::AmbiguityResolutionAlg::kNInputTracks
@ kNInputTracks
Definition: AmbiguityResolutionAlg.h:68
ActsTrk::AmbiguityResolutionAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: AmbiguityResolutionAlg.cxx:78
ActsTrk::AmbiguityResolutionAlg::kNResolvedTracks
@ kNResolvedTracks
Definition: AmbiguityResolutionAlg.h:69
TrackContainer.h