|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef ACTSTRACKRECONSTRUCTION_TRACKFINDINGALG_H
6 #define ACTSTRACKRECONSTRUCTION_TRACKFINDINGALG_H
12 #include "GaudiKernel/ToolHandle.h"
20 #include "Acts/EventData/VectorTrackContainer.hpp"
21 #include "Acts/EventData/TrackContainer.hpp"
22 #include "Acts/EventData/ProxyAccessor.hpp"
39 #include "GaudiKernel/EventContext.h"
64 ISvcLocator *pSvcLocator);
75 ToolHandle<GenericMonitoringTool>
m_monTool{
this,
"MonTool",
"",
"Monitoring tool"};
78 ToolHandle<ActsTrk::TrackStatePrinterTool>
m_trackStatePrinter{
this,
"TrackStatePrinter",
"",
"optional track state printer"};
79 ToolHandle<ActsTrk::IFitterTool>
m_fitterTool{
this,
"FitterTool",
"",
"Fitter Tool for Seeds"};
80 ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
m_pixelCalibTool{
81 this,
"PixelCalibrator",
"",
"Opt. pixel measurement calibrator"};
82 ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
m_stripCalibTool{
83 this,
"StripCalibrator",
"",
"Opt. strip measurement calibrator"};
84 ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
m_hgtdCalibTool{
85 this,
"HGTDCalibrator",
"",
"Opt. HGTD measurement calibrator"};
94 {
this,
"DetectorElementToActsGeometryIdMapKey",
"DetectorElementToActsGeometryIdMap",
95 "Map which associates detector elements to Acts Geometry IDs"};
101 Gaudi::Property<unsigned int>
m_maxPropagationStep{
this,
"maxPropagationStep", 1000,
"Maximum number of steps for one propagate call"};
102 Gaudi::Property<bool>
m_skipDuplicateSeeds{
this,
"skipDuplicateSeeds",
true,
"skip duplicate seeds before calling CKF"};
103 Gaudi::Property<std::vector<bool>>
m_refitSeeds{
this,
"refitSeeds", {},
"Run KalmanFitter on seeds before passing to CKF, specified separately for each seed collection"};
104 Gaudi::Property<std::vector<double>>
m_etaBins{
this,
"etaBins", {},
"bins in |eta| to specify variable selections"};
106 Gaudi::Property<std::vector<double>>
m_chi2CutOff{
this,
"chi2CutOff", {},
"MeasurementSelector: maximum local chi2 contribution"};
107 Gaudi::Property<std::vector<double>>
m_chi2OutlierCutOff{
this,
"chi2OutlierCutOff", {},
"MeasurementSelector: maximum local chi2 contribution for outlier"};
108 Gaudi::Property<std::vector<size_t>>
m_numMeasurementsCutOff{
this,
"numMeasurementsCutOff", {},
"MeasurementSelector: maximum number of associated measurements on a single surface"};
109 Gaudi::Property<std::vector<std::size_t>>
m_ptMinMeasurements{
this,
"ptMinMeasurements", {},
"if specified for the given seed collection, applies ptMin cut in branch stopper once ptMinMinMeasurements have been encountered"};
110 Gaudi::Property<std::vector<std::size_t>>
m_absEtaMaxMeasurements{
this,
"absEtaMaxMeasurements", {},
"if specified for the given seed collection, applies absEtaMax cut in branch stopper once absEtaMaxMeasurements have been encountered"};
112 Gaudi::Property<bool>
m_doTwoWay{
this,
"doTwoWay",
true,
"run CKF twice, first with forward propagation with smoothing, then with backward propagation"};
113 Gaudi::Property<std::vector<bool>>
m_reverseSearch {
this,
"reverseSearch", {},
"Whether to run the finding in seed parameter direction (false or not specified) or reverse direction (true), specified separately for each seed collection"};
114 Gaudi::Property<double>
m_branchStopperPtMinFactor{
this,
"branchStopperPtMinFactor", 1.0,
"factor to multiply ptMin cut when used in the branch stopper"};
119 Gaudi::Property<std::vector<double>>
m_phiMin{
this,
"phiMin", {},
"TrackSelector: phiMin"};
120 Gaudi::Property<std::vector<double>>
m_phiMax{
this,
"phiMax", {},
"TrackSelector: phiMax"};
121 Gaudi::Property<std::vector<double>>
m_etaMin{
this,
"etaMin", {},
"TrackSelector: etaMin"};
122 Gaudi::Property<std::vector<double>>
m_etaMax{
this,
"etaMax", {},
"TrackSelector: etaMax"};
123 Gaudi::Property<double>
m_absEtaMin{
this,
"absEtaMin", 0.0,
"TrackSelector: absEtaMin"};
125 Gaudi::Property<std::vector<double>>
m_ptMin{
this,
"ptMin", {},
"TrackSelector: ptMin"};
126 Gaudi::Property<std::vector<double>>
m_ptMax{
this,
"ptMax", {},
"TrackSelector: ptMax"};
127 Gaudi::Property<std::vector<double>>
m_d0Min{
this,
"d0Min", {},
"TrackSelector: d0Min"};
128 Gaudi::Property<std::vector<double>>
m_d0Max{
this,
"d0Max", {},
"TrackSelector: d0Max"};
129 Gaudi::Property<std::vector<double>>
m_z0Min{
this,
"z0Min", {},
"TrackSelector: z0Min"};
130 Gaudi::Property<std::vector<double>>
m_z0Max{
this,
"z0Max", {},
"TrackSelector: z0Max"};
132 Gaudi::Property<std::vector<std::size_t>>
m_minMeasurements{
this,
"minMeasurements", {},
"TrackSelector: minMeasurements"};
133 Gaudi::Property<std::vector<std::size_t>>
m_maxHoles{
this,
"maxHoles", {},
"TrackSelector: maxHoles"};
134 Gaudi::Property<std::vector<std::size_t>>
m_maxOutliers{
this,
"maxOutliers", {},
"TrackSelector: maxOutliers"};
135 Gaudi::Property<std::vector<std::size_t>>
m_maxSharedHits{
this,
"maxSharedHits", {},
"TrackSelector: maxSharedHits"};
136 Gaudi::Property<std::vector<double>>
m_maxChi2{
this,
"maxChi2", {},
"TrackSelector: maxChi2"};
138 Gaudi::Property<bool>
m_addPixelStripCounts{
this,
"addPixelStripCounts",
true,
"keep separate pixel and strip counts and apply the following cuts"};
139 Gaudi::Property<std::vector<std::size_t>>
m_minPixelHits{
this,
"minPixelHits", {},
"minimum number of pixel hits"};
140 Gaudi::Property<std::vector<std::size_t>>
m_minStripHits{
this,
"minStripHits", {},
"minimum number of strip hits"};
141 Gaudi::Property<std::vector<std::size_t>>
m_maxPixelHoles{
this,
"maxPixelHoles", {},
"maximum number of pixel holes"};
142 Gaudi::Property<std::vector<std::size_t>>
m_maxStripHoles{
this,
"maxStripHoles", {},
"maximum number of strip holes"};
143 Gaudi::Property<std::vector<std::size_t>>
m_maxPixelOutliers{
this,
"maxPixelOutliers", {},
"maximum number of pixel outliers"};
144 Gaudi::Property<std::vector<std::size_t>>
m_maxStripOutliers{
this,
"maxStripOutliers", {},
"maximum number of strip outliers"};
147 Gaudi::Property<std::vector<float>>
m_statEtaBins{
this,
"StatisticEtaBins", {-4, -2.6, -2, 0, 2., 2.6, 4},
"Gather statistics separately for these bins."};
148 Gaudi::Property<std::vector<std::string>>
m_seedLabels{
this,
"SeedLabels", {},
"One label per seed key used in outputs"};
149 Gaudi::Property<bool>
m_dumpAllStatEtaBins{
this,
"DumpEtaBinsForAll",
false,
"Dump eta bins of all statistics counter."};
170 using EventStats = std::vector<std::array<unsigned int, kNStat>>;
189 const Acts::TrackingGeometry &trackingGeometry,
196 size_t seedCollectionIndex,
197 const char *seedType,
219 static constexpr Acts::ProxyAccessor<unsigned int>
nPixelHits{
"nPixelHits"};
220 static constexpr Acts::ProxyAccessor<unsigned int>
nStripHits{
"nStripHits"};
221 static constexpr Acts::ProxyAccessor<unsigned int>
nPixelHoles{
"nPixelHoles"};
222 static constexpr Acts::ProxyAccessor<unsigned int>
nStripHoles{
"nStripHoles"};
223 static constexpr Acts::ProxyAccessor<unsigned int>
nPixelOutliers{
"nPixelOutliers"};
224 static constexpr Acts::ProxyAccessor<unsigned int>
nStripOutliers{
"nStripOutliers"};
231 Acts::ConstTrackStateType typeFlags,
234 const detail::RecoTrackContainer::TrackProxy &
other);
251 std::size_t
getStatCategory(std::size_t seed_collection,
float eta)
const;
Gaudi::Property< std::vector< std::size_t > > m_maxPixelHoles
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_hgtdCalibTool
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
std::array< bool, 3 > selectPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, double eta) const
Gaudi::Property< std::vector< std::size_t > > m_maxSharedHits
Gaudi::Property< std::vector< float > > m_statEtaBins
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Gaudi::Property< double > m_branchStopperAbsEtaMaxExtra
const Acts::Logger & logger() const
Private access to the logger.
Gaudi::Property< double > m_absEtaMax
Gaudi::Property< std::vector< std::size_t > > m_maxStripHoles
static xAOD::UncalibMeasType measurementType(const detail::RecoTrackContainer::TrackStateProxy &trackState)
SG::ReadCondHandleKey< ActsTrk::DetectorElementToActsGeometryIdMap > m_detectorElementToGeometryIdMapKey
TrackFindingAlg(const std::string &name, ISvcLocator *pSvcLocator)
static constexpr Acts::ProxyAccessor< unsigned int > nPixelOutliers
static void addPixelStripCounts(detail::RecoTrackContainer &tracksContainer)
Gaudi::Property< std::vector< double > > m_phiMin
static void initPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track)
Gaudi::Property< std::vector< bool > > m_refitSeeds
CKF_pimpl & trackFinder()
Gaudi::Property< double > m_branchStopperPtMinFactor
static constexpr Acts::ProxyAccessor< unsigned int > nStripHoles
Gaudi::Property< std::vector< std::size_t > > m_maxOutliers
RecoTrackContainer::TrackProxy RecoTrackContainerProxy
static constexpr Acts::ProxyAccessor< unsigned int > nStripOutliers
SG::ReadHandleKeyArray< ActsTrk::SeedContainer > m_seedContainerKeys
Gaudi::Property< std::vector< std::size_t > > m_minPixelHits
Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory > RecoTrackContainer
Gaudi::Property< std::vector< double > > m_z0Min
Gaudi::Property< unsigned int > m_maxPropagationStep
An algorithm that can be simultaneously executed in multiple threads.
std::size_t nSeedCollections() const
SG::ReadHandleKeyArray< ActsTrk::BoundTrackParametersContainer > m_estimatedTrackParametersKeys
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHoles
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainer > m_uncalibratedMeasurementContainerKeys
void copyStats(const EventStats &event_stat) const
Gaudi::Property< std::vector< double > > m_chi2OutlierCutOff
virtual StatusCode finalize() override
void printStatTables() const
std::mutex m_mutex ATLAS_THREAD_SAFE
static constexpr BranchState s_branchState
std::size_t computeStatSum(std::size_t seed_collection, EStat counter_i, const EventStats &stat) const
Gaudi::Property< bool > m_addPixelStripCounts
Gaudi::Property< std::vector< std::string > > m_seedLabels
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_stripCalibTool
StatusCode findTracks(const EventContext &ctx, const Acts::TrackingGeometry &trackingGeometry, const ActsTrk::DetectorElementToActsGeometryIdMap &detectorElementToGeoId, const detail::TrackFindingMeasurements &measurements, detail::DuplicateSeedDetector &duplicateSeedDetector, const ActsTrk::BoundTrackParametersContainer &estimatedTrackParameters, const ActsTrk::SeedContainer *seeds, ActsTrk::MutableTrackContainer &tracksContainer, size_t seedCollectionIndex, const char *seedType, EventStats &event_stat) const
invoke track finding procedure
Gaudi::Property< std::vector< double > > m_d0Max
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< std::vector< double > > m_ptMin
void storeSeedInfo(const detail::RecoTrackContainer &tracksContainer, const detail::RecoTrackContainerProxy &track, detail::DuplicateSeedDetector &duplicateSeedDetector) const
StatusCode initializeMeasurementSelector()
Gaudi::Property< double > m_absEtaMin
Gaudi::Property< std::vector< std::size_t > > m_maxPixelOutliers
Gaudi::Property< std::vector< size_t > > m_numMeasurementsCutOff
Gaudi::Property< bool > m_useDefaultMeasurementSelector
ToolHandle< GenericMonitoringTool > m_monTool
ToolHandle< ActsTrk::TrackStatePrinterTool > m_trackStatePrinter
std::unique_ptr< ActsTrk::IMeasurementSelector > m_measurementSelector
virtual StatusCode initialize() override
void checkPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track) const
Property holding a SG store/key/clid from which a WriteHandle is made.
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHits
Gaudi::Property< std::vector< double > > m_z0Max
virtual ~TrackFindingAlg()
Gaudi::Property< std::vector< double > > m_chi2CutOff
static void copyPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackProxy &other)
Gaudi::Property< bool > m_doBranchStopper
Gaudi::Property< std::vector< std::size_t > > m_maxStripOutliers
Gaudi::Property< bool > m_skipDuplicateSeeds
std::size_t getStatCategory(std::size_t seed_collection, float eta) const
static constexpr Acts::ProxyAccessor< unsigned int > nStripHits
Gaudi::Property< std::vector< std::size_t > > m_minStripHits
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< std::vector< double > > m_etaMin
Gaudi::Property< std::vector< std::size_t > > m_minMeasurements
static void updatePixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, Acts::ConstTrackStateType typeFlags, xAOD::UncalibMeasType detType)
Gaudi::Property< std::vector< std::size_t > > m_ptMinMeasurements
std::unique_ptr< const Acts::Logger > m_logger
logging instance
ActsTrk::MutableTrackContainerHandlesHelper m_tracksBackendHandlesHelper
UncalibMeasType
Define the type of the uncalibrated measurement.
std::unique_ptr< CKF_pimpl > m_trackFinder
Gaudi::Property< bool > m_doTwoWay
std::vector< std::array< unsigned int, kNStat > > EventStats
SG::WriteHandleKey< ActsTrk::TrackContainer > m_trackContainerKey
Gaudi::Property< std::vector< bool > > m_reverseSearch
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Gaudi::Property< std::vector< std::size_t > > m_absEtaMaxMeasurements
Gaudi::Property< std::vector< double > > m_etaBins
Gaudi::Property< std::vector< double > > m_maxChi2
std::size_t seedCollectionStride() const
Gaudi::Property< std::vector< double > > m_ptMax
Gaudi::Property< std::vector< double > > m_phiMax
Gaudi::Property< bool > m_dumpAllStatEtaBins
Gaudi::Property< std::vector< double > > m_etaMax
@ kNStoppedTracksMaxHoles
ToolHandle< ActsTrk::IFitterTool > m_fitterTool
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_pixelCalibTool
Gaudi::Property< std::vector< double > > m_d0Min
Gaudi::Property< std::vector< std::size_t > > m_maxHoles