ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
MuTagMatchingTool Class Reference

#include <MuTagMatchingTool.h>

Inheritance diagram for MuTagMatchingTool:
Collaboration diagram for MuTagMatchingTool:

Public Types

using SurfDef = MuonCombined::MuonSegmentTagSurfaces::SurfDef
 Enum encoding the StationNames (BI, BO, EIA, etc.) More...
 

Public Member Functions

 MuTagMatchingTool (const std::string &t, const std::string &n, const IInterface *p)
 
virtual ~MuTagMatchingTool ()=default
 
virtual StatusCode initialize () override
 
bool match (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment, int surfaceName) const override
 
bool surfaceMatch (const Muon::MuonSegment &segment, int surfaceName) const override
 
bool phiMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
 
bool thetaMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
 
bool rMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
 
std::unique_ptr< Trk::TrackParametersExtrapolateTrktoMSEntrance (const EventContext &ctx, const Trk::Track &pTrack, Trk::PropDirection direction) const override
 Get extrapolation at MS entrance level. More...
 
std::unique_ptr< Trk::TrackParametersExtrapolateTrktoMSSurface (const EventContext &ctx, const Trk::Surface &surface, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override
 Get extrapolation at MSSurface level. More...
 
std::shared_ptr< Trk::AtaPlaneExtrapolateTrktoSegmentSurface (const EventContext &ctx, const Muon::MuonSegment &segment, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override
 Get extrapolation at Segment Plane Surface level. More...
 
bool matchSegmentPosition (const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override
 
bool matchSegmentDirection (const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override
 
bool matchPtDependentPull (const MuonCombined::MuonSegmentInfo &info, const Trk::Track &trk) const override
 
bool matchDistance (const MuonCombined::MuonSegmentInfo &info) const override
 
bool matchCombinedPull (const MuonCombined::MuonSegmentInfo &info) const override
 
MuonCombined::MuonSegmentInfo muTagSegmentInfo (const EventContext &ctx, const Trk::Track *track, const Muon::MuonSegment &segment, std::shared_ptr< const Trk::AtaPlane > exTrack) const override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void testExtrapolation (const Trk::Surface &pSurface, const Trk::Track &pTrack) const
 
bool isCscSegment (const Muon::MuonSegment &seg) const
 
unsigned int cscHits (const Muon::MuonSegment &seg) const
 
void nrTriggerHits (const Muon::MuonSegment &seg, int &nRPC, int &nTGC) const
 
bool hasPhi (const Muon::MuonSegment &seg) const
 
double errorProtection (double exTrk_Err, bool isAngle) const
 
std::unique_ptr< Trk::PerigeeflipDirection (const Trk::Perigee &inputPars) const
 
double matchingDistanceCorrection (double resPos, double resAngle)
 
void calculateLocalAngleErrors (const Trk::AtaPlane &expPars, double &exTrkErrXZ, double &exTrkErrYZ, double &covLocYYZ) const
 
void calculateLocalAngleErrors (const Muon::MuonSegment &segment, double &exTrkErrXZ, double &exTrkErrYZ) const
 
const Trk::TrackingVolumegetVolume (const EventContext &ctx, const std::string &&vol_name) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< Trk::IExtrapolatorm_IExtrapolator
 Pointer on IExtrapolator. More...
 
ToolHandle< Trk::IPropagatorm_propagator
 Pointer on propagator for SL propagation. More...
 
PublicToolHandle< Muon::MuonEDMPrinterToolm_printer {this,"Printer", ""}
 
ToolHandle< Muon::IMuonSegmentHitSummaryToolm_hitSummaryTool
 
ToolHandle< Muon::IMuonSegmentSelectionToolm_selectionTool
 
ToolHandle< Trk::IResidualPullCalculatorm_pullCalculator
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
 
ServiceHandle< Muon::IMuonEDMHelperSvcm_edmHelperSvc
 
std::string m_t0Location
 
StoreGateSvcp_StoreGateSvc {}
 Pointer On StoreGateSvc. More...
 
SG::ReadCondHandleKey< MuonGM::MuonDetectorManagerm_DetectorManagerKey
 
SG::ReadCondHandleKey< Trk::TrackingGeometrym_trackingGeometryReadKey
 
bool m_assumeLocalErrors
 
bool m_extrapolatePerigee
 
double m_GLOBAL_THETA_CUT
 
double m_GLOBAL_PHI_CUT
 
double m_GLOBAL_R_CUT
 
double m_MATCH_THETA
 
double m_MATCH_PHI
 
double m_MATCH_THETAANGLE
 
double m_MATCH_PHIANGLE
 
double m_ERROR_EX_POS_CUT
 
double m_ERROR_EX_ANGLE_CUT
 
bool m_doDistCut
 
double m_DIST_POS
 
double m_DIST_ANGLE
 
double m_SAFE_THETA
 
double m_SAFE_PHI
 
double m_SAFE_THETAANGLE
 
double m_SAFE_PHIANGLE
 
double m_chamberPullCut
 
double m_combinedPullCut
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 38 of file MuTagMatchingTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ SurfDef

Enum encoding the StationNames (BI, BO, EIA, etc.)

Definition at line 33 of file IMuTagMatchingTool.h.

Constructor & Destructor Documentation

◆ MuTagMatchingTool()

MuTagMatchingTool::MuTagMatchingTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 28 of file MuTagMatchingTool.cxx.

28  : AthAlgTool(t, n, p) {
29  declareInterface<IMuTagMatchingTool>(this);
30 
31  declareProperty("GlobalThetaCut", m_GLOBAL_THETA_CUT = 0.1);
32  declareProperty("GlobalPhiCut", m_GLOBAL_PHI_CUT = 0.5);
33  declareProperty("GlobalRCut", m_GLOBAL_R_CUT = 1000.);
34 
35  declareProperty("ThetaCut", m_MATCH_THETA = 5.); // pull cut in local precision position (bending plane)
36  declareProperty("PhiCut", m_MATCH_PHI = 30.); // pull cut in local NON precision position
37  declareProperty("ThetaAngleCut", m_MATCH_THETAANGLE = 5.); // pull cut in local precision direction
38  declareProperty("PhiAngleCut", m_MATCH_PHIANGLE = 30.); // pull cut in local NON precision direction
39 
40  declareProperty("ErrorProtectionPosCut", m_ERROR_EX_POS_CUT = 5000.);
41  declareProperty("ErrorProtectionDirCut", m_ERROR_EX_ANGLE_CUT = 0.35);
42 
43  declareProperty("DoDistanceCut", m_doDistCut = true);
44  declareProperty("PositionDistance", m_DIST_POS = 2000.);
45  declareProperty("AngleDistance", m_DIST_ANGLE = 0.7);
46 
47  declareProperty("ThetaSafety",
48  m_SAFE_THETA = 25.); // additional uncertainty on precision plane position (bendig plane)
49  declareProperty("PhiSafety", m_SAFE_PHI = 100.); // additional uncertainty on NON precision plane position
50  declareProperty("ThetaAngleSafety",
51  m_SAFE_THETAANGLE = 0.0015); // additional uncertainty on precision plane direction
52  declareProperty("PhiAngleSafety",
53  m_SAFE_PHIANGLE = 0.25); // additional uncertainty on NON precision plane direction
54 
55  declareProperty("ChamberPullCut",
56  m_chamberPullCut = 5.); // Inside chamber pull is negative for outside chamber pull > 5 standard
57  // deviations (from edge) in non precision plane
58  declareProperty("CombinedPullCut",
59  m_combinedPullCut = 5.); // Combined pull build from local precision position and angle including the correlation
60 
61  declareProperty("AssumeLocalErrors", m_assumeLocalErrors = true);
62  declareProperty("ExtrapolatePerigee", m_extrapolatePerigee = false);
63  declareProperty("MuonChamberT0s", m_t0Location = "MooreMuonChamberT0s");
64 }

◆ ~MuTagMatchingTool()

virtual MuTagMatchingTool::~MuTagMatchingTool ( )
virtualdefault

Member Function Documentation

◆ calculateLocalAngleErrors() [1/2]

void MuTagMatchingTool::calculateLocalAngleErrors ( const Muon::MuonSegment segment,
double &  exTrkErrXZ,
double &  exTrkErrYZ 
) const
private

Definition at line 758 of file MuTagMatchingTool.cxx.

758  {
759  const Amg::MatrixX& segGlobCov = segment.localCovariance();
760  angleXZerror = 999.;
761  angleYZerror = 999.;
762  //
763  // the segment errors are stored in local angles (m_assumeLocalErrors = true);
764  //
765 
766  if (m_assumeLocalErrors) {
767  if (segGlobCov(Trk::phi, Trk::phi) >= 0 && segGlobCov(Trk::phi, Trk::phi) <= 999.0)
768  angleXZerror = std::sqrt(segGlobCov(Trk::phi, Trk::phi));
769  if (segGlobCov(Trk::theta, Trk::theta) >= 0 && segGlobCov(Trk::theta, Trk::theta) <= 999.0)
770  angleYZerror = std::sqrt(segGlobCov(Trk::theta, Trk::theta));
771  }
772 }

◆ calculateLocalAngleErrors() [2/2]

void MuTagMatchingTool::calculateLocalAngleErrors ( const Trk::AtaPlane expPars,
double &  exTrkErrXZ,
double &  exTrkErrYZ,
double &  covLocYYZ 
) const
private

Definition at line 774 of file MuTagMatchingTool.cxx.

775  {
776 
777  if (!exTrack.covariance()) return;
778  // Parameters are described as Trk::LocX, Trk::locY, Trk::phi, Trk::theta
779  // So the errormatrix of the track 'localErrorMatrix' still holds global angle representation!!!!
780  // retrieve Jabcobian to transform the global errors err_phi,err_theta to local errors err_alphaXZ, err_alphaYZ
781  const Amg::RotationMatrix3D glob2loc = exTrack.associatedSurface().transform().rotation().inverse();
782  const AmgVector(5)& exTrkParms = exTrack.parameters();
783  Trk::JacobianPhiThetaLocalAngles jacobianExTrk(exTrkParms[Trk::phi], exTrkParms[Trk::theta], glob2loc);
784 
785  // start with global angles error matrix
786  Amg::MatrixX anglesCovGlob(2, 2);
787  anglesCovGlob(0, 0) = (*exTrack.covariance())(Trk::phi, Trk::phi);
788  anglesCovGlob(1, 0) = (*exTrack.covariance())(Trk::theta, Trk::phi);
789  anglesCovGlob(0, 1) = (*exTrack.covariance())(Trk::phi, Trk::theta);
790  anglesCovGlob(1, 1) = (*exTrack.covariance())(Trk::theta, Trk::theta);
791 
792  // NEW METHOD
793  const AmgSymMatrix(2)& anglesCovLoc = anglesCovGlob.similarity(jacobianExTrk);
794 
795  if (anglesCovLoc(0, 0) >= 0) angleXZerror = std::sqrt(anglesCovLoc(0, 0));
796  if (anglesCovLoc(1, 1) >= 0) angleYZerror = std::sqrt(anglesCovLoc(1, 1));
797 
798  covLocYYZ = (*exTrack.covariance())(Trk::locY, Trk::phi) * jacobianExTrk(0, 1) +
799  (*exTrack.covariance())(Trk::locY, Trk::theta) * jacobianExTrk(1, 1);
800  ATH_MSG_DEBUG(" covLocYYZ " << covLocYYZ << " covlocytheta " << (*exTrack.covariance())(Trk::locY, Trk::theta) << " J01 "
801  << jacobianExTrk(0, 1) << " J11 " << jacobianExTrk(0, 1));
802  // some printout
803  ATH_MSG_DEBUG(std::setw(20) << "Angles Jacobian used for TRACK angle errors below: " << jacobianExTrk);
804 
805  ATH_MSG_DEBUG(std::setw(20) << "NEW TRACK angleXZ error = " << std::setprecision(6) << std::setw(10) << angleXZerror << std::setw(20)
806  << " and angleYZ error = " << std::setw(10) << angleYZerror);
807 }

◆ cscHits()

unsigned int MuTagMatchingTool::cscHits ( const Muon::MuonSegment seg) const
private

Definition at line 841 of file MuTagMatchingTool.cxx.

841  {
842  unsigned int nrHits{0};
843  for (const Trk::MeasurementBase* seg_meas : seg.containedMeasurements()) {
844  const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(seg_meas);
845  if (!rot) {
846  const Trk::CompetingRIOsOnTrack* crot = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(seg_meas);
847  if (crot) rot = &crot->rioOnTrack(0);
848  }
849  if (!rot) { continue; }
850  if (m_idHelperSvc->isCsc(rot->identify())) ++nrHits;
851  }
852 
853  return nrHits;
854 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ errorProtection()

double MuTagMatchingTool::errorProtection ( double  exTrk_Err,
bool  isAngle 
) const
private

Definition at line 290 of file MuTagMatchingTool.cxx.

290  {
291  double newError = exTrk_Err;
292  if (!isAngle && (exTrk_Err > m_ERROR_EX_POS_CUT)) newError = m_ERROR_EX_POS_CUT;
293  if (isAngle && (exTrk_Err > m_ERROR_EX_ANGLE_CUT)) newError = m_ERROR_EX_ANGLE_CUT;
294 
295  return newError;
296 }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ ExtrapolateTrktoMSEntrance()

std::unique_ptr< Trk::TrackParameters > MuTagMatchingTool::ExtrapolateTrktoMSEntrance ( const EventContext &  ctx,
const Trk::Track pTrack,
Trk::PropDirection  direction 
) const
overridevirtual

Get extrapolation at MS entrance level.

Get extrapolation at MS entrance: this will be the starting point to following extrapolations.

Implements IMuTagMatchingTool.

Definition at line 142 of file MuTagMatchingTool.cxx.

143  {
144 
145 
146  const Trk::TrackingVolume* MSEntranceVolume = getVolume(ctx, "MuonSpectrometerEntrance");
147  if (!MSEntranceVolume) { return nullptr; }
148 
149  std::unique_ptr<Trk::TrackParameters> exTrk{
150  m_IExtrapolator->extrapolateToVolume(ctx, *(pTrack.perigeeParameters()), *MSEntranceVolume, direction, Trk::muon)};
151 
152  if (!exTrk)
153  ATH_MSG_DEBUG("Track could not be extrapolated to MS entrance...");
154  else
155  ATH_MSG_DEBUG("Track extrapolated to MS entrance Radius " << exTrk->position().perp() << " Z " << exTrk->position().z());
156 
157  return exTrk;
158 }

◆ ExtrapolateTrktoMSSurface()

std::unique_ptr< Trk::TrackParameters > MuTagMatchingTool::ExtrapolateTrktoMSSurface ( const EventContext &  ctx,
const Trk::Surface surface,
const Trk::TrackParameters pTrack,
Trk::PropDirection  direction 
) const
overridevirtual

Get extrapolation at MSSurface level.

Implements IMuTagMatchingTool.

Definition at line 161 of file MuTagMatchingTool.cxx.

164  {
165  std::unique_ptr<Trk::TrackParameters> exTrk{m_IExtrapolator->extrapolate(ctx, pTrack, pSurface, direction, false, Trk::muon)};
166  if (!exTrk) {
167  ATH_MSG_DEBUG(" didn't manage to extrapolate TrackParameters to abstract surface Radius " << pSurface.center().perp() << " Z "
168  << pSurface.center().z());
169  }
170  return exTrk;
171 }

◆ ExtrapolateTrktoSegmentSurface()

std::shared_ptr< Trk::AtaPlane > MuTagMatchingTool::ExtrapolateTrktoSegmentSurface ( const EventContext &  ctx,
const Muon::MuonSegment segment,
const Trk::TrackParameters pTrack,
Trk::PropDirection  direction 
) const
overridevirtual

Get extrapolation at Segment Plane Surface level.

Implements IMuTagMatchingTool.

Definition at line 191 of file MuTagMatchingTool.cxx.

194  {
195 
196  unsigned int hits{cscHits(segment)};
197  bool isCsc{hits>0};
198  if (isCsc) {
199  ATH_MSG_DEBUG("CSC segment has " << hits << " hits");
200  if (hits < 5) {
201  ATH_MSG_DEBUG("CSC segment is identified to be 2D. Not extrapolating.");
202  return nullptr;
203  }
204  }
205 
206  std::shared_ptr<Trk::TrackParameters> atap{
207  m_IExtrapolator->extrapolate(ctx, pTrack, segment.associatedSurface(), direction, false, Trk::muon)};
208  if (!atap) {
209  ATH_MSG_DEBUG(" didn't manage to extrapolate TrackParameters to segment surface Radius"
210  << segment.associatedSurface().center().perp() << " Z " << segment.associatedSurface().center().z());
211  return nullptr;
212  }
213 
214  std::shared_ptr<Trk::AtaPlane> matap = std::dynamic_pointer_cast<Trk::AtaPlane>(atap);
215 
216  if (!matap) {
217  ATH_MSG_DEBUG(" didn't manage to extrapolate MeasuredTrackParameters to segment surface atap Radius "
218  << atap->position().perp() << " Z" << atap->position().z());
219  return nullptr;
220  } else {
221  ATH_MSG_DEBUG(" Succesfull extrapolation segment surface matap Radius " << matap->position().perp() << " Z"
222  << matap->position().z());
223  }
224  return matap;
225 }

◆ flipDirection()

std::unique_ptr< Trk::Perigee > MuTagMatchingTool::flipDirection ( const Trk::Perigee inputPars) const
private

Definition at line 173 of file MuTagMatchingTool.cxx.

173  {
174  const AmgVector(5)& pars = inputPars.parameters();
175 
176  double flippedPhi = pars[2] + M_PI;
177  if (flippedPhi > M_PI) flippedPhi -= 2 * M_PI;
178  double flippedTheta = M_PI - pars[3];
179  if (flippedTheta < 0.) flippedTheta += M_PI;
180  if (inputPars.covariance()) {
181  AmgSymMatrix(5) covMat = AmgSymMatrix(5)(*inputPars.covariance());
182  const Trk::PerigeeSurface perSurf;
183  return std::make_unique<Trk::Perigee>(-pars[0], pars[1], flippedPhi, flippedTheta, pars[4], perSurf, covMat);
184  } else {
185  ATH_MSG_DEBUG("flipDirection: no covariance associated to input parameters " << inputPars);
186  return nullptr;
187  }
188 }

◆ getVolume()

const Trk::TrackingVolume* MuTagMatchingTool::getVolume ( const EventContext &  ctx,
const std::string &&  vol_name 
) const
inlineprivate

Definition at line 192 of file MuTagMatchingTool.h.

192  {
194  if (!handle.isValid()) {
195  ATH_MSG_WARNING("Could not retrieve a valid tracking geometry");
196  return nullptr;
197  }
198  return handle.cptr()->trackingVolume(vol_name);
199  }

◆ hasPhi()

bool MuTagMatchingTool::hasPhi ( const Muon::MuonSegment seg) const
private

Definition at line 257 of file MuTagMatchingTool.cxx.

257  {
258  Muon::IMuonSegmentHitSummaryTool::HitCounts hitCounts = m_hitSummaryTool->getHitCounts(seg);
259  return hitCounts.nexpectedTrigHitLayers > 1;
260 }

◆ initialize()

StatusCode MuTagMatchingTool::initialize ( )
overridevirtual

Definition at line 66 of file MuTagMatchingTool.cxx.

66  {
67  ATH_MSG_DEBUG("================================");
68  ATH_MSG_DEBUG("=Proprieties are ");
69  ATH_MSG_DEBUG("GlobalThetaCut" << std::setw(10) << m_GLOBAL_THETA_CUT);
70  ATH_MSG_DEBUG("GlobaPhiCut" << std::setw(10) << m_GLOBAL_PHI_CUT);
71  ATH_MSG_DEBUG("GlobalRCut" << std::setw(10) << m_GLOBAL_R_CUT);
72  ATH_MSG_DEBUG("ThetaCut" << std::setw(10) << m_MATCH_THETA);
73  ATH_MSG_DEBUG("PhiCut" << std::setw(10) << m_MATCH_PHI);
74  ATH_MSG_DEBUG("ThetaAngleCut" << std::setw(10) << m_MATCH_THETAANGLE);
75  ATH_MSG_DEBUG("PhiAngleCut" << std::setw(10) << m_MATCH_PHIANGLE);
76  ATH_MSG_DEBUG("DoDistanceCut" << std::setw(10) << m_doDistCut);
77  ATH_MSG_DEBUG("ThetaDistance" << std::setw(10) << m_DIST_POS);
78  ATH_MSG_DEBUG("ThetaAngleDistance" << std::setw(10) << m_DIST_ANGLE);
79  ATH_MSG_DEBUG("ThetaSafety" << std::setw(10) << m_SAFE_THETA);
80  ATH_MSG_DEBUG("PhiSafety" << std::setw(10) << m_SAFE_PHI);
81  ATH_MSG_DEBUG("ThetaAngleSafety" << std::setw(10) << m_SAFE_THETAANGLE);
82  ATH_MSG_DEBUG("PhiAngleSafety" << std::setw(10) << m_SAFE_PHIANGLE);
83 
84  ATH_MSG_DEBUG("AssumeLocalErrors " << std::setw(10) << m_assumeLocalErrors);
85  ATH_MSG_DEBUG("ExtrapolatePerigee " << std::setw(10) << m_extrapolatePerigee);
86  ATH_MSG_DEBUG("================================");
87 
88  // Retrieve m_IExtrapolator
89  ATH_CHECK(m_IExtrapolator.retrieve());
90  ATH_MSG_DEBUG("Retrieved tool " << m_IExtrapolator);
91 
92  ATH_CHECK(m_propagator.retrieve());
93 
94  ATH_CHECK(m_hitSummaryTool.retrieve());
95  ATH_CHECK(m_selectionTool.retrieve());
96 
97  // MuonDetectorManager from the conditions store
99 
100  ATH_CHECK(m_idHelperSvc.retrieve());
101  ATH_CHECK(m_edmHelperSvc.retrieve());
102  ATH_CHECK(m_printer.retrieve());
103  ATH_CHECK(m_pullCalculator.retrieve());
104 
107  } else {
108  ATH_MSG_ERROR("Could not retrieve a valid tracking geometry");
109  }
110 
111  return StatusCode::SUCCESS;
112 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& IMuTagMatchingTool::interfaceID ( )
inlinestaticinherited

Definition at line 27 of file IMuTagMatchingTool.h.

27  {
28  static const InterfaceID IID_IMuTagMatchingTool("IMuTagMatchingTool", 1, 0);
29  return IID_IMuTagMatchingTool;
30  }

◆ isCscSegment()

bool MuTagMatchingTool::isCscSegment ( const Muon::MuonSegment seg) const
private

Definition at line 827 of file MuTagMatchingTool.cxx.

827  {
828  for (const Trk::MeasurementBase* seg_meas : seg.containedMeasurements()) {
829  const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(seg_meas);
830  if (!rot) {
831  const Trk::CompetingRIOsOnTrack* crot = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(seg_meas);
832  if (crot) rot = &crot->rioOnTrack(0);
833  }
834  if (!rot) { continue; }
835  if (m_idHelperSvc->isCsc(rot->identify())) return true;
836  }
837 
838  return false;
839 }

◆ match()

bool MuTagMatchingTool::match ( const Trk::TrackParameters atSurface,
const Muon::MuonSegment segment,
int  surfaceName 
) const
overridevirtual

We need a barrel function here

Implements IMuTagMatchingTool.

Definition at line 114 of file MuTagMatchingTool.cxx.

115  {
117  // performs a rough match to an abstract MS surface (disc or cylinder)
118  // by matching on station name (I M O, S L, B E) and a crude phi-position
119  // match, followed by either a match in theta-position or r-position
121  if (!surfaceMatch(segment, surfaceName)) return false;
122 
123  if (!phiMatch(atSurface, segment)) return false;
124 
125  const Identifier id = m_edmHelperSvc->chamberId(segment);
126 
128  if (m_idHelperSvc->regionIndex(id) == Muon::MuonStationIndex::Barrel)
129  return thetaMatch(atSurface, segment);
130  else
131  return rMatch(atSurface, segment);
132 }

◆ matchCombinedPull()

bool MuTagMatchingTool::matchCombinedPull ( const MuonCombined::MuonSegmentInfo info) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 325 of file MuTagMatchingTool.cxx.

325  {
326  bool pass(true);
327  if (!info.segment || !info.trackAtSegment) {
328  ATH_MSG_DEBUG(" No segment and or trackAtSegment pointer matchCombinedPull ");
329  return false;
330  }
331  if (info.pullChamber > m_chamberPullCut) pass = false;
332  if (std::abs(info.pullCY) > m_combinedPullCut) pass = false;
333 
334  ATH_MSG_DEBUG(" matchCombinedPull MuTagSegmentInfo hasPhi "
335  << info.hasPhi << " minimumPullPhi " << info.minimumPullPhi << " pullChamber " << info.pullChamber << " cut "
336  << m_chamberPullCut << " pullCY " << info.pullCY << " cut m_combinedPullCut " << m_combinedPullCut << " pass " << pass);
337 
338  return pass;
339 }

◆ matchDistance()

bool MuTagMatchingTool::matchDistance ( const MuonCombined::MuonSegmentInfo info) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 808 of file MuTagMatchingTool.cxx.

808  {
809  bool pass(true);
810  if (!info.segment || !info.trackAtSegment) {
811  ATH_MSG_DEBUG(" No segment and or trackAtSegment pointer matchDistance ");
812  return false;
813  }
814  if (!m_doDistCut) return pass;
815 
816  if (info.hasPhi) {
817  if (std::abs(info.resX) > m_DIST_POS) pass = false;
818  if (std::abs(info.dangleXZ) > m_DIST_ANGLE) pass = false;
819  }
820  if (info.maximumResidualAlongTube > m_DIST_POS) pass = false;
821  if (std::abs(info.resY) > m_DIST_POS) pass = false;
822  if (std::abs(info.dangleYZ) > m_DIST_ANGLE) pass = false;
823 
824  return pass;
825 }

◆ matchingDistanceCorrection()

double MuTagMatchingTool::matchingDistanceCorrection ( double  resPos,
double  resAngle 
)
private

◆ matchPtDependentPull()

bool MuTagMatchingTool::matchPtDependentPull ( const MuonCombined::MuonSegmentInfo info,
const Trk::Track trk 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 341 of file MuTagMatchingTool.cxx.

341  {
342  bool pass(true);
343  if (!info.segment || !info.trackAtSegment) {
344  ATH_MSG_DEBUG(" No segment and or trackAtSegment pointermatchPtDependentPull ");
345  return false;
346  }
347  double pT(100.);
348  const Trk::Perigee* aMeasPer = trk.perigeeParameters();
349  if (aMeasPer) {
350  pT = aMeasPer->pT();
351  }
352  double Pullcut = 2.0;
353 
354  if (pT > 2.) { Pullcut = 5.0 - 6.0 / pT; }
355  if (Pullcut > m_combinedPullCut) Pullcut = m_combinedPullCut;
356 
357  if (std::abs(info.pullCY) > Pullcut) pass = false;
358 
359  return pass;
360 }

◆ matchSegmentDirection()

bool MuTagMatchingTool::matchSegmentDirection ( const MuonCombined::MuonSegmentInfo info,
bool  idHasEtaHits 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 314 of file MuTagMatchingTool.cxx.

314  {
315  if (!info.segment || !info.trackAtSegment) {
316  ATH_MSG_DEBUG(" No segment and or trackAtSegment pointer matchSegmentDirection ");
317  return false;
318  }
319  if (idHasEtaHits) {
320  return std::abs(info.pullYZ) < m_MATCH_THETAANGLE || std::abs(info.pullCY) < m_combinedPullCut;
321  }
322  return true;
323 }

◆ matchSegmentPosition()

bool MuTagMatchingTool::matchSegmentPosition ( const MuonCombined::MuonSegmentInfo info,
bool  idHasEtaHits 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 298 of file MuTagMatchingTool.cxx.

298  {
299  if (!info.segment || !info.trackAtSegment) {
300  ATH_MSG_DEBUG(" No segment and or trackAtSegment pointer matchSegmentPosition ");
301  return false;
302  }
303 
304  bool pass(false);
305 
306  if (idHasEtaHits) {
307  if (std::abs(info.pullY) < m_MATCH_THETA || std::abs(info.pullCY) < m_combinedPullCut) pass = true;
308  } else {
309  if (std::abs(info.pullX) < m_MATCH_PHI) pass = true;
310  }
311 
312  return pass;
313 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ muTagSegmentInfo()

MuonCombined::MuonSegmentInfo MuTagMatchingTool::muTagSegmentInfo ( const EventContext &  ctx,
const Trk::Track track,
const Muon::MuonSegment segment,
std::shared_ptr< const Trk::AtaPlane exTrack 
) const
overridevirtual

The cut off variable is used to avoid FPEs risen where one of the matrix enties exceeds a large number and hence the determinant becomes tremendously larger

What do these magic numbers represent?

Implements IMuTagMatchingTool.

Definition at line 466 of file MuTagMatchingTool.cxx.

467  {
469 
470  // segment and track pointers
471 
472  info.track = track;
473  info.segment = &segment;
474  info.trackAtSegment = exTrack;
475 
477 
478  // quality
479 
480  info.quality = m_selectionTool->quality(segment);
481 
482  // Global angular differences
483 
484  info.dtheta = exTrack->momentum().theta() - segment.globalDirection().theta();
485  info.dphi = exTrack->momentum().deltaPhi(segment.globalDirection());
486 
487  // Global angular differences for position
488 
489  info.dthetaPos = exTrack->position().theta() - segment.globalPosition().theta();
490  info.dphiPos = exTrack->position().deltaPhi (segment.globalPosition());
491 
492  // Local positions
493 
494  info.resY = exTrack->parameters()[Trk::locY] - segment.localParameters()[Trk::locY]; // delta_theta
495  info.resX = exTrack->parameters()[Trk::locX] - segment.localParameters()[Trk::locX]; // delta_phi
496 
497  // Local errors and covariance Matrix
498 
499  info.exCovYTheta = 0.;
500  if (exTrack->covariance()) {
501  ATH_MSG_DEBUG("Measured Parameters: error x " << (*exTrack->covariance())(Trk::locX, Trk::locX) << " y "
502  << (*exTrack->covariance())(Trk::locY, Trk::locY) << " pull x "
503  << info.resX / std::sqrt((*exTrack->covariance())(Trk::locX, Trk::locX)) << " pull y "
504  << info.resY / std::sqrt((*exTrack->covariance())(Trk::locY, Trk::locY)));
505  info.exErrorX = std::sqrt((*exTrack->covariance())(Trk::locX, Trk::locX));
506  info.exErrorY = std::sqrt((*exTrack->covariance())(Trk::locY, Trk::locY));
507  if ((*exTrack->covariance())(Trk::theta, Trk::locY) != 0) { info.exCovYTheta = (*exTrack->covariance())(Trk::theta, Trk::locY); }
508  } else {
509  info.exErrorX = -999.;
510  info.exErrorY = -999.;
511  }
512 
513  // Segment local errors
514  info.segErrorX = std::sqrt((segment.localCovariance())(Trk::locX, Trk::locX));
515  info.segErrorY = std::sqrt((segment.localCovariance())(Trk::locY, Trk::locY));
516 
517  // Pull local X and Y
518  double erexX = errorProtection(info.exErrorX, false);
519  double erexY = errorProtection(info.exErrorY, false);
520  info.pullX = info.resX / std::hypot(erexX, info.segErrorX, m_SAFE_PHI);
521  info.pullY = info.resY / std::hypot(erexY, info.segErrorY, m_SAFE_THETA);
522 
523  // Local angles
524 
525  Trk::LocalDirection segLocDir = segment.localDirection();
526  Trk::LocalDirection exTrkLocDir;
527  exTrack->associatedSurface().globalToLocalDirection(exTrack->momentum(), exTrkLocDir);
528  info.dangleYZ = exTrkLocDir.angleYZ() - segLocDir.angleYZ(); // deltaYZ
529  info.dangleXZ = exTrkLocDir.angleXZ() - segLocDir.angleXZ(); // deltaXZ
530  // delete exTrkLocDir;
531 
532  // Errors on local angles
533  double exTrkErrXZ(0.), exTrkErrYZ(0.), segErrXZ(0.), segErrYZ(0.), covLocYYZ(0.);
534 
535  calculateLocalAngleErrors(*exTrack, exTrkErrXZ, exTrkErrYZ, covLocYYZ);
536  info.exErrorXZ = exTrkErrXZ;
537  info.exErrorYZ = exTrkErrYZ;
538  info.exCovYZY = covLocYYZ;
539  calculateLocalAngleErrors(segment, segErrXZ, segErrYZ);
540  info.segErrorXZ = segErrXZ;
541  info.segErrorYZ = segErrYZ;
542  double erexXZ = errorProtection(info.exErrorXZ, true);
543  double erexYZ = errorProtection(info.exErrorYZ, true);
544 
545  ATH_MSG_DEBUG(" exTrkLocDir.angleYZ() " << exTrkLocDir.angleYZ() << " segLocDir.angleYZ() " << segLocDir.angleYZ());
546  ATH_MSG_DEBUG(" exTrkLocDir.angleXZ() " << exTrkLocDir.angleXZ() << " segLocDir.angleXZ() " << segLocDir.angleXZ());
547 
548  ATH_MSG_DEBUG(" info.exErrorYZ " << info.exErrorYZ << " info.segErrorYZ " << info.segErrorYZ << " info.exCovYZY " << info.exCovYZY);
549  ATH_MSG_DEBUG(" info.exErrorXZ " << info.exErrorXZ << " info.segErrorXZ " << info.segErrorXZ);
550 
551  info.pullXZ = info.dangleXZ / std::hypot(erexXZ, info.segErrorXZ, m_SAFE_PHIANGLE);
552  info.pullYZ = info.dangleYZ / std::hypot(erexYZ, info.segErrorYZ, m_SAFE_THETAANGLE);
553 
554  ATH_MSG_DEBUG(" info.pullXZ " << info.pullXZ);
555 
556  Identifier chId = m_edmHelperSvc->chamberId(segment);
557  Muon::MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(chId);
558  //
559  // residuals and pulls in X coordinate (along tube)
560  //
561 
562  // MuonDetectorManager from the conditions store
564  const MuonGM::MuonDetectorManager* MuonDetMgr = DetectorManagerHandle.cptr();
565  if (!MuonDetMgr) {
566  ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
567  return info;
568  }
569  double maxResXMdt{-1e9}, maxResPhi{-1e9}, maxPullPhi{-1e9}, minResPhi{1e9}, minPullPhi{1e9};
570  // loop over hits
571  for (const Trk::MeasurementBase* seg_it : segment.containedMeasurements()) {
572  const Muon::MdtDriftCircleOnTrack* mdt = dynamic_cast<const Muon::MdtDriftCircleOnTrack*>(seg_it);
573  if (mdt) {
574  // get id and check that it is a muon hit id
575  Identifier id = mdt->identify();
576 
577  // get layer index
578  int lay = m_idHelperSvc->mdtIdHelper().tubeLayer(id);
579  int tube = m_idHelperSvc->mdtIdHelper().tube(id);
580 
581  const MuonGM::MdtReadoutElement* detEl =
582  mdt->prepRawData() ? mdt->prepRawData()->detectorElement() : MuonDetMgr->getMdtReadoutElement(id);
583  if (!detEl) {
584  ATH_MSG_WARNING(" could not get MdtReadoutElement for tube " << m_idHelperSvc->toString(id));
585  continue;
586  }
587  double tubeLen = detEl->getActiveTubeLength(lay, tube);
588 
589  // use SL within station to speed up extrapolation
590  // lifetime only in this scope
591  std::unique_ptr<Trk::TrackParameters> exP = m_propagator->propagate(ctx, *exTrack, mdt->associatedSurface(), Trk::anyDirection, false, Trk::NoField);
592  if (!exP) {
593  ATH_MSG_WARNING("Failed to extrapolate to " << m_idHelperSvc->toString(id));
594  continue;
595  }
596  ATH_MSG_DEBUG(m_idHelperSvc->toString(id)
597  << " exPos " << exP->parameters()[Trk::locR] << " y " << exP->parameters()[Trk::locZ] << " tubeL " << tubeLen);
598  double exResidual = std::abs(exP->parameters()[Trk::locZ]) - 0.5 * tubeLen;
599  if (maxResXMdt < exResidual) maxResXMdt = exResidual;
600  if (exResidual > 0.) ATH_MSG_DEBUG("Extrapolated position outside tube, " << exResidual);
601  } else {
602  // get id and check that it is a muon hit id
603  Identifier id = m_edmHelperSvc->getIdentifier(*seg_it);
604  if (!id.is_valid() || !m_idHelperSvc->isMuon(id)) continue;
605  if (!m_idHelperSvc->measuresPhi(id)) continue;
606  // lifetime only in this scope
607  std::unique_ptr<Trk::TrackParameters> exP{
608  m_propagator->propagate(ctx, *exTrack, seg_it->associatedSurface(), Trk::anyDirection, false, Trk::NoField)};
609  if (!exP) {
610  ATH_MSG_WARNING("Failed to extrapolate to " << m_idHelperSvc->toString(id));
611  continue;
612  }
613  std::optional<Trk::ResidualPull> resPull{
614  m_pullCalculator->residualPull(seg_it, exP.get(), Trk::ResidualPull::Unbiased)};
615  if (!resPull) {
616  ATH_MSG_WARNING(" calculation of residual/pull failed !!!!! ");
617  // delete exP;
618  continue;
619  }
620  const double residual = resPull->residual().front();
621  const double pull = resPull->pull().front();
622 
623  maxResPhi = std::max(residual, maxResPhi);
624  minResPhi = std::min(residual, minResPhi);
625  maxPullPhi = std::max(pull, maxPullPhi);
626  minPullPhi = std::min(pull, minPullPhi);
627 
628  ATH_MSG_DEBUG(m_idHelperSvc->toString(id) << " residual " << residual << " pull " << pull);
629  }
630  }
631  ATH_MSG_DEBUG("Residual phi min " << minResPhi << " max " << maxResPhi << " pull min " << minPullPhi << " max " << maxPullPhi
632  << " dist from tube end " << maxResXMdt);
633 
634  //
635  // Store the local X variables
636  //
637  info.maximumResidualAlongTube = maxResXMdt;
638  info.maximumResidualPhi = maxResPhi;
639  info.maximumPullPhi = maxPullPhi;
640 
641  info.minimumResidualPhi = minResPhi;
642  info.minimumPullPhi = minPullPhi;
643 
644  info.pullChamber = maxResXMdt / info.exErrorX;
645 
646  // Scale covariance Matrix (if needed)
650  constexpr double matrix_cutoff = 1.e20;
651  double a = std::pow(std::min(matrix_cutoff, info.exErrorY), 2);
652  double b = std::abs(info.exCovYZY) < matrix_cutoff ? info.exCovYZY : (info.exCovYZY < 0 ? -1. : 1) * matrix_cutoff;
653  double d = std::pow(std::min(matrix_cutoff, info.exErrorYZ), 2);
654  double det = a * d - b * b;
655 
656  double scale = 1.;
657  if (det < 0.1 * a * d) {
658  scale = std::sqrt(0.9 * a * d) / std::abs(b);
659  det = a * d - scale * b * scale * b;
660  }
661  if (det ==0.) {
662  ATH_MSG_DEBUG("Found singular determinant");
663  return info;
664  }
665  double dydyz = scale * info.exCovYZY;
666  double correction = dydyz / std::max(info.exErrorYZ * info.exErrorYZ, DBL_EPSILON);
667 
668  //
669  // residual after taking into account the correlation with the angle YZ
670  //
671 
672  info.resCY = info.resY - correction * info.dangleYZ;
673 
674  ATH_MSG_DEBUG(" segment direction theta " << segment.globalDirection().theta() << " position theta "
675  << segment.globalPosition().theta() << " correction " << correction);
676  ATH_MSG_DEBUG(" resY " << info.resY << " dangleYZ " << info.dangleYZ << " resCY " << info.resCY);
677  double error_rescy = info.exErrorY * info.exErrorY - correction * correction * info.exErrorYZ * info.exErrorYZ;
678  double error_segcy = info.segErrorY * info.segErrorY + correction * correction * info.segErrorYZ * info.segErrorYZ;
679  if (error_rescy > 0) {
680  error_rescy = std::sqrt(error_rescy + error_segcy);
681  } else {
682  error_rescy = std::sqrt(info.exErrorY * info.exErrorY + error_segcy);
683  }
684 
685  // pull after taking into account the correlation with the angle YZ
686 
687  info.pullCY = info.resCY / std::hypot(error_rescy, m_SAFE_THETA, correction * m_SAFE_THETAANGLE);
688 
689  // chi2 with full covariance matrix in Y and YZ plane
690 
691  double chi2Y = d * info.resY * info.resY - 2 * b * scale * info.resY * info.dangleYZ + a * info.dangleYZ * info.dangleYZ;
692  info.chi2Y = 0.5*( chi2Y / det);
693  if (info.chi2Y < 0) ATH_MSG_DEBUG(" NEGATIVE chi2Y " << chi2Y << " dydyz " << dydyz << " determinant " << det);
694 
695  bool hasPhi = hitCounts.nexpectedTrigHitLayers > 1;
696 
697  //
698  // Store hasphi
699  //
700  info.hasPhi = hasPhi;
701  info.t0 = 0.;
702 
703  // station layer
704  info.stationLayer = 0;
705  if (stIndex == Muon::MuonStationIndex::BI) info.stationLayer = 1;
706  if (stIndex == Muon::MuonStationIndex::BM) info.stationLayer = 2;
707  if (stIndex == Muon::MuonStationIndex::BO) info.stationLayer = 3;
708  if (stIndex == Muon::MuonStationIndex::BE) info.stationLayer = 4;
709  if (stIndex == Muon::MuonStationIndex::EI) info.stationLayer = m_idHelperSvc->isMdt(chId) ? 11 : 21;
710  if (stIndex == Muon::MuonStationIndex::EM) info.stationLayer = 12;
711  if (stIndex == Muon::MuonStationIndex::EO) info.stationLayer = 13;
712  if (stIndex == Muon::MuonStationIndex::EE) info.stationLayer = 14;
713 
714  ATH_MSG_DEBUG("stationLayer " << info.stationLayer);
715  // number of holes
716  info.nholes = 0;
717  const Muon::MuonSegmentQuality* q = dynamic_cast<const Muon::MuonSegmentQuality*>(segment.fitQuality());
718  if (q) info.nholes = q->numberOfHoles();
719 
720  // number of segments
721  info.nsegments = 1;
722 
723  // single ML
724  info.singleML = 1;
725  if (hitCounts.nmdtHitsMl1 > 0 && hitCounts.nmdtHitsMl2 > 0) info.singleML = 0;
726 
727  // RLocY parametrized rejection as a function of locY
728  // RAYZ parametrized rejection as a function of Angle YZ
729 
730  // parameters are used for selecting best segment in ambiguity solver
731 
733  constexpr double a_locY{13.8269}, b_locY{1.23548}, c_locY{2.73400}, a_AYZ{12.0655}, b_AYZ{1.87578}, c_AYZ{1.88660}, width_locY{20.},
734  width_AYZ{0.004};
735 
736  double dlocY = info.resY;
737  double dAYZ = info.dangleYZ;
738 
739  double logLocY = std::log(1 + std::abs(dlocY / width_locY));
740  double logAYZ = std::log(1 + std::abs(dAYZ / width_AYZ));
741 
742  info.RLocY = a_locY / (1. + b_locY * (logLocY) * (logLocY) + c_locY * (logLocY) * (logLocY) * (logLocY));
743  info.RAYZ = a_AYZ / (1. + b_AYZ * (logAYZ) * (logAYZ) + c_AYZ * (logAYZ) * (logAYZ) * (logAYZ));
744 
745  int selected = 0;
746  scale = 1.;
747 
748  if (std::abs(info.pullY) < m_MATCH_THETA && std::abs(info.pullYZ) < m_MATCH_THETAANGLE &&
749  std::abs(info.pullCY) < scale * m_combinedPullCut && info.pullChamber < m_chamberPullCut) {
750  bool pass = true;
751  if (pass) selected = 1;
752  }
753 
754  info.selected = selected;
755 
756  return info;
757 }

◆ nrTriggerHits()

void MuTagMatchingTool::nrTriggerHits ( const Muon::MuonSegment seg,
int &  nRPC,
int &  nTGC 
) const
private

Definition at line 451 of file MuTagMatchingTool.cxx.

451  {
452  nRPC = 0;
453  nTGC = 0;
454  for (const Trk::MeasurementBase* seg_meas : seg.containedMeasurements()) {
455  const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(seg_meas);
456  if (!rot) {
457  const Trk::CompetingRIOsOnTrack* crot = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(seg_meas);
458  if (crot) rot = &crot->rioOnTrack(0);
459  }
460  if (!rot) { continue; }
461  if (m_idHelperSvc->isRpc(rot->identify())) ++nRPC;
462  if (m_idHelperSvc->isTgc(rot->identify())) ++nTGC;
463  }
464 }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ phiMatch()

bool MuTagMatchingTool::phiMatch ( const Trk::TrackParameters atSurface,
const Muon::MuonSegment segment 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 227 of file MuTagMatchingTool.cxx.

227  {
228  double PHI_CUT = m_GLOBAL_PHI_CUT;
229  if (hasPhi(segment)) PHI_CUT = m_GLOBAL_PHI_CUT / 2.;
230 
231  const Amg::Vector3D exTrkPos = atSurface.position();
232  const Amg::Vector3D& segPos = segment.globalPosition();
233 
234  const double deltaPhi = exTrkPos.deltaPhi(segPos);
235 
236  double sigma_phi = 0.;
237  if (atSurface.associatedSurface().type() == Trk::SurfaceType::Cylinder) {
238  const AmgSymMatrix(5)& covAtCyl = *atSurface.covariance();
239  double r = atSurface.associatedSurface().bounds().r();
240  if ( r > 0 && covAtCyl(Trk::locRPhi, Trk::locRPhi) >= 0.) sigma_phi = Amg::error(covAtCyl, Trk::locRPhi) / r;
241  } else if (atSurface.associatedSurface().type() == Trk::SurfaceType::Plane) {
242  const AmgSymMatrix(5)& covAtPlane = *atSurface.covariance();
243  sigma_phi = Amg::error(covAtPlane, Trk::phi0);
244  } else if (atSurface.associatedSurface().type() == Trk::SurfaceType::Disc) { // error in endcap
245  const AmgSymMatrix(5)& covAtDisc = *atSurface.covariance();
246  if (covAtDisc(Trk::locPhi, Trk::locPhi) >= 0.) sigma_phi = Amg::error(covAtDisc, Trk::locPhi);
247  }
248  double errPhi = std::hypot(PHI_CUT, sigma_phi);
249  // if the difference between exTrk and Segment phi position falls within the errPhi, accept as rough match
250  if (std::abs(deltaPhi) < errPhi)
251  return true; // BRes: TEMPORARY - segment direction not sure, so I'm making this match symmetric wrt Pi/2
252  ATH_MSG_DEBUG(std::setw(30) << "roughPhi failed: d_phi = " << std::setw(10) << std::abs(deltaPhi) // BRes: TEMPORARY - same
253  << " while the cut is set on " << std::setw(10) << errPhi);
254  return false;
255 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ rMatch()

bool MuTagMatchingTool::rMatch ( const Trk::TrackParameters atSurface,
const Muon::MuonSegment segment 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 275 of file MuTagMatchingTool.cxx.

275  {
276  const Amg::Vector3D exTrkPos = atSurface.position();
277  double L = exTrkPos.mag();
278  double R_CUT = m_GLOBAL_R_CUT * (L / 7500.); // mm
279 
280  const Amg::Vector3D& segPos = segment.globalPosition();
281  const double dPerp = std::abs(exTrkPos.perp() - segPos.perp());
282  if (dPerp < R_CUT)
283  return true;
284 
285  ATH_MSG_DEBUG(std::setw(30) << "rough R failed: d_R = " << std::setw(10) << dPerp << " while the cut is set on "
286  << std::setw(10) << R_CUT);
287  return false;
288 }

◆ surfaceMatch()

bool MuTagMatchingTool::surfaceMatch ( const Muon::MuonSegment segment,
int  surfaceName 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 136 of file MuTagMatchingTool.cxx.

136  {
137  const Identifier id = m_edmHelperSvc->chamberId(segment);
138  return surfaceName == MuonCombined::MuonSegmentTagSurfaces::stIdxToSurfDef(m_idHelperSvc->stationIndex(id), m_idHelperSvc->stationEta(id)>0);
139 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ testExtrapolation()

void MuTagMatchingTool::testExtrapolation ( const Trk::Surface pSurface,
const Trk::Track pTrack 
) const
private

Definition at line 362 of file MuTagMatchingTool.cxx.

362  {
363  const Trk::Perigee* oriPerigee = pTrack.perigeeParameters();
364  if (!oriPerigee) {
365  ATH_MSG_DEBUG("Couldn't get the measured Perigee from TP");
366  return;
367  }
368  const EventContext& ctx = Gaudi::Hive::currentContext();
369  const AmgVector(5)& oripars = oriPerigee->parameters();
370  const Trk::PerigeeSurface periSurf;
371  std::unique_ptr<Trk::Perigee> pPerigee = std::make_unique<Trk::Perigee>(oripars[0], oripars[1], oripars[2], oripars[3], 0., periSurf, std::nullopt);
372  const Amg::Vector3D startPos = pPerigee->position();
373  const Amg::Vector3D startMom = pPerigee->momentum();
374  const AmgVector(5)& pars = pPerigee->parameters();
375 
376  ATH_MSG_DEBUG("==============================================================================");
377  ATH_MSG_DEBUG("======= INITIAL TRACK PARAMETERS (PERIGEE)");
378  ATH_MSG_DEBUG("=== parameters are " << pars[0] << " " << pars[1] << " " << pars[2] << " " << pars[3] << " " << pars[4]);
379  ATH_MSG_DEBUG("=== global position " << startPos.x() << " " << startPos.y() << " " << startPos.z());
380  ATH_MSG_DEBUG("=== global directn " << startMom.phi() << " " << startMom.theta());
381 
382  std::unique_ptr<Trk::TrackParameters> alongPars{
383  m_IExtrapolator->extrapolate(ctx, *pPerigee, pSurface, Trk::alongMomentum, false, Trk::muon)};
384 
385  ATH_MSG_DEBUG("======= EXTRAPOLATED ALONG MOMENTUM ORIGINAL PERIGEE");
386  if (alongPars) {
387  const Amg::Vector3D alongPos = alongPars->position();
388  const Amg::Vector3D alongMom = alongPars->momentum();
389 
390  ATH_MSG_DEBUG("=== global position " << alongPos.x() << " " << alongPos.y() << " " << alongPos.z());
391  ATH_MSG_DEBUG("=== global position phi theta " << alongPos.phi() << " " << alongPos.theta());
392  ATH_MSG_DEBUG("=== global directn " << alongMom.phi() << " " << alongMom.theta());
393  } else
394  ATH_MSG_DEBUG("======= NOT EXTRAPOLATED");
395 
396  ATH_MSG_DEBUG("======= EXTRAPOLATED OPPOSITE MOMENTUM ORIGINAL PERIGEE");
397  std::unique_ptr<const Trk::TrackParameters> oppositePars{
398  m_IExtrapolator->extrapolate(ctx, *pPerigee, pSurface, Trk::oppositeMomentum, false, Trk::muon)};
399  if (oppositePars) {
400  const Amg::Vector3D oppositePos = oppositePars->position();
401  const Amg::Vector3D oppositeMom = oppositePars->momentum();
402  ATH_MSG_DEBUG("=== global position " << oppositePos.x() << " " << oppositePos.y() << " " << oppositePos.z());
403  ATH_MSG_DEBUG("=== global position phi theta " << oppositePos.phi() << " " << oppositePos.theta());
404  ATH_MSG_DEBUG("=== global directn " << oppositeMom.phi() << " " << oppositeMom.theta());
405  } else
406  ATH_MSG_DEBUG("======= NOT EXTRAPOLATED");
407 
408  ;
409  std::unique_ptr<const Trk::Perigee> flippedPerigee = flipDirection(*pPerigee);
410  const AmgVector(5)& flipPars = flippedPerigee->parameters();
411  const Amg::Vector3D flipPos = flippedPerigee->position();
412  const Amg::Vector3D flipMom = flippedPerigee->momentum();
413 
414  ATH_MSG_DEBUG("======= FLIPPED TRACK PARAMETERS (PERIGEE)");
415  ATH_MSG_DEBUG("=== phi and theta were " << pars[2] << " " << pars[3] << " and are flipped to ");
416  ATH_MSG_DEBUG("=== parameters are " << flipPars[0] << " " << flipPars[1] << " " << flipPars[2] << " " << flipPars[3] << " "
417  << flipPars[4]);
418  ATH_MSG_DEBUG("=== global position " << flipPos.x() << " " << flipPos.y() << " " << flipPos.z());
419  ATH_MSG_DEBUG("=== global directn " << flipMom.phi() << " " << flipMom.theta());
420 
421  std::unique_ptr<const Trk::TrackParameters> alongFlipPars{
422  m_IExtrapolator->extrapolate(ctx,*flippedPerigee, pSurface, Trk::alongMomentum, false, Trk::muon)};
423 
424  ATH_MSG_DEBUG("======= EXTRAPOLATED ALONGFLIP MOMENTUM ORIGINAL PERIGEE");
425  if (alongFlipPars) {
426  const Amg::Vector3D alongFlipPos = alongFlipPars->position();
427  const Amg::Vector3D alongFlipMom = alongFlipPars->momentum();
428  ATH_MSG_DEBUG("=== global position " << alongFlipPos.x() << " " << alongFlipPos.y() << " " << alongFlipPos.z());
429  ATH_MSG_DEBUG("=== global position phi theta " << alongFlipPos.phi() << " " << alongFlipPos.theta());
430  ATH_MSG_DEBUG("=== global directn " << alongFlipMom.phi() << " " << alongFlipMom.theta());
431  } else
432  ATH_MSG_DEBUG("======= NOT EXTRAPOLATED");
433 
434  ATH_MSG_DEBUG("======= EXTRAPOLATED OPPOSITEFLIP MOMENTUM ORIGINAL PERIGEE");
435  std::unique_ptr<const Trk::TrackParameters> oppositeFlipPars{
436  m_IExtrapolator->extrapolate(ctx, *flippedPerigee, pSurface, Trk::oppositeMomentum, false, Trk::muon)};
437  if (oppositeFlipPars) {
438  const Amg::Vector3D oppositeFlipPos = oppositeFlipPars->position();
439  const Amg::Vector3D oppositeFlipMom = oppositeFlipPars->momentum();
440  ATH_MSG_DEBUG("=== global position " << oppositeFlipPos.x() << " " << oppositeFlipPos.y() << " " << oppositeFlipPos.z());
441  ATH_MSG_DEBUG("=== global position phi theta " << oppositeFlipPos.phi() << " " << oppositeFlipPos.theta());
442  ATH_MSG_DEBUG("=== global directn " << oppositeFlipMom.phi() << " " << oppositeFlipMom.theta());
443  } else
444  ATH_MSG_DEBUG("======= NOT EXTRAPOLATED");
445 
446  ATH_MSG_DEBUG("==============================================================================");
447 
448 }

◆ thetaMatch()

bool MuTagMatchingTool::thetaMatch ( const Trk::TrackParameters atSurface,
const Muon::MuonSegment segment 
) const
overridevirtual

Implements IMuTagMatchingTool.

Definition at line 262 of file MuTagMatchingTool.cxx.

262  {
263  double THETA_CUT = m_GLOBAL_THETA_CUT;
264  const Amg::Vector3D exTrkPos = atSurface.position();
265  const Amg::Vector3D& segPos = segment.globalPosition();
266  const double dTheta = std::abs(exTrkPos.theta() - segPos.theta());
267  if (dTheta < THETA_CUT)
268  return true;
269 
270  ATH_MSG_DEBUG(std::setw(30) << "roughTheta failed: d_theta = " << std::setw(10) << dTheta << " while the cut is set on "
271  << std::setw(10) << THETA_CUT);
272  return false;
273 }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_assumeLocalErrors

bool MuTagMatchingTool::m_assumeLocalErrors
private

Definition at line 165 of file MuTagMatchingTool.h.

◆ m_chamberPullCut

double MuTagMatchingTool::m_chamberPullCut
private

Definition at line 189 of file MuTagMatchingTool.h.

◆ m_combinedPullCut

double MuTagMatchingTool::m_combinedPullCut
private

Definition at line 190 of file MuTagMatchingTool.h.

◆ m_DetectorManagerKey

SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> MuTagMatchingTool::m_DetectorManagerKey
private
Initial value:
{
this,
"DetectorManagerKey",
"MuonDetectorManager",
"Key of input MuonDetectorManager condition data",
}

Definition at line 155 of file MuTagMatchingTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_DIST_ANGLE

double MuTagMatchingTool::m_DIST_ANGLE
private

Definition at line 182 of file MuTagMatchingTool.h.

◆ m_DIST_POS

double MuTagMatchingTool::m_DIST_POS
private

Definition at line 181 of file MuTagMatchingTool.h.

◆ m_doDistCut

bool MuTagMatchingTool::m_doDistCut
private

Definition at line 180 of file MuTagMatchingTool.h.

◆ m_edmHelperSvc

ServiceHandle<Muon::IMuonEDMHelperSvc> MuTagMatchingTool::m_edmHelperSvc
private
Initial value:
{
this,
"edmHelper",
"Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface",
}

Definition at line 144 of file MuTagMatchingTool.h.

◆ m_ERROR_EX_ANGLE_CUT

double MuTagMatchingTool::m_ERROR_EX_ANGLE_CUT
private

Definition at line 178 of file MuTagMatchingTool.h.

◆ m_ERROR_EX_POS_CUT

double MuTagMatchingTool::m_ERROR_EX_POS_CUT
private

Definition at line 177 of file MuTagMatchingTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extrapolatePerigee

bool MuTagMatchingTool::m_extrapolatePerigee
private

Definition at line 166 of file MuTagMatchingTool.h.

◆ m_GLOBAL_PHI_CUT

double MuTagMatchingTool::m_GLOBAL_PHI_CUT
private

Definition at line 169 of file MuTagMatchingTool.h.

◆ m_GLOBAL_R_CUT

double MuTagMatchingTool::m_GLOBAL_R_CUT
private

Definition at line 170 of file MuTagMatchingTool.h.

◆ m_GLOBAL_THETA_CUT

double MuTagMatchingTool::m_GLOBAL_THETA_CUT
private

Definition at line 168 of file MuTagMatchingTool.h.

◆ m_hitSummaryTool

ToolHandle<Muon::IMuonSegmentHitSummaryTool> MuTagMatchingTool::m_hitSummaryTool
private
Initial value:
{
this,
"MuonSegmentHitSummary",
"Muon::MuonSegmentHitSummaryTool/MuonSegmentHitSummaryTool",
}

Definition at line 123 of file MuTagMatchingTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuTagMatchingTool::m_idHelperSvc
private
Initial value:
{
this,
"MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc",
}

Definition at line 139 of file MuTagMatchingTool.h.

◆ m_IExtrapolator

ToolHandle<Trk::IExtrapolator> MuTagMatchingTool::m_IExtrapolator
private
Initial value:
{
this,
"IExtrapolator",
"Trk::Extrapolator/AtlasExtrapolator",
}

Pointer on IExtrapolator.

Definition at line 112 of file MuTagMatchingTool.h.

◆ m_MATCH_PHI

double MuTagMatchingTool::m_MATCH_PHI
private

Definition at line 173 of file MuTagMatchingTool.h.

◆ m_MATCH_PHIANGLE

double MuTagMatchingTool::m_MATCH_PHIANGLE
private

Definition at line 175 of file MuTagMatchingTool.h.

◆ m_MATCH_THETA

double MuTagMatchingTool::m_MATCH_THETA
private

Definition at line 172 of file MuTagMatchingTool.h.

◆ m_MATCH_THETAANGLE

double MuTagMatchingTool::m_MATCH_THETAANGLE
private

Definition at line 174 of file MuTagMatchingTool.h.

◆ m_printer

PublicToolHandle<Muon::MuonEDMPrinterTool> MuTagMatchingTool::m_printer {this,"Printer", ""}
private

Definition at line 122 of file MuTagMatchingTool.h.

◆ m_propagator

ToolHandle<Trk::IPropagator> MuTagMatchingTool::m_propagator
private
Initial value:
{
this,
"Propagator",
"Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator",
}

Pointer on propagator for SL propagation.

Definition at line 117 of file MuTagMatchingTool.h.

◆ m_pullCalculator

ToolHandle<Trk::IResidualPullCalculator> MuTagMatchingTool::m_pullCalculator
private
Initial value:
{
this,
"ResidualPullCalculator",
"Trk::ResidualPullCalculator/ResidualPullCalculator",
}

Definition at line 133 of file MuTagMatchingTool.h.

◆ m_SAFE_PHI

double MuTagMatchingTool::m_SAFE_PHI
private

Definition at line 185 of file MuTagMatchingTool.h.

◆ m_SAFE_PHIANGLE

double MuTagMatchingTool::m_SAFE_PHIANGLE
private

Definition at line 187 of file MuTagMatchingTool.h.

◆ m_SAFE_THETA

double MuTagMatchingTool::m_SAFE_THETA
private

Definition at line 184 of file MuTagMatchingTool.h.

◆ m_SAFE_THETAANGLE

double MuTagMatchingTool::m_SAFE_THETAANGLE
private

Definition at line 186 of file MuTagMatchingTool.h.

◆ m_selectionTool

ToolHandle<Muon::IMuonSegmentSelectionTool> MuTagMatchingTool::m_selectionTool
private
Initial value:
{
this,
"MuonSegmentSelection",
"Muon::MuonSegmentSelectionTool/MuonSegmentSelectionTool",
}

Definition at line 128 of file MuTagMatchingTool.h.

◆ m_t0Location

std::string MuTagMatchingTool::m_t0Location
private

Definition at line 151 of file MuTagMatchingTool.h.

◆ m_trackingGeometryReadKey

SG::ReadCondHandleKey<Trk::TrackingGeometry> MuTagMatchingTool::m_trackingGeometryReadKey
private
Initial value:
{this, "TrackingGeometryReadKey", "",
"Key of input TrackingGeometry"}

Definition at line 162 of file MuTagMatchingTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ p_StoreGateSvc

StoreGateSvc* MuTagMatchingTool::p_StoreGateSvc {}
private

Pointer On StoreGateSvc.

Definition at line 152 of file MuTagMatchingTool.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
MuTagMatchingTool::m_GLOBAL_PHI_CUT
double m_GLOBAL_PHI_CUT
Definition: MuTagMatchingTool.h:169
Muon::MuonSegmentQuality
Definition: MuonSegmentQuality.h:34
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
beamspotman.r
def r
Definition: beamspotman.py:676
Muon::MuonStationIndex::BE
@ BE
Definition: MuonStationIndex.h:25
MuonCombined::MuonSegmentInfo
Definition: MuonSegmentInfo.h:23
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
MuTagMatchingTool::m_DIST_POS
double m_DIST_POS
Definition: MuTagMatchingTool.h:181
MuTagMatchingTool::m_MATCH_PHI
double m_MATCH_PHI
Definition: MuTagMatchingTool.h:173
MuTagMatchingTool::m_MATCH_THETA
double m_MATCH_THETA
Definition: MuTagMatchingTool.h:172
MuTagMatchingTool::phiMatch
bool phiMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:227
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
MuTagMatchingTool::m_hitSummaryTool
ToolHandle< Muon::IMuonSegmentHitSummaryTool > m_hitSummaryTool
Definition: MuTagMatchingTool.h:123
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Muon::MdtDriftCircleOnTrack::prepRawData
virtual const MdtPrepData * prepRawData() const override final
Returns the PrepRawData used to create this corrected measurement.
Definition: MdtDriftCircleOnTrack.h:257
Trk::locX
@ locX
Definition: ParamDefs.h:37
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:38
MuTagMatchingTool::m_t0Location
std::string m_t0Location
Definition: MuTagMatchingTool.h:151
MuTagMatchingTool::m_extrapolatePerigee
bool m_extrapolatePerigee
Definition: MuTagMatchingTool.h:166
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
MuTagMatchingTool::m_ERROR_EX_ANGLE_CUT
double m_ERROR_EX_ANGLE_CUT
Definition: MuTagMatchingTool.h:178
Muon::IMuonSegmentHitSummaryTool::HitCounts::nmdtHitsMl1
uint8_t nmdtHitsMl1
Definition: IMuonSegmentHitSummaryTool.h:40
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Muon::MuonStationIndex::EO
@ EO
Definition: MuonStationIndex.h:26
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
hist_file_dump.d
d
Definition: hist_file_dump.py:137
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
MuTagMatchingTool::m_MATCH_PHIANGLE
double m_MATCH_PHIANGLE
Definition: MuTagMatchingTool.h:175
MuTagMatchingTool::m_edmHelperSvc
ServiceHandle< Muon::IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuTagMatchingTool.h:144
Trk::locRPhi
@ locRPhi
Definition: ParamDefs.h:40
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:128
Trk::ResidualPull::Unbiased
@ Unbiased
RP with track state that has measurement not included.
Definition: ResidualPull.h:57
MuonCombined::MuonSegmentTagSurfaces::stIdxToSurfDef
static int stIdxToSurfDef(Muon::MuonStationIndex::StIndex st_idx, bool pos_eta)
Transforms the Muon Station index to a SurfDef index.
Definition: MuonSegmentTagSurfaces.cxx:21
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Muon::MuonStationIndex::BI
@ BI
Definition: MuonStationIndex.h:25
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::locR
@ locR
Definition: ParamDefs.h:44
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::LocalDirection::angleYZ
double angleYZ() const
access method for angle of local YZ projection
Definition: LocalDirection.h:106
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
MuTagMatchingTool::m_DIST_ANGLE
double m_DIST_ANGLE
Definition: MuTagMatchingTool.h:182
tools.zlumi_mc_cf.correction
def correction(mu, runmode, campaign, run=None)
Definition: zlumi_mc_cf.py:4
Trk::ParametersT::associatedSurface
virtual const S & associatedSurface() const override final
Access to the Surface method.
MuTagMatchingTool::m_chamberPullCut
double m_chamberPullCut
Definition: MuTagMatchingTool.h:189
MuTagMatchingTool::m_assumeLocalErrors
bool m_assumeLocalErrors
Definition: MuTagMatchingTool.h:165
MuTagMatchingTool::m_GLOBAL_R_CUT
double m_GLOBAL_R_CUT
Definition: MuTagMatchingTool.h:170
OfflineHitType::Perigee
@ Perigee
Trk::CompetingRIOsOnTrack::rioOnTrack
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
Muon::IMuonSegmentHitSummaryTool::HitCounts::nexpectedTrigHitLayers
uint8_t nexpectedTrigHitLayers
Definition: IMuonSegmentHitSummaryTool.h:54
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MuonGM::MuonDetectorManager::getMdtReadoutElement
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:204
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
MuonGM::MdtReadoutElement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:51
MuTagMatchingTool::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
Definition: MuTagMatchingTool.h:155
Muon::MuonStationIndex::BM
@ BM
Definition: MuonStationIndex.h:25
MuTagMatchingTool::hasPhi
bool hasPhi(const Muon::MuonSegment &seg) const
Definition: MuTagMatchingTool.cxx:257
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:66
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Muon::MuonStationIndex::EI
@ EI
Definition: MuonStationIndex.h:26
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
Muon::MuonStationIndex::Barrel
@ Barrel
Definition: MuonStationIndex.h:49
MuTagMatchingTool::surfaceMatch
bool surfaceMatch(const Muon::MuonSegment &segment, int surfaceName) const override
Definition: MuTagMatchingTool.cxx:136
MuonGM::MdtReadoutElement::getActiveTubeLength
double getActiveTubeLength(const int tubeLayer, const int tube) const
Trk::Segment::containedMeasurements
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:166
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
python.StandardJetMods.pull
pull
Definition: StandardJetMods.py:282
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
Trk::LocalDirection
represents the three-dimensional global direction with respect to a planar surface frame.
Definition: LocalDirection.h:81
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
MuTagMatchingTool::m_SAFE_THETAANGLE
double m_SAFE_THETAANGLE
Definition: MuTagMatchingTool.h:186
MuTagMatchingTool::m_GLOBAL_THETA_CUT
double m_GLOBAL_THETA_CUT
Definition: MuTagMatchingTool.h:168
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
Trk::Track::perigeeParameters
const Perigee * perigeeParameters() const
return Perigee.
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:163
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:185
MuTagMatchingTool::m_doDistCut
bool m_doDistCut
Definition: MuTagMatchingTool.h:180
MuTagMatchingTool::getVolume
const Trk::TrackingVolume * getVolume(const EventContext &ctx, const std::string &&vol_name) const
Definition: MuTagMatchingTool.h:192
MuTagMatchingTool::calculateLocalAngleErrors
void calculateLocalAngleErrors(const Trk::AtaPlane &expPars, double &exTrkErrXZ, double &exTrkErrYZ, double &covLocYYZ) const
Definition: MuTagMatchingTool.cxx:774
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
Trk::locPhi
@ locPhi
local polar
Definition: ParamDefs.h:45
Muon::MdtDriftCircleOnTrack
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Definition: MdtDriftCircleOnTrack.h:37
MuTagMatchingTool::m_trackingGeometryReadKey
SG::ReadCondHandleKey< Trk::TrackingGeometry > m_trackingGeometryReadKey
Definition: MuTagMatchingTool.h:162
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuTagMatchingTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuTagMatchingTool.h:139
Muon::IMuonSegmentHitSummaryTool::HitCounts
Definition: IMuonSegmentHitSummaryTool.h:37
MuTagMatchingTool::cscHits
unsigned int cscHits(const Muon::MuonSegment &seg) const
Definition: MuTagMatchingTool.cxx:841
a
TList * a
Definition: liststreamerinfos.cxx:10
h
Muon::MuonStationIndex::BO
@ BO
Definition: MuonStationIndex.h:25
Trk::JacobianPhiThetaLocalAngles
Definition: JacobianPhiThetaLocalAngles.h:32
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:50
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Muon::MdtDriftCircleOnTrack::associatedSurface
virtual const Trk::StraightLineSurface & associatedSurface() const override final
Returns the surface on which this measurement was taken.
Definition: MdtDriftCircleOnTrack.h:271
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Muon::nsw::STGTPSegments::MergedSegmentProperty::dTheta
@ dTheta
Trk::RIO_OnTrack::identify
Identifier identify() const
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:152
Trk::SurfaceType::Disc
@ Disc
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
MuTagMatchingTool::m_pullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_pullCalculator
Definition: MuTagMatchingTool.h:133
Trk::SurfaceType::Cylinder
@ Cylinder
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
MuTagMatchingTool::flipDirection
std::unique_ptr< Trk::Perigee > flipDirection(const Trk::Perigee &inputPars) const
Definition: MuTagMatchingTool.cxx:173
extractSporadic.q
list q
Definition: extractSporadic.py:98
MuTagMatchingTool::m_ERROR_EX_POS_CUT
double m_ERROR_EX_POS_CUT
Definition: MuTagMatchingTool.h:177
MuTagMatchingTool::m_printer
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
Definition: MuTagMatchingTool.h:122
MuTagMatchingTool::m_SAFE_PHIANGLE
double m_SAFE_PHIANGLE
Definition: MuTagMatchingTool.h:187
Muon::MuonStationIndex::StIndex
StIndex
enum to classify the different station layers in the muon spectrometer
Definition: MuonStationIndex.h:23
Trk::SurfaceType::Plane
@ Plane
Trk::phi
@ phi
Definition: ParamDefs.h:75
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::LocalDirection::angleXZ
double angleXZ() const
access method for angle of local XZ projection
Definition: LocalDirection.h:103
MuTagMatchingTool::m_propagator
ToolHandle< Trk::IPropagator > m_propagator
Pointer on propagator for SL propagation.
Definition: MuTagMatchingTool.h:117
Muon::MuonStationIndex::EE
@ EE
Definition: MuonStationIndex.h:26
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
Trk::TrackingVolume
Definition: TrackingVolume.h:121
MuTagMatchingTool::thetaMatch
bool thetaMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:262
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::MdtPrepData::detectorElement
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
Definition: MdtPrepData.h:141
Trk::Surface::type
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
MuTagMatchingTool::rMatch
bool rMatch(const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override
Definition: MuTagMatchingTool.cxx:275
calibdata.tube
tube
Definition: calibdata.py:31
Trk::phi0
@ phi0
Definition: ParamDefs.h:65
MuTagMatchingTool::m_combinedPullCut
double m_combinedPullCut
Definition: MuTagMatchingTool.h:190
Muon::MuonStationIndex::EM
@ EM
Definition: MuonStationIndex.h:26
MuTagMatchingTool::m_MATCH_THETAANGLE
double m_MATCH_THETAANGLE
Definition: MuTagMatchingTool.h:174
fitman.k
k
Definition: fitman.py:528
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
MuTagMatchingTool::m_SAFE_THETA
double m_SAFE_THETA
Definition: MuTagMatchingTool.h:184
Identifier
Definition: IdentifierFieldParser.cxx:14
Trk::SurfaceBounds::r
virtual double r() const =0
Interface method for the maximal extension or the radius.
Muon::IMuonSegmentHitSummaryTool::HitCounts::nmdtHitsMl2
uint8_t nmdtHitsMl2
Definition: IMuonSegmentHitSummaryTool.h:41