ATLAS Offline Software
Loading...
Searching...
No Matches
MuonSegmentRegionRecoveryTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
11
12#ifndef MUON_MUONSEGMENTREGIONRECOVERYTOOL_H
13#define MUON_MUONSEGMENTREGIONRECOVERYTOOL_H
14
15#include <map>
16#include <set>
17
46#include "TrkTrack/Track.h"
49
50class IRoiDescriptor;
51
52namespace Trk {
53 class Track;
54 class TrkDetElementBase;
55 class MeasurementBase;
56} // namespace Trk
57
58namespace Muon {
59
66
67 class MuonSegmentRegionRecoveryTool : public extends<AthAlgTool, IMuonHoleRecoveryTool> {
68 public:
69 struct MuonData {
70 std::set<IdentifierHash> mdt;
71 std::map<MuonStationIndex::ChIndex, std::set<IdentifierHash> > mdtPerStation;
72 std::set<IdentifierHash> mdtTrack;
73 std::vector<const MdtPrepDataCollection*> mdtCols;
74 std::set<IdentifierHash> rpc;
75 std::set<IdentifierHash> rpcTrack;
76 std::vector<const RpcPrepDataCollection*> rpcCols;
77 std::set<IdentifierHash> tgc;
78 std::set<IdentifierHash> tgcTrack;
79 std::vector<const TgcPrepDataCollection*> tgcCols;
80 std::set<IdentifierHash> csc;
81 std::set<IdentifierHash> cscTrack;
82 std::vector<const CscPrepDataCollection*> cscCols;
83 // New Small Wheel
84 std::set<IdentifierHash> stgc;
85 std::set<IdentifierHash> stgcTrack;
86 std::vector<const sTgcPrepDataCollection*> stgcCols;
87 std::set<IdentifierHash> mm;
88 std::set<IdentifierHash> mmTrack;
89 std::vector<const MMPrepDataCollection*> mmCols;
90 };
91
92 public:
94 using base_class::base_class;
96 virtual ~MuonSegmentRegionRecoveryTool() = default;
97
99 virtual StatusCode initialize() override;
100
102 virtual std::unique_ptr<Trk::Track> recover(const Trk::Track& track, const EventContext& ctx) const override;
103
104 void createHoleTSOSsForClusterChamber(const Identifier& detElId, const EventContext& ctx, const Trk::TrackParameters& pars,
105 std::set<Identifier>& layIds,
106 std::vector<std::unique_ptr<const Trk::TrackStateOnSurface> >& states) const override;
107
108 private:
109 std::unique_ptr<const Trk::TrackParameters> reachableDetEl(const EventContext& ctx, const Trk::Track& track,
110 const Trk::TrkDetElementBase& detEl, bool smallerBounds = false) const;
112
113 // Collect hashes through extrapolation
114 void collectCrossedChambers( const EventContext& ctx, const Trk::Track& track, MuonData& data) const;
115
116 // Fill already on track chamber std::set
117 void fillOnTrackChambers(const Trk::Track& theTrack, MuonData& data) const;
118 // Select hashes of chambers not yet on track
119 std::unique_ptr<Trk::Track> addMissingChambers(const EventContext& ctx, const Trk::Track& track, MuonData& data, bool addMdt) const;
120
121 void addHashes( const EventContext& ctx, MuonStationIndex::TechnologyIndex type, const IRoiDescriptor& roi, std::set<IdentifierHash>& hashes,
122 const std::set<IdentifierHash>& exclusion) const;
123
124 std::unique_ptr<Trk::Track> findHoles(const EventContext& ctx, const Trk::Track& track, MuonData& data) const;
125
126
127 ServiceHandle<IMuonEDMHelperSvc> m_edmHelperSvc{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
128 "Handle to the service providing the IMuonEDMHelperSvc interface"};
129
130 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
131
132 ToolHandle<IMuonSeededSegmentFinder> m_seededSegmentFinder{this, "SeededSegmentFinder",
133 "Muon::MuonSeededSegmentFinder/MuonSeededSegmentFinder"};
134 ToolHandle<IMuonTrackSegmentMatchingTool> m_trackSegmentMatchingTool{this, "TrackSegmentMatchingTool",
135 "Muon::MooCandidateMatchingTool/MooCandidateMatchingTool"};
136
137 ToolHandle<MuonChamberHoleRecoveryTool> m_chamberHoleRecoveryTool{this, "ChamberHoleRecoveryTool", "", "hit-based hole search"};
138 ToolHandle<Trk::IExtrapolator> m_extrapolator{this, "Extrapolator", "Trk::Extrapolator/MuonExtrapolator"};
139 ToolHandle<Rec::ICombinedMuonTrackFitter> m_builder{this, "Builder", ""};
140 ToolHandle<Trk::ITrackFitter> m_fitter{this, "Fitter", "Trk::GlobalChi2Fitter/MCTBSLFitter"};
141 ToolHandle<IMuonHitSummaryTool> m_hitSummaryTool{this, "HitSummaryTool", "Muon::MuonHitSummaryTool/MuonHitSummaryTool"};
142 ToolHandle<IRegSelTool> m_regsel_mdt{this, "MDTRegionSelector", "RegSelTool/RegSelTool_MDT"};
143 ToolHandle<IRegSelTool> m_regsel_csc{this, "CSCRegionSelector", "RegSelTool/RegSelTool_CSC"};
144 ToolHandle<IRegSelTool> m_regsel_rpc{this, "RPCRegionSelector", "RegSelTool/RegSelTool_RPC"};
145 ToolHandle<IRegSelTool> m_regsel_tgc{this, "TGCRegionSelector", "RegSelTool/RegSelTool_TGC"};
146 ToolHandle<IRegSelTool> m_regsel_stgc{this, "STGCRegionSelector", "RegSelTool/RegSelTool_STGC"};
147 ToolHandle<IRegSelTool> m_regsel_mm{this, "MMRegionSelector", "RegSelTool/RegSelTool_MM"};
148 PublicToolHandle<MuonEDMPrinterTool> m_printer{this, "EDMPrinter", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
149 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trackSummaryTool{this, "TrackSummaryTool", "MuonTrackSummaryTool"};
150
151 SG::ReadCondHandleKey<Muon::MuonIntersectGeoData> m_chamberGeoKey{this, "ChamberGeoKey", "MuonStationIntersects", "Pointer to hole search service"};
152 SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_DetectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager",
153 "Key of input MuonDetectorManager condition data"};
154
155 // properties
156 Gaudi::Property<double> m_deta{this, "DeltaEtaRegion", 0.05};
157 Gaudi::Property<double> m_dphi{this, "DeltaPhiRegion", 0.1};
158 Gaudi::Property<bool> m_excludeEES{this, "ExcludeEES", true};
159 Gaudi::Property<bool> m_onlyEO{this, "OnlyEO", false};
160 Gaudi::Property<bool> m_useFitterOutlierLogic{this, "UseFitterOutlierLogic", true};
161
162 Gaudi::Property<bool> m_recoverMM{this, "RecoverMM", true, "Pick up dropped micromega chambers"};
163 Gaudi::Property<bool> m_recoverSTGC{this, "RecoverSTGC", true, "Pick up dropped sTGC chambers"};
164 };
165} // namespace Muon
166
167#endif
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
Describes the API of the Region of Ineterest geometry.
Implementation of an IMuonHoleRecoveryTool.
void fillOnTrackChambers(const Trk::Track &theTrack, MuonData &data) const
std::unique_ptr< const Trk::TrackParameters > reachableDetEl(const EventContext &ctx, const Trk::Track &track, const Trk::TrkDetElementBase &detEl, bool smallerBounds=false) const
ToolHandle< MuonChamberHoleRecoveryTool > m_chamberHoleRecoveryTool
PublicToolHandle< MuonEDMPrinterTool > m_printer
std::unique_ptr< Trk::Track > addMissingChambers(const EventContext &ctx, const Trk::Track &track, MuonData &data, bool addMdt) const
ToolHandle< IMuonHitSummaryTool > m_hitSummaryTool
virtual std::unique_ptr< Trk::Track > recover(const Trk::Track &track, const EventContext &ctx) const override
returns a new track with segments recovered using RegionSelector
void addHashes(const EventContext &ctx, MuonStationIndex::TechnologyIndex type, const IRoiDescriptor &roi, std::set< IdentifierHash > &hashes, const std::set< IdentifierHash > &exclusion) const
std::unique_ptr< Trk::Track > findHoles(const EventContext &ctx, const Trk::Track &track, MuonData &data) const
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
virtual StatusCode initialize() override
AlgTool initialize.
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
SG::ReadCondHandleKey< Muon::MuonIntersectGeoData > m_chamberGeoKey
ToolHandle< Trk::IExtrapolator > m_extrapolator
void createHoleTSOSsForClusterChamber(const Identifier &detElId, const EventContext &ctx, const Trk::TrackParameters &pars, std::set< Identifier > &layIds, std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > &states) const override
void collectCrossedChambers(const EventContext &ctx, const Trk::Track &track, MuonData &data) const
methods used by recover
virtual ~MuonSegmentRegionRecoveryTool()=default
destructor
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
ToolHandle< IMuonSeededSegmentFinder > m_seededSegmentFinder
ToolHandle< Rec::ICombinedMuonTrackFitter > m_builder
ToolHandle< IMuonTrackSegmentMatchingTool > m_trackSegmentMatchingTool
This is the base class for all tracking detector elements with read-out relevant information.
TechnologyIndex
enum to classify the different layers in the muon spectrometer
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters
std::vector< const TgcPrepDataCollection * > tgcCols
std::map< MuonStationIndex::ChIndex, std::set< IdentifierHash > > mdtPerStation
std::vector< const RpcPrepDataCollection * > rpcCols
std::vector< const MMPrepDataCollection * > mmCols
std::vector< const MdtPrepDataCollection * > mdtCols
std::vector< const sTgcPrepDataCollection * > stgcCols
std::vector< const CscPrepDataCollection * > cscCols