 |
ATLAS Offline Software
|
#include <TrackFindingAlg.h>
|
| TrackFindingAlg (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~TrackFindingAlg ()=default |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | finalize () override |
|
virtual StatusCode | execute (const EventContext &ctx) const override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
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 . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T, V, H > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
enum | EStat : std::size_t {
kNTotalSeeds,
kNoTrackParam,
kNUsedSeeds,
kNoTrack,
kNDuplicateSeeds,
kNNoEstimatedParams,
kNOutputTracks,
kNRejectedRefinedSeeds,
kNSelectedTracks,
kNStoppedTracksMaxHoles,
kMultipleBranches,
kNoSecond,
kNStoppedTracksMinPt,
kNStoppedTracksMaxEta,
kNTotalSharedHits,
kNForcedSeedMeasurements,
kNStat
} |
|
using | TrackFinderOptions = Acts::CombinatorialKalmanFilterOptions< detail::RecoTrackContainer > |
|
using | EventStats = std::vector< std::array< unsigned int, kNStat > > |
|
using | TrkProxy = Acts::TrackProxy< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, Acts::detail::RefHolder, false > |
|
using | BranchStopperResult = Acts::CombinatorialKalmanFilterBranchStopperResult |
|
|
CKF_pimpl & | trackFinder () |
|
const CKF_pimpl & | trackFinder () const |
|
StatusCode | initializeMeasurementSelector () |
|
std::unique_ptr< ActsTrk::IMeasurementSelector > | setMeasurementSelector (const detail::TrackFindingMeasurements &measurements, TrackFinderOptions &options) const |
| Setup and attach measurement selector to KF options. More...
|
|
TrackFindingDefaultOptions | getDefaultOptions (const DetectorContextHolder &detContext, const detail::TrackFindingMeasurements &measurements, const Acts::PerigeeSurface *pSurface) const |
| Get CKF options for first and second pass + pointer to MeasurementSelector. More...
|
|
template<class HandleArrayKeyType , class ContainerType > |
StatusCode | getContainersFromKeys (const EventContext &ctx, HandleArrayKeyType &handleKeyArray, std::vector< const ContainerType * > &outputContainers, std::size_t &sum) const |
| Take the array of handle keys and for each key retrieve containers, then append them to the output vector. More...
|
|
const Acts::TrackSelector::Config & | getCuts (double eta) const |
| Retrieves track selector configuration for given eta value. More...
|
|
template<class MeasurementSource > |
std::unique_ptr< Acts::BoundTrackParameters > | doRefit (const MeasurementSource &measurement, const Acts::BoundTrackParameters &initialParameters, const DetectorContextHolder &detContext, const bool paramsAtOutermostSurface) const |
| Perform Kalman Filter fit and update given initialParameters. More...
|
|
std::vector< typename detail::RecoTrackContainer::TrackProxy > | doTwoWayTrackFinding (const detail::RecoTrackStateContainerProxy &firstMeasurement, const TrkProxy &trackProxy, detail::RecoTrackContainer &tracksContainerTemp, const TrackFinderOptions &options) const |
| Perform two-way track finding. More...
|
|
BranchStopperResult | stopBranch (const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackStateProxy &trackState, const Acts::TrackSelector::EtaBinnedConfig &trackSelectorCfg, const Acts::GeometryContext &tgContext, const detail::MeasurementIndex &measurementIndex, const std::size_t typeIndex, EventStats::value_type &event_stat_category_i) const |
| Branch stopper. More...
|
|
void | checkCounts (const detail::RecoTrackContainer::TrackProxy &track) const |
|
std::array< bool, 3 > | selectCounts (const detail::RecoTrackContainer::TrackProxy &track, double eta) const |
|
bool | selectCountsFinal (const detail::RecoTrackContainer::TrackProxy &track) const |
|
const Acts::Logger & | logger () const |
| Private access to the logger. More...
|
|
void | initStatTables () |
|
void | copyStats (const EventStats &event_stat) const |
|
void | printStatTables () const |
|
std::size_t | nSeedCollections () const |
|
std::size_t | seedCollectionStride () const |
|
std::size_t | getStatCategory (std::size_t seed_collection, float eta) const |
|
std::size_t | computeStatSum (std::size_t seed_collection, EStat counter_i, const EventStats &stat) const |
|
void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution More...
|
|
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. More...
|
|
|
struct ActsTrk::TrackFindingBaseAlg::MeasurementSelectorConfig | m_measurementSelectorConfig |
|
std::unique_ptr< CKF_pimpl > | m_trackFinder |
|
detail::xAODUncalibMeasSurfAcc | m_unalibMeasSurfAcc {} |
|
ToolHandle< GenericMonitoringTool > | m_monTool {this, "MonTool", "", "Monitoring tool"} |
|
ToolHandle< IActsExtrapolationTool > | m_extrapolationTool {this, "ExtrapolationTool", ""} |
|
PublicToolHandle< ActsTrk::ITrackingGeometryTool > | m_trackingGeometryTool {this, "TrackingGeometryTool", ""} |
|
ToolHandle< ActsTrk::TrackStatePrinterTool > | m_trackStatePrinter {this, "TrackStatePrinter", "", "optional track state printer"} |
|
ToolHandle< ActsTrk::IActsToTrkConverterTool > | m_ATLASConverterTool {this, "ATLASConverterTool", ""} |
|
ToolHandle< ActsTrk::IFitterTool > | m_fitterTool {this, "FitterTool", "", "Fitter Tool for Seeds"} |
|
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > | m_pixelCalibTool {this, "PixelCalibrator", "", "Opt. pixel measurement calibrator"} |
|
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > | m_stripCalibTool {this, "StripCalibrator", "", "Opt. strip measurement calibrator"} |
|
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > | m_hgtdCalibTool {this, "HGTDCalibrator", "", "Opt. HGTD measurement calibrator"} |
|
SG::WriteHandleKey< ActsTrk::TrackContainer > | m_trackContainerKey {this, "ACTSTracksLocation", "", "Output track collection (ActsTrk variant)"} |
|
ActsTrk::MutableTrackContainerHandlesHelper | m_tracksBackendHandlesHelper {this} |
|
Gaudi::Property< unsigned int > | m_maxPropagationStep {this, "maxPropagationStep", 1000, "Maximum number of steps for one propagate call"} |
|
Gaudi::Property< std::vector< double > > | m_etaBins {this, "etaBins", {}, "bins in |eta| to specify variable selections"} |
|
Gaudi::Property< std::vector< double > > | m_chi2CutOff {this, "chi2CutOff", {}, "MeasurementSelector: maximum local chi2 contribution"} |
|
Gaudi::Property< std::vector< double > > | m_chi2OutlierCutOff {this, "chi2OutlierCutOff", {}, "MeasurementSelector: maximum local chi2 contribution for outlier"} |
|
Gaudi::Property< std::vector< size_t > > | m_numMeasurementsCutOff {this, "numMeasurementsCutOff", {}, "MeasurementSelector: maximum number of associated measurements on a single surface"} |
|
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"} |
|
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"} |
|
Gaudi::Property< bool > | m_doBranchStopper {this, "doBranchStopper", true, "use branch stopper"} |
|
Gaudi::Property< bool > | m_doTwoWay {this, "doTwoWay", true, "run CKF twice, first with forward propagation with smoothing, then with backward propagation"} |
|
Gaudi::Property< double > | m_branchStopperPtMinFactor {this, "branchStopperPtMinFactor", 1.0, "factor to multiply ptMin cut when used in the branch stopper"} |
|
Gaudi::Property< double > | m_branchStopperAbsEtaMaxExtra {this, "branchStopperAbsEtaMaxExtra", 0.0, "increase absEtaMax cut when used in the branch stopper"} |
|
Gaudi::Property< double > | m_branchStopperMeasCutReduce {this, "branchStopperMeasCutReduce", 2, "how much to reduce the minMeas requirement for the branch stopper"} |
|
Gaudi::Property< double > | m_branchStopperAbsEtaMeasCut {this, "branchStopperAbsEtaMeasCut", 1.2, "the minimum |eta| to apply the reduction to the minMeas requirement for the branch stopper"} |
|
Gaudi::Property< std::vector< double > > | m_phiMin {this, "phiMin", {}, "TrackSelector: phiMin"} |
|
Gaudi::Property< std::vector< double > > | m_phiMax {this, "phiMax", {}, "TrackSelector: phiMax"} |
|
Gaudi::Property< std::vector< double > > | m_etaMin {this, "etaMin", {}, "TrackSelector: etaMin"} |
|
Gaudi::Property< std::vector< double > > | m_etaMax {this, "etaMax", {}, "TrackSelector: etaMax"} |
|
Gaudi::Property< double > | m_absEtaMin {this, "absEtaMin", 0.0, "TrackSelector: absEtaMin"} |
|
Gaudi::Property< double > | m_absEtaMax {this, "absEtaMax", std::numeric_limits<double>::max(), "TrackSelector: absEtaMax"} |
|
Gaudi::Property< std::vector< double > > | m_ptMin {this, "ptMin", {}, "TrackSelector: ptMin"} |
|
Gaudi::Property< std::vector< double > > | m_ptMax {this, "ptMax", {}, "TrackSelector: ptMax"} |
|
Gaudi::Property< std::vector< double > > | m_d0Min {this, "d0Min", {}, "TrackSelector: d0Min"} |
|
Gaudi::Property< std::vector< double > > | m_d0Max {this, "d0Max", {}, "TrackSelector: d0Max"} |
|
Gaudi::Property< std::vector< double > > | m_z0Min {this, "z0Min", {}, "TrackSelector: z0Min"} |
|
Gaudi::Property< std::vector< double > > | m_z0Max {this, "z0Max", {}, "TrackSelector: z0Max"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_minMeasurements {this, "minMeasurements", {}, "TrackSelector: minMeasurements"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxHoles {this, "maxHoles", {}, "TrackSelector: maxHoles"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxOutliers {this, "maxOutliers", {}, "TrackSelector: maxOutliers"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxSharedHits {this, "maxSharedHits", {}, "TrackSelector: maxSharedHits"} |
|
Gaudi::Property< std::vector< double > > | m_maxChi2 {this, "maxChi2", {}, "TrackSelector: maxChi2"} |
|
Gaudi::Property< bool > | m_addCounts {this, "addCounts", true, "keep separate pixel, strip and hgtd counts and apply the following cuts"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_minPixelHits {this, "minPixelHits", {}, "minimum number of pixel hits"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_minStripHits {this, "minStripHits", {}, "minimum number of strip hits"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_minHgtdHits {this, "minHgtdHits", {}, "minimum number of hgtd hits"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxPixelHoles {this, "maxPixelHoles", {}, "maximum number of pixel holes"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxStripHoles {this, "maxStripHoles", {}, "maximum number of strip holes"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxHgtdHoles {this, "maxHgtdHoles", {}, "maximum number of hgtd holes"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxPixelOutliers {this, "maxPixelOutliers", {}, "maximum number of pixel outliers"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxStripOutliers {this, "maxStripOutliers", {}, "maximum number of strip outliers"} |
|
Gaudi::Property< std::vector< std::size_t > > | m_maxHgtdOutliers {this, "maxHgtdOutliers", {}, "maximum number of hgtd outliers"} |
|
Gaudi::Property< std::vector< std::uint32_t > > | m_endOfWorldVolumeIds {this, "EndOfTheWorldVolumeIds", {}, ""} |
|
Gaudi::Property< std::vector< float > > | m_statEtaBins {this, "StatisticEtaBins", {-4, -2.6, -2, 0, 2., 2.6, 4}, "Gather statistics separately for these bins."} |
|
Gaudi::Property< std::vector< std::string > > | m_seedLabels {this, "SeedLabels", {}, "One label per seed key used in outputs"} |
|
Gaudi::Property< bool > | m_dumpAllStatEtaBins {this, "DumpEtaBinsForAll", false, "Dump eta bins of all statistics counter."} |
|
std::unique_ptr< const Acts::Logger > | m_logger |
| logging instance More...
|
|
bool | m_useAbsEtaForStat = false |
|
|
std::size_t | getSeedCategory (std::size_t typeIndex, const ActsTrk::Seed &seed, bool useTopSp) 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 |
|
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 |
|
StatusCode | storeTrackCollectionToStoreGate (const EventContext &ctx, Acts::VectorTrackContainer &&originalTrackBackend, Acts::VectorMultiTrajectory &&originalTrackStateBackend) const |
|
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 |
|
bool | shouldReverseSearch (const ActsTrk::Seed &seed) const |
|
Acts::Result< void > | extrapolateTrackToReferenceSurface (const DetectorContextHolder &detContext, detail::RecoTrackContainerProxy &track, const Acts::Surface &referenceSurface, const detail::Extrapolator &propagator, Acts::TrackExtrapolationStrategy strategy, ExpectedLayerPattern &expectedLayerPattern) const |
|
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 More...
|
|
void | storeSeedInfo (const detail::RecoTrackContainer &tracksContainer, const detail::RecoTrackContainerProxy &track, detail::DuplicateSeedDetector &duplicateSeedDetector, const detail::MeasurementIndex &measurementIndex) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
ToolHandle< ActsTrk::ITrackParamsEstimationTool > | m_paramEstimationTool {this, "TrackParamsEstimationTool", "", "Track Param Estimation from Seeds"} |
|
SG::ReadHandleKeyArray< ActsTrk::SeedContainer > | m_seedContainerKeys {this, "SeedContainerKeys", {}, "Seed containers"} |
|
SG::ReadCondHandleKeyArray< InDetDD::SiDetectorElementCollection > | m_detEleCollKeys {this, "DetectorElementsKeys", {}, "Keys of input SiDetectorElementCollection"} |
|
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainer > | m_uncalibratedMeasurementContainerKeys {this, "UncalibratedMeasurementContainerKeys", {}, "input cluster collections"} |
|
SG::ReadCondHandleKey< ActsTrk::ActsVolumeIdToDetectorElementCollectionMap > | m_volumeIdToDetectorElementCollMapKey |
|
SG::ReadHandleKeyArray< InDet::SiDetectorElementStatus > | m_detElStatus {this, "DetElStatus", {}, "Keys for detector element status conditions data."} |
|
bool | m_storeDestinies {false} |
|
SG::WriteHandleKeyArray< std::vector< int > > | m_seedDestiny {this, "SeedDestiny", {}} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
Gaudi::Property< bool > | m_skipDuplicateSeeds {this, "skipDuplicateSeeds", true, "skip duplicate seeds before calling CKF"} |
|
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"} |
|
Gaudi::Property< std::vector< bool > > | m_refitSeeds {this, "refitSeeds", {}, "Run KalmanFitter on seeds before passing to CKF, specified separately for each seed collection"} |
|
Gaudi::Property< std::vector< double > > | m_useTopSpRZboundary {this, "useTopSpRZboundary", {350. * Acts::UnitConstants::mm, 1060. * Acts::UnitConstants::mm}, "R/Z boundary for using the top space point in the track parameter estimation"} |
|
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"} |
|
Gaudi::Property< bool > | m_countSharedHits {this, "countSharedHits", true, "add shared hit flags to tracks"} |
|
Gaudi::Property< bool > | m_forceTrackOnSeed {this, "forceTrackOnSeed", true, "force track to use measurements from the seed"} |
|
Gaudi::Property< unsigned int > | m_maximumSharedHits {this, "MaximumSharedHits", 3u, "Maximum number of shared hits per track."} |
|
Gaudi::Property< unsigned int > | m_maximumIterations {this, "MaximumIterations", 10000u, "Maximum number of iterations to resolve ambiguities among all tracks."} |
|
Gaudi::Property< unsigned int > | m_nMeasurementsMin {this, "NMeasurementsMin", 7u, "Minimum number of measurements per track."} |
|
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"} |
|
std::optional< Acts::GreedyAmbiguityResolution > | m_ambi |
|
Gaudi::Property< float > | m_memorySafetyMargin {this, "MemorySafetyMargin", 1.2} |
|
std::size_t m_nTrackReserve | ATLAS_THREAD_SAFE {0ul} |
|
std::size_t m_nTrackStateReserve | ATLAS_THREAD_SAFE {0ul} |
|
std::mutex m_mutex | ATLAS_THREAD_SAFE {} |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 46 of file TrackFindingAlg.h.
◆ BranchStopperResult
◆ EventStats
◆ ExpectedLayerPattern
◆ StoreGateSvc_t
◆ TrackFinderOptions
◆ TrkProxy
◆ DestinyType
◆ EStat
Enumerator |
---|
kNTotalSeeds | |
kNoTrackParam | |
kNUsedSeeds | |
kNoTrack | |
kNDuplicateSeeds | |
kNNoEstimatedParams | |
kNOutputTracks | |
kNRejectedRefinedSeeds | |
kNSelectedTracks | |
kNStoppedTracksMaxHoles | |
kMultipleBranches | |
kNoSecond | |
kNStoppedTracksMinPt | |
kNStoppedTracksMaxEta | |
kNTotalSharedHits | |
kNForcedSeedMeasurements | |
kNStat | |
Definition at line 155 of file TrackFindingBaseAlg.h.
◆ TrackFindingAlg()
ActsTrk::TrackFindingAlg::TrackFindingAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~TrackFindingAlg()
virtual ActsTrk::TrackFindingAlg::~TrackFindingAlg |
( |
| ) |
|
|
virtualdefault |
◆ addCounts()
Definition at line 384 of file TrackFindingBaseAlg.cxx.
386 tracksContainer.addColumn<
unsigned int>(
"nPixelHits");
387 tracksContainer.addColumn<
unsigned int>(
"nStripHits");
388 tracksContainer.addColumn<
unsigned int>(
"nHgtdHits");
389 tracksContainer.addColumn<
unsigned int>(
"nPixelHoles");
390 tracksContainer.addColumn<
unsigned int>(
"nStripHoles");
391 tracksContainer.addColumn<
unsigned int>(
"nHgtdHoles");
392 tracksContainer.addColumn<
unsigned int>(
"nPixelOutliers");
393 tracksContainer.addColumn<
unsigned int>(
"nStripOutliers");
394 tracksContainer.addColumn<
unsigned int>(
"nHgtdOutliers");
◆ addTrack()
StatusCode ActsTrk::TrackFindingAlg::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 |
|
private |
Definition at line 925 of file TrackFindingAlg.cxx.
947 if (not
track.hasReferenceSurface()) {
948 auto extrapolationResult =
952 extrapolationStrategy,
955 if (not extrapolationResult.ok()) {
957 << iseed <<
" and " <<
track.index()
958 <<
" failed with error " << extrapolationResult.error()
959 <<
" dropping track candidate.");
961 return StatusCode::SUCCESS;
966 for(
const auto ts :
track.trackStatesReversed()) {
967 const auto& surface =
ts.referenceSurface();
968 if(surface.associatedDetectorElement() !=
nullptr) {
969 const auto* detElem =
dynamic_cast<const ActsDetectorElement*
>(surface.associatedDetectorElement());
970 if(detElem !=
nullptr) {
981 Acts::trimTrack(
track,
true,
true,
true,
true);
982 Acts::calculateTrackQuantities(
track);
985 for (
const auto trackState :
track.trackStatesReversed()) {
996 ATH_MSG_DEBUG(
"Track " << ntracks <<
" from " << seedType <<
" seed " << iseed <<
" failed track selection");
1000 return StatusCode::SUCCESS;
1008 auto actsDestProxy = actsTracksContainer.makeTrack();
1009 actsDestProxy.copyFrom(
track);
1014 return StatusCode::SUCCESS;
1017 auto [nShared, nBadTrackMeasurements] = sharedHits.computeSharedHits(actsDestProxy, actsTracksContainer, measurementIndex);
1019 if (nBadTrackMeasurements > 0) {
1020 ATH_MSG_ERROR(
"computeSharedHits: " << nBadTrackMeasurements <<
" track measurements not found in input for " << seedType <<
" seed " << iseed <<
" track");
1023 ATH_MSG_DEBUG(
"found " << actsDestProxy.nSharedHits() <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track");
1034 ATH_MSG_DEBUG(
"found " << actsDestProxy.nSharedHits() <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track");
1038 auto [nSharedRemoved, nRemoveBadTrackMeasurements] = sharedHits.computeSharedHits(actsDestProxy, actsTracksContainer, measurementIndex,
true);
1040 ATH_MSG_DEBUG(
"Removed " << nSharedRemoved <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track and the matching track");
1042 if (nRemoveBadTrackMeasurements > 0) {
1043 ATH_MSG_ERROR(
"computeSharedHits with remove flag ON: " << nRemoveBadTrackMeasurements <<
1044 " track measurements not found in input for " << seedType <<
" seed " << iseed <<
" track");
1047 if (actsDestProxy.nSharedHits() != 0) {
1048 ATH_MSG_ERROR(
"computeSharedHits with remove flag ON returned " <<
1049 actsDestProxy.nSharedHits()<<
" while expecting 0 for" <<
1050 seedType <<
" seed " << iseed <<
" track");
1054 actsTracksContainer.removeTrack(actsDestProxy.index());
1055 ATH_MSG_DEBUG(
"Track " << ntracks <<
" from " << seedType <<
" seed " << iseed <<
" failed shared hit selection");
1062 m_trackStatePrinter->printTrack(detContext.geometry, actsTracksContainer, actsDestProxy, measurementIndex);
1066 return StatusCode::SUCCESS;
◆ cardinality()
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.
◆ checkCounts()
void ActsTrk::TrackFindingBaseAlg::checkCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track | ) |
const |
|
protectedinherited |
◆ computeStatSum()
std::size_t ActsTrk::TrackFindingBaseAlg::computeStatSum |
( |
std::size_t |
seed_collection, |
|
|
EStat |
counter_i, |
|
|
const EventStats & |
stat |
|
) |
| const |
|
protectedinherited |
◆ copyCounts()
void ActsTrk::TrackFindingBaseAlg::copyCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track, |
|
|
const detail::RecoTrackContainer::TrackProxy & |
other |
|
) |
| |
|
staticprotectedinherited |
◆ copyStats()
void ActsTrk::TrackFindingBaseAlg::copyStats |
( |
const EventStats & |
event_stat | ) |
const |
|
protectedinherited |
Definition at line 550 of file TrackFindingBaseAlg.cxx.
551 std::lock_guard<std::mutex>
lock(m_mutex);
552 std::size_t category_i = 0;
553 for (
const std::array<unsigned int, kNStat> &src_stat : event_stat)
555 std::array<std::size_t, kNStat> &dest_stat = m_stat[category_i++];
556 for (std::size_t
i = 0;
i < src_stat.size(); ++
i)
558 assert(
i < dest_stat.size());
559 dest_stat[
i] += src_stat[
i];
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ doRefit()
template<class MeasurementSource >
std::unique_ptr<Acts::BoundTrackParameters> ActsTrk::TrackFindingBaseAlg::doRefit |
( |
const MeasurementSource & |
measurement, |
|
|
const Acts::BoundTrackParameters & |
initialParameters, |
|
|
const DetectorContextHolder & |
detContext, |
|
|
const bool |
paramsAtOutermostSurface |
|
) |
| const |
|
protectedinherited |
Perform Kalman Filter fit and update given initialParameters.
- Template Parameters
-
- Parameters
-
measurement | Measurement source for KF |
initialParameters | Parameters to use in KF |
detContext | Struct holding geometry, magnetic field and calibration contexts |
paramsAtOutermostSurface | Flag for searching in reverse direction |
- Returns
- Unique pointer to updated parameters
◆ doTwoWayTrackFinding()
Perform two-way track finding.
- Parameters
-
addTrack | Function or lambda which adds newly found track to container |
trackProxy | Track proxy object |
tracksContainerTemp | Track proxy container |
options | Fit options |
tgContext | Geometry context |
reverseSearch | Flag for searching in reverse direction |
seedType | Seed type (only used for warnings/debug printouts) |
iseed | Seed number (only used for warnings/debug printouts) |
itrack | Track number (only used for warnings/debug printouts) |
- Returns
- Number of found tracks
Definition at line 235 of file TrackFindingBaseAlg.cxx.
243 if (!secondInitialParameters.referenceSurface().insideBounds(secondInitialParameters.localPosition())) {
247 auto rootBranch = tracksContainerTemp.makeTrack();
248 rootBranch.copyFromWithoutStates(trackProxy);
256 if (not secondResult.ok()) {
259 return secondResult.value();
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode ActsTrk::TrackFindingAlg::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
Reimplemented from ActsTrk::TrackFindingBaseAlg.
Definition at line 152 of file TrackFindingAlg.cxx.
165 std::vector<const ActsTrk::SeedContainer *> seedContainers;
166 std::size_t total_seeds = 0;
170 std::vector< std::unique_ptr< std::vector<int> > > destinies {};
172 destinies.reserve( seedContainers.size() );
173 for (std::size_t
i(0);
i<seedContainers.size(); ++
i) {
179 std::vector<const xAOD::UncalibratedMeasurementContainer *> uncalibratedMeasurementContainers;
180 std::size_t total_measurements = 0;
186 ATH_CHECK(volumeIdToDetectorElementCollMap.isValid());
187 std::vector< const InDet::SiDetectorElementStatus *> det_el_status_arr;
188 const std::vector<const InDetDD::SiDetectorElementCollection*> &det_el_collections =volumeIdToDetectorElementCollMap->collections();
189 det_el_status_arr.resize( det_el_collections.size(),
nullptr);
193 const std::vector<const InDetDD::SiDetectorElementCollection*>::const_iterator
194 det_el_col_iter =
std::find(det_el_collections.begin(),
195 det_el_collections.end(),
196 &det_el_status->getDetectorElements());
197 det_el_status_arr.at(det_el_col_iter - det_el_collections.begin()) = det_el_status.cptr();
200 detail::MeasurementIndex measurementIndex(uncalibratedMeasurementContainers.size());
201 for (std::size_t icontainer = 0; icontainer < uncalibratedMeasurementContainers.size(); ++icontainer) {
202 measurementIndex.addMeasurements(*uncalibratedMeasurementContainers[icontainer]);
205 detail::TrackFindingMeasurements measurements(uncalibratedMeasurementContainers.size());
206 for (std::size_t icontainer = 0; icontainer < uncalibratedMeasurementContainers.size(); ++icontainer) {
208 measurements.addMeasurements(icontainer,
209 *uncalibratedMeasurementContainers[icontainer],
214 ATH_MSG_DEBUG(
"measurement index size = " << measurementIndex.size());
219 m_trackStatePrinter->printMeasurements(ctx, uncalibratedMeasurementContainers, measurements.measurementOffsets());
222 detail::DuplicateSeedDetector duplicateSeedDetector(total_seeds,
225 for (std::size_t icontainer = 0; icontainer < seedContainers.size(); ++icontainer)
227 duplicateSeedDetector.addSeeds(icontainer, *seedContainers[icontainer], measurementIndex,
230 const bool reverseSearch = m_autoReverseSearch && shouldReverseSearch(seed);
231 const bool refitSeeds = icontainer < m_refitSeeds.size() && m_refitSeeds[icontainer];
232 const bool useTopSp = reverseSearch && !refitSeeds;
248 std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(beamPos);
254 std::vector<const InDetDD::SiDetectorElementCollection*> detElementsCollections;
255 std::size_t total_detElems = 0;
261 Acts::VectorTrackContainer actsTrackBackend;
262 Acts::VectorMultiTrajectory actsTrackStateBackend;
264 std::lock_guard<std::mutex>
lock( m_mutex );
265 actsTrackBackend.reserve(m_nTrackReserve);
266 actsTrackStateBackend.reserve(m_nTrackStateReserve);
269 actsTrackStateBackend);
278 event_stat.resize(m_stat.size());
280 DetectorContextHolder detContext {
287 detail::SharedHitCounter sharedHits;
290 for (std::size_t icontainer = 0; icontainer < seedContainers.size(); ++icontainer)
296 duplicateSeedDetector,
297 *seedContainers.at(icontainer),
298 *detElementsCollections.at(icontainer),
307 ATH_MSG_DEBUG(
" \\__ Created " << actsTracksContainer.size() <<
" tracks");
309 mon_nTracks = actsTracksContainer.size();
319 for (std::size_t
i(0);
i<destinies.size(); ++
i) {
328 std::lock_guard<std::mutex>
lock( m_mutex );
330 if (actsTrackBackend.size() > m_nTrackReserve) {
331 m_nTrackReserve =
static_cast<std::size_t
>( std::ceil(
m_memorySafetyMargin * actsTrackBackend.size()) );
333 if (actsTrackStateBackend.size() > m_nTrackStateReserve) {
334 m_nTrackStateReserve =
static_cast<std::size_t
>( std::ceil(
m_memorySafetyMargin * actsTrackStateBackend.size()) );
342 ATH_MSG_DEBUG(
" \\__ Created " << actsTracksContainer.size() <<
" resolved tracks");
344 std::move(actsTrackBackend),
345 std::move(actsTrackStateBackend) ) );
346 return StatusCode::SUCCESS;
351 Acts::VectorTrackContainer resolvedTrackBackend;
352 Acts::VectorMultiTrajectory resolvedTrackStateBackend;
353 resolvedTrackBackend.reserve( actsTrackBackend.size() );
354 resolvedTrackStateBackend.reserve( actsTrackStateBackend.size() );
364 m_ambi->computeInitialState(actsTracksContainer, state, &sourceLinkHash,
365 &sourceLinkEquality);
371 detail::SharedHitCounter sharedHits_forFinalAmbi;
374 for (
auto iTrack : state.selectedTracks) {
375 auto destProxy = resolvedTracksContainer.makeTrack();
376 destProxy.copyFrom(actsTracksContainer.getTrack(state.trackTips.at(iTrack)));
379 auto [nShared, nBadTrackMeasurements] = sharedHits_forFinalAmbi.computeSharedHits(destProxy, resolvedTracksContainer, measurementIndex);
380 if (nBadTrackMeasurements > 0)
381 ATH_MSG_ERROR(
"computeSharedHits: " << nBadTrackMeasurements <<
" track measurements not found in input track");
385 ATH_MSG_DEBUG(
" \\__ Created " << resolvedTracksContainer.size() <<
" resolved tracks");
388 std::move(resolvedTrackBackend),
389 std::move(resolvedTrackStateBackend)) );
391 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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()
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.
◆ extrapolateTrackToReferenceSurface()
Definition at line 861 of file TrackFindingAlg.cxx.
870 Acts::ActorList<Acts::MaterialInteractor, Collector>>
871 options(detContext.geometry, detContext.magField);
873 auto findResult = findTrackStateForExtrapolation(
876 if (!findResult.ok()) {
877 ACTS_ERROR(
"failed to find track state for extrapolation");
878 return findResult.error();
881 auto &[trackState,
distance] = *findResult;
883 options.direction = Acts::Direction::fromScalarZeroAsPositive(
distance);
885 Acts::BoundTrackParameters
parameters =
track.createParametersFromState(trackState);
886 ACTS_VERBOSE(
"extrapolating track to reference surface at distance "
888 <<
" with starting parameters " <<
parameters);
890 auto state = propagator.makeState<decltype(
options), Acts::ForcedSurfaceReached>(referenceSurface,
options);
894 auto initRes = propagator.initialize(state,
parameters);
896 ACTS_ERROR(
"Failed to initialize propgation state: " << initRes.error().message());
897 return initRes.error();
901 auto propagateOnlyResult =
902 propagator.propagate(state);
904 if (!propagateOnlyResult.ok()) {
905 ACTS_ERROR(
"failed to extrapolate track: " << propagateOnlyResult.error().message());
906 return propagateOnlyResult.error();
909 auto propagateResult = propagator.makeResult(
910 std::move(state), propagateOnlyResult, referenceSurface,
options);
912 if (!propagateResult.ok()) {
913 ACTS_ERROR(
"failed to extrapolate track: " << propagateResult.error().message());
914 return propagateResult.error();
917 track.setReferenceSurface(referenceSurface.getSharedPtr());
918 track.parameters() = propagateResult->endParameters.value().parameters();
920 propagateResult->endParameters.value().covariance().value();
922 return Acts::Result<void>::success();
◆ filterPassed()
◆ finalize()
StatusCode ActsTrk::TrackFindingAlg::finalize |
( |
| ) |
|
|
overridevirtual |
◆ findTracks()
StatusCode ActsTrk::TrackFindingAlg::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 |
|
private |
invoke track finding procedure
- Parameters
-
ctx | - event context |
detectorElementToGeoId | - map Trk detector element to Acts Geometry id |
measurements | - measurements container used in MeasurementSelector |
sharedHits | - measurements container used for shared hit counting |
duplicateSeedDetector | - duplicate seed detector |
seeds | - spacepoint triplet seeds |
detElements | - Trk detector elements |
actsTracksContainer | - output tracks |
seedCollectionIndex | - index of this collection of seeds |
seedType | - name of type of seeds (strip or pixel) - only used for messages |
event_stat | - stats, just for this event |
Definition at line 425 of file TrackFindingAlg.cxx.
444 Acts::VectorTrackContainer trackBackend;
445 Acts::VectorMultiTrajectory trackStateBackend;
454 std::size_t category_i = 0;
456 auto stopBranchProxy = [&](
const detail::RecoTrackContainer::TrackProxy &
track,
458 return stopBranch(
track, trackState, trackSelectorCfg, detContext.geometry, measurementIndex, typeIndex, event_stat[category_i]);
460 options.extensions.branchStopper.connect(stopBranchProxy);
463 Acts::ActorList<Acts::MaterialInteractor>>
464 extrapolationOptions(detContext.geometry, detContext.magField);
466 Acts::TrackExtrapolationStrategy extrapolationStrategy =
470 ATH_MSG_DEBUG(
"Invoke track finding with " << seeds.
size() <<
' ' << seedType <<
" seeds.");
473 std::size_t nPrinted = 0;
476 auto retrieveSurfaceFunction =
477 [
this, &detElements] (
const ActsTrk::Seed&
seed,
bool useTopSp) ->
const Acts::Surface& {
488 for (
unsigned int iseed = 0; iseed < seeds.
size(); ++iseed)
494 tracksContainerTemp.
clear();
498 const bool useTopSp = reverseSearch && !refitSeeds;
501 const bool isDupSeed = duplicateSeedDetector.isDuplicate(typeIndex, iseed);
504 ATH_MSG_DEBUG(
"skip " << seedType <<
" seed " << iseed <<
" - already found");
513 options.propagatorPlainOptions.direction = reverseSearch ? Acts::Direction::Backward() :
Acts::Direction::
Forward();
514 secondOptions.propagatorPlainOptions.direction =
options.propagatorPlainOptions.direction.invert();
515 options.targetSurface = reverseSearch ? &pSurface :
nullptr;
516 secondOptions.targetSurface = reverseSearch ? nullptr : &pSurface;
520 std::optional<Acts::BoundTrackParameters> optTrackParams =
525 retrieveSurfaceFunction);
527 if (!optTrackParams) {
528 ATH_MSG_DEBUG(
"Failed to estimate track parameters for seed " << iseed);
538 Acts::BoundTrackParameters *initialParameters = &(*optTrackParams);
539 printSeed(iseed, detContext, seeds, *initialParameters, measurementIndex, nPrinted, seedType);
540 if (isDupSeed)
continue;
548 std::unique_ptr<Acts::BoundTrackParameters> refitSeedParameters;
550 refitSeedParameters =
doRefit(seed, *initialParameters, detContext, reverseSearch);
551 if (refitSeedParameters.get() ==
nullptr) {
556 if (refitSeedParameters.get() != initialParameters) {
557 initialParameters = refitSeedParameters.get();
558 printSeed(iseed, detContext, seeds, *initialParameters, measurementIndex, nPrinted, seedType,
true);
562 auto measurementRangesForced =
563 m_forceTrackOnSeed ? std::make_unique<ActsTrk::detail::MeasurementRangeListFlat>(measurements.setMeasurementRangesForced(seed, measurementIndex))
565 measurementSelector->setMeasurementRangesForced(measurementRangesForced.get());
566 if (measurementRangesForced)
575 ATH_MSG_WARNING(
"Track finding failed for " << seedType <<
" seed " << iseed <<
" with error" <<
result.error());
579 auto &tracksForSeed =
result.value();
583 std::size_t ntracks = 0
ul;
586 std::size_t nfirst = 0;
587 for (
TrkProxy &firstTrack : tracksForSeed) {
589 auto smoothingResult = Acts::smoothTrack(detContext.geometry, firstTrack,
logger(), Acts::MbfSmoother());
590 if (!smoothingResult.ok()) {
592 << iseed <<
" and first track " << firstTrack.index()
593 <<
" failed with error " << smoothingResult.error());
603 extrapolationStrategy,
608 duplicateSeedDetector,
621 std::optional<detail::RecoTrackStateContainerProxy> firstMeas = getFirstMeasurementFromTrack(firstTrack);
623 if (not firstMeas.has_value()) {
624 ATH_MSG_ERROR(
"Could not retrieve first measurement from track proxy. Is it ill-formed?");
625 return StatusCode::FAILURE;
630 std::vector<typename detail::RecoTrackContainer::TrackProxy> secondTracksForSeed =
636 if ( secondTracksForSeed.empty() ) {
637 ATH_MSG_DEBUG(
"No viable result from second track finding for " << seedType <<
" seed " << iseed <<
" track " << nfirst);
642 extrapolationStrategy,
647 duplicateSeedDetector,
659 auto originalFirstMeasurementPrevious = firstMeasurement.previous();
660 for (
auto &secondTrack : secondTracksForSeed) {
661 secondTrack.reverseTrackStates(
true);
663 firstMeasurement.previous() = secondTrack.outermostTrackState().index();
664 secondTrack.tipIndex() = firstTrack.tipIndex();
668 auto secondSmoothingResult = Acts::smoothTrack(detContext.geometry,
671 if ( not secondSmoothingResult.ok() ) {
674 secondTrack.reverseTrackStates(
true);
681 extrapolationStrategy,
686 duplicateSeedDetector,
697 firstMeasurement.previous() = originalFirstMeasurementPrevious;
704 destiny->at(iseed) = DestinyType::FAILURE;
706 destiny->at(iseed) = DestinyType::SUCCEED;
711 ATH_MSG_DEBUG(
"Track finding found no track candidates for " << seedType <<
" seed " << iseed);
713 }
else if (ntracks >= 2) {
723 return StatusCode::SUCCESS;
◆ getContainersFromKeys()
template<class HandleArrayKeyType , class ContainerType >
StatusCode ActsTrk::TrackFindingBaseAlg::getContainersFromKeys |
( |
const EventContext & |
ctx, |
|
|
HandleArrayKeyType & |
handleKeyArray, |
|
|
std::vector< const ContainerType * > & |
outputContainers, |
|
|
std::size_t & |
sum |
|
) |
| const |
|
protectedinherited |
Take the array of handle keys and for each key retrieve containers, then append them to the output vector.
- Template Parameters
-
HandleArrayKeyType | Type of the list of handle keys |
ContainerType | Type of the output container |
- Parameters
-
ctx | Event context |
handleKeyArray | List of handle keys |
outputContainers | Vector of output containers |
sum | Number of total elements in all retrieved containers |
- Returns
- Status code
◆ getCuts()
const Acts::TrackSelector::Config & ActsTrk::TrackFindingBaseAlg::getCuts |
( |
double |
eta | ) |
const |
|
protectedinherited |
Retrieves track selector configuration for given eta value.
- Parameters
-
eta | track candidate eta value |
Definition at line 226 of file TrackFindingBaseAlg.cxx.
229 return (!(std::abs(
eta) < trackSelectorCfg.absEtaEdges.back())) ? trackSelectorCfg.cutSets.back()
230 : (std::abs(
eta) < trackSelectorCfg.absEtaEdges.front()) ? trackSelectorCfg.cutSets.front()
231 : trackSelectorCfg.getCuts(
eta);
◆ getDefaultOptions()
Get CKF options for first and second pass + pointer to MeasurementSelector.
- Parameters
-
detContext | Object holding detector-related context |
measurements | <easurements container used in MeasurementSelector |
pSurface | Raw pointer to perigee surface |
Definition at line 199 of file TrackFindingBaseAlg.cxx.
203 Acts::PropagatorPlainOptions plainOptions{detContext.geometry, detContext.magField};
205 plainOptions.direction = Acts::Direction::Forward();
210 trackFinder().ckfExtensions, plainOptions, pSurface);
214 Acts::PropagatorPlainOptions plainSecondOptions{detContext.geometry, detContext.magField};
216 plainSecondOptions.direction = plainOptions.direction.invert();
218 TrackFinderOptions secondOptions(detContext.geometry, detContext.magField, detContext.calib,
219 options.extensions, plainSecondOptions, pSurface);
220 secondOptions.targetSurface = pSurface;
221 secondOptions.skipPrePropagationUpdate =
true;
223 return {std::move(
options), std::move(secondOptions), std::move(measurementSelector)};
◆ getSeedCategory()
std::size_t ActsTrk::TrackFindingAlg::getSeedCategory |
( |
std::size_t |
typeIndex, |
|
|
const ActsTrk::Seed & |
seed, |
|
|
bool |
useTopSp |
|
) |
| const |
|
private |
◆ getStatCategory()
std::size_t ActsTrk::TrackFindingBaseAlg::getStatCategory |
( |
std::size_t |
seed_collection, |
|
|
float |
eta |
|
) |
| const |
|
protectedinherited |
◆ initCounts()
void ActsTrk::TrackFindingBaseAlg::initCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track | ) |
|
|
staticprotectedinherited |
◆ initialize()
StatusCode ActsTrk::TrackFindingAlg::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from ActsTrk::TrackFindingBaseAlg.
Definition at line 78 of file TrackFindingAlg.cxx.
109 return StatusCode::FAILURE;
115 return StatusCode::FAILURE;
121 return StatusCode::FAILURE;
125 Acts::GreedyAmbiguityResolution::Config
cfg;
136 return StatusCode::FAILURE;
140 return StatusCode::SUCCESS;
◆ initializeMeasurementSelector()
StatusCode ActsTrk::TrackFindingBaseAlg::initializeMeasurementSelector |
( |
| ) |
|
|
protectedinherited |
Definition at line 503 of file TrackFindingBaseAlg.cxx.
508 ATH_MSG_ERROR(
"Outlier chi2 cut off provided but number of elements does not agree with"
509 " chi2 cut off for measurements which however is required: "
511 return StatusCode::FAILURE;
516 chi2CutOffOutlier.push_back( std::make_pair(
static_cast<float>(elm),
527 return StatusCode::SUCCESS ;
◆ initStatTables()
void ActsTrk::TrackFindingBaseAlg::initStatTables |
( |
| ) |
|
|
protectedinherited |
◆ inputHandles()
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::TrackFindingBaseAlg::logger |
( |
| ) |
const |
|
inlineprotectedinherited |
◆ measurementType()
xAOD::UncalibMeasType ActsTrk::TrackFindingBaseAlg::measurementType |
( |
const detail::RecoTrackContainer::TrackStateProxy & |
trackState | ) |
|
|
staticprotectedinherited |
Definition at line 262 of file TrackFindingBaseAlg.cxx.
263 if (trackState.hasReferenceSurface()) {
264 if (
const auto *actsDetElem =
dynamic_cast<const IDetectorElementBase *
>(trackState.referenceSurface().associatedDetectorElement())) {
265 switch (actsDetElem->detectorType()) {
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ nSeedCollections()
std::size_t ActsTrk::TrackFindingBaseAlg::nSeedCollections |
( |
| ) |
const |
|
inlineprotectedinherited |
◆ outputHandles()
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.
◆ printSeed()
◆ printStatTables()
void ActsTrk::TrackFindingBaseAlg::printStatTables |
( |
| ) |
const |
|
protectedinherited |
Definition at line 565 of file TrackFindingBaseAlg.cxx.
568 std::vector<std::string> stat_labels =
574 std::make_pair(
kNoTrack,
"Cannot find track"),
582 std::make_pair(
kNoSecond,
"Tracks failing second CKF"),
588 assert(stat_labels.size() ==
kNStat);
594 std::vector<std::string> eta_labels;
596 for (std::size_t eta_bin_i = 0; eta_bin_i <
m_statEtaBins.size() + 2; ++eta_bin_i)
605 std::vector<std::size_t>
stat =
606 TableUtils::createCounterArrayWithProjections<std::size_t>(
nSeedCollections(),
611 std::size_t stat_stride =
615 std::size_t eta_stride =
619 std::stringstream table_out;
625 for (std::size_t stat_i = 0; stat_i <
kNStat; ++stat_i)
627 std::size_t dest_idx_offset = stat_i * stat_stride;
633 .dumpHeader(stat_i == 0)
634 .dumpFooter(stat_i + 1 ==
kNStat)
635 .separateLastRow(
true)
636 .minLabelWidth(max_label_width)
637 .labelPrefix(stat_labels.at(stat_i));
647 std::size_t dest_idx_offset = eta_bin_i * eta_stride;
651 eta_labels.at(eta_bin_i))
664 auto [ratio_labels, ratio_def] =
666 std::vector<TableUtils::SummandDefinition>{
700 for (std::size_t ratio_i = 0; ratio_i < ratio_labels.size(); ++ratio_i)
703 ratio_i * ratio_stride,
709 .dumpHeader(ratio_i == 0)
710 .dumpFooter(ratio_i + 1 == ratio_labels.size())
711 .separateLastRow(
true)
712 .minLabelWidth(max_label_width)
713 .labelPrefix(ratio_labels.at(ratio_i));
720 (
m_statEtaBins.size() + 1) * ratio_eta_stride + 0 * ratio_stride,
726 .minLabelWidth(max_label_width)
730 eta_labels.erase(eta_labels.end() - 1);
731 constexpr std::size_t ratio_i = 3;
733 ratio_i * ratio_stride,
741 .separateLastRow(
false)
742 .minLabelWidth(max_label_width)
743 .labelPrefix(ratio_labels.at(ratio_i));
◆ propagateDetectorElementStatusToMeasurements()
Definition at line 749 of file TrackFindingAlg.cxx.
752 const Acts::TrackingGeometry *
754 ATH_CHECK(acts_tracking_geometry !=
nullptr);
756 using Counter =
struct {
unsigned int n_volumes, n_volumes_with_status, n_missing_detector_elements, n_detector_elements, n_disabled_detector_elements;};
758 acts_tracking_geometry->visitVolumes([&
counter,
759 &volume_id_to_det_el_coll,
762 this](
const Acts::TrackingVolume *volume_ptr) {
764 if (!volume_ptr)
return;
767 det_el_status = det_el_status_arr.at(volume_id_to_det_el_coll.
collecionMap().at(volume_ptr->geometryId().volume()));
769 ++
counter.n_volumes_with_status;
770 volume_ptr->visitSurfaces([&
counter, det_el_status, &measurements,
this](
const Acts::Surface *surface_ptr) {
771 if (!surface_ptr)
return;
772 const Acts::Surface &surface = *surface_ptr;
773 const Acts::DetectorElementBase*detector_element = surface.associatedDetectorElement();
774 if (detector_element) {
778 ActsTrk::detail::MeasurementRange old_range = measurements.markSurfaceInsensitive(surface_ptr->geometryId());
779 if (!old_range.empty()) {
780 auto geoid_to_string = [](const Acts::GeometryIdentifier &id) -> std::string {
781 std::stringstream amsg;
785 std::string a_msg ( geoid_to_string(surface_ptr->geometryId()));
786 ATH_MSG_WARNING(
"Reject " << (old_range.elementEndIndex() - old_range.elementBeginIndex())
787 <<
" measurements because surface " << a_msg);
789 ++
counter.n_disabled_detector_elements;
795 ++
counter.n_missing_detector_elements;
799 <<
" disabled detector elements " <<
counter.n_disabled_detector_elements
800 <<
" / " <<
counter.n_detector_elements
801 <<
" missing detector elements "
802 <<
counter.n_missing_detector_elements);
803 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ seedCollectionStride()
std::size_t ActsTrk::TrackFindingBaseAlg::seedCollectionStride |
( |
| ) |
const |
|
inlineprotectedinherited |
◆ selectCounts()
std::array< bool, 3 > ActsTrk::TrackFindingBaseAlg::selectCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track, |
|
|
double |
eta |
|
) |
| const |
|
protectedinherited |
Definition at line 477 of file TrackFindingBaseAlg.cxx.
478 bool enoughMeasurements =
true, tooManyHoles =
false, tooManyOutliers =
false;
480 std::size_t
etaBin = (std::abs(
eta) < trackSelectorCfg.absEtaEdges.front()) ? 0
481 : (std::abs(
eta) >= trackSelectorCfg.absEtaEdges.back()) ? trackSelectorCfg.absEtaEdges.size() - 1
482 : trackSelectorCfg.binIndex(
eta);
483 auto cutMin = [
etaBin](std::size_t
val,
const std::vector<std::size_t> &cutSet) {
484 return !cutSet.empty() && (
val < (
etaBin < cutSet.size() ? cutSet[
etaBin] : cutSet.back()));
486 auto cutMax = [
etaBin](std::size_t
val,
const std::vector<std::size_t> &cutSet) {
487 return !cutSet.empty() && (
val > (
etaBin < cutSet.size() ? cutSet[
etaBin] : cutSet.back()));
500 return {enoughMeasurements, tooManyHoles, tooManyOutliers};
◆ selectCountsFinal()
bool ActsTrk::TrackFindingBaseAlg::selectCountsFinal |
( |
const detail::RecoTrackContainer::TrackProxy & |
track | ) |
const |
|
protectedinherited |
◆ setFilterPassed()
◆ setMeasurementSelector()
Setup and attach measurement selector to KF options.
- Parameters
-
measurements | measurements container used in MeasurementSelector |
options | Kalman filter options |
- Returns
- unique_ptr to MeasurementSelector
Definition at line 182 of file TrackFindingBaseAlg.cxx.
189 measurements.measurementRanges(),
194 measurementSelector->
connect(&
options.extensions.createTrackStates);
196 return measurementSelector;
◆ shouldReverseSearch()
Definition at line 410 of file TrackFindingAlg.cxx.
411 const auto& bottom_sp =
seed.sp().front();
413 const double r = bottom_sp->radius();
414 const double z = std::abs(bottom_sp->z());
419 return r > rBoundary ||
z > zBoundary;
◆ stopBranch()
Branch stopper.
- Parameters
-
track | Track proxy object |
trackState | Track state proxy object |
trackSelectorCfg | Track selector configuration |
tgContext | Geometry context |
measurementIndex | Measurement index |
typeIndex | Type index |
event_stat_category_i | Event statistics for current category |
- Returns
- BranchStopperResult
Definition at line 281 of file TrackFindingBaseAlg.cxx.
297 measurementIndex,
true);
301 return BranchStopperResult::Continue;
304 const auto &
parameters = trackState.hasFiltered() ? trackState.filtered()
305 : trackState.predicted();
316 <<
pT <<
" after " <<
track.nMeasurements()
318 return BranchStopperResult::StopAndDrop;
324 !(std::abs(
eta) < trackSelectorCfg.absEtaEdges.back() +
328 <<
eta <<
" after " <<
track.nMeasurements()
330 return BranchStopperResult::StopAndDrop;
336 bool enoughMeasurements = (
track.nMeasurements() >= minMeasurementsBranchStop);
337 bool tooManyHoles = (
track.nHoles() > cutSet.maxHoles);
338 bool tooManyOutliers = (
track.nOutliers() > cutSet.maxOutliers);
341 auto [enoughMeasurementsPS, tooManyHolesPS, tooManyOutliersPS] =
343 enoughMeasurements = enoughMeasurements && enoughMeasurementsPS;
344 tooManyHoles = tooManyHoles || tooManyHolesPS;
345 tooManyOutliers = tooManyOutliers || tooManyOutliersPS;
348 if (!(tooManyHoles || tooManyOutliers)) {
349 return BranchStopperResult::Continue;
352 if (!enoughMeasurements) {
358 << (enoughMeasurements ?
"keep" :
"drop")
359 <<
" branch with nHoles=" <<
track.nHoles() <<
" ("
363 <<
" hgtd), nOutliers=" <<
track.nOutliers() <<
" ("
367 <<
"), nMeasurements=" <<
track.nMeasurements() <<
" ("
373 << (enoughMeasurements ?
"keep" :
"drop")
374 <<
" branch with nHoles=" <<
track.nHoles()
375 <<
", nOutliers=" <<
track.nOutliers()
376 <<
", nMeasurements=" <<
track.nMeasurements());
379 return enoughMeasurements ? BranchStopperResult::StopAndKeep
380 : BranchStopperResult::StopAndDrop;
◆ storeSeedInfo()
Definition at line 727 of file TrackFindingAlg.cxx.
732 const auto lastMeasurementIndex =
track.tipIndex();
733 duplicateSeedDetector.newTrajectory();
735 tracksContainer.trackStateContainer().visitBackwards(
736 lastMeasurementIndex,
737 [&duplicateSeedDetector,&measurementIndex](
const detail::RecoTrackStateContainer::ConstTrackStateProxy &state) ->
void
740 if (not state.hasUncalibratedSourceLink())
744 auto sl = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
745 duplicateSeedDetector.addMeasurement(sl, measurementIndex);
◆ storeTrackCollectionToStoreGate()
StatusCode ActsTrk::TrackFindingAlg::storeTrackCollectionToStoreGate |
( |
const EventContext & |
ctx, |
|
|
Acts::VectorTrackContainer && |
originalTrackBackend, |
|
|
Acts::VectorMultiTrajectory && |
originalTrackStateBackend |
|
) |
| const |
|
private |
Definition at line 394 of file TrackFindingAlg.cxx.
399 Acts::ConstVectorTrackContainer constTrackBackend( std::move(originalTrackBackend) );
400 Acts::ConstVectorMultiTrajectory constTrackStateBackend( std::move(originalTrackStateBackend) );
401 std::unique_ptr< ActsTrk::TrackContainer> constTracksContainer = std::make_unique< ActsTrk::TrackContainer >( std::move(constTrackBackend),
402 std::move(constTrackStateBackend) );
406 ATH_CHECK(trackContainerHandle.
record(std::move(constTracksContainer)));
407 return StatusCode::SUCCESS;
◆ sysExecute()
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.
◆ sysInitialize()
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 InputMakerBase, and HypoBase.
Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ trackFinder() [1/2]
◆ trackFinder() [2/2]
◆ updateCounts()
void ActsTrk::TrackFindingBaseAlg::updateCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track, |
|
|
Acts::ConstTrackStateType |
typeFlags, |
|
|
xAOD::UncalibMeasType |
detType |
|
) |
| |
|
staticprotectedinherited |
Definition at line 410 of file TrackFindingBaseAlg.cxx.
414 if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
416 }
else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
418 }
else if (typeFlags.test(Acts::TrackStateFlag::MeasurementFlag)) {
422 if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
424 }
else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
426 }
else if (typeFlags.test(Acts::TrackStateFlag::MeasurementFlag)) {
430 if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
432 }
else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
434 }
else if (typeFlags.test(Acts::TrackStateFlag::MeasurementFlag)) {
◆ updateVHKA()
◆ ATLAS_THREAD_SAFE [1/3]
std::size_t m_nTrackReserve ActsTrk::TrackFindingAlg::ATLAS_THREAD_SAFE {0ul} |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [2/3]
std::size_t m_nTrackStateReserve ActsTrk::TrackFindingAlg::ATLAS_THREAD_SAFE {0ul} |
|
mutableprivate |
◆ ATLAS_THREAD_SAFE [3/3]
std::mutex m_mutex ActsTrk::TrackFindingAlg::ATLAS_THREAD_SAFE {} |
|
mutableprivate |
◆ m_absEtaMax
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_absEtaMax {this, "absEtaMax", std::numeric_limits<double>::max(), "TrackSelector: absEtaMax"} |
|
protectedinherited |
◆ m_absEtaMaxMeasurements
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_absEtaMaxMeasurements {this, "absEtaMaxMeasurements", {}, "if specified for the given seed collection, applies absEtaMax cut in branch stopper once absEtaMaxMeasurements have been encountered"} |
|
protectedinherited |
◆ m_absEtaMin
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_absEtaMin {this, "absEtaMin", 0.0, "TrackSelector: absEtaMin"} |
|
protectedinherited |
◆ m_addCounts
Gaudi::Property<bool> ActsTrk::TrackFindingBaseAlg::m_addCounts {this, "addCounts", true, "keep separate pixel, strip and hgtd counts and apply the following cuts"} |
|
protectedinherited |
◆ m_ambi
std::optional<Acts::GreedyAmbiguityResolution> ActsTrk::TrackFindingAlg::m_ambi |
|
private |
◆ m_ambiStrategy
Gaudi::Property<std::size_t> ActsTrk::TrackFindingAlg::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"} |
|
private |
◆ m_ATLASConverterTool
◆ m_autoReverseSearch
Gaudi::Property<bool> ActsTrk::TrackFindingAlg::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"} |
|
private |
◆ m_beamSpotKey
◆ m_branchStopperAbsEtaMaxExtra
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_branchStopperAbsEtaMaxExtra {this, "branchStopperAbsEtaMaxExtra", 0.0, "increase absEtaMax cut when used in the branch stopper"} |
|
protectedinherited |
◆ m_branchStopperAbsEtaMeasCut
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_branchStopperAbsEtaMeasCut {this, "branchStopperAbsEtaMeasCut", 1.2, "the minimum |eta| to apply the reduction to the minMeas requirement for the branch stopper"} |
|
protectedinherited |
◆ m_branchStopperMeasCutReduce
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_branchStopperMeasCutReduce {this, "branchStopperMeasCutReduce", 2, "how much to reduce the minMeas requirement for the branch stopper"} |
|
protectedinherited |
◆ m_branchStopperPtMinFactor
Gaudi::Property<double> ActsTrk::TrackFindingBaseAlg::m_branchStopperPtMinFactor {this, "branchStopperPtMinFactor", 1.0, "factor to multiply ptMin cut when used in the branch stopper"} |
|
protectedinherited |
◆ m_chi2CutOff
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_chi2CutOff {this, "chi2CutOff", {}, "MeasurementSelector: maximum local chi2 contribution"} |
|
protectedinherited |
◆ m_chi2OutlierCutOff
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_chi2OutlierCutOff {this, "chi2OutlierCutOff", {}, "MeasurementSelector: maximum local chi2 contribution for outlier"} |
|
protectedinherited |
◆ m_countSharedHits
Gaudi::Property<bool> ActsTrk::TrackFindingAlg::m_countSharedHits {this, "countSharedHits", true, "add shared hit flags to tracks"} |
|
private |
◆ m_d0Max
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_d0Max {this, "d0Max", {}, "TrackSelector: d0Max"} |
|
protectedinherited |
◆ m_d0Min
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_d0Min {this, "d0Min", {}, "TrackSelector: d0Min"} |
|
protectedinherited |
◆ m_detEleCollKeys
◆ m_detElStatus
◆ m_detStore
◆ m_doBranchStopper
Gaudi::Property<bool> ActsTrk::TrackFindingBaseAlg::m_doBranchStopper {this, "doBranchStopper", true, "use branch stopper"} |
|
protectedinherited |
◆ m_doTwoWay
Gaudi::Property<bool> ActsTrk::TrackFindingBaseAlg::m_doTwoWay {this, "doTwoWay", true, "run CKF twice, first with forward propagation with smoothing, then with backward propagation"} |
|
protectedinherited |
◆ m_dumpAllStatEtaBins
Gaudi::Property<bool> ActsTrk::TrackFindingBaseAlg::m_dumpAllStatEtaBins {this, "DumpEtaBinsForAll", false, "Dump eta bins of all statistics counter."} |
|
protectedinherited |
◆ m_endOfWorldVolumeIds
Gaudi::Property<std::vector<std::uint32_t> > ActsTrk::TrackFindingBaseAlg::m_endOfWorldVolumeIds {this, "EndOfTheWorldVolumeIds", {}, ""} |
|
protectedinherited |
◆ m_etaBins
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_etaBins {this, "etaBins", {}, "bins in |eta| to specify variable selections"} |
|
protectedinherited |
◆ m_etaMax
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_etaMax {this, "etaMax", {}, "TrackSelector: etaMax"} |
|
protectedinherited |
◆ m_etaMin
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_etaMin {this, "etaMin", {}, "TrackSelector: etaMin"} |
|
protectedinherited |
◆ m_evtStore
◆ m_extendedExtraObjects
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<IActsExtrapolationTool> ActsTrk::TrackFindingBaseAlg::m_extrapolationTool {this, "ExtrapolationTool", ""} |
|
protectedinherited |
◆ m_fitterTool
ToolHandle<ActsTrk::IFitterTool> ActsTrk::TrackFindingBaseAlg::m_fitterTool {this, "FitterTool", "", "Fitter Tool for Seeds"} |
|
protectedinherited |
◆ m_forceTrackOnSeed
Gaudi::Property<bool> ActsTrk::TrackFindingAlg::m_forceTrackOnSeed {this, "forceTrackOnSeed", true, "force track to use measurements from the seed"} |
|
private |
◆ m_hgtdCalibTool
◆ m_logger
std::unique_ptr<const Acts::Logger> ActsTrk::TrackFindingBaseAlg::m_logger |
|
protectedinherited |
◆ m_maxChi2
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_maxChi2 {this, "maxChi2", {}, "TrackSelector: maxChi2"} |
|
protectedinherited |
◆ m_maxHgtdHoles
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxHgtdHoles {this, "maxHgtdHoles", {}, "maximum number of hgtd holes"} |
|
protectedinherited |
◆ m_maxHgtdOutliers
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxHgtdOutliers {this, "maxHgtdOutliers", {}, "maximum number of hgtd outliers"} |
|
protectedinherited |
◆ m_maxHoles
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxHoles {this, "maxHoles", {}, "TrackSelector: maxHoles"} |
|
protectedinherited |
◆ m_maximumIterations
Gaudi::Property<unsigned int> ActsTrk::TrackFindingAlg::m_maximumIterations {this, "MaximumIterations", 10000u, "Maximum number of iterations to resolve ambiguities among all tracks."} |
|
private |
◆ m_maximumSharedHits
Gaudi::Property<unsigned int> ActsTrk::TrackFindingAlg::m_maximumSharedHits {this, "MaximumSharedHits", 3u, "Maximum number of shared hits per track."} |
|
private |
◆ m_maxOutliers
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxOutliers {this, "maxOutliers", {}, "TrackSelector: maxOutliers"} |
|
protectedinherited |
◆ m_maxPixelHoles
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxPixelHoles {this, "maxPixelHoles", {}, "maximum number of pixel holes"} |
|
protectedinherited |
◆ m_maxPixelOutliers
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxPixelOutliers {this, "maxPixelOutliers", {}, "maximum number of pixel outliers"} |
|
protectedinherited |
◆ m_maxPropagationStep
Gaudi::Property<unsigned int> ActsTrk::TrackFindingBaseAlg::m_maxPropagationStep {this, "maxPropagationStep", 1000, "Maximum number of steps for one propagate call"} |
|
protectedinherited |
◆ m_maxSharedHits
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxSharedHits {this, "maxSharedHits", {}, "TrackSelector: maxSharedHits"} |
|
protectedinherited |
◆ m_maxStripHoles
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxStripHoles {this, "maxStripHoles", {}, "maximum number of strip holes"} |
|
protectedinherited |
◆ m_maxStripOutliers
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_maxStripOutliers {this, "maxStripOutliers", {}, "maximum number of strip outliers"} |
|
protectedinherited |
◆ m_measurementSelectorConfig
◆ m_memorySafetyMargin
Gaudi::Property< float > ActsTrk::TrackFindingAlg::m_memorySafetyMargin {this, "MemorySafetyMargin", 1.2} |
|
private |
◆ m_minHgtdHits
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_minHgtdHits {this, "minHgtdHits", {}, "minimum number of hgtd hits"} |
|
protectedinherited |
◆ m_minMeasurements
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_minMeasurements {this, "minMeasurements", {}, "TrackSelector: minMeasurements"} |
|
protectedinherited |
◆ m_minPixelHits
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_minPixelHits {this, "minPixelHits", {}, "minimum number of pixel hits"} |
|
protectedinherited |
◆ m_minStripHits
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_minStripHits {this, "minStripHits", {}, "minimum number of strip hits"} |
|
protectedinherited |
◆ m_monTool
◆ m_nMeasurementsMin
Gaudi::Property<unsigned int> ActsTrk::TrackFindingAlg::m_nMeasurementsMin {this, "NMeasurementsMin", 7u, "Minimum number of measurements per track."} |
|
private |
◆ m_numMeasurementsCutOff
Gaudi::Property<std::vector<size_t> > ActsTrk::TrackFindingBaseAlg::m_numMeasurementsCutOff {this, "numMeasurementsCutOff", {}, "MeasurementSelector: maximum number of associated measurements on a single surface"} |
|
protectedinherited |
◆ m_paramEstimationTool
◆ m_phiMax
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_phiMax {this, "phiMax", {}, "TrackSelector: phiMax"} |
|
protectedinherited |
◆ m_phiMin
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_phiMin {this, "phiMin", {}, "TrackSelector: phiMin"} |
|
protectedinherited |
◆ m_pixelCalibTool
◆ m_ptMax
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_ptMax {this, "ptMax", {}, "TrackSelector: ptMax"} |
|
protectedinherited |
◆ m_ptMin
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_ptMin {this, "ptMin", {}, "TrackSelector: ptMin"} |
|
protectedinherited |
◆ m_ptMinMeasurements
Gaudi::Property<std::vector<std::size_t> > ActsTrk::TrackFindingBaseAlg::m_ptMinMeasurements {this, "ptMinMeasurements", {}, "if specified for the given seed collection, applies ptMin cut in branch stopper once ptMinMinMeasurements have been encountered"} |
|
protectedinherited |
◆ m_refitSeeds
Gaudi::Property<std::vector<bool> > ActsTrk::TrackFindingAlg::m_refitSeeds {this, "refitSeeds", {}, "Run KalmanFitter on seeds before passing to CKF, specified separately for each seed collection"} |
|
private |
◆ m_seedContainerKeys
◆ m_seedDestiny
◆ m_seedLabels
Gaudi::Property<std::vector<std::string> > ActsTrk::TrackFindingBaseAlg::m_seedLabels {this, "SeedLabels", {}, "One label per seed key used in outputs"} |
|
protectedinherited |
◆ m_seedMeasOffset
Gaudi::Property<unsigned int> ActsTrk::TrackFindingAlg::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"} |
|
private |
◆ m_skipDuplicateSeeds
Gaudi::Property<bool> ActsTrk::TrackFindingAlg::m_skipDuplicateSeeds {this, "skipDuplicateSeeds", true, "skip duplicate seeds before calling CKF"} |
|
private |
◆ m_statEtaBins
Gaudi::Property<std::vector<float> > ActsTrk::TrackFindingBaseAlg::m_statEtaBins {this, "StatisticEtaBins", {-4, -2.6, -2, 0, 2., 2.6, 4}, "Gather statistics separately for these bins."} |
|
protectedinherited |
◆ m_storeDestinies
bool ActsTrk::TrackFindingAlg::m_storeDestinies {false} |
|
private |
◆ m_stripCalibTool
◆ m_trackContainerKey
◆ m_trackFinder
std::unique_ptr<CKF_pimpl> ActsTrk::TrackFindingBaseAlg::m_trackFinder |
|
protectedinherited |
◆ m_trackingGeometryTool
◆ m_tracksBackendHandlesHelper
◆ m_trackStatePrinter
ToolHandle<ActsTrk::TrackStatePrinterTool> ActsTrk::TrackFindingBaseAlg::m_trackStatePrinter {this, "TrackStatePrinter", "", "optional track state printer"} |
|
protectedinherited |
◆ m_unalibMeasSurfAcc
◆ m_uncalibratedMeasurementContainerKeys
◆ m_useAbsEtaForStat
bool ActsTrk::TrackFindingBaseAlg::m_useAbsEtaForStat = false |
|
protectedinherited |
◆ m_useTopSpRZboundary
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingAlg::m_useTopSpRZboundary {this, "useTopSpRZboundary", {350. * Acts::UnitConstants::mm, 1060. * Acts::UnitConstants::mm}, "R/Z boundary for using the top space point in the track parameter estimation"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_volumeIdToDetectorElementCollMapKey
Initial value:{this, "ActsVolumeIdToDetectorElementCollectionMapKey", "ActsVolumeIdToDetectorElementCollectionMap",
"Map which associates Acts geometry volume IDs to detector element collections."}
Definition at line 104 of file TrackFindingAlg.h.
◆ m_z0Max
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_z0Max {this, "z0Max", {}, "TrackSelector: z0Max"} |
|
protectedinherited |
◆ m_z0Min
Gaudi::Property<std::vector<double> > ActsTrk::TrackFindingBaseAlg::m_z0Min {this, "z0Min", {}, "TrackSelector: z0Min"} |
|
protectedinherited |
◆ s_branchState
constexpr BranchState ActsTrk::TrackFindingBaseAlg::s_branchState {} |
|
staticconstexprprotectedinherited |
The documentation for this class was generated from the following files:
RecoTrackStateContainer::TrackStateProxy RecoTrackStateContainerProxy
SG::WriteHandleKey< ActsTrk::TrackContainer > m_trackContainerKey
Gaudi::Property< unsigned int > m_maximumSharedHits
static constexpr Acts::ProxyAccessor< unsigned int > nPixelOutliers
std::vector< typename detail::RecoTrackContainer::TrackProxy > doTwoWayTrackFinding(const detail::RecoTrackStateContainerProxy &firstMeasurement, const TrkProxy &trackProxy, detail::RecoTrackContainer &tracksContainerTemp, const TrackFinderOptions &options) const
Perform two-way track finding.
Acts::CalibrationContext getCalibrationContext(const EventContext &ctx)
The Acts::Calibration context is piped through the Acts fitters to (re)calibrate the Acts::SourceLink...
Gaudi::Property< std::size_t > m_ambiStrategy
Gaudi::Property< bool > m_doBranchStopper
Acts::Result< void > extrapolateTrackToReferenceSurface(const DetectorContextHolder &detContext, detail::RecoTrackContainerProxy &track, const Acts::Surface &referenceSurface, const detail::Extrapolator &propagator, Acts::TrackExtrapolationStrategy strategy, ExpectedLayerPattern &expectedLayerPattern) const
std::unique_ptr< ActsTrk::IMeasurementSelector > getMeasurementSelector(const ActsTrk::IOnBoundStateCalibratorTool *onTrackCalibratorTool, const ActsTrk::detail::MeasurementRangeList &measurementRanges, const std::vector< float > &etaBinsf, const std::vector< std::pair< float, float > > &chi2CutOffOutlier, const std::vector< size_t > &numMeasurementsCutOff)
Group
Properties of a chain group.
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_pixelCalibTool
Gaudi::Property< std::vector< std::size_t > > m_maxStripHoles
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
virtual void connect(std::any delegate_wrap) const =0
Acts::TrackProxy< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory, Acts::detail::RefHolder, false > TrkProxy
static constexpr BranchState s_branchState
std::string find(const std::string &s)
return a remapped string
std::size_t getSeedCategory(std::size_t typeIndex, const ActsTrk::Seed &seed, bool useTopSp) const
Acts::CombinatorialKalmanFilterOptions< detail::RecoTrackContainer > TrackFinderOptions
const std::vector< DetectorIDHashType > & elementIdList() const
Returns the IdentifierHash of the spacepoint (corresponds to the detector element IdentifierHash)
const std::array< unsigned char, 256 > & collecionMap() const
static void updateCounts(const detail::RecoTrackContainer::TrackProxy &track, Acts::ConstTrackStateType typeFlags, xAOD::UncalibMeasType detType)
Gaudi::Property< unsigned int > m_seedMeasOffset
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Scalar eta() const
pseudorapidity method
Gaudi::Property< bool > m_addCounts
virtual StatusCode initialize() override
virtual StatusCode finalize() override
static void set(track_proxy_t &track, std::array< unsigned int, 4 > values)
Gaudi::Property< std::vector< std::size_t > > m_maxHgtdHoles
Gaudi::Property< std::vector< std::size_t > > m_minHgtdHits
Acts::TrackSelector trackSelector
std::vector< std::array< unsigned int, kNStat > > EventStats
Gaudi::Property< std::vector< std::size_t > > m_maxPixelHoles
static void addCounts(detail::RecoTrackContainer &tracksContainer)
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)
TrackFindingDefaultOptions getDefaultOptions(const DetectorContextHolder &detContext, const detail::TrackFindingMeasurements &measurements, const Acts::PerigeeSurface *pSurface) const
Get CKF options for first and second pass + pointer to MeasurementSelector.
Gaudi::Property< bool > m_dumpAllStatEtaBins
ConstVectorMap globalPosition() const
Returns the global position of the pixel cluster.
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdHits
Gaudi::Property< std::vector< std::size_t > > m_absEtaMaxMeasurements
Trk::Surface & surface()
Element Surface.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
Acts::CombinatorialKalmanFilterBranchStopperResult BranchStopperResult
Eigen::Map< const Eigen::Matrix< float, 3, 1 > > ConstVectorMap
bool msgLvl(const MSG::Level lvl) const
Gaudi::Property< bool > m_autoReverseSearch
RatioDefinition defineSimpleRatio(T numerator, T denominator)
Gaudi::Property< std::vector< bool > > m_refitSeeds
std::size_t computeStatSum(std::size_t seed_collection, EStat counter_i, const EventStats &stat) const
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHits
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
Gaudi::Property< bool > m_forceTrackOnSeed
Gaudi::Property< double > m_branchStopperAbsEtaMaxExtra
SG::ReadHandleKeyArray< ActsTrk::SeedContainer > m_seedContainerKeys
const std::string & key() const
Return the StoreGate ID for the referenced object.
Gaudi::Property< std::vector< double > > m_chi2OutlierCutOff
ToolHandle< ActsTrk::IActsToTrkConverterTool > m_ATLASConverterTool
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
static constexpr Acts::ProxyAccessor< unsigned int > nStripHoles
@ u
Enums for curvilinear frames.
CKF_pimpl & trackFinder()
def timer(name, disabled=False)
std::vector< std::pair< float, float > > m_chi2CutOffOutlier
virtual void setOwner(IDataHandleHolder *o)=0
constexpr std::size_t subCategoryStride([[maybe_unused]] const std::size_t categories, [[maybe_unused]] const std::size_t sub_categories, [[maybe_unused]] const std::size_t n_counter)
Gaudi::Property< std::vector< std::uint32_t > > m_endOfWorldVolumeIds
std::size_t getStatCategory(std::size_t seed_collection, float eta) const
Gaudi::Property< unsigned int > m_nMeasurementsMin
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
SG::ReadHandleKeyArray< xAOD::UncalibratedMeasurementContainer > m_uncalibratedMeasurementContainerKeys
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
void checkCounts(const detail::RecoTrackContainer::TrackProxy &track) const
Gaudi::Property< double > m_branchStopperPtMinFactor
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
std::unique_ptr< ActsTrk::IMeasurementSelector > setMeasurementSelector(const detail::TrackFindingMeasurements &measurements, TrackFinderOptions &options) const
Setup and attach measurement selector to KF options.
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin
Gaudi::Property< bool > m_countSharedHits
Gaudi::Property< std::vector< double > > m_chi2CutOff
constexpr std::size_t counterStride([[maybe_unused]] const std::size_t categories, [[maybe_unused]] const std::size_t sub_categories, [[maybe_unused]] const std::size_t n_counter)
@ Pixel
Inner detector legacy.
StatusCode getContainersFromKeys(const EventContext &ctx, HandleArrayKeyType &handleKeyArray, std::vector< const ContainerType * > &outputContainers, std::size_t &sum) const
Take the array of handle keys and for each key retrieve containers, then append them to the output ve...
Property holding a SG store/key/clid from which a WriteHandle is made.
SG::WriteHandleKeyArray< std::vector< int > > m_seedDestiny
TableUtils::StatTable< T > makeTable(const std::array< T, N > &counter, const std::array< std::string, N > &label)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
RecoTrackStateContainer::ConstTrackStateProxy RecoConstTrackStateContainerProxy
std::size_t maxLabelWidth(const T_Collection &col)
bool shouldReverseSearch(const ActsTrk::Seed &seed) const
Gaudi::Property< double > m_branchStopperMeasCutReduce
std::unique_ptr< Acts::BoundTrackParameters > doRefit(const MeasurementSource &measurement, const Acts::BoundTrackParameters &initialParameters, const DetectorContextHolder &detContext, const bool paramsAtOutermostSurface) const
Perform Kalman Filter fit and update given initialParameters.
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::size_t seedCollectionStride() const
Gaudi::Property< std::vector< double > > m_useTopSpRZboundary
Gaudi::Property< std::vector< std::string > > m_seedLabels
void storeSeedInfo(const detail::RecoTrackContainer &tracksContainer, const detail::RecoTrackContainerProxy &track, detail::DuplicateSeedDetector &duplicateSeedDetector, const detail::MeasurementIndex &measurementIndex) const
ToolHandle< ActsTrk::ITrackParamsEstimationTool > m_paramEstimationTool
CalibratedSpacePoint::State State
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Gaudi::Property< std::vector< std::size_t > > m_maxPixelOutliers
SG::ReadCondHandleKeyArray< InDetDD::SiDetectorElementCollection > m_detEleCollKeys
ToolHandle< GenericMonitoringTool > m_monTool
static constexpr Acts::ProxyAccessor< unsigned int > nStripOutliers
static xAOD::UncalibMeasType measurementType(const detail::RecoTrackContainer::TrackStateProxy &trackState)
Gaudi::Property< double > m_branchStopperAbsEtaMeasCut
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
std::array< bool, 3 > selectCounts(const detail::RecoTrackContainer::TrackProxy &track, double eta) const
Gaudi::Property< unsigned int > m_maxPropagationStep
void clear()
Erase all the elements in the collection.
Gaudi::Property< std::vector< size_t > > m_numMeasurementsCutOff
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< std::vector< std::size_t > > m_minStripHits
const Amg::Vector3D & beamPos() const noexcept
@ kNStoppedTracksMaxHoles
Gaudi::Property< std::vector< double > > m_etaBins
bool isGood(IdentifierHash hash) const
std::vector< std::string > makeLabelVector(T_index n_entries, std::initializer_list< std::pair< T_index, T_string > > a_list)
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
bool selectCountsFinal(const detail::RecoTrackContainer::TrackProxy &track) const
TrackFindingBaseAlg(const std::string &name, ISvcLocator *pSvcLocator)
BranchStopperResult stopBranch(const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackStateProxy &trackState, const Acts::TrackSelector::EtaBinnedConfig &trackSelectorCfg, const Acts::GeometryContext &tgContext, const detail::MeasurementIndex &measurementIndex, const std::size_t typeIndex, EventStats::value_type &event_stat_category_i) const
Branch stopper.
StatusCode initialize(bool used=true)
std::tuple< std::vector< std::string >, std::vector< RatioDefinition > > splitRatioDefinitionsAndLabels(std::initializer_list< std::tuple< std::string, RatioDefinition > > a_ratio_list)
const Acts::TrackSelector::Config & getCuts(double eta) const
Retrieves track selector configuration for given eta value.
IdentifierHash identifyHash() const
Identifier hash.
@ kNForcedSeedMeasurements
Gaudi::Property< std::vector< std::size_t > > m_minPixelHits
Gaudi::Property< unsigned int > m_maximumIterations
SG::ReadCondHandleKey< ActsTrk::ActsVolumeIdToDetectorElementCollectionMap > m_volumeIdToDetectorElementCollMapKey
std::string makeEtaBinLabel(const std::vector< float > &eta_bins, std::size_t eta_bin_i, bool abs_eta=false)
static constexpr Acts::ProxyAccessor< unsigned int > nStripHits
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
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.
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHoles
std::size_t nSeedCollections() const
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
#define ATH_MSG_WARNING(x)
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Gaudi::Property< std::vector< std::size_t > > m_ptMinMeasurements
ToolHandle< ActsTrk::TrackStatePrinterTool > m_trackStatePrinter
void copyStats(const EventStats &event_stat) const
static void add(track_container_t &trackContainer)
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdHoles
struct ActsTrk::TrackFindingBaseAlg::MeasurementSelectorConfig m_measurementSelectorConfig
Gaudi::Property< float > m_memorySafetyMargin
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdOutliers
std::vector< float > m_etaBins
Gaudi::Property< std::vector< float > > m_statEtaBins
Gaudi::Property< std::vector< std::size_t > > m_maxStripOutliers
static void initCounts(const detail::RecoTrackContainer::TrackProxy &track)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Property< std::vector< std::size_t > > m_maxHgtdOutliers
virtual StatusCode sysInitialize() override
Override sysInitialize.
std::unique_ptr< CKF_pimpl > m_trackFinder
StatusCode storeTrackCollectionToStoreGate(const EventContext &ctx, Acts::VectorTrackContainer &&originalTrackBackend, Acts::VectorMultiTrajectory &&originalTrackStateBackend) const
SG::ReadHandleKeyArray< InDet::SiDetectorElementStatus > m_detElStatus
std::tuple< std::string, RatioDefinition > makeRatioDefinition(std::string &&name, std::vector< SummandDefinition > &&numerator, std::vector< SummandDefinition > &&denominator)
constexpr std::size_t ratioStride([[maybe_unused]] const std::size_t categories, [[maybe_unused]] const std::size_t sub_categories, [[maybe_unused]] const std::vector< RatioDefinition > &ratio_def)
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
Declare a monitored scalar variable.
std::vector< float > computeRatios(const std::vector< RatioDefinition > &ratio_def, const std::size_t categories, const std::size_t sub_categories, const std::vector< std::size_t > &counter)
SummandDefinition defineSummand(T counter_idx, int multiplier)
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
const Acts::Logger & logger() const
Private access to the logger.
std::optional< Acts::GreedyAmbiguityResolution > m_ambi
size_type size() const noexcept
Returns the number of elements in the collection.
std::array< unsigned int, 4 > ExpectedLayerPattern
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
static void copyCounts(const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackProxy &other)
Gaudi::Property< bool > m_doTwoWay
const_pointer_type cptr()
void addToExpectedLayerPattern(std::array< unsigned int, 4 > &pattern, const ActsDetectorElement &detElement)