ATLAS Offline Software
Loading...
Searching...
No Matches
MuonExtrapolationTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef MuonExtrapolationTool_H
6#define MuonExtrapolationTool_H
7
12#include "xAODMuon/Muon.h"
15
16
17namespace DerivationFramework {
18 class MuonExtrapolationTool : public extends<AthAlgTool, IAugmentationTool> {
19
20 public:
21 MuonExtrapolationTool(const std::string& t, const std::string& n, const IInterface *p);
22
23 virtual StatusCode initialize();
24 virtual StatusCode addBranches(const EventContext& ctx) const;
25
26 private:
27
29 const Trk::TrackParameters* extrapolateToTriggerPivotPlane(const xAOD::TrackParticle& track, const EventContext& ctx) const;
30
31 // Utility method to handle extrapolation and decoration for one TrackParticle.
32 // It looks for the decoration, and, if it is missing, runs track extrapolation, decorating the result
33 // to the particle to avoid repeating the process unnecessarily.
34 // Returns success (true) or failure (false) of the procedure, fills eta and phi coordinates via reference
35 // If the extrapolation fails or the decoration is missing in AthAnalysis, it will *not* change eta and phi
36 // So you can set them to defaults before calling this guy, and they will be preserved in case of failure.
37 // Will not run outside athena, because it requires the extrapolator
38 bool extrapolateAndDecorateTrackParticle(const xAOD::TrackParticle* particle, float & eta, float & phi, const EventContext& ctx) const;
39
40 // utility method: Obtains the track particle which we want to extrapolate into the MS.
41 // Works for all kinds of probes.
43
45 PublicToolHandle<Trk::IExtrapolator> m_extrapolator{this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"};
46
47 // these define the surfaces that we extrapolate to.
48 // We approximate the pivot plane in the form of a cylinder surface and two disks
49 Gaudi::Property<double> m_endcapPivotPlaneZ{this, "EndcapPivotPlaneZ", 15525., "z position of pivot plane in endcap region"};
50 Gaudi::Property<double> m_endcapPivotPlaneMinimumRadius{this, "EndcapPivotPlaneMinimumRadius", 0., "minimum radius of pivot plane in endcap region"};
51 Gaudi::Property<double> m_endcapPivotPlaneMaximumRadius{this, "EndcapPivotPlaneMaximumRadius", 11977., "maximum radius of pivot plane in endcap region"};
52 Gaudi::Property<double> m_barrelPivotPlaneRadius{this, "BarrelPivotPlaneRadius", 8000., "radius of pivot plane in barrel region"};
53 Gaudi::Property<double> m_barrelPivotPlaneHalfLength{this, "BarrelPivotPlaneHalfLength", 9700., "half length of pivot plane in barrel region"};
54 };
55}
56#endif // MuonExtrapolationTool_H
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
MuonExtrapolationTool(const std::string &t, const std::string &n, const IInterface *p)
const xAOD::TrackParticle * getPreferredTrackParticle(const xAOD::IParticle *probe) const
Gaudi::Property< double > m_endcapPivotPlaneMaximumRadius
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerName
Gaudi::Property< double > m_endcapPivotPlaneMinimumRadius
virtual StatusCode addBranches(const EventContext &ctx) const
const Trk::TrackParameters * extrapolateToTriggerPivotPlane(const xAOD::TrackParticle &track, const EventContext &ctx) const
run the extrapolation - only available in full athena
PublicToolHandle< Trk::IExtrapolator > m_extrapolator
bool extrapolateAndDecorateTrackParticle(const xAOD::TrackParticle *particle, float &eta, float &phi, const EventContext &ctx) const
Property holding a SG store/key/clid from which a ReadHandle is made.
Class providing the definition of the 4-vector interface.
THE reconstruction tool.
ParametersBase< TrackParametersDim, Charged > TrackParameters
TrackParticle_v1 TrackParticle
Reference the current persistent version: