ATLAS Offline Software
Loading...
Searching...
No Matches
FastMuonSABuilder.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONR4_FASTRECONSTRUCTIONALGS_FASTMUONSABUILDER__H
5#define MUONR4_FASTRECONSTRUCTIONALGS_FASTMUONSABUILDER__H
6
7#include <xAODMuon/Muon.h>
11
13
20
23
24
26
36
38 public:
50 struct Config {
52 bool recalibInFit{false};
54 bool useHessianResidual{false};
56 double seedHitChi2{5.};
59 bool recalibSeed{false};
61 double goodSegmentCut{2.};
65 double recoveryPull{5.};
67 unsigned precHitCut{3};
69 bool useFastFitter{true};
71 bool fastPreFitter{false};
73 bool ignoreFailedPreFit{false};
75 unsigned maxIter{50};
77 unsigned nFieldSteps{30};
84 };
85
89 FastMuonSABuilder(const std::string& name,
90 Config&& config);
91
100 xAOD::Muon* buildMuonCandidate(const EventContext& ctx,
101 const ActsTrk::GeometryContext& gctx,
102 const AtlasFieldCacheCondObj& magField,
103 const GlobalPattern& pattern,
104 MuonCont_t& outMuons) const;
105 private:
107 using Hit_t = const SpacePoint*;
108 using HitVec_t = std::vector<Hit_t>;
112 using Segment_t = std::unique_ptr<Segment>;
118 Segment_t fitSegment(const EventContext& ctx,
119 const Amg::Transform3D& localToGlobal,
120 Bucket_t parentBucket,
121 std::vector<Hit_t>&& hits) const;
122
130 Parameters& pars) const;
136 std::unique_ptr<LineFitter> m_fitter{};
138 std::unique_ptr<LineFitter> m_nswFitter{};
140 std::unique_ptr<MdtSegmentSeeder> m_mdtSeeder{};
142 std::unique_ptr<MsTrackSeeder> m_trackSeeder{};
143 };
144}
145
146
147#endif
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
MuonR4::SegmentFit::SegmentLineFitter LineFitter
Type alias for the line fitter.
HitVec_t estimateBendingPars(HitVec_t &&hits, Parameters &pars) const
Estimate the bending parameters of a segment through a weighted linear regression.
std::unique_ptr< MdtSegmentSeeder > m_mdtSeeder
Pointer to the L-R segment seeder.
FastMuonSABuilder(const std::string &name, Config &&config)
Standard constructor.
Muon::MuonStationIndex::StIndex StIndex
Type alias for the station index.
std::unique_ptr< Segment > Segment_t
Type alias for the segment type.
SpacePointPerLayerSorter m_spSorter
Spacepoint sorter per logical measurement layer.
std::unique_ptr< LineFitter > m_fitter
Pointer to the actual segment fitter.
MuonR4::SegmentFit::MdtSegmentSeedGenerator MdtSegmentSeeder
Type alias for the L-R segment seeder.
const SpacePoint * Hit_t
Type alias for the hit type & associated vector.
const SpacePointBucket * Bucket_t
Type alias for the bucket type.
std::unique_ptr< MsTrackSeeder > m_trackSeeder
Pointer to the track seeder for momentum estimate.
Segment_t fitSegment(const EventContext &ctx, const Amg::Transform3D &localToGlobal, Bucket_t parentBucket, std::vector< Hit_t > &&hits) const
Fit a segment using the provided seed.
std::unique_ptr< LineFitter > m_nswFitter
Pointer to the NSW segment fitter.
Config m_cfg
Global Pattern Recognition configuration.
xAOD::FillContainer< xAOD::MuonContainer, xAOD::MuonAuxContainerR4 > MuonCont_t
Define the muon container type.
xAOD::Muon * buildMuonCandidate(const EventContext &ctx, const ActsTrk::GeometryContext &gctx, const AtlasFieldCacheCondObj &magField, const GlobalPattern &pattern, MuonCont_t &outMuons) const
Main methods steering the muon candidate building.
SegmentFit::Parameters Parameters
Type alias for the segment fitting parameters.
Data class to represent an eta maximum in hough space.
Interface class to refine the space point calibration with an external seed.
Helper class to generate valid seeds for the segment fit.
The SegmentLineFitter is a standalone module to fit a straight line to calibrated muon space points.
: The muon space point bucket represents a collection of points that will bre processed together in t...
The SpacePointPerLayerSorter sort two given space points by their layer Identifier.
The muon space point is the combination of two uncalibrated measurements one of them measures the eta...
Helper tool to visualize a pattern recogntion incident or a certain stage of the segment fit.
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
Eigen::Affine3d Transform3D
Acts::Experimental::CompositeSpacePointLineFitter::ParamVec_t Parameters
StIndex
enum to classify the different station layers in the muon spectrometer
Muon_v1 Muon
Reference the current persistent version:
bool ignoreFailedPreFit
Whether to ignore failed pre-fits and try the full fit anyway.
double outlierRemovalCut
Cut on the segment chi2 / nDoF to launch the outlier removal.
bool recalibInFit
Whether to recalibrate hits during fitting.
double goodSegmentCut
Reduced chi2 defining a good segment, stopping the fit of other segments in the same station.
bool useHessianResidual
Whether to use Hessian residuals.
const MuonValR4::IPatternVisualizationTool * visionTool
Pointer to the visualization tool.
const Muon::IMuonIdHelperSvc * idHelperSvc
Pointer to the idHelperSvc.
const ISpacePointCalibrator * calibrator
Pointer to the calibrator.
bool fastPreFitter
Whether the fast fitter is used as a pre-fitter.
bool useFastFitter
Whether to use the fast fitter.
double seedHitChi2
Two mdt seeds are the same if their defining parameters match within.
unsigned nFieldSteps
Steps between two segments to integrate the magnetic field.
double recoveryPull
Pull value for hit recovery.
unsigned precHitCut
Minimum number of precision hits required for a segment.
unsigned maxIter
Maximum number of iterations in the fit.
bool recalibSeed
Toggle seed recalibration.