ATLAS Offline Software
MuonTGMeasurementTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONTGRECTOOLS_MUONTGMEASUREMENTTOOL_H
6 #define MUONTGRECTOOLS_MUONTGMEASUREMENTTOOL_H
7 
8 #include <fstream>
9 #include <string>
10 #include <vector>
11 
14 #include "GaudiKernel/ConcurrencyFlags.h"
15 #include "GaudiKernel/ServiceHandle.h"
19 #include "MuonTGHits.h"
21 #include "MuonTGSegments.h"
33 #include "TrkTrack/Track.h"
35 
36 namespace MuonGM {
37  class MuonDetectorManager;
38 }
39 
40 namespace Muon {
41 
49  class MuonTGMeasurementTool : public AthAlgTool, virtual public IMuonTGMeasTool {
50  public:
51  typedef Trk::Track Track;
52  typedef std::pair<const Trk::Layer*, std::vector<Identifier>*> PairOfLayerID;
53  typedef std::pair<const Trk::Layer*, std::vector<const Trk::PrepRawData*>*> PairOfLayerPrd;
54 
56  MuonTGMeasurementTool(const std::string& type, const std::string& name, const IInterface*);
57 
58  virtual ~MuonTGMeasurementTool() = default;
59 
60  virtual StatusCode initialize() override;
61 
62  const Trk::TrackParameters* layerToDetEl(const Trk::Layer*, const Trk::TrackParameters*, Identifier) const override;
63  const Trk::TrackParameters* detElToLayer(const Trk::Layer*, const Trk::TrackParameters*, Identifier) const override;
64  const Trk::RIO_OnTrack* measToLayer(const Trk::Layer*, const Trk::TrackParameters*, const Trk::RIO_OnTrack*) const override;
65  double residual(const Trk::Layer*, const Trk::TrackParameters*, const Trk::RIO_OnTrack*) const override;
66  double residual(const Trk::Layer*, const Trk::TrackParameters*, Identifier) const override;
67  double residual(const Trk::TrackParameters*, const Trk::RIO_OnTrack*) const override;
68  double residual(const Trk::TrackParameters*, Identifier&) const override;
69  const Identifier nearestDetEl(const Trk::Layer*, const Trk::TrackParameters*, bool measPhi, double& pitch) const override;
70  const Trk::Layer* associatedLayer(Identifier id, Amg::Vector3D& gp) const override;
71  const Trk::Layer* associatedLayer(Identifier id, const Trk::TrackingVolume* vol) const override;
72  const Trk::Layer* match(Identifier id, const Trk::Layer* lay) const override;
73 
74  private:
75  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
76 
77  SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_DetectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager",
78  "Key of input MuonDetectorManager condition data"};
79 
81  "TrackingGeometrySvc/AtlasTrackingGeometrySvc"};
82 
84  "Key of input TrackingGeometry"};
85 
86  const MuonGM::MuonDetectorManager* m_muonDetMgr; // nominal MuonDetectorManager from DetectorStore (used if UseDSManager=true)
87 
88  // projection matrices
89  std::unique_ptr<AmgMatrix(5, 5)> m_tgcProjEta;
90  std::unique_ptr<AmgMatrix(5, 5)> m_tgcProjPhi;
91  std::unique_ptr<AmgMatrix(5, 5)> m_rpcProjEta;
92  std::unique_ptr<AmgMatrix(5, 5)> m_rpcProjPhi;
93 
94  // steering
95  Gaudi::Property<bool> m_alignedMode{this, "AlignedMode", true};
96  Gaudi::Property<bool> m_useDSManager{this, "UseDSManager", false};
97 
98  inline const Trk::TrackingGeometry* getGeometry() const {
100  if (m_trackingGeometryReadKey.empty()) { return m_trackingGeometrySvc->trackingGeometry(); }
101  SG::ReadCondHandle<Trk::TrackingGeometry> handle(m_trackingGeometryReadKey, Gaudi::Hive::currentContext());
102  if (!handle.isValid()) {
103  ATH_MSG_WARNING("Could not retrieve a valid tracking geometry");
104  return nullptr;
105  }
106  return handle.cptr();
107  }
108  };
109 
110 } // namespace Muon
111 
112 #endif // MUONTGRECTOOLS_MUONTGMEASUREMENTTOOL_H
Muon::MuonTGMeasurementTool
Definition: MuonTGMeasurementTool.h:49
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
Muon::MuonTGMeasurementTool::Track
Trk::Track Track
Definition: MuonTGMeasurementTool.h:51
Muon::MuonTGMeasurementTool::initialize
virtual StatusCode initialize() override
Definition: MuonTGMeasurementTool.cxx:40
Muon::MuonTGMeasurementTool::~MuonTGMeasurementTool
virtual ~MuonTGMeasurementTool()=default
MuonTGHits.h
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Muon::MuonTGMeasurementTool::m_useDSManager
Gaudi::Property< bool > m_useDSManager
Definition: MuonTGMeasurementTool.h:96
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
MuonTGSegments.h
Muon::MuonTGMeasurementTool::m_rpcProjEta
std::unique_ptr< AmgMatrix(5, 5)> m_rpcProjEta
Definition: MuonTGMeasurementTool.h:91
Muon::MuonTGMeasurementTool::m_tgcProjPhi
std::unique_ptr< AmgMatrix(5, 5)> m_tgcProjPhi
Definition: MuonTGMeasurementTool.h:90
IRIO_OnTrackCreator.h
Muon::MuonTGMeasurementTool::getGeometry
const Trk::TrackingGeometry * getGeometry() const
Definition: MuonTGMeasurementTool.h:98
IMuonTGMeasTool.h
Muon::MuonTGMeasurementTool::measToLayer
const Trk::RIO_OnTrack * measToLayer(const Trk::Layer *, const Trk::TrackParameters *, const Trk::RIO_OnTrack *) const override
Definition: MuonTGMeasurementTool.cxx:603
Muon::MuonTGMeasurementTool::m_muonDetMgr
const MuonGM::MuonDetectorManager * m_muonDetMgr
Definition: MuonTGMeasurementTool.h:86
Muon::MuonTGMeasurementTool::m_tgcProjEta
std::unique_ptr< AmgMatrix(5, 5)> m_tgcProjEta
Definition: MuonTGMeasurementTool.h:89
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
Muon::MuonTGMeasurementTool::m_alignedMode
Gaudi::Property< bool > m_alignedMode
Definition: MuonTGMeasurementTool.h:95
IExtrapolator.h
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
FitterTypes.h
MdtPrepData.h
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::MuonTGMeasurementTool::detElToLayer
const Trk::TrackParameters * detElToLayer(const Trk::Layer *, const Trk::TrackParameters *, Identifier) const override
Definition: MuonTGMeasurementTool.cxx:366
PrepRawData.h
AmgMatrix
#define AmgMatrix(rows, cols)
Definition: EventPrimitives.h:51
IUpdator.h
Track.h
Muon::MuonTGMeasurementTool::match
const Trk::Layer * match(Identifier id, const Trk::Layer *lay) const override
Definition: MuonTGMeasurementTool.cxx:1185
Muon::MuonTGMeasurementTool::associatedLayer
const Trk::Layer * associatedLayer(Identifier id, Amg::Vector3D &gp) const override
Definition: MuonTGMeasurementTool.cxx:1113
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
Trk::TrackingGeometry
Definition: TrackingGeometry.h:67
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
TrackCollection.h
Muon::MuonTGMeasurementTool::residual
double residual(const Trk::Layer *, const Trk::TrackParameters *, const Trk::RIO_OnTrack *) const override
Definition: MuonTGMeasurementTool.cxx:1239
CylinderSurface.h
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::MuonTGMeasurementTool::nearestDetEl
const Identifier nearestDetEl(const Trk::Layer *, const Trk::TrackParameters *, bool measPhi, double &pitch) const override
Definition: MuonTGMeasurementTool.cxx:794
Muon::MuonTGMeasurementTool::MuonTGMeasurementTool
MuonTGMeasurementTool(const std::string &type, const std::string &name, const IInterface *)
Constructor with AlgTool parameters.
Definition: MuonTGMeasurementTool.cxx:34
EventPrimitives.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrackRecordCollection.h
Muon::MuonTGMeasurementTool::PairOfLayerID
std::pair< const Trk::Layer *, std::vector< Identifier > * > PairOfLayerID
Definition: MuonTGMeasurementTool.h:52
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
TrackingVolume.h
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
INavigator.h
ITrackingGeometrySvc.h
Muon::MuonTGMeasurementTool::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
Definition: MuonTGMeasurementTool.h:77
Muon::MuonTGMeasurementTool::m_rpcProjPhi
std::unique_ptr< AmgMatrix(5, 5)> m_rpcProjPhi
Definition: MuonTGMeasurementTool.h:92
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Muon::MuonTGMeasurementTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonTGMeasurementTool.h:75
TrackingGeometry.h
Muon::MuonTGMeasurementTool::PairOfLayerPrd
std::pair< const Trk::Layer *, std::vector< const Trk::PrepRawData * > * > PairOfLayerPrd
Definition: MuonTGMeasurementTool.h:53
AthAlgTool
Definition: AthAlgTool.h:26
Muon::MuonTGMeasurementTool::layerToDetEl
const Trk::TrackParameters * layerToDetEl(const Trk::Layer *, const Trk::TrackParameters *, Identifier) const override
Definition: MuonTGMeasurementTool.cxx:74
RpcPrepData.h
Muon::MuonTGMeasurementTool::m_trackingGeometryReadKey
SG::ReadCondHandleKey< Trk::TrackingGeometry > m_trackingGeometryReadKey
Definition: MuonTGMeasurementTool.h:83
Trk::TrackingVolume
Definition: TrackingVolume.h:121
IMuonIdHelperSvc.h
Muon::MuonTGMeasurementTool::m_trackingGeometrySvc
ServiceHandle< Trk::ITrackingGeometrySvc > m_trackingGeometrySvc
Definition: MuonTGMeasurementTool.h:80
Muon::IMuonTGMeasTool
Definition: IMuonTGMeasTool.h:23
Trk::Layer
Definition: Layer.h:73
ServiceHandle< Muon::IMuonIdHelperSvc >
SG::ReadCondHandle::cptr
const_pointer_type cptr()
Definition: ReadCondHandle.h:67