|
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/TrackProxy.hpp"
39 #include "GaudiKernel/EventContext.h"
64 ISvcLocator *pSvcLocator);
75 ToolHandle<GenericMonitoringTool>
m_monTool{
this,
"MonTool",
"",
"Monitoring tool"};
78 ToolHandle<ActsTrk::TrackStatePrinter>
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"};
92 {
this,
"DetectorElementToActsGeometryIdMapKey",
"DetectorElementToActsGeometryIdMap",
93 "Map which associates detector elements to Acts Geometry IDs"};
99 Gaudi::Property<unsigned int>
m_maxPropagationStep{
this,
"maxPropagationStep", 1000,
"Maximum number of steps for one propagate call"};
100 Gaudi::Property<bool>
m_skipDuplicateSeeds{
this,
"skipDuplicateSeeds",
true,
"skip duplicate seeds before calling CKF"};
101 Gaudi::Property<std::vector<bool>>
m_refitSeeds{
this,
"refitSeeds", {},
"Run KalmanFitter on seeds before passing to CKF, specified separately for each seed collection"};
102 Gaudi::Property<std::vector<double>>
m_etaBins{
this,
"etaBins", {},
"bins in |eta| to specify variable selections"};
104 Gaudi::Property<std::vector<double>>
m_chi2CutOff{
this,
"chi2CutOff", {},
"MeasurementSelector: maximum local chi2 contribution"};
105 Gaudi::Property<std::vector<double>>
m_chi2OutlierCutOff{
this,
"chi2OutlierCutOff", {},
"MeasurementSelector: maximum local chi2 contribution for outlier"};
106 Gaudi::Property<std::vector<size_t>>
m_numMeasurementsCutOff{
this,
"numMeasurementsCutOff", {},
"MeasurementSelector: maximum number of associated measurements on a single surface"};
107 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"};
108 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"};
110 Gaudi::Property<bool>
m_doTwoWay{
this,
"doTwoWay",
true,
"run CKF twice, first with forward propagation with smoothing, then with backward propagation"};
111 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"};
112 Gaudi::Property<double>
m_branchStopperPtMinFactor{
this,
"branchStopperPtMinFactor", 1.0,
"factor to multiply ptMin cut when used in the branch stopper"};
117 Gaudi::Property<std::vector<double>>
m_phiMin{
this,
"phiMin", {},
"TrackSelector: phiMin"};
118 Gaudi::Property<std::vector<double>>
m_phiMax{
this,
"phiMax", {},
"TrackSelector: phiMax"};
119 Gaudi::Property<std::vector<double>>
m_etaMin{
this,
"etaMin", {},
"TrackSelector: etaMin"};
120 Gaudi::Property<std::vector<double>>
m_etaMax{
this,
"etaMax", {},
"TrackSelector: etaMax"};
121 Gaudi::Property<double>
m_absEtaMin{
this,
"absEtaMin", 0.0,
"TrackSelector: absEtaMin"};
123 Gaudi::Property<std::vector<double>>
m_ptMin{
this,
"ptMin", {},
"TrackSelector: ptMin"};
124 Gaudi::Property<std::vector<double>>
m_ptMax{
this,
"ptMax", {},
"TrackSelector: ptMax"};
125 Gaudi::Property<std::vector<std::size_t>>
m_minMeasurements{
this,
"minMeasurements", {},
"TrackSelector: minMeasurements"};
126 Gaudi::Property<std::vector<std::size_t>>
m_maxHoles{
this,
"maxHoles", {},
"TrackSelector: maxHoles"};
127 Gaudi::Property<std::vector<std::size_t>>
m_maxOutliers{
this,
"maxOutliers", {},
"TrackSelector: maxOutliers"};
128 Gaudi::Property<std::vector<std::size_t>>
m_maxSharedHits{
this,
"maxSharedHits", {},
"TrackSelector: maxSharedHits"};
129 Gaudi::Property<std::vector<double>>
m_maxChi2{
this,
"maxChi2", {},
"TrackSelector: maxChi2"};
132 Gaudi::Property<std::vector<float>>
m_statEtaBins{
this,
"StatisticEtaBins", {-4, -2.6, -2, 0, 2., 2.6, 4},
"Gather statistics separately for these bins."};
133 Gaudi::Property<std::vector<std::string>>
m_seedLabels{
this,
"SeedLabels", {},
"One label per seed key used in outputs"};
134 Gaudi::Property<bool>
m_dumpAllStatEtaBins{
this,
"DumpEtaBinsForAll",
false,
"Dump eta bins of all statistics counter."};
155 using EventStats = std::vector<std::array<unsigned int, kNStat>>;
174 const Acts::TrackingGeometry &trackingGeometry,
181 size_t seedCollectionIndex,
182 const char *seedType,
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
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
Scalar eta() const
pseudorapidity method
const Acts::Logger & logger() const
Private access to the logger.
Gaudi::Property< double > m_absEtaMax
SG::ReadCondHandleKey< ActsTrk::DetectorElementToActsGeometryIdMap > m_detectorElementToGeometryIdMapKey
TrackFindingAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< std::vector< double > > m_phiMin
Gaudi::Property< std::vector< bool > > m_refitSeeds
CKF_pimpl & trackFinder()
Gaudi::Property< double > m_branchStopperPtMinFactor
Gaudi::Property< std::vector< std::size_t > > m_maxOutliers
RecoTrackContainer::TrackProxy RecoTrackContainerProxy
SG::ReadHandleKeyArray< ActsTrk::SeedContainer > m_seedContainerKeys
Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory > RecoTrackContainer
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
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
std::size_t computeStatSum(std::size_t seed_collection, EStat counter_i, const EventStats &stat) const
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
::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< size_t > > m_numMeasurementsCutOff
Gaudi::Property< bool > m_useDefaultMeasurementSelector
ToolHandle< GenericMonitoringTool > m_monTool
std::unique_ptr< ActsTrk::IMeasurementSelector > m_measurementSelector
virtual StatusCode initialize() override
Property holding a SG store/key/clid from which a WriteHandle is made.
virtual ~TrackFindingAlg()
Gaudi::Property< std::vector< double > > m_chi2CutOff
Gaudi::Property< bool > m_doBranchStopper
Gaudi::Property< bool > m_skipDuplicateSeeds
std::size_t getStatCategory(std::size_t seed_collection, float eta) const
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< std::vector< double > > m_etaMin
Gaudi::Property< std::vector< std::size_t > > m_minMeasurements
Gaudi::Property< std::vector< std::size_t > > m_ptMinMeasurements
std::unique_ptr< const Acts::Logger > m_logger
logging instance
ToolHandle< ActsTrk::TrackStatePrinter > m_trackStatePrinter
ActsTrk::MutableTrackContainerHandlesHelper m_tracksBackendHandlesHelper
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< std::size_t > > m_maxHoles