ATLAS Offline Software
Loading...
Searching...
No Matches
MuonPatternCalibration.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUON_MUONPATTERNCALIBRATION_H
5#define MUON_MUONPATTERNCALIBRATION_H
6
7#include <map>
8#include <string>
9#include <vector>
10
12#include "GaudiKernel/ServiceHandle.h"
13#include "GaudiKernel/ToolHandle.h"
22
23class MdtPrepData;
24
25namespace Muon {
26class MdtPrepData;
29
30class MuonPatternCalibration : public extends<AthAlgTool, IMuonPatternCalibration> {
31 public:
32 using ISPrd = std::pair<Amg::Vector3D, const MuonCluster*>;
33 using ISPrdVec = std::vector<ISPrd>;
34
35 using ISPrdMdt = std::pair<Amg::Vector3D, const MdtPrepData*>;
36 using ISPrdMdtVec = std::vector<ISPrdMdt>;
37 using RegionIdMap = std::map<int, ISPrdMdtVec>;
38
39 struct Region {
40 Region() = default;
41 Amg::Vector3D regionPos{Amg::Vector3D::Zero()};
42 Amg::Vector3D regionDir{Amg::Vector3D::Zero()};
45 bool init{false};
46 };
47
48
49 using RegionMap = std::map<int, Region>;
50
51 struct EtaPhiHits {
52 EtaPhiHits() = default;
53 unsigned int neta{0};
54 unsigned int nphi{0};
55 };
56
57 public:
58 MuonPatternCalibration(const std::string&, const std::string&, const IInterface*);
59 virtual ~MuonPatternCalibration() = default;
60
61 virtual StatusCode initialize() override;
62
63 StatusCode calibrate(const EventContext& ctx, const MuonPatternCombination& pat, ROTsPerRegion& hitsPerRegion) const override;
64 int getRegionId(const Identifier& id) const override;
65 bool checkForPhiMeasurements(const MuonPatternCombination& pat) const override;
66
67 private:
68 StatusCode createRegionMap(const EventContext& ctx, const MuonPatternCombination& pat,
69 RegionMap& regionMap, bool hasPhiMeasurements) const;
70
71 void printRegionMap(const RegionMap& regionMap) const;
72
73 void calibrateRegionMap(const RegionMap& regionMap, IMuonPatternCalibration::ROTsPerRegion& hitsPerRegion) const;
74
75
76 void insertCluster(const MuonCluster& mdt, RegionMap& regionMap, const Amg::Vector3D& patpose,
77 const Amg::Vector3D& patdire, bool hasPhiMeasurements) const;
78
79 void insertMdt(const MdtPrepData& clus, RegionMap& regionMap, const Amg::Vector3D& patpose,
80 const Amg::Vector3D& patdire, bool hasPhiMeasurements) const;
81
82
83 ToolHandle<IMdtDriftCircleOnTrackCreator> m_mdtCreator{
84 this,
85 "MdtCreator",
86 "",
87 }; //<! pointer to mdt rio ontrack creator
88 ToolHandle<IMuonClusterOnTrackCreator> m_clusterCreator{
89 this,
90 "ClusterCreator",
91 "Muon::MuonClusterOnTrackCreator/MuonClusterOnTrackCreator",
92 }; //<! pointer to muon cluster rio ontrack creator
93 PublicToolHandle<MuonEDMPrinterTool> m_printer{
94 this,
95 "Printer",
96 "Muon::MuonEDMPrinterTool",
97 }; //<! tool to print EDM objects
98
100 this,
101 "MuonIdHelperSvc",
102 "Muon::MuonIdHelperSvc/MuonIdHelperSvc",
103 };
104
105 Gaudi::Property<bool> m_doMultiAnalysis{this, "DoMultiChamberAnalysis", true}; //<! use neighbouring chambers during segment finding
106 Gaudi::Property<double> m_dropDistance{this, "DropDistance", 1500.}; //<! hits that are further away than the distance are not added to segmentmaker input
107 Gaudi::Property<double> m_phiAngleCut{this, "AngleCutPhi", 1.e9}; //<! cut on the phi opening angle between chamber and pattern
108 Gaudi::Property<bool> m_doSummary{this, "DoSummary", false};
109 Gaudi::Property<bool> m_recoverTriggerHits{this, "RecoverTriggerHits", true};
110 Gaudi::Property<bool> m_removeDoubleMdtHits{this, "RemoveDoubleMdtHits", true};
111
112 SG::ReadHandleKey<Muon::RpcPrepDataContainer> m_keyRpc{this, "RpcPrepDataContainer","RPC_Measurements"};
113 SG::ReadHandleKey<Muon::TgcPrepDataContainer> m_keyTgc{this, "TgcPrepDataContainer","TGC_Measurements"};
114
117 template <class ContType> StatusCode loadFromStoreGate(const EventContext& ctx,
119 const ContType* & cont_ptr) const;
120};
121
122} // namespace Muon
123
124#endif // MUON_MUONPATTERNCALIBRATION_H
std::vector< ROTRegion > ROTsPerRegion
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Class to represent measurements from the Monitored Drift Tubes.
Definition MdtPrepData.h:33
Base class for Muon cluster RIO_OnTracks.
Gaudi::Property< double > m_dropDistance
Gaudi::Property< bool > m_doSummary
int getRegionId(const Identifier &id) const override
std::pair< Amg::Vector3D, const MdtPrepData * > ISPrdMdt
void printRegionMap(const RegionMap &regionMap) const
StatusCode loadFromStoreGate(const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, const ContType *&cont_ptr) const
load the container from storegate given a ReadHandleKey.
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_keyTgc
void insertCluster(const MuonCluster &mdt, RegionMap &regionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtCreator
StatusCode createRegionMap(const EventContext &ctx, const MuonPatternCombination &pat, RegionMap &regionMap, bool hasPhiMeasurements) const
Gaudi::Property< bool > m_doMultiAnalysis
virtual StatusCode initialize() override
bool checkForPhiMeasurements(const MuonPatternCombination &pat) const override
StatusCode calibrate(const EventContext &ctx, const MuonPatternCombination &pat, ROTsPerRegion &hitsPerRegion) const override
PublicToolHandle< MuonEDMPrinterTool > m_printer
std::map< int, ISPrdMdtVec > RegionIdMap
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_keyRpc
Gaudi::Property< double > m_phiAngleCut
std::vector< ISPrdMdt > ISPrdMdtVec
std::map< int, Region > RegionMap
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Gaudi::Property< bool > m_removeDoubleMdtHits
MuonPatternCalibration(const std::string &, const std::string &, const IInterface *)
void calibrateRegionMap(const RegionMap &regionMap, IMuonPatternCalibration::ROTsPerRegion &hitsPerRegion) const
std::pair< Amg::Vector3D, const MuonCluster * > ISPrd
Gaudi::Property< bool > m_recoverTriggerHits
ToolHandle< IMuonClusterOnTrackCreator > m_clusterCreator
void insertMdt(const MdtPrepData &clus, RegionMap &regionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const
virtual ~MuonPatternCalibration()=default
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
Property holding a SG store/key/clid from which a ReadHandle is made.
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.