4#ifndef MUONTRACKFINIDNGALGS_MSTRACKFINIDNGALG_H
5#define MUONTRACKFINIDNGALGS_MSTRACKFINIDNGALG_H
35#include "GaudiKernel/SystemOfUnits.h"
41 using AthReentrantAlgorithm::AthReentrantAlgorithm;
46 virtual StatusCode
initialize() override final;
81 const Acts::MagneticFieldContext& mfContext,
82 const Acts::CalibrationContext& calContext,
89 SG::ReadHandleKey<
xAOD::MuonSegmentContainer>
m_segmentKey{
this,
"SegmentContainer",
"MuonSegmentsFromR4" };
97 ToolHandle<ISegmentSelectionTool>
m_segSelector{
this,
"SegmentSelectionTool" ,
"" };
101 ToolHandle<ISpacePointCalibrator>
m_calibTool{
this,
"Calibrator",
""};
113 Gaudi::Property<bool>
m_useMlSeeder{
this,
"UseMlSeeder",
false,
"Use segment-edge ML candidate ids to split seeding"};
115 Gaudi::Property<std::string>
m_mlCandidateDecoration{
this,
"MlCandidateDecoration",
"trackCandidateIds",
"Segment vector<unsigned> decoration with ML track-candidate ids"};
118 this,
"MlFallbackToBaselineIfUndecorated",
true,
119 "Run baseline seeder if the input segment container has no ML decoration"};
121 this,
"MlFallbackToBaselineIfNoCandidates",
false,
122 "Run baseline seeder if ML grouping produced no seed candidates"};
124 this,
"MlRunCandidatesInParallel",
true,
125 "Run baseline seeding independently for ML candidate groups in parallel"};
127 this,
"MlCandidateDecorationKey",
"",
"Scheduler dependency on ML candidate decoration"};
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
Gaudi::Property< unsigned > m_mlMinSegmentsPerCandidate
Gaudi::Property< bool > m_mlRunCandidatesInParallel
Acts::Result< Acts::BoundTrackParameters > OptBoundPars_t
Gaudi::Property< double > m_seedHalfLength
Maximum search window to search segments for.
Gaudi::Property< bool > m_mlFallbackToBaselineIfNoCandidates
Gaudi::Property< bool > m_mlFallbackToBaselineIfUndecorated
std::unique_ptr< MsTrackSeedContainer > findTrackSeeds(const EventContext &ctx, const xAOD::MuonSegmentContainer &segments) const
Iterates over the search tree and combines close-by segments to a track seed.
std::vector< const xAOD::UncalibratedMeasurement * > MeasVec_t
SG::WriteHandleKey< ActsTrk::TrackContainer > m_writeKey
Key to the output track container.
std::unique_ptr< MsTrackSeeder > m_seeder
Pointer to the actual seeder implementation.
SG::WriteHandleKey< MsTrackSeedContainer > m_msTrkSeedKey
Temporary container write handle to push the seeds to store gate for later efficiency analysis.
virtual StatusCode execute(const EventContext &ctx) const override final
Standard algorithm execution hook.
std::unique_ptr< MlMsTrackSeeder > m_mlSeeder
Optional ML-wrapper seeder implementation.
ToolHandle< ISpacePointCalibrator > m_calibTool
Calibration tool to fill the track states.
const MsTrackSeeder & baselineSeeder() const
ToolHandle< MuonValR4::ITrackVisualizationTool > m_visualizationTool
Visualization tool to debug the track finding.
const MuonGMR4::MuonDetectorManager * m_detMgr
Pointer to the MuonDetectorManager.
virtual ~MsTrackFindingAlg()
ToolHandle< ActsTrk::IFitterTool > m_trackFitTool
Track fitting tool.
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Tracking geometry tool.
virtual StatusCode initialize() override final
Standard algorithm hook to setup the extrapolator, retrieve the tools and declare algorithm's data de...
ToolHandle< ISegmentSelectionTool > m_segSelector
Segment selection tool to pick the good quality segments.
std::pair< OptBoundPars_t, MeasVec_t > prepareFit(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const MsTrackSeed &seed) const
Prepares the input by the fit by collecting the measurements on the segment &.
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
Track extrapolation tool.
Gaudi::Property< bool > m_useMlSeeder
Use ML-guided segment grouping before baseline seeding.
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_segmentKey
Declare the data dependency on the standard Mdt+Rpc+Tgc segment container & on the NSW segment contai...
Gaudi::Property< std::string > m_mlCandidateDecoration
Segment decoration containing vector<unsigned> candidate IDs.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
IdHelperSvc to decode the Identifiers.
SG::ReadDecorHandleKey< xAOD::MuonSegmentContainer > m_mlCandidateDecorKey
bool fitSeedCandidate(const Acts::GeometryContext &gCtx, const Acts::MagneticFieldContext &mCtx, const Acts::CalibrationContext &cCtx, const MsTrackSeed &seed, ActsTrk::MutableTrackContainer &outContainer) const
Attempts to fit the track seed candidate to a full track and returns whether the fit succeeded.
Helper class to group muon sgements that may belong to a muon trajectory.
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
This class is not to needed in AthSimulation.
This header ties the generic definitions in this package.
std::vector< MsTrackSeed > MsTrackSeedContainer
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.