5#ifndef MUON_MOOTRACKBUILDER_H
6#define MUON_MOOTRACKBUILDER_H
9#include "GaudiKernel/ServiceHandle.h"
10#include "GaudiKernel/ToolHandle.h"
87 MooTrackBuilder(
const std::string&,
const std::string&,
const IInterface*);
96 virtual StatusCode
finalize()
override;
100 static const InterfaceID IID_MooTrackBuilder(
"Muon::MooTrackBuilder", 1, 0);
101 return IID_MooTrackBuilder;
108 virtual std::unique_ptr<Trk::Track>
refit(
const EventContext& ctx,
Trk::Track& track)
const override;
117 const PrepVec& patternPhiHits)
const;
128 const PrepVec& patternPhiHits)
const;
137 const PrepVec& patternPhiHits)
const override;
146 const PrepVec& patternPhiHits)
const override;
155 const PrepVec& patternPhiHits)
const override;
164 const PrepVec& patternPhiHits)
const;
181 const std::set<Identifier>& chIds,
const PrepVec& patternPhiHits)
const;
189 const std::set<Identifier>& chIds,
190 const PrepVec& patternPhiHits)
const;
216 bool doCompetingClusters)
const override;
222 std::pair<std::unique_ptr<Trk::Track>, std::unique_ptr<Trk::Track> >
splitTrack(
const EventContext& ctx,
const Trk::Track& track)
const;
238 virtual std::vector<std::unique_ptr<MuPatTrack> >
find(
const EventContext& ctx,
MuPatCandidateBase& candidate,
const std::vector<MuPatSegment*>& segments)
const override;
244 virtual void refine(
const EventContext& ctx,
MuPatTrack& track)
const override;
248 std::vector<const MuonSegment*>& referenceSegments)
const;
253 std::vector<std::unique_ptr<const Trk::TrackStateOnSurface>>& states)
const;
255 ToolHandle<MooTrackFitter>
m_fitter{
this,
"Fitter",
"Muon::MooTrackFitter/MooTrackFitter",
"Tool to fit segments to tracks"};
256 ToolHandle<MooTrackFitter>
m_slFitter{
this,
"SLFitter",
"Muon::MooTrackFitter/MooSLTrackFitter",
"Tool to fit segments to tracks"};
258 "Muon::MuPatCandidateTool/MuPatCandidateTool"};
260 "Muon::MooCandidateMatchingTool/MooCandidateMatchingTool"};
262 "Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"};
264 "Handle to the service providing the IMuonEDMHelperSvc interface"};
265 PublicToolHandle<MuonEDMPrinterTool>
m_printer{
this,
"Printer",
266 "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
269 "Muon::MuonSeededSegmentFinder/MuonSeededSegmentFinder"};
271 "Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"};
273 this,
"CompetingClustersCreator",
"Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator"};
274 ToolHandle<Trk::IPropagator>
m_propagator{
this,
"Propagator",
"Trk::STEP_Propagator/MuonPropagator"};
276 "Trk::ResidualPullCalculator/ResidualPullCalculator"};
278 this,
"ChamberHoleRecoveryTool",
279 "Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool"};
281 this,
"Extrapolator",
"Muon::MuonTrackExtrapolationTool/MuonTrackExtrapolationTool"};
284 ToolHandle<Trk::IExtendedTrackSummaryTool>
m_trackSummaryTool{
this,
"TrackSummaryTool",
"MuonTrackSummaryTool"};
287 "Name of the Magnetic Field conditions object key"};
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
DataModel_detail::const_iterator< DataVector > const_iterator
The IMuonSegmentMaker is a pure virtual interface for tools to find tracks starting from MuonSegmentC...
std::vector< const Trk::PrepRawData * > PrepVec
The IMuonTrackBuilder is a pure virtual interface for tools extending muon track candidates with segm...
The IMuonTrackRefiner is a pure virtual interface for tools which refine the hit content of a given t...
virtual std::unique_ptr< Trk::TrackParameters > getClosestParameters(const Trk::Track &track, const Trk::Surface &surf) const override
find closest TrackParameters to the surface.
ToolHandle< MuPatCandidateTool > m_candidateHandler
candidate handler
ToolHandle< IMuonCompetingClustersOnTrackCreator > m_compRotCreator
void removeDuplicateWithReference(std::unique_ptr< Trk::SegmentCollection > &segments, std::vector< const MuonSegment * > &referenceSegments) const
ToolHandle< Trk::IPropagator > m_propagator
bool isSplitTrack(const EventContext &ctx, const Trk::Track &track1, const Trk::Track &track2) const
identify whether two track are split
Trk::MagneticFieldProperties m_magFieldProperties
magnetic field properties
virtual std::vector< std::unique_ptr< MuPatTrack > > find(const EventContext &ctx, MuPatCandidateBase &candidate, const std::vector< MuPatSegment * > &segments) const override
interface for tools to find track in the muon system starting from a vector of segments
ToolHandle< IMuonSeededSegmentFinder > m_seededSegmentFinder
Gaudi::Property< bool > m_recalibrateMDTHits
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtRotCreator
PublicToolHandle< MuonEDMPrinterTool > m_printer
tool to print out EDM objects;
Gaudi::Property< bool > m_useTrackingHistory
use history of the track finding up to now to avoid creating duplicates
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
std::atomic_uint m_ncalls
virtual std::unique_ptr< Trk::TrackParameters > findClosestParameters(const Trk::Track &track, const Amg::Vector3D &pos) const override
find closest TrackParameters to the position.
ToolHandle< MooTrackFitter > m_fitter
virtual void refine(const EventContext &ctx, MuPatTrack &track) const override
interface for tools which refine the hit content of a given track
Gaudi::Property< bool > m_useExclusionList
use exclusion list (bit faster at the price of missing chambers)
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
MooTrackBuilder(const std::string &, const std::string &, const IInterface *)
default AlgTool constructor
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
std::atomic_uint m_nTimedOut
ToolHandle< IMuonHoleRecoveryTool > m_muonChamberHoleRecoverTool
ToolHandle< MooCandidateMatchingTool > m_candidateMatchingTool
ToolHandle< MooTrackFitter > m_slFitter
std::vector< std::unique_ptr< Trk::Track > > combineWithSegmentFinding(const EventContext &ctx, const Trk::Track &track, const MuonSegment &seg, const PrepVec &patternPhiHits) const
find tracks by redoing the segment finding in the chamber of the segment
std::unique_ptr< MuonSegment > combineToSegment(const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &patternPhiHits) const
Methos is used externally by MuonTrackSteering.cxx:233. Should be revised to put it into an interface...
ToolHandle< IMuonErrorOptimisationTool > m_errorOptimisationTool
virtual StatusCode initialize() override
initialize method, method taken from bass-class AlgTool
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
TrackCollection * mergeSplitTracks(const EventContext &ctx, const TrackCollection &tracks) const
look for split tracks in collection and merge them
std::pair< std::unique_ptr< Trk::Track >, std::unique_ptr< Trk::Track > > splitTrack(const EventContext &ctx, const Trk::Track &track) const
split given track if it crosses the calorimeter volume, code assumes that the track was already extra...
ToolHandle< IMuonTrackToSegmentTool > m_trackToSegmentTool
virtual std::unique_ptr< Trk::Track > recalibrateHitsOnTrack(const EventContext &ctx, const Trk::Track &track, bool doMdts, bool doCompetingClusters) const override
recalibrate hits on track
ToolHandle< IMuonTrackExtrapolationTool > m_trackExtrapolationTool
virtual std::unique_ptr< Trk::Track > refit(const EventContext &ctx, Trk::Track &track) const override
refit track
static const InterfaceID & interfaceID()
access to tool interface
Gaudi::Property< bool > m_doTimeOutChecks
on/off time out check
Trk::TrackStates::const_iterator insertClustersWithCompetingRotCreation(const EventContext &ctx, Trk::TrackStates::const_iterator tsit, Trk::TrackStates::const_iterator tsit_end, std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > &states) const
~MooTrackBuilder()=default
destructor
ToolHandle< Trk::IResidualPullCalculator > m_pullCalculator
virtual StatusCode finalize() override
finialize method, method taken from bass-class AlgTool
std::unique_ptr< Trk::Track > combine(const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &patternPhiHits) const
combine two MCTBCandidateEntries
track candidate entry object.
segment candidate object.
This is the common class for 3D segments used in the muon spectrometer.
magnetic field properties to steer the behavior of the extrapolation
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
@ FullField
Field is set to be realistic, but within a given Volume.
ParametersBase< TrackParametersDim, Charged > TrackParameters