ATLAS Offline Software
MuTagMatchingTool.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 MuTagMatchingTool_H
6 #define MuTagMatchingTool_H
7 
8 #include <string>
9 
11 #include "GaudiKernel/ServiceHandle.h"
12 #include "GaudiKernel/ToolHandle.h"
27 
33 namespace Trk {
34  class Surface;
35  class Track;
36 } // namespace Trk
37 
38 class MuTagMatchingTool : virtual public IMuTagMatchingTool, public AthAlgTool {
39 public:
40  MuTagMatchingTool(const std::string& t, const std::string& n, const IInterface* p);
41  virtual ~MuTagMatchingTool() = default;
42 
43  virtual StatusCode initialize() override;
44 
45 
46 
47  bool match(const Trk::TrackParameters& atSurface, const Muon::MuonSegment& segment, int surfaceName) const override;
48 
49  bool surfaceMatch(const Muon::MuonSegment& segment, int surfaceName) const override;
50 
51  bool phiMatch(const Trk::TrackParameters& atSurface, const Muon::MuonSegment& segment) const override;
52 
53  bool thetaMatch(const Trk::TrackParameters& atSurface, const Muon::MuonSegment& segment) const override;
54 
55  bool rMatch(const Trk::TrackParameters& atSurface, const Muon::MuonSegment& segment) const override;
56 
58  std::unique_ptr<Trk::TrackParameters> ExtrapolateTrktoMSEntrance(const EventContext& ctx, const Trk::Track& pTrack,
59  Trk::PropDirection direction) const override;
60 
62  std::unique_ptr<Trk::TrackParameters> ExtrapolateTrktoMSSurface(const EventContext& ctx, const Trk::Surface& surface,
63  const Trk::TrackParameters& pTrack,
64  Trk::PropDirection direction) const override;
65 
67  std::shared_ptr<Trk::AtaPlane> ExtrapolateTrktoSegmentSurface(const EventContext& ctx, const Muon::MuonSegment& segment,
68  const Trk::TrackParameters& pTrack,
69  Trk::PropDirection direction) const override;
70 
71 
72  bool matchSegmentPosition(const MuonCombined::MuonSegmentInfo& info, bool idHasEtaHits) const override;
73 
74  bool matchSegmentDirection(const MuonCombined::MuonSegmentInfo& info, bool idHasEtaHits) const override;
75 
76  bool matchPtDependentPull(const MuonCombined::MuonSegmentInfo& info, const Trk::Track& trk) const override;
77 
78  bool matchDistance(const MuonCombined::MuonSegmentInfo& info) const override;
79 
80  bool matchCombinedPull(const MuonCombined::MuonSegmentInfo& info) const override;
81 
82 
83 
84 
86  std::shared_ptr<const Trk::AtaPlane> exTrack) const override;
87 
88 
89 
90 private:
91 
92  void testExtrapolation(const Trk::Surface& pSurface, const Trk::Track& pTrack) const;
94  bool isCscSegment(const Muon::MuonSegment& seg) const;
95  unsigned int cscHits(const Muon::MuonSegment& seg) const;
96 
97  void nrTriggerHits(const Muon::MuonSegment& seg, int& nRPC, int& nTGC) const;
98 
99  bool hasPhi(const Muon::MuonSegment& seg) const;
100 
101  double errorProtection(double exTrk_Err, bool isAngle) const;
102 
103  std::unique_ptr<Trk::Perigee> flipDirection(const Trk::Perigee& inputPars) const ;
104 
105  // exploit correlation between residual in position and angle
106  double matchingDistanceCorrection(double resPos, double resAngle);
107 
108  void calculateLocalAngleErrors(const Trk::AtaPlane& expPars, double& exTrkErrXZ, double& exTrkErrYZ, double& covLocYYZ) const;
109 
110  void calculateLocalAngleErrors(const Muon::MuonSegment& segment, double& exTrkErrXZ, double& exTrkErrYZ) const;
111 
112  ToolHandle<Trk::IExtrapolator> m_IExtrapolator{
113  this,
114  "IExtrapolator",
115  "Trk::Extrapolator/AtlasExtrapolator",
116  };
117  ToolHandle<Trk::IPropagator> m_propagator{
118  this,
119  "Propagator",
120  "Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator",
121  };
122  ToolHandle<Muon::MuonEDMPrinterTool> m_printer{
123  this,
124  "Printer",
125  "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool",
126  };
127  ToolHandle<Muon::IMuonSegmentHitSummaryTool> m_hitSummaryTool{
128  this,
129  "MuonSegmentHitSummary",
130  "Muon::MuonSegmentHitSummaryTool/MuonSegmentHitSummaryTool",
131  };
132  ToolHandle<Muon::IMuonSegmentSelectionTool> m_selectionTool{
133  this,
134  "MuonSegmentSelection",
135  "Muon::MuonSegmentSelectionTool/MuonSegmentSelectionTool",
136  };
137  ToolHandle<Trk::IResidualPullCalculator> m_pullCalculator{
138  this,
139  "ResidualPullCalculator",
140  "Trk::ResidualPullCalculator/ResidualPullCalculator",
141  };
142 
144  this,
145  "MuonIdHelperSvc",
146  "Muon::MuonIdHelperSvc/MuonIdHelperSvc",
147  };
149  this,
150  "edmHelper",
151  "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
152  "Handle to the service providing the IMuonEDMHelperSvc interface",
153  };
154 
155  std::string m_t0Location;
157 
158  // MuonDetectorManager from the conditions store
160  this,
161  "DetectorManagerKey",
162  "MuonDetectorManager",
163  "Key of input MuonDetectorManager condition data",
164  };
165 
167  "Key of input TrackingGeometry"};
168 
171 
175 
177  double m_MATCH_PHI;
180 
183 
185  double m_DIST_POS;
186  double m_DIST_ANGLE;
187 
188  double m_SAFE_THETA;
189  double m_SAFE_PHI;
192 
195 
196  inline const Trk::TrackingVolume* getVolume(const EventContext& ctx, const std::string&& vol_name) const {
198  if (!handle.isValid()) {
199  ATH_MSG_WARNING("Could not retrieve a valid tracking geometry");
200  return nullptr;
201  }
202  return handle.cptr()->trackingVolume(vol_name);
203  }
204 };
205 
206 #endif // MuTagMatchingTool_H
grepfile.info
info
Definition: grepfile.py:38
MuTagMatchingTool::m_GLOBAL_PHI_CUT
double m_GLOBAL_PHI_CUT
Definition: MuTagMatchingTool.h:173
MuonCombined::MuonSegmentInfo
Definition: MuonSegmentInfo.h:23
MuTagMatchingTool::m_DIST_POS
double m_DIST_POS
Definition: MuTagMatchingTool.h:185
MuTagMatchingTool::m_MATCH_PHI
double m_MATCH_PHI
Definition: MuTagMatchingTool.h:177
MuTagMatchingTool::m_MATCH_THETA
double m_MATCH_THETA
Definition: MuTagMatchingTool.h:176
MuTagMatchingTool::phiMatch
bool phiMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:227
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
MuTagMatchingTool::m_hitSummaryTool
ToolHandle< Muon::IMuonSegmentHitSummaryTool > m_hitSummaryTool
Definition: MuTagMatchingTool.h:127
TrackParameters.h
MuTagMatchingTool::~MuTagMatchingTool
virtual ~MuTagMatchingTool()=default
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonEDMPrinterTool.h
MuTagMatchingTool::m_t0Location
std::string m_t0Location
Definition: MuTagMatchingTool.h:155
MuTagMatchingTool::testExtrapolation
void testExtrapolation(const Trk::Surface &pSurface, const Trk::Track &pTrack) const
Definition: MuTagMatchingTool.cxx:362
MuTagMatchingTool::m_extrapolatePerigee
bool m_extrapolatePerigee
Definition: MuTagMatchingTool.h:170
MuTagMatchingTool::m_ERROR_EX_ANGLE_CUT
double m_ERROR_EX_ANGLE_CUT
Definition: MuTagMatchingTool.h:182
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
MuTagMatchingTool::initialize
virtual StatusCode initialize() override
Definition: MuTagMatchingTool.cxx:66
MuTagMatchingTool::m_MATCH_PHIANGLE
double m_MATCH_PHIANGLE
Definition: MuTagMatchingTool.h:179
MuTagMatchingTool::m_edmHelperSvc
ServiceHandle< Muon::IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuTagMatchingTool.h:148
MuTagMatchingTool::m_IExtrapolator
ToolHandle< Trk::IExtrapolator > m_IExtrapolator
Pointer on IExtrapolator.
Definition: MuTagMatchingTool.h:112
MuTagMatchingTool::m_selectionTool
ToolHandle< Muon::IMuonSegmentSelectionTool > m_selectionTool
Definition: MuTagMatchingTool.h:132
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
MuTagMatchingTool::matchPtDependentPull
bool matchPtDependentPull(const MuonCombined::MuonSegmentInfo &info, const Trk::Track &trk) const override
Definition: MuTagMatchingTool.cxx:341
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:205
IMuTagMatchingTool.h
MuTagMatchingTool::matchSegmentDirection
bool matchSegmentDirection(const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override
Definition: MuTagMatchingTool.cxx:314
MuTagMatchingTool::m_printer
ToolHandle< Muon::MuonEDMPrinterTool > m_printer
Definition: MuTagMatchingTool.h:122
IExtrapolator.h
IPropagator.h
MuTagMatchingTool::ExtrapolateTrktoMSEntrance
std::unique_ptr< Trk::TrackParameters > ExtrapolateTrktoMSEntrance(const EventContext &ctx, const Trk::Track &pTrack, Trk::PropDirection direction) const override
Get extrapolation at MS entrance level.
Definition: MuTagMatchingTool.cxx:142
MuTagMatchingTool::matchingDistanceCorrection
double matchingDistanceCorrection(double resPos, double resAngle)
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
MuTagMatchingTool::matchCombinedPull
bool matchCombinedPull(const MuonCombined::MuonSegmentInfo &info) const override
Definition: MuTagMatchingTool.cxx:325
MuonSegmentInfo.h
MuTagMatchingTool::matchSegmentPosition
bool matchSegmentPosition(const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override
Definition: MuTagMatchingTool.cxx:298
MuTagMatchingTool::m_DIST_ANGLE
double m_DIST_ANGLE
Definition: MuTagMatchingTool.h:186
MuTagMatchingTool::m_chamberPullCut
double m_chamberPullCut
Definition: MuTagMatchingTool.h:193
MuTagMatchingTool::m_assumeLocalErrors
bool m_assumeLocalErrors
Definition: MuTagMatchingTool.h:169
MuTagMatchingTool::m_GLOBAL_R_CUT
double m_GLOBAL_R_CUT
Definition: MuTagMatchingTool.h:174
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
MuTagMatchingTool::p_StoreGateSvc
StoreGateSvc * p_StoreGateSvc
Pointer On StoreGateSvc.
Definition: MuTagMatchingTool.h:156
MuTagMatchingTool::matchDistance
bool matchDistance(const MuonCombined::MuonSegmentInfo &info) const override
Definition: MuTagMatchingTool.cxx:808
MuTagMatchingTool::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
Definition: MuTagMatchingTool.h:159
MuTagMatchingTool::hasPhi
bool hasPhi(const Muon::MuonSegment &seg) const
Definition: MuTagMatchingTool.cxx:257
IMuonSegmentSelectionTool.h
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuTagMatchingTool::surfaceMatch
bool surfaceMatch(const Muon::MuonSegment &segment, int surfaceName) const override
Definition: MuTagMatchingTool.cxx:136
AthAlgTool.h
MuTagMatchingTool::ExtrapolateTrktoSegmentSurface
std::shared_ptr< Trk::AtaPlane > ExtrapolateTrktoSegmentSurface(const EventContext &ctx, const Muon::MuonSegment &segment, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override
Get extrapolation at Segment Plane Surface level.
Definition: MuTagMatchingTool.cxx:191
MuTagMatchingTool::match
bool match(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment, int surfaceName) const override
Definition: MuTagMatchingTool.cxx:114
Trk::ParametersBase
Definition: ParametersBase.h:55
MuTagMatchingTool::m_SAFE_THETAANGLE
double m_SAFE_THETAANGLE
Definition: MuTagMatchingTool.h:190
MuTagMatchingTool::m_GLOBAL_THETA_CUT
double m_GLOBAL_THETA_CUT
Definition: MuTagMatchingTool.h:172
IMuonEDMHelperSvc.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
MuTagMatchingTool::errorProtection
double errorProtection(double exTrk_Err, bool isAngle) const
Definition: MuTagMatchingTool.cxx:290
MuTagMatchingTool::m_SAFE_PHI
double m_SAFE_PHI
Definition: MuTagMatchingTool.h:189
MuTagMatchingTool::m_doDistCut
bool m_doDistCut
Definition: MuTagMatchingTool.h:184
MuTagMatchingTool::getVolume
const Trk::TrackingVolume * getVolume(const EventContext &ctx, const std::string &&vol_name) const
Definition: MuTagMatchingTool.h:196
MuTagMatchingTool::calculateLocalAngleErrors
void calculateLocalAngleErrors(const Trk::AtaPlane &expPars, double &exTrkErrXZ, double &exTrkErrYZ, double &covLocYYZ) const
Definition: MuTagMatchingTool.cxx:774
MuTagMatchingTool::nrTriggerHits
void nrTriggerHits(const Muon::MuonSegment &seg, int &nRPC, int &nTGC) const
Definition: MuTagMatchingTool.cxx:451
MuTagMatchingTool::m_trackingGeometryReadKey
SG::ReadCondHandleKey< Trk::TrackingGeometry > m_trackingGeometryReadKey
Definition: MuTagMatchingTool.h:166
MuonDetectorManager.h
MuTagMatchingTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuTagMatchingTool.h:143
IResidualPullCalculator.h
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
MuTagMatchingTool::cscHits
unsigned int cscHits(const Muon::MuonSegment &seg) const
Definition: MuTagMatchingTool.cxx:841
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuTagMatchingTool::m_pullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_pullCalculator
Definition: MuTagMatchingTool.h:137
Trk::TrackingGeometry::trackingVolume
const TrackingVolume * trackingVolume(const std::string &name) const
return the tracking Volume by name, 0 if it doesn't exist
MuTagMatchingTool::flipDirection
std::unique_ptr< Trk::Perigee > flipDirection(const Trk::Perigee &inputPars) const
Definition: MuTagMatchingTool.cxx:173
MuTagMatchingTool::MuTagMatchingTool
MuTagMatchingTool(const std::string &t, const std::string &n, const IInterface *p)
Definition: MuTagMatchingTool.cxx:28
MuTagMatchingTool::m_ERROR_EX_POS_CUT
double m_ERROR_EX_POS_CUT
Definition: MuTagMatchingTool.h:181
MuonSegment.h
MuTagMatchingTool::m_SAFE_PHIANGLE
double m_SAFE_PHIANGLE
Definition: MuTagMatchingTool.h:191
TrackingGeometry.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
IMuTagMatchingTool
Definition: IMuTagMatchingTool.h:24
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
MuTagMatchingTool
Definition: MuTagMatchingTool.h:38
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
AthAlgTool
Definition: AthAlgTool.h:26
MuTagMatchingTool::muTagSegmentInfo
MuonCombined::MuonSegmentInfo muTagSegmentInfo(const EventContext &ctx, const Trk::Track *track, const Muon::MuonSegment &segment, std::shared_ptr< const Trk::AtaPlane > exTrack) const override
Definition: MuTagMatchingTool.cxx:466
MuTagMatchingTool::m_propagator
ToolHandle< Trk::IPropagator > m_propagator
Pointer on propagator for SL propagation.
Definition: MuTagMatchingTool.h:117
IMuonSegmentHitSummaryTool.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrackingVolume
Definition: TrackingVolume.h:121
MuTagMatchingTool::ExtrapolateTrktoMSSurface
std::unique_ptr< Trk::TrackParameters > ExtrapolateTrktoMSSurface(const EventContext &ctx, const Trk::Surface &surface, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override
Get extrapolation at MSSurface level.
Definition: MuTagMatchingTool.cxx:161
MuTagMatchingTool::thetaMatch
bool thetaMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:262
MuTagMatchingTool::rMatch
bool rMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:275
IMuonIdHelperSvc.h
MuTagMatchingTool::m_combinedPullCut
double m_combinedPullCut
Definition: MuTagMatchingTool.h:194
MuTagMatchingTool::m_MATCH_THETAANGLE
double m_MATCH_THETAANGLE
Definition: MuTagMatchingTool.h:178
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
MuTagMatchingTool::isCscSegment
bool isCscSegment(const Muon::MuonSegment &seg) const
Definition: MuTagMatchingTool.cxx:827
ServiceHandle< Muon::IMuonIdHelperSvc >
SG::ReadCondHandle::cptr
const_pointer_type cptr()
Definition: ReadCondHandle.h:67
MuTagMatchingTool::m_SAFE_THETA
double m_SAFE_THETA
Definition: MuTagMatchingTool.h:188