 |
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,
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 | checkPixelStripCounts (const detail::RecoTrackContainer::TrackProxy &track) const |
|
std::array< bool, 3 > | selectPixelStripCounts (const detail::RecoTrackContainer::TrackProxy &track, double eta) const |
|
bool | selectPixelStripCountsFinal (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_addPixelStripCounts {this, "addPixelStripCounts", true, "keep separate pixel and strip 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_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_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::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< 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 | |
kNStat | |
Definition at line 152 of file TrackFindingBaseAlg.h.
◆ TrackFindingAlg()
ActsTrk::TrackFindingAlg::TrackFindingAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~TrackFindingAlg()
virtual ActsTrk::TrackFindingAlg::~TrackFindingAlg |
( |
| ) |
|
|
virtualdefault |
◆ addPixelStripCounts()
Definition at line 379 of file TrackFindingBaseAlg.cxx.
381 tracksContainer.addColumn<
unsigned int>(
"nPixelHits");
382 tracksContainer.addColumn<
unsigned int>(
"nStripHits");
383 tracksContainer.addColumn<
unsigned int>(
"nPixelHoles");
384 tracksContainer.addColumn<
unsigned int>(
"nStripHoles");
385 tracksContainer.addColumn<
unsigned int>(
"nPixelOutliers");
386 tracksContainer.addColumn<
unsigned int>(
"nStripOutliers");
◆ 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 915 of file TrackFindingAlg.cxx.
937 if (not
track.hasReferenceSurface()) {
938 auto extrapolationResult =
942 extrapolationStrategy,
945 if (not extrapolationResult.ok()) {
947 << iseed <<
" and " <<
track.index()
948 <<
" failed with error " << extrapolationResult.error()
949 <<
" dropping track candidate.");
951 return StatusCode::SUCCESS;
956 for(
const auto&
ts :
track.trackStatesReversed()) {
957 const auto& surface =
ts.referenceSurface();
958 if(surface.associatedDetectorElement() !=
nullptr) {
959 const auto* detElem =
dynamic_cast<const ActsDetectorElement*
>(surface.associatedDetectorElement());
960 if(detElem !=
nullptr) {
971 Acts::trimTrack(
track,
true,
true,
true,
true);
972 Acts::calculateTrackQuantities(
track);
975 for (
const auto trackState :
track.trackStatesReversed()) {
986 ATH_MSG_DEBUG(
"Track " << ntracks <<
" from " << seedType <<
" seed " << iseed <<
" failed track selection");
990 return StatusCode::SUCCESS;
998 auto actsDestProxy = actsTracksContainer.makeTrack();
999 actsDestProxy.copyFrom(
track,
true);
1004 return StatusCode::SUCCESS;
1007 auto [nShared, nBadTrackMeasurements] = sharedHits.computeSharedHits(actsDestProxy, actsTracksContainer, measurementIndex);
1009 if (nBadTrackMeasurements > 0) {
1010 ATH_MSG_ERROR(
"computeSharedHits: " << nBadTrackMeasurements <<
" track measurements not found in input for " << seedType <<
" seed " << iseed <<
" track");
1013 ATH_MSG_DEBUG(
"found " << actsDestProxy.nSharedHits() <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track");
1024 ATH_MSG_DEBUG(
"found " << actsDestProxy.nSharedHits() <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track");
1028 auto [nSharedRemoved, nRemoveBadTrackMeasurements] = sharedHits.computeSharedHits(actsDestProxy, actsTracksContainer, measurementIndex,
true);
1030 ATH_MSG_DEBUG(
"Removed " << nSharedRemoved <<
" shared hits in " << seedType <<
" seed " << iseed <<
" track and the matching track");
1032 if (nRemoveBadTrackMeasurements > 0) {
1033 ATH_MSG_ERROR(
"computeSharedHits with remove flag ON: " << nRemoveBadTrackMeasurements <<
1034 " track measurements not found in input for " << seedType <<
" seed " << iseed <<
" track");
1037 if (actsDestProxy.nSharedHits() != 0) {
1038 ATH_MSG_ERROR(
"computeSharedHits with remove flag ON returned " <<
1039 actsDestProxy.nSharedHits()<<
" while expecting 0 for" <<
1040 seedType <<
" seed " << iseed <<
" track");
1044 actsTracksContainer.removeTrack(actsDestProxy.index());
1045 ATH_MSG_DEBUG(
"Track " << ntracks <<
" from " << seedType <<
" seed " << iseed <<
" failed shared hit selection");
1052 m_trackStatePrinter->printTrack(detContext.geometry, actsTracksContainer, actsDestProxy, measurementIndex);
1056 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.
◆ checkPixelStripCounts()
void ActsTrk::TrackFindingBaseAlg::checkPixelStripCounts |
( |
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 |
◆ copyPixelStripCounts()
void ActsTrk::TrackFindingBaseAlg::copyPixelStripCounts |
( |
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 519 of file TrackFindingBaseAlg.cxx.
520 std::lock_guard<std::mutex>
lock(m_mutex);
521 std::size_t category_i = 0;
522 for (
const std::array<unsigned int, kNStat> &src_stat : event_stat)
524 std::array<std::size_t, kNStat> &dest_stat = m_stat[category_i++];
525 for (std::size_t
i = 0;
i < src_stat.size(); ++
i)
527 assert(
i < dest_stat.size());
528 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.copyFrom(trackProxy,
false);
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 151 of file TrackFindingAlg.cxx.
164 std::vector<const ActsTrk::SeedContainer *> seedContainers;
165 std::size_t total_seeds = 0;
169 std::vector< std::unique_ptr< std::vector<int> > > destinies {};
171 destinies.reserve( seedContainers.size() );
172 for (std::size_t
i(0);
i<seedContainers.size(); ++
i) {
178 std::vector<const xAOD::UncalibratedMeasurementContainer *> uncalibratedMeasurementContainers;
179 std::size_t total_measurements = 0;
185 ATH_CHECK(volumeIdToDetectorElementCollMap.isValid());
186 std::vector< const InDet::SiDetectorElementStatus *> det_el_status_arr;
187 const std::vector<const InDetDD::SiDetectorElementCollection*> &det_el_collections =volumeIdToDetectorElementCollMap->collections();
188 det_el_status_arr.resize( det_el_collections.size(),
nullptr);
192 const std::vector<const InDetDD::SiDetectorElementCollection*>::const_iterator
193 det_el_col_iter =
std::find(det_el_collections.begin(),
194 det_el_collections.end(),
195 &det_el_status->getDetectorElements());
196 det_el_status_arr.at(det_el_col_iter - det_el_collections.begin()) = det_el_status.cptr();
199 detail::TrackFindingMeasurements measurements(uncalibratedMeasurementContainers.size() );
201 detail::MeasurementIndex measurementIndex(measurementIndexContainersSize);
202 detail::SharedHitCounter sharedHits;
204 for (std::size_t icontainer = 0; icontainer < uncalibratedMeasurementContainers.size(); ++icontainer) {
206 measurements.addMeasurements(icontainer,
207 *uncalibratedMeasurementContainers[icontainer],
209 if (measurementIndexContainersSize > 0
ul)
210 measurementIndex.addMeasurements(*uncalibratedMeasurementContainers[icontainer]);
213 ATH_MSG_DEBUG(
"measurement index size = " << measurementIndex.size());
218 m_trackStatePrinter->printMeasurements(ctx, uncalibratedMeasurementContainers, measurements.measurementOffsets());
221 detail::DuplicateSeedDetector duplicateSeedDetector(total_seeds,
224 for (std::size_t icontainer = 0; icontainer < seedContainers.size(); ++icontainer)
226 duplicateSeedDetector.addSeeds(icontainer, *seedContainers[icontainer], measurementIndex,
229 const bool reverseSearch = m_autoReverseSearch && shouldReverseSearch(seed);
230 const bool refitSeeds = icontainer < m_refitSeeds.size() && m_refitSeeds[icontainer];
231 const bool useTopSp = reverseSearch && !refitSeeds;
247 std::shared_ptr<Acts::PerigeeSurface> pSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(beamPos);
253 std::vector<const InDetDD::SiDetectorElementCollection*> detElementsCollections;
254 std::size_t total_detElems = 0;
260 Acts::VectorTrackContainer actsTrackBackend;
261 Acts::VectorMultiTrajectory actsTrackStateBackend;
263 std::lock_guard<std::mutex>
lock( m_mutex );
264 actsTrackBackend.reserve(m_nTrackReserve);
265 actsTrackStateBackend.reserve(m_nTrackStateReserve);
268 actsTrackStateBackend);
277 event_stat.resize(m_stat.size());
279 DetectorContextHolder detContext {
287 for (std::size_t icontainer = 0; icontainer < seedContainers.size(); ++icontainer)
293 duplicateSeedDetector,
294 *seedContainers.at(icontainer),
295 *detElementsCollections.at(icontainer),
304 ATH_MSG_DEBUG(
" \\__ Created " << actsTracksContainer.size() <<
" tracks");
306 mon_nTracks = actsTracksContainer.size();
316 for (std::size_t
i(0);
i<destinies.size(); ++
i) {
325 std::lock_guard<std::mutex>
lock( m_mutex );
327 if (actsTrackBackend.size() > m_nTrackReserve) {
328 m_nTrackReserve =
static_cast<std::size_t
>( std::ceil(
m_memorySafetyMargin * actsTrackBackend.size()) );
330 if (actsTrackStateBackend.size() > m_nTrackStateReserve) {
331 m_nTrackStateReserve =
static_cast<std::size_t
>( std::ceil(
m_memorySafetyMargin * actsTrackStateBackend.size()) );
339 ATH_MSG_DEBUG(
" \\__ Created " << actsTracksContainer.size() <<
" resolved tracks");
341 std::move(actsTrackBackend),
342 std::move(actsTrackStateBackend) ) );
343 return StatusCode::SUCCESS;
348 Acts::VectorTrackContainer resolvedTrackBackend;
349 Acts::VectorMultiTrajectory resolvedTrackStateBackend;
350 resolvedTrackBackend.reserve( actsTrackBackend.size() );
351 resolvedTrackStateBackend.reserve( actsTrackStateBackend.size() );
361 m_ambi->computeInitialState(actsTracksContainer, state, &sourceLinkHash,
362 &sourceLinkEquality);
368 detail::SharedHitCounter sharedHits_forFinalAmbi;
371 for (
auto iTrack : state.selectedTracks) {
372 auto destProxy = resolvedTracksContainer.makeTrack();
373 destProxy.copyFrom(actsTracksContainer.getTrack(state.trackTips.at(iTrack)));
376 auto [nShared, nBadTrackMeasurements] = sharedHits_forFinalAmbi.computeSharedHits(destProxy, resolvedTracksContainer, measurementIndex);
377 if (nBadTrackMeasurements > 0)
378 ATH_MSG_ERROR(
"computeSharedHits: " << nBadTrackMeasurements <<
" track measurements not found in input track");
382 ATH_MSG_DEBUG(
" \\__ Created " << resolvedTracksContainer.size() <<
" resolved tracks");
385 std::move(resolvedTrackBackend),
386 std::move(resolvedTrackStateBackend)) );
388 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 851 of file TrackFindingAlg.cxx.
860 Acts::ActorList<Acts::MaterialInteractor, Collector>>
861 options(detContext.geometry, detContext.magField);
863 auto findResult = findTrackStateForExtrapolation(
866 if (!findResult.ok()) {
867 ACTS_ERROR(
"failed to find track state for extrapolation");
868 return findResult.error();
871 auto &[trackState,
distance] = *findResult;
873 options.direction = Acts::Direction::fromScalarZeroAsPositive(
distance);
875 Acts::BoundTrackParameters
parameters =
track.createParametersFromState(trackState);
876 ACTS_VERBOSE(
"extrapolating track to reference surface at distance "
878 <<
" with starting parameters " <<
parameters);
880 auto state = propagator.makeState<decltype(
options), Acts::ForcedSurfaceReached>(referenceSurface,
options);
884 auto initRes = propagator.initialize(state,
parameters);
886 ACTS_ERROR(
"Failed to initialize propgation state: " << initRes.error().message());
887 return initRes.error();
891 auto propagateOnlyResult =
892 propagator.propagate(state);
894 if (!propagateOnlyResult.ok()) {
895 ACTS_ERROR(
"failed to extrapolate track: " << propagateOnlyResult.error().message());
896 return propagateOnlyResult.error();
899 auto propagateResult = propagator.makeResult(
900 std::move(state), propagateOnlyResult, referenceSurface,
options);
902 if (!propagateResult.ok()) {
903 ACTS_ERROR(
"failed to extrapolate track: " << propagateResult.error().message());
904 return propagateResult.error();
907 track.setReferenceSurface(referenceSurface.getSharedPtr());
908 track.parameters() = propagateResult->endParameters.value().parameters();
910 propagateResult->endParameters.value().covariance().value();
912 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 422 of file TrackFindingAlg.cxx.
441 Acts::VectorTrackContainer trackBackend;
442 Acts::VectorMultiTrajectory trackStateBackend;
451 std::size_t category_i = 0;
453 auto stopBranchProxy = [&](
const detail::RecoTrackContainer::TrackProxy &
track,
455 return stopBranch(
track, trackState, trackSelectorCfg, detContext.geometry, measurementIndex, typeIndex, event_stat[category_i]);
457 options.extensions.branchStopper.connect(stopBranchProxy);
460 Acts::ActorList<Acts::MaterialInteractor>>
461 extrapolationOptions(detContext.geometry, detContext.magField);
463 Acts::TrackExtrapolationStrategy extrapolationStrategy =
467 ATH_MSG_DEBUG(
"Invoke track finding with " << seeds.
size() <<
' ' << seedType <<
" seeds.");
470 std::size_t nPrinted = 0;
473 auto retrieveSurfaceFunction =
474 [
this, &detElements] (
const ActsTrk::Seed&
seed,
bool useTopSp) ->
const Acts::Surface& {
485 for (
unsigned int iseed = 0; iseed < seeds.
size(); ++iseed)
491 tracksContainerTemp.
clear();
495 const bool useTopSp = reverseSearch && !refitSeeds;
498 const bool isDupSeed = duplicateSeedDetector.isDuplicate(typeIndex, iseed);
501 ATH_MSG_DEBUG(
"skip " << seedType <<
" seed " << iseed <<
" - already found");
510 options.propagatorPlainOptions.direction = reverseSearch ? Acts::Direction::Backward() :
Acts::Direction::
Forward();
511 secondOptions.propagatorPlainOptions.direction =
options.propagatorPlainOptions.direction.invert();
512 options.targetSurface = reverseSearch ? &pSurface :
nullptr;
513 secondOptions.targetSurface = reverseSearch ? nullptr : &pSurface;
517 std::optional<Acts::BoundTrackParameters> optTrackParams =
522 retrieveSurfaceFunction);
524 if (!optTrackParams) {
525 ATH_MSG_DEBUG(
"Failed to estimate track parameters for seed " << iseed);
535 Acts::BoundTrackParameters *initialParameters = &(*optTrackParams);
536 printSeed(iseed, detContext, seeds, *initialParameters, measurementIndex, nPrinted, seedType);
537 if (isDupSeed)
continue;
545 std::unique_ptr<Acts::BoundTrackParameters> refitSeedParameters;
547 refitSeedParameters =
doRefit(seed, *initialParameters, detContext, reverseSearch);
548 if (refitSeedParameters.get() ==
nullptr) {
553 if (refitSeedParameters.get() != initialParameters) {
554 initialParameters = refitSeedParameters.get();
555 printSeed(iseed, detContext, seeds, *initialParameters, measurementIndex, nPrinted, seedType,
true);
565 ATH_MSG_WARNING(
"Track finding failed for " << seedType <<
" seed " << iseed <<
" with error" <<
result.error());
569 auto &tracksForSeed =
result.value();
573 std::size_t ntracks = 0
ul;
576 std::size_t nfirst = 0;
577 for (
TrkProxy &firstTrack : tracksForSeed) {
579 auto smoothingResult = Acts::smoothTrack(detContext.geometry, firstTrack,
logger(), Acts::MbfSmoother());
580 if (!smoothingResult.ok()) {
582 << iseed <<
" and first track " << firstTrack.index()
583 <<
" failed with error " << smoothingResult.error());
593 extrapolationStrategy,
598 duplicateSeedDetector,
611 std::optional<detail::RecoTrackStateContainerProxy> firstMeas = getFirstMeasurementFromTrack(firstTrack);
613 if (not firstMeas.has_value()) {
614 ATH_MSG_ERROR(
"Could not retrieve first measurement from track proxy. Is it ill-formed?");
615 return StatusCode::FAILURE;
620 std::vector<typename detail::RecoTrackContainer::TrackProxy> secondTracksForSeed =
626 if ( secondTracksForSeed.empty() ) {
627 ATH_MSG_DEBUG(
"No viable result from second track finding for " << seedType <<
" seed " << iseed <<
" track " << nfirst);
632 extrapolationStrategy,
637 duplicateSeedDetector,
649 auto originalFirstMeasurementPrevious = firstMeasurement.previous();
650 for (
auto &secondTrack : secondTracksForSeed) {
651 secondTrack.reverseTrackStates(
true);
653 firstMeasurement.previous() = secondTrack.outermostTrackState().index();
654 secondTrack.tipIndex() = firstTrack.tipIndex();
658 auto secondSmoothingResult = Acts::smoothTrack(detContext.geometry,
661 if ( not secondSmoothingResult.ok() ) {
664 secondTrack.reverseTrackStates(
true);
671 extrapolationStrategy,
676 duplicateSeedDetector,
687 firstMeasurement.previous() = originalFirstMeasurementPrevious;
694 destiny->at(iseed) = DestinyType::FAILURE;
696 destiny->at(iseed) = DestinyType::SUCCEED;
701 ATH_MSG_DEBUG(
"Track finding found no track candidates for " << seedType <<
" seed " << iseed);
703 }
else if (ntracks >= 2) {
713 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 |
◆ initialize()
StatusCode ActsTrk::TrackFindingAlg::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from ActsTrk::TrackFindingBaseAlg.
Definition at line 78 of file TrackFindingAlg.cxx.
108 return StatusCode::FAILURE;
114 return StatusCode::FAILURE;
120 return StatusCode::FAILURE;
124 Acts::GreedyAmbiguityResolution::Config
cfg;
135 return StatusCode::FAILURE;
139 return StatusCode::SUCCESS;
◆ initializeMeasurementSelector()
StatusCode ActsTrk::TrackFindingBaseAlg::initializeMeasurementSelector |
( |
| ) |
|
|
protectedinherited |
Definition at line 472 of file TrackFindingBaseAlg.cxx.
477 ATH_MSG_ERROR(
"Outlier chi2 cut off provided but number of elements does not agree with"
478 " chi2 cut off for measurements which however is required: "
480 return StatusCode::FAILURE;
485 chi2CutOffOutlier.push_back( std::make_pair(
static_cast<float>(elm),
496 return StatusCode::SUCCESS ;
◆ initPixelStripCounts()
void ActsTrk::TrackFindingBaseAlg::initPixelStripCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track | ) |
|
|
staticprotectedinherited |
◆ 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 534 of file TrackFindingBaseAlg.cxx.
537 std::vector<std::string> stat_labels =
543 std::make_pair(
kNoTrack,
"Cannot find track"),
551 std::make_pair(
kNoSecond,
"Tracks failing second CKF"),
556 assert(stat_labels.size() ==
kNStat);
562 std::vector<std::string> eta_labels;
564 for (std::size_t eta_bin_i = 0; eta_bin_i <
m_statEtaBins.size() + 2; ++eta_bin_i)
573 std::vector<std::size_t>
stat =
574 TableUtils::createCounterArrayWithProjections<std::size_t>(
nSeedCollections(),
579 std::size_t stat_stride =
583 std::size_t eta_stride =
587 std::stringstream table_out;
593 for (std::size_t stat_i = 0; stat_i <
kNStat; ++stat_i)
595 std::size_t dest_idx_offset = stat_i * stat_stride;
601 .dumpHeader(stat_i == 0)
602 .dumpFooter(stat_i + 1 ==
kNStat)
603 .separateLastRow(
true)
604 .minLabelWidth(max_label_width)
605 .labelPrefix(stat_labels.at(stat_i));
615 std::size_t dest_idx_offset = eta_bin_i * eta_stride;
619 eta_labels.at(eta_bin_i))
632 auto [ratio_labels, ratio_def] =
634 std::vector<TableUtils::SummandDefinition>{
667 for (std::size_t ratio_i = 0; ratio_i < ratio_labels.size(); ++ratio_i)
670 ratio_i * ratio_stride,
676 .dumpHeader(ratio_i == 0)
677 .dumpFooter(ratio_i + 1 == ratio_labels.size())
678 .separateLastRow(
true)
679 .minLabelWidth(max_label_width)
680 .labelPrefix(ratio_labels.at(ratio_i));
687 (
m_statEtaBins.size() + 1) * ratio_eta_stride + 0 * ratio_stride,
693 .minLabelWidth(max_label_width)
697 eta_labels.erase(eta_labels.end() - 1);
698 constexpr std::size_t ratio_i = 3;
700 ratio_i * ratio_stride,
708 .separateLastRow(
false)
709 .minLabelWidth(max_label_width)
710 .labelPrefix(ratio_labels.at(ratio_i));
◆ propagateDetectorElementStatusToMeasurements()
Definition at line 739 of file TrackFindingAlg.cxx.
742 const Acts::TrackingGeometry *
744 ATH_CHECK(acts_tracking_geometry !=
nullptr);
746 using Counter =
struct {
unsigned int n_volumes, n_volumes_with_status, n_missing_detector_elements, n_detector_elements, n_disabled_detector_elements;};
748 acts_tracking_geometry->visitVolumes([&
counter,
749 &volume_id_to_det_el_coll,
752 this](
const Acts::TrackingVolume *volume_ptr) {
754 if (!volume_ptr)
return;
757 det_el_status = det_el_status_arr.at(volume_id_to_det_el_coll.
collecionMap().at(volume_ptr->geometryId().volume()));
759 ++
counter.n_volumes_with_status;
760 volume_ptr->visitSurfaces([&
counter, det_el_status, &measurements,
this](
const Acts::Surface *surface_ptr) {
761 if (!surface_ptr)
return;
762 const Acts::Surface &surface = *surface_ptr;
763 const Acts::DetectorElementBase*detector_element = surface.associatedDetectorElement();
764 if (detector_element) {
768 ActsTrk::detail::MeasurementRange old_range = measurements.markSurfaceInsensitive(surface_ptr->geometryId());
769 if (!old_range.empty()) {
770 auto geoid_to_string = [](const Acts::GeometryIdentifier &id) -> std::string {
771 std::stringstream amsg;
775 std::string a_msg ( geoid_to_string(surface_ptr->geometryId()));
776 ATH_MSG_WARNING(
"Reject " << (old_range.elementEndIndex() - old_range.elementBeginIndex())
777 <<
" measurements because surface " << a_msg);
779 ++
counter.n_disabled_detector_elements;
785 ++
counter.n_missing_detector_elements;
789 <<
" disabled detector elements " <<
counter.n_disabled_detector_elements
790 <<
" / " <<
counter.n_detector_elements
791 <<
" missing detector elements "
792 <<
counter.n_missing_detector_elements);
793 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ seedCollectionStride()
std::size_t ActsTrk::TrackFindingBaseAlg::seedCollectionStride |
( |
| ) |
const |
|
inlineprotectedinherited |
◆ selectPixelStripCounts()
std::array< bool, 3 > ActsTrk::TrackFindingBaseAlg::selectPixelStripCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track, |
|
|
double |
eta |
|
) |
| const |
|
protectedinherited |
Definition at line 449 of file TrackFindingBaseAlg.cxx.
450 bool enoughMeasurements =
true, tooManyHoles =
false, tooManyOutliers =
false;
452 std::size_t
etaBin = (std::abs(eta) < trackSelectorCfg.absEtaEdges.front()) ? 0
453 : (std::abs(eta) >= trackSelectorCfg.absEtaEdges.back()) ? trackSelectorCfg.absEtaEdges.size() - 1
454 : trackSelectorCfg.binIndex(eta);
455 auto cutMin = [
etaBin](std::size_t
val,
const std::vector<std::size_t> &cutSet) {
456 return !cutSet.empty() && (
val < (
etaBin < cutSet.size() ? cutSet[
etaBin] : cutSet.back()));
458 auto cutMax = [
etaBin](std::size_t
val,
const std::vector<std::size_t> &cutSet) {
459 return !cutSet.empty() && (
val > (
etaBin < cutSet.size() ? cutSet[
etaBin] : cutSet.back()));
469 return {enoughMeasurements, tooManyHoles, tooManyOutliers};
◆ selectPixelStripCountsFinal()
bool ActsTrk::TrackFindingBaseAlg::selectPixelStripCountsFinal |
( |
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 407 of file TrackFindingAlg.cxx.
408 const auto& bottom_sp =
seed.sp().front();
410 const double r = bottom_sp->radius();
411 const double z = std::abs(bottom_sp->z());
416 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 279 of file TrackFindingBaseAlg.cxx.
295 measurementIndex,
true);
299 return BranchStopperResult::Continue;
302 const auto &
parameters = trackState.hasFiltered() ? trackState.filtered()
303 : trackState.predicted();
305 const auto &cutSet =
getCuts(eta);
314 <<
pT <<
" after " <<
track.nMeasurements()
316 return BranchStopperResult::StopAndDrop;
322 !(std::abs(eta) < trackSelectorCfg.absEtaEdges.back() +
326 << eta <<
" after " <<
track.nMeasurements()
328 return BranchStopperResult::StopAndDrop;
334 bool enoughMeasurements = (
track.nMeasurements() >= minMeasurementsBranchStop);
335 bool tooManyHoles = (
track.nHoles() > cutSet.maxHoles);
336 bool tooManyOutliers = (
track.nOutliers() > cutSet.maxOutliers);
339 auto [enoughMeasurementsPS, tooManyHolesPS, tooManyOutliersPS] =
341 enoughMeasurements = enoughMeasurements && enoughMeasurementsPS;
342 tooManyHoles = tooManyHoles || tooManyHolesPS;
343 tooManyOutliers = tooManyOutliers || tooManyOutliersPS;
346 if (!(tooManyHoles || tooManyOutliers)) {
347 return BranchStopperResult::Continue;
350 if (!enoughMeasurements) {
356 << (enoughMeasurements ?
"keep" :
"drop")
357 <<
" branch with nHoles=" <<
track.nHoles() <<
" ("
360 <<
" strip), nOutliers=" <<
track.nOutliers() <<
" ("
363 <<
"), nMeasurements=" <<
track.nMeasurements() <<
" ("
368 << (enoughMeasurements ?
"keep" :
"drop")
369 <<
" branch with nHoles=" <<
track.nHoles()
370 <<
", nOutliers=" <<
track.nOutliers()
371 <<
", nMeasurements=" <<
track.nMeasurements());
374 return enoughMeasurements ? BranchStopperResult::StopAndKeep
375 : BranchStopperResult::StopAndDrop;
◆ storeSeedInfo()
Definition at line 717 of file TrackFindingAlg.cxx.
722 const auto lastMeasurementIndex =
track.tipIndex();
723 duplicateSeedDetector.newTrajectory();
725 tracksContainer.trackStateContainer().visitBackwards(
726 lastMeasurementIndex,
727 [&duplicateSeedDetector,&measurementIndex](
const detail::RecoTrackStateContainer::ConstTrackStateProxy &state) ->
void
730 if (not state.hasUncalibratedSourceLink())
734 auto sl = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
735 duplicateSeedDetector.addMeasurement(sl, measurementIndex);
◆ storeTrackCollectionToStoreGate()
StatusCode ActsTrk::TrackFindingAlg::storeTrackCollectionToStoreGate |
( |
const EventContext & |
ctx, |
|
|
Acts::VectorTrackContainer && |
originalTrackBackend, |
|
|
Acts::VectorMultiTrajectory && |
originalTrackStateBackend |
|
) |
| const |
|
private |
Definition at line 391 of file TrackFindingAlg.cxx.
396 Acts::ConstVectorTrackContainer constTrackBackend( std::move(originalTrackBackend) );
397 Acts::ConstVectorMultiTrajectory constTrackStateBackend( std::move(originalTrackStateBackend) );
398 std::unique_ptr< ActsTrk::TrackContainer> constTracksContainer = std::make_unique< ActsTrk::TrackContainer >( std::move(constTrackBackend),
399 std::move(constTrackStateBackend) );
403 ATH_CHECK(trackContainerHandle.
record(std::move(constTracksContainer)));
404 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]
◆ updatePixelStripCounts()
void ActsTrk::TrackFindingBaseAlg::updatePixelStripCounts |
( |
const detail::RecoTrackContainer::TrackProxy & |
track, |
|
|
Acts::ConstTrackStateType |
typeFlags, |
|
|
xAOD::UncalibMeasType |
detType |
|
) |
| |
|
staticprotectedinherited |
Definition at line 399 of file TrackFindingBaseAlg.cxx.
403 if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
405 }
else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
407 }
else if (typeFlags.test(Acts::TrackStateFlag::MeasurementFlag)) {
411 if (typeFlags.test(Acts::TrackStateFlag::HoleFlag)) {
413 }
else if (typeFlags.test(Acts::TrackStateFlag::OutlierFlag)) {
415 }
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_addPixelStripCounts
Gaudi::Property<bool> ActsTrk::TrackFindingBaseAlg::m_addPixelStripCounts {this, "addPixelStripCounts", true, "keep separate pixel and strip 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_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_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_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.
bool selectPixelStripCountsFinal(const detail::RecoTrackContainer::TrackProxy &track) const
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
static void updatePixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, Acts::ConstTrackStateType typeFlags, xAOD::UncalibMeasType detType)
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
Gaudi::Property< unsigned int > m_seedMeasOffset
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
virtual StatusCode initialize() override
virtual StatusCode finalize() override
static void set(track_proxy_t &track, std::array< unsigned int, 4 > values)
Acts::TrackSelector trackSelector
std::vector< std::array< unsigned int, kNStat > > EventStats
Gaudi::Property< std::vector< std::size_t > > m_maxPixelHoles
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.
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< 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)
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.
Gaudi::Property< bool > m_addPixelStripCounts
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)
Gaudi::Property< unsigned int > m_maxPropagationStep
void clear()
Erase all the elements in the collection.
static void addPixelStripCounts(detail::RecoTrackContainer &tracksContainer)
Gaudi::Property< std::vector< size_t > > m_numMeasurementsCutOff
static void copyPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackProxy &other)
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
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.
void checkPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track) const
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
std::array< bool, 3 > selectPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track, double eta) 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)
struct ActsTrk::TrackFindingBaseAlg::MeasurementSelectorConfig m_measurementSelectorConfig
Gaudi::Property< float > m_memorySafetyMargin
std::vector< float > m_etaBins
Gaudi::Property< std::vector< float > > m_statEtaBins
Gaudi::Property< std::vector< std::size_t > > m_maxStripOutliers
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
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)
static void initPixelStripCounts(const detail::RecoTrackContainer::TrackProxy &track)
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
Gaudi::Property< bool > m_doTwoWay
const_pointer_type cptr()
void addToExpectedLayerPattern(std::array< unsigned int, 4 > &pattern, const ActsDetectorElement &detElement)