 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef ACTSTRACKRECONSTRUCTION_TRACKFINDINGALG_H
6 #define ACTSTRACKRECONSTRUCTION_TRACKFINDINGALG_H
12 #include "Acts/TrackFinding/TrackStateCreator.hpp"
13 #include "Acts/AmbiguityResolution/GreedyAmbiguityResolution.hpp"
14 #include "Acts/Surfaces/Surface.hpp"
15 #include "Acts/Surfaces/PerigeeSurface.hpp"
25 #include "GaudiKernel/EventContext.h"
44 using DefaultTrackStateCreator = Acts::TrackStateCreator<ActsTrk::detail::UncalibSourceLinkAccessor::Iterator,detail::RecoTrackContainer>;
51 ISvcLocator *pSvcLocator);
68 const Acts::BoundTrackParameters &seedParameters,
70 std::size_t& nPrinted,
72 bool isKF =
false)
const;
76 const Acts::Surface& pSurface,
77 const Acts::TrackExtrapolationStrategy& extrapolationStrategy,
83 std::vector<int>* destiny,
87 std::size_t category_i,
88 const char *seedType)
const;
91 Acts::VectorTrackContainer&& originalTrackBackend,
92 Acts::VectorMultiTrajectory&& originalTrackStateBackend)
const;
96 ToolHandle<ActsTrk::ITrackParamsEstimationTool >
m_paramEstimationTool{
this,
"TrackParamsEstimationTool",
"",
"Track Param Estimation from Seeds"};
105 {
this,
"ActsVolumeIdToDetectorElementCollectionMapKey",
"ActsVolumeIdToDetectorElementCollectionMap",
106 "Map which associates Acts geometry volume IDs to detector element collections."};
109 {
this,
"DetElStatus", {},
"Keys for detector element status conditions data."};
116 Gaudi::Property<bool>
m_skipDuplicateSeeds{
this,
"skipDuplicateSeeds",
true,
"skip duplicate seeds before calling CKF"};
117 Gaudi::Property<unsigned int>
m_seedMeasOffset{
this,
"seedMeasOffset", 0,
"Reduce the requirement on the space points on seed to mark a seed as duplicate, e.g seedMeasOffset=1, only N-1 measurements on seed are sufficient deduplicate the seed"};
118 Gaudi::Property<std::vector<bool>>
m_refitSeeds{
this,
"refitSeeds", {},
"Run KalmanFitter on seeds before passing to CKF, specified separately for each seed collection"};
120 Gaudi::Property<bool>
m_autoReverseSearch{
this,
"autoReverseSearch",
false,
"Whether to run the finding in seed parameter direction (false or not specified) or reverse direction (true), automatically determined by the param estimation tool"};
121 Gaudi::Property<bool>
m_countSharedHits{
this,
"countSharedHits",
true,
"add shared hit flags to tracks"};
126 {
this,
"MaximumSharedHits", 3
u,
"Maximum number of shared hits per track."};
128 {
this,
"MaximumIterations", 10000
u,
"Maximum number of iterations to resolve ambiguities among all tracks."};
130 {
this,
"NMeasurementsMin", 7
u,
"Minimum number of measurements per track."};
131 Gaudi::Property<std::size_t>
m_ambiStrategy {
this,
"ambiStrategy", 0,
"0 - Do ambiguity resolution outside track finding; 1 - Do ambiguity in track finding using GreedyAmbiguitySolver tool; 2 - Do shared hit cut during track candidate selection"};
135 const std::vector< const InDet::SiDetectorElementStatus *> &det_el_status_arr,
140 std::optional<Acts::GreedyAmbiguityResolution>
m_ambi;
146 const Acts::Surface &referenceSurface,
148 Acts::TrackExtrapolationStrategy
strategy,
175 std::size_t seedCollectionIndex,
176 const char *seedType,
178 std::vector<int>* destiny,
179 const Acts::PerigeeSurface& pSurface)
const;
virtual ~TrackFindingAlg()=default
Gaudi::Property< unsigned int > m_maximumSharedHits
Gaudi::Property< std::size_t > m_ambiStrategy
Acts::Result< void > extrapolateTrackToReferenceSurface(const DetectorContextHolder &detContext, detail::RecoTrackContainerProxy &track, const Acts::Surface &referenceSurface, const detail::Extrapolator &propagator, Acts::TrackExtrapolationStrategy strategy, ExpectedLayerPattern &expectedLayerPattern) const
void printSeed(unsigned int iseed, const DetectorContextHolder &detContext, const ActsTrk::SeedContainer &seeds, const Acts::BoundTrackParameters &seedParameters, const detail::MeasurementIndex &measurementIndex, std::size_t &nPrinted, const char *seedType, bool isKF=false) const
std::size_t getSeedCategory(std::size_t typeIndex, const ActsTrk::Seed &seed, bool useTopSp) const
Gaudi::Property< unsigned int > m_seedMeasOffset
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
std::vector< std::array< unsigned int, kNStat > > EventStats
TrackFindingAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< bool > m_autoReverseSearch
Gaudi::Property< std::vector< bool > > m_refitSeeds
StatusCode propagateDetectorElementStatusToMeasurements(const ActsTrk::ActsVolumeIdToDetectorElementCollectionMap &volume_id_to_det_el_coll, const std::vector< const InDet::SiDetectorElementStatus * > &det_el_status_arr, detail::TrackFindingMeasurements &measurements) const
RecoTrackContainer::TrackProxy RecoTrackContainerProxy
SG::ReadHandleKeyArray< ActsTrk::SeedContainer > m_seedContainerKeys
Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory > RecoTrackContainer
StatusCode findTracks(const DetectorContextHolder &detContext, const detail::TrackFindingMeasurements &measurements, const detail::MeasurementIndex &measurementIndex, detail::SharedHitCounter &sharedHits, detail::DuplicateSeedDetector &duplicateSeedDetector, const ActsTrk::SeedContainer &seeds, const InDetDD::SiDetectorElementCollection &detElements, detail::RecoTrackContainer &actsTracksContainer, std::size_t seedCollectionIndex, const char *seedType, EventStats &event_stat, std::vector< int > *destiny, const Acts::PerigeeSurface &pSurface) const
invoke track finding procedure
@ u
Enums for curvilinear frames.
Gaudi::Property< unsigned int > m_nMeasurementsMin
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainer > m_uncalibratedMeasurementContainerKeys
virtual StatusCode finalize() override
GenUncalibSourceLinkAccessor< MeasurementRangeList > UncalibSourceLinkAccessor
Gaudi::Property< bool > m_countSharedHits
SG::WriteHandleKeyArray< std::vector< int > > m_seedDestiny
Accessor for the above source link container.
bool shouldReverseSearch(const ActsTrk::Seed &seed) const
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< std::vector< double > > m_useTopSpRZboundary
void storeSeedInfo(const detail::RecoTrackContainer &tracksContainer, const detail::RecoTrackContainerProxy &track, detail::DuplicateSeedDetector &duplicateSeedDetector, const detail::MeasurementIndex &measurementIndex) const
ToolHandle< ActsTrk::ITrackParamsEstimationTool > m_paramEstimationTool
SG::ReadCondHandleKeyArray< InDetDD::SiDetectorElementCollection > m_detEleCollKeys
std::size_t m_nTrackReserve ATLAS_THREAD_SAFE
virtual StatusCode initialize() override
Gaudi::Property< unsigned int > m_maximumIterations
SG::ReadCondHandleKey< ActsTrk::ActsVolumeIdToDetectorElementCollectionMap > m_volumeIdToDetectorElementCollMapKey
Gaudi::Property< bool > m_skipDuplicateSeeds
std::array< unsigned int, 4 > expectedLayerPattern(const EventContext &ctx, const IActsExtrapolationTool &extrapolator, const Acts::BoundTrackParameters &perigee_parameters, double pathLimit)
Extrapolate from the perigee outwards and gather information which detector layers should have hits.
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< float > m_memorySafetyMargin
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
StatusCode storeTrackCollectionToStoreGate(const EventContext &ctx, Acts::VectorTrackContainer &&originalTrackBackend, Acts::VectorMultiTrajectory &&originalTrackStateBackend) const
SG::ReadHandleKeyArray< InDet::SiDetectorElementStatus > m_detElStatus
StatusCode addTrack(const DetectorContextHolder &detContext, detail::RecoTrackContainerProxy &track, const Acts::Surface &pSurface, const Acts::TrackExtrapolationStrategy &extrapolationStrategy, detail::SharedHitCounter &sharedHits, detail::RecoTrackContainer &actsTracksContainer, const detail::MeasurementIndex &measurementIndex, const detail::RecoTrackContainer &tracksContainerTemp, detail::DuplicateSeedDetector &duplicateSeedDetector, std::vector< int > *destiny, EventStats &event_stat, std::size_t &ntracks, std::size_t iseed, std::size_t category_i, const char *seedType) const
std::optional< Acts::GreedyAmbiguityResolution > m_ambi
std::array< unsigned int, 4 > ExpectedLayerPattern
Acts::TrackStateCreator< ActsTrk::detail::UncalibSourceLinkAccessor::Iterator, detail::RecoTrackContainer > DefaultTrackStateCreator