ATLAS Offline Software
Loading...
Searching...
No Matches
MuonRefitTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MUONREFITTOOL_H
6#define MUONREFITTOOL_H
7
8#include <atomic>
9#include <set>
10#include <string>
11#include <vector>
12
14#include "GaudiKernel/ServiceHandle.h"
15#include "GaudiKernel/ToolHandle.h"
31
32namespace Muon {
33
34 class MuonRefitTool : virtual public IMuonRefitTool, public AthAlgTool {
35 public:
36 MuonRefitTool(const std::string& ty, const std::string& na, const IInterface* pa);
37 virtual ~MuonRefitTool() = default;
38 virtual StatusCode initialize() override;
39 virtual StatusCode finalize() override;
40
42 std::unique_ptr<Trk::Track> refit(const Trk::Track& track, const EventContext& ctx, const Settings* settings) const override;
43
45 std::vector<std::unique_ptr<Trk::Track> > refit(const std::vector<Trk::Track*>& tracks, const EventContext& ctx,
46 const Settings* settings) const override;
47
48 protected:
50 std::unique_ptr<Trk::Track> updateErrors(const Trk::Track& track, const EventContext& ctx, const Settings& settings) const;
51
52 std::unique_ptr<Trk::Track> updateMdtErrors(const Trk::Track& track, const EventContext& ctx, const Settings& settings) const;
53
54 std::unique_ptr<Trk::Track> updateAlignmentErrors(const Trk::Track& track, const EventContext& ctx, const Settings& settings) const;
55
56 std::unique_ptr<Trk::Track> makeAEOTs(const Trk::Track& track) const;
57
58 std::unique_ptr<Trk::Track> makeSimpleAEOTs(const Trk::Track& track) const;
59
60 std::unique_ptr<Trk::Track> removeOutliers(const Trk::Track& track, const Settings& settings) const;
61
62 bool removeMdtOutliers(const Trk::TrackParameters& pars, const std::vector<const MdtDriftCircleOnTrack*>& hits,
63 std::set<Identifier>& removedIdentifiers, const Settings& settings) const;
64
65 struct State {
66 State() = default;
69 bool copyOriginal{true};
70 };
71
72 private:
73 ServiceHandle<IMuonEDMHelperSvc> m_edmHelperSvc{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
74 "Handle to the service providing the IMuonEDMHelperSvc interface"};
75 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
76
78 ToolHandle<Trk::ITrkAlignmentDeviationTool> m_alignErrorTool{this, "AlignmentErrorTool", "MuonAlign::AlignmentErrorTool"};
79 PublicToolHandle<MuonEDMPrinterTool> m_printer{this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
80
81 ToolHandle<Trk::ITrackFitter> m_trackFitter{this, "Fitter", "Trk::GlobalChi2Fitter/MCTBFitterMaterialFromTrack"};
82 ToolHandle<Trk::IExtrapolator> m_muonExtrapolator{this, "MuonExtrapolator", "Trk::Extrapolator/MuonExtrapolator"};
83 ToolHandle<IMdtDriftCircleOnTrackCreator> m_mdtRotCreator{this, "MdtRotCreator",
84 "Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"};
85 ToolHandle<IMuonCompetingClustersOnTrackCreator> m_compClusterCreator{
86 this, "CompClusterCreator", "Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator"};
87 ToolHandle<IDCSLFitProvider> m_t0Fitter{this, "T0Fitter", ""};
88 ToolHandle<Muon::IMuonTrackExtrapolationTool> m_muonEntryTrackExtrapolator{this, "MuonEntryExtrapolationTool", ""};
89
90 Gaudi::Property<int> m_finderDebugLevel{this, "FinderDebugLevel", -1};
91
92 Gaudi::Property<double> m_minMuonMomentum{this, "MinMuonMom", 4000};
93 Gaudi::Property<double> m_fixedError{this, "UsedFixedError", 1};
94 Gaudi::Property<double> m_flagT0FitRange{this, "FlagT0FitRange", 0.00005};
95
96 Gaudi::Property<float> m_alignmentDelta{this, "AlignmentDelta", 0};
97 Gaudi::Property<float> m_alignmentAngle{this, "AlignmentAngle", 0};
98 Gaudi::Property<float> m_alignmentDeltaError{this, "AlignmentDeltaError", 0.1};
99 Gaudi::Property<float> m_alignmentAngleError{this, "AlignmentAngleError", 0.001};
100
101 Gaudi::Property<bool> m_alignmentErrors{this, "AlignmentErrors", false};
102 Gaudi::Property<bool> m_simpleAEOTs{this, "SimpleAEOTs", false};
103 Gaudi::Property<bool> m_addAll{this, "AddAll", false};
104 Gaudi::Property<bool> m_addInner{this, "AddInner", false};
105 Gaudi::Property<bool> m_addMiddle{this, "AddMiddle", false};
106 Gaudi::Property<bool> m_addTwo{this, "AddTwo", false};
107 Gaudi::Property<bool> m_deweightBEE{this, "DeweightBEE", false};
108 Gaudi::Property<bool> m_deweightEE{this, "DeweightEE", false};
109 Gaudi::Property<bool> m_deweightBIS78{this, "DeweightBIS78", true};
110 Gaudi::Property<bool> m_deweightBME{this, "DeweightBME", true};
111 Gaudi::Property<bool> m_deweightBOE{this, "DeweightBOE", true};
112 Gaudi::Property<bool> m_deweightEEL1C05{this, "DeweightEEL1C05", false};
113 Gaudi::Property<bool> m_deweightTwoStationTracks{this, "DeweightTwoStationTracks", false};
114
125
127
128 mutable std::atomic<unsigned int> m_nrefits{0};
129 mutable std::atomic<unsigned int> m_ngoodRefits{0};
130 mutable std::atomic<unsigned int> m_failedOutlierRemoval{0};
131 mutable std::atomic<unsigned int> m_failedErrorUpdate{0};
132 mutable std::atomic<unsigned int> m_failedRefit{0};
133 mutable std::atomic<unsigned int> m_failedExtrapolationMuonEntry{0};
134
135 std::unique_ptr<Trk::Perigee> createPerigee(const Trk::TrackParameters& pars, const EventContext& ctx) const;
136
138 };
139} // namespace Muon
140
141#endif
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
The IMuonSegmentMaker is a pure virtual interface for tools to find tracks starting from MuonSegmentC...
MuonDriftCircleErrorStrategy m_errorStrategyBarEnd
Gaudi::Property< bool > m_deweightBME
Gaudi::Property< float > m_alignmentDeltaError
Gaudi::Property< bool > m_deweightBEE
virtual StatusCode finalize() override
Gaudi::Property< bool > m_addInner
virtual StatusCode initialize() override
ToolHandle< IMuonCompetingClustersOnTrackCreator > m_compClusterCreator
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtRotCreator
ToolHandle< Muon::IMuonTrackExtrapolationTool > m_muonEntryTrackExtrapolator
Gaudi::Property< double > m_fixedError
Gaudi::Property< bool > m_deweightEE
std::unique_ptr< Trk::Perigee > createPerigee(const Trk::TrackParameters &pars, const EventContext &ctx) const
Gaudi::Property< bool > m_addAll
ToolHandle< IDCSLFitProvider > m_t0Fitter
std::unique_ptr< Trk::Track > removeOutliers(const Trk::Track &track, const Settings &settings) const
std::unique_ptr< Trk::Track > updateErrors(const Trk::Track &track, const EventContext &ctx, const Settings &settings) const
update errors on a muon track
MuonDriftCircleErrorStrategy m_errorStrategySL
std::atomic< unsigned int > m_failedExtrapolationMuonEntry
MuonDriftCircleErrorStrategy m_errorStrategyEEL1C05
PublicToolHandle< MuonEDMPrinterTool > m_printer
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
bool removeMdtOutliers(const Trk::TrackParameters &pars, const std::vector< const MdtDriftCircleOnTrack * > &hits, std::set< Identifier > &removedIdentifiers, const Settings &settings) const
MuonDriftCircleErrorStrategy m_errorStrategyEE
MuonDriftCircleErrorStrategy m_errorStrategy
Gaudi::Property< float > m_alignmentDelta
Gaudi::Property< bool > m_deweightBOE
std::unique_ptr< Trk::Track > updateAlignmentErrors(const Trk::Track &track, const EventContext &ctx, const Settings &settings) const
Gaudi::Property< bool > m_deweightEEL1C05
std::unique_ptr< Trk::Track > makeAEOTs(const Trk::Track &track) const
std::atomic< unsigned int > m_failedOutlierRemoval
Gaudi::Property< double > m_flagT0FitRange
Gaudi::Property< bool > m_deweightTwoStationTracks
std::unique_ptr< Trk::Track > makeSimpleAEOTs(const Trk::Track &track) const
Gaudi::Property< double > m_minMuonMomentum
std::atomic< unsigned int > m_failedRefit
virtual ~MuonRefitTool()=default
MuonDriftCircleErrorStrategy m_errorStrategyBXE
ToolHandle< Trk::ITrkAlignmentDeviationTool > m_alignErrorTool
Does not provide any method with EventContext yet.
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
Gaudi::Property< bool > m_addTwo
MuonDriftCircleErrorStrategy m_muonErrorStrategy
Gaudi::Property< bool > m_deweightBIS78
std::atomic< unsigned int > m_failedErrorUpdate
std::atomic< unsigned int > m_ngoodRefits
MuonDriftCircleErrorStrategy m_errorStrategyBEE
ToolHandle< Trk::ITrackFitter > m_trackFitter
Gaudi::Property< bool > m_simpleAEOTs
MuonDriftCircleErrorStrategy m_errorStrategyBIS78
Gaudi::Property< bool > m_alignmentErrors
std::unique_ptr< Trk::Track > updateMdtErrors(const Trk::Track &track, const EventContext &ctx, const Settings &settings) const
std::atomic< unsigned int > m_nrefits
Gaudi::Property< bool > m_addMiddle
Gaudi::Property< int > m_finderDebugLevel
std::unique_ptr< Trk::Track > refit(const Trk::Track &track, const EventContext &ctx, const Settings *settings) const override
refit a track
Gaudi::Property< float > m_alignmentAngle
MuonDriftCircleErrorStrategy m_errorStrategyTwoStations
ToolHandle< Trk::IExtrapolator > m_muonExtrapolator
MuonRefitTool(const std::string &ty, const std::string &na, const IInterface *pa)
Gaudi::Property< float > m_alignmentAngleError
represents the track state (measurement, material, fit parameters and quality) at a surface.
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
ParametersBase< TrackParametersDim, Charged > TrackParameters
const Trk::TrackStateOnSurface * originalState
const Trk::TrackStateOnSurface * newState