ATLAS Offline Software
MuonLayerHoughTool.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 MUONHOUGHPATTERNTOOLS_MUONLAYERHOUGHTOOL_H
6 #define MUONHOUGHPATTERNTOOLS_MUONLAYERHOUGHTOOL_H
7 
8 #include <set>
9 
12 #include "GaudiKernel/ServiceHandle.h"
13 #include "GaudiKernel/ToolHandle.h"
29 #include "TFile.h"
30 #include "TTree.h"
35 namespace Trk {
36  class PrepRawData;
37 }
38 
39 
40 namespace MuonHough {
41  class HitDebugInfo;
42 }
43 
44 namespace Muon {
45 
46  class MuonLayerHoughTool : public extends<AthAlgTool, IMuonHoughPatternFinderTool> {
47  public:
48  using HashVec = std::vector<IdentifierHash>;
49  using RegionHashVec = std::vector<HashVec>;
50  using TechnologyRegionHashVec = std::vector<RegionHashVec>;
52 
54  int sector{-1};
56  };
57  typedef std::vector<CollectionsPerSector> CollectionsPerSectorVec;
58 
69 
70  class Road {
71  public:
72  Road(std::shared_ptr<MuonHough::MuonLayerHough::Maximum> seed_) :
73  seed(seed_) { add(seed_); }
74  Road() = default;
76  DetRegIdx neighbouringRegion{DetRegIdx::DetectorRegionUnknown};
78  std::shared_ptr<MuonHough::MuonLayerHough::Maximum> seed{nullptr};
79  void add(std::shared_ptr<MuonHough::MuonLayerHough::Maximum> max) {
80  maxima.emplace_back(max);
81  maximumSet.insert(max);
82  }
83  void add(std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum> max) { phiMaxima.emplace_back(max); }
86 
87  std::set<std::shared_ptr<MuonHough::MuonLayerHough::Maximum>> maximumSet{};
88 
89  std::vector<MuonHough::MuonPhiLayerHough::Maximum> mergedPhiMaxima{};
90  };
91 
93  using base_class::base_class;
95  virtual ~MuonLayerHoughTool() = default;
96 
97  virtual StatusCode initialize() override;
98 
99  virtual std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> find(
100  const MdtPrepDataContainer* mdtCont, const CscPrepDataContainer* cscCols, const TgcPrepDataContainer* tgcCont,
101  const RpcPrepDataContainer* rpcCont, const sTgcPrepDataContainer* stgcCont, const MMPrepDataContainer* mmCont,
102  const EventContext& ctx) const override;
103 
105  virtual std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> find(
106  const std::vector<const MdtPrepDataCollection*>& mdtCols, const std::vector<const CscPrepDataCollection*>& cscCols,
107  const std::vector<const TgcPrepDataCollection*>& tgcCols, const std::vector<const RpcPrepDataCollection*>& rpcCols,
108  const MuonSegmentCombinationCollection*, const EventContext& ctx) const override;
109 
110  private:
112 
113  void getSectors(const Amg::Vector3D& pos, std::vector<int>& sectors) const;
114  void getSectors(const TgcClusterObj3D& tgc, std::vector<int>& sectors) const;
115 
116  double rCor(const Amg::Vector3D& pos, const Identifier& id) const;
117  double rCor(const MuonCluster& rpc) const;
118  double rCor(const MdtPrepData& mdt) const;
119  double rCor(const TgcClusterObj3D& tgc, const TgcEdge val, int sector) const;
120 
121  int sublay(const Identifier& id, float z = 0) const; // the z value is only used for the tgcs
122 
123  struct State {
124  MaximumVec seedMaxima{}; // Does not own the contained objects, they're just references to objects stored in houghDataPerSectorVec.
125  std::unique_ptr<HoughDataPerSectorVec> houghDataPerSectorVec{std::make_unique<HoughDataPerSectorVec>()};
126  std::set<Identifier> truthHits;
127  std::set<Identifier> foundTruthHits;
128  std::set<Identifier> outputTruthHits;
129  };
130 
131  std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> analyse(State& state) const;
132 
133  void fillHitsPerSector(const EventContext& ctx, State& state, const int sector, const CollectionsPerSector& hashes,
134  const MdtPrepDataContainer* mdtCont, const CscPrepDataContainer* cscCont,
135  const TgcPrepDataContainer* tgcCont, const RpcPrepDataContainer* rpcCont,
136  const sTgcPrepDataContainer* stgcCont, const MMPrepDataContainer* mmCont) const;
137 
138  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const MdtPrepDataCollection& mdts, HitVec& hits) const;
139  void fill(const EventContext& ctx, std::set<Identifier>& truthHits,
140  std::vector<std::unique_ptr<TgcHitClusteringObj>>& tgcClusteringObjs, const TgcPrepDataCollection& tgcs, HitVec& hits,
141  PhiHitVec& phiHits, int sector) const;
142  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const RpcPrepDataCollection& rpcs, HitVec& hits,
143  PhiHitVec& phiHits) const;
144  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const MMPrepDataCollection& mdts, HitVec& hits) const;
145  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const sTgcPrepDataCollection& stgcs, HitVec& hits,
146  PhiHitVec& phiHits, int sector) const;
147 
148  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const CscPrepDataCollection& cscs, HitVec& hits,
149  PhiHitVec& phiHits) const;
150 
151  bool findMaxima(MaximumVec& seedMaxima,
154  PhiHitVec& hits, PhiMaximumVec& maxima, int sector) const;
155 
157  std::map<MuonHough::MuonPhiLayerHough::Maximum*, MaximumVec>& phiEtaAssociations,
158  std::vector<MaximumVec>& unassEtaMaxima) const;
159 
161  std::vector<HoughDataPerSector>& houghDataPerSectorVec) const;
162 
163  void extendSeed(MuonHough::MuonDetectorHough& detectorHoughTransforms,
164  Road& road, HoughDataPerSector& sectorData) const; // const;
165  void associatePhiMaxima(Road& road, PhiMaximumVec& phiMaxima) const;
166 
167  double combinedPeakheight(double ph, double ph1, double ph2, double phn, double rot, int layer, int /*region*/) const;
168  void createPatternCombinations(std::vector<MaximumVec>& maxima, MuonPatternCombinationCollection& patternCombis) const;
169 
170  void createPatternCombinations(std::map<MuonHough::MuonPhiLayerHough::Maximum*, MaximumVec>& phiEtaAssociations,
171  MuonPatternCombinationCollection& patternCombis) const;
172 
173  void insertHash(const IdentifierHash& hash, const Identifier& id) const;
174  void insertHash(int sector, const IdentifierHash& hash, const Identifier& id) const;
175 
176  void matchTruth(std::set<Identifier>& truthHits, const PRD_MultiTruthCollection& truthCol, const Identifier& id,
178 
179  void initializeSectorMapping(const EventContext& ctx) const;
180  void printTruthSummary(std::set<Identifier>& truth, std::set<Identifier>& found) const;
181 
182  void buildRoads(MaximumVec& seedMaxima, MuonHough::MuonDetectorHough& detectorHoughTransforms,
183  std::unique_ptr<HoughDataPerSectorVec>& houghDataPerSectorVec,
184  std::vector<Road>& roads) const;
185  void mergePhiMaxima(Road& road) const;
186 
187  Gaudi::Property<bool> m_useSeeds{this, "UseSeeds", true};
188 
189  SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_muonManagerKey{this, "MuonManagerKey", "MuonDetectorManager", "MuonManager ReadKey for IOV Range intersection"};
190 
191 
192  ServiceHandle<IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
193  PublicToolHandle<MuonEDMPrinterTool> m_printer{this, "printerTool", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
194 
195  std::vector<MuonHough::MuonLayerHoughSelector> m_selectors;
196  std::vector<MuonHough::MuonLayerHoughSelector> m_selectorsLoose;
197 
199 
200  Gaudi::Property<bool> m_useRpcTimeVeto{this, "RpcTimeVeto", false};
201  Gaudi::Property<bool> m_requireTriggerConfirmationNSW{this, "TriggerConfirmationNSW", false};
202  Gaudi::Property<bool> m_onlyUseCurrentBunch{this, "OnlyUseCurrentBunch", false};
203  Gaudi::Property<bool> m_debugHough{this, "DebugHough", false};
204  Gaudi::Property<bool> m_doParabolicExtrapolation{this, "DoParabolicExtrapolation",
205  true}; // if true, do parabolic; if false, do linear extrapolation
206  Gaudi::Property<float> m_extrapolationDistance{this, "ExtrapolationDistance", 1500.}; // default value is 1500
207  Gaudi::Property<bool> m_addSectors{this, "AddSectors", false}; // default false
208  unsigned int m_ntechnologies{UINT_MAX};
209  std::map<unsigned int, unsigned int> m_techToTruthNameIdx{}; // mapping the muon technology to the index of the m_truthNames vector
210 
212 
213  mutable std::mutex m_mutex ATLAS_THREAD_SAFE;
214  mutable CollectionsPerSectorVec m_collectionsPerSector ATLAS_THREAD_SAFE;
215  mutable bool m_sectorSetup ATLAS_THREAD_SAFE{false};
216  };
217 
220  return s2->maxEtaHits() < s1->maxEtaHits();
221  }
222  };
223 
224  inline void MuonLayerHoughTool::getSectors(const TgcClusterObj3D& tgc, std::vector<int>& sectors) const {
226  }
227 
228  inline void MuonLayerHoughTool::getSectors(const Amg::Vector3D& pos, std::vector<int>& sectors) const {
229  return m_sectorMapping.getSectors(pos.phi(), sectors);
230  }
231 
232  inline double MuonLayerHoughTool::rCor(const Amg::Vector3D& pos, const Identifier& id) const {
233  return m_sectorMapping.transformRToSector(pos.perp(), pos.phi(), m_idHelperSvc->sector(id));
234  }
235 
236  inline double MuonLayerHoughTool::rCor(const MuonCluster& mm) const { return rCor(mm.globalPosition(), mm.identify()); }
237 
238  inline double MuonLayerHoughTool::rCor(const MdtPrepData& mm) const { return rCor(mm.globalPosition(), mm.identify()); }
239 
240  inline double MuonLayerHoughTool::rCor(const TgcClusterObj3D& tgc, const TgcEdge val, int sector) const {
241  const Amg::Vector3D& pos{tgc.getEdge(val)};
242  return m_sectorMapping.transformRToSector(pos.perp(), pos.phi(), sector);
243  }
244 
245  inline int MuonLayerHoughTool::sublay(const Identifier& id, float /*z*/) const {
246  int sublayer = 0;
247  if (m_idHelperSvc->isMdt(id)) {
248  sublayer = m_idHelperSvc->mdtIdHelper().tubeLayer(id) - 1;
249  if (m_idHelperSvc->mdtIdHelper().multilayer(id) == 2) sublayer += 4;
250  } else if (m_idHelperSvc->isMM(id)) {
251  sublayer = m_idHelperSvc->mmIdHelper().gasGap(id) - 1;
252  if (m_idHelperSvc->mmIdHelper().multilayer(id) == 2) sublayer += 4;
253  sublayer += 600; // type info
254  } else if (m_idHelperSvc->issTgc(id)) {
255  sublayer = m_idHelperSvc->stgcIdHelper().gasGap(id) - 1;
256  if (m_idHelperSvc->stgcIdHelper().multilayer(id) == 2) sublayer += 4;
257  sublayer += 500; // type info
258  } else if (m_idHelperSvc->isRpc(id)) {
259  sublayer = m_idHelperSvc->rpcIdHelper().gasGap(id) - 1;
260  if (m_idHelperSvc->rpcIdHelper().doubletR(id) == 2) sublayer += 2;
261  sublayer += 100; // type info
262  } else if (m_idHelperSvc->isTgc(id)) {
263  sublayer = m_idHelperSvc->tgcIdHelper().gasGap(id) - 1;
264  using namespace MuonStationIndex;
265  StIndex stIndex = m_idHelperSvc->stationIndex(id);
266  if (stIndex == StIndex::EM) {
267  // T1 gets +3; T2 gets +3+3; T3 gets +3+6; T4 gets0 (because it is also EI)
268  PhiIndex phiIndex = m_idHelperSvc->phiIndex(id);
269  sublayer += 3;
270  if (phiIndex == PhiIndex::T2)
271  sublayer += 3;
272  else if (phiIndex == PhiIndex::T3)
273  sublayer += 6;
274  // float fz = fabs(z);
275  // if( fz < 13350 ) sublayer += 0;
276  // else if( fz < 13440 ) sublayer += 3;
277  // else if( fz < 13520 ) sublayer += 6;
278  // else if( fz < 13600 ) sublayer += 9;
279  // else if( fz < 14650 ) sublayer += 12;
280  // else if( fz < 14740 ) sublayer += 15;
281  // else if( fz < 14800 ) sublayer += 18;
282  // else if( fz < 14850 ) sublayer += 21;
283  // else if( fz < 15070 ) sublayer += 24;
284  // else if( fz < 15150 ) sublayer += 27;
285  // else if( fz < 15220 ) sublayer += 30;
286  // else if( fz < 15250 ) sublayer += 33;
287  // else sublayer += 36;
288  }
289  sublayer += 300; // type info
290  }
291  return sublayer;
292  }
293 
294  inline double MuonLayerHoughTool::combinedPeakheight(double ph, double ph1, double ph2, double phn, double /*rot*/, int layer,
295  int /*region*/) const {
296  if (layer == 0 && ph < 3.) return ph;
297  if (layer == 1 && ph < 4.) return ph;
298  if (layer == 2 && ph < 3.) return ph;
299 
300  if (phn > 7) ph += phn;
301 
302  if (layer == 0) {
303  if (ph1 > 6.9) ph += 2;
304  if (ph1 > 8.9) ph += 2;
305  if (ph2 > 5.9) ph += 2;
306  if (ph2 > 7.9) ph += 2;
307  }
308  if (layer == 1) {
309  if (ph1 > 6.9) ph += 2;
310  if (ph2 > 5.9) ph += 2;
311  if (ph2 > 7.9) ph += 2;
312  if (ph2 > 11.9) ph += 2;
313  }
314  if (layer == 2) {
315  if (ph1 > 6.9) ph += 2;
316  if (ph2 > 6.9) ph += 2;
317  if (ph2 > 8.9) ph += 2;
318  }
319  return ph;
320  }
321 
322 } // namespace Muon
323 #endif
python.root_lsr_rank.hashes
hashes
Definition: root_lsr_rank.py:34
Muon::MuonLayerHoughTool::associateMaximaToPhiMaxima
void associateMaximaToPhiMaxima(MuonStationIndex::DetectorRegionIndex region, HoughDataPerSector &houghData, std::map< MuonHough::MuonPhiLayerHough::Maximum *, MaximumVec > &phiEtaAssociations, std::vector< MaximumVec > &unassEtaMaxima) const
Definition: MuonLayerHoughTool.cxx:855
TgcHitClustering.h
MuonRegionHough.h
Muon::MuonPrepDataContainer
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
Definition: MuonPrepDataContainer.h:42
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
python.SystemOfUnits.mm
float mm
Definition: SystemOfUnits.py:98
Muon::MuonLayerHoughTool::RegionPhiHitVec
HoughDataPerSec::RegionPhiHitVec RegionPhiHitVec
Definition: MuonLayerHoughTool.h:62
Muon::MuonLayerHoughTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition: MuonLayerHoughTool.h:193
Muon::MuonLayerHoughTool::HitVec
HoughDataPerSec::HitVec HitVec
Definition: MuonLayerHoughTool.h:59
Muon::MuonSectorMapping::transformRToSector
double transformRToSector(double r, double phi, int sector, bool toSector=true) const
expresses a radial position from and to the sector coordinate frame, the phi position should always b...
Definition: MuonSectorMapping.h:140
MuonEDMPrinterTool.h
Muon::MuonLayerHoughTool::m_muonManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_muonManagerKey
Definition: MuonLayerHoughTool.h:189
Muon::MuonLayerHoughTool::m_selectorsLoose
std::vector< MuonHough::MuonLayerHoughSelector > m_selectorsLoose
Definition: MuonLayerHoughTool.h:196
Muon::MuonLayerHoughTool::m_extrapolationDistance
Gaudi::Property< float > m_extrapolationDistance
Definition: MuonLayerHoughTool.h:206
xAODP4Helpers.h
Muon::MuonStationIndex::StIndex::EM
@ EM
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Muon::MuonLayerHoughTool::combinedPeakheight
double combinedPeakheight(double ph, double ph1, double ph2, double phn, double rot, int layer, int) const
Definition: MuonLayerHoughTool.h:294
Muon::MuonSectorMapping::getSectors
void getSectors(double phi, std::vector< int > &sectors) const
returns the main sector plus neighboring if the phi position is in an overlap region
Definition: MuonSectorMapping.h:97
PRD_MultiTruthCollection
A PRD is mapped onto all contributing particles.
Definition: PRD_MultiTruthCollection.h:24
TruthParticleContainer.h
Muon::MuonLayerHoughTool::rCor
double rCor(const Amg::Vector3D &pos, const Identifier &id) const
Definition: MuonLayerHoughTool.h:232
MuonHough::HitDebugInfo
struct containing additional debug information on the hits that is not needed for the actual alg but ...
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:26
Muon::MuonLayerHoughTool::RegionMaximumVec
HoughDataPerSec::RegionMaximumVec RegionMaximumVec
Definition: MuonLayerHoughTool.h:66
Muon::MuonLayerHoughTool::Road::seed
std::shared_ptr< MuonHough::MuonLayerHough::Maximum > seed
Definition: MuonLayerHoughTool.h:78
Muon::MuonLayerHoughTool::m_useRpcTimeVeto
Gaudi::Property< bool > m_useRpcTimeVeto
Definition: MuonLayerHoughTool.h:200
Muon::MuonLayerHoughTool::initialize
virtual StatusCode initialize() override
Definition: MuonLayerHoughTool.cxx:23
MuonHough::MuonLayerHough
Definition: MuonLayerHough.h:59
Muon::MuonLayerHoughTool::extendSeed
void extendSeed(MuonHough::MuonDetectorHough &detectorHoughTransforms, Road &road, HoughDataPerSector &sectorData) const
Definition: MuonLayerHoughTool.cxx:500
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
Muon::HoughDataPerSec::MaximumAssociationMap
std::map< MuonHough::MuonLayerHough::Maximum *, MaximumVec > MaximumAssociationMap
Definition: HoughDataPerSec.h:33
MMPrepDataContainer.h
Muon::SortHoughDataPerSector::operator()
bool operator()(const MuonLayerHoughTool::HoughDataPerSector *s1, const MuonLayerHoughTool::HoughDataPerSector *s2) const
Definition: MuonLayerHoughTool.h:219
Muon::MuonLayerHoughTool::State::foundTruthHits
std::set< Identifier > foundTruthHits
Definition: MuonLayerHoughTool.h:127
Muon::MuonLayerHoughTool::findMaxima
bool findMaxima(MaximumVec &seedMaxima, MuonHough::MuonLayerHough &hough, HitVec &hits, MaximumVec &maxima) const
Definition: MuonLayerHoughTool.cxx:1277
MuonPrepDataContainer.h
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::MuonLayerHoughTool::HashVec
std::vector< IdentifierHash > HashVec
Definition: MuonLayerHoughTool.h:48
sTgcPrepDataContainer.h
Muon::MuonLayerHoughTool::m_doParabolicExtrapolation
Gaudi::Property< bool > m_doParabolicExtrapolation
Definition: MuonLayerHoughTool.h:204
Muon::MuonLayerHoughTool::MaximumAssociationMap
HoughDataPerSec::MaximumAssociationMap MaximumAssociationMap
Definition: MuonLayerHoughTool.h:65
Muon::MuonLayerHoughTool::Road::maximumSet
std::set< std::shared_ptr< MuonHough::MuonLayerHough::Maximum > > maximumSet
Definition: MuonLayerHoughTool.h:87
Muon::MuonLayerHoughTool::TechnologyRegionHashVec
std::vector< RegionHashVec > TechnologyRegionHashVec
Definition: MuonLayerHoughTool.h:50
Muon::MuonLayerHoughTool::m_ntechnologies
unsigned int m_ntechnologies
Definition: MuonLayerHoughTool.h:208
Muon::MuonLayerHoughTool::ATLAS_THREAD_SAFE
std::mutex m_mutex ATLAS_THREAD_SAFE
Definition: MuonLayerHoughTool.h:213
Muon::HoughDataPerSec::PhiHitVec
MuonHough::PhiHitVec PhiHitVec
Definition: HoughDataPerSec.h:22
MuonSegmentContainer.h
Muon::MuonLayerHoughTool::PhiMaximumVec
HoughDataPerSec::PhiMaximumVec PhiMaximumVec
Definition: MuonLayerHoughTool.h:64
Muon::MuonLayerHoughTool::Road::add
void add(std::shared_ptr< MuonHough::MuonLayerHough::Maximum > max)
Definition: MuonLayerHoughTool.h:79
MuonLayerHough.h
Muon::MuonLayerHoughTool::analyse
std::pair< std::unique_ptr< MuonPatternCombinationCollection >, std::unique_ptr< HoughDataPerSectorVec > > analyse(State &state) const
Definition: MuonLayerHoughTool.cxx:170
GeoPrimitives.h
Muon::TgcClusterObj3D::Edge::LowEtaLowPhi
@ LowEtaLowPhi
Muon::SortHoughDataPerSector
Definition: MuonLayerHoughTool.h:218
Muon::MuonLayerHoughTool::State::seedMaxima
MaximumVec seedMaxima
Definition: MuonLayerHoughTool.h:124
MuonHough::MuonPhiLayerHough
Definition: MuonPhiLayerHough.h:22
Muon::MuonLayerHoughTool::m_techToTruthNameIdx
std::map< unsigned int, unsigned int > m_techToTruthNameIdx
Definition: MuonLayerHoughTool.h:209
Muon::MuonLayerHoughTool::m_onlyUseCurrentBunch
Gaudi::Property< bool > m_onlyUseCurrentBunch
Definition: MuonLayerHoughTool.h:202
z
#define z
python.FPGATrackSimAnalysisConfig.hough
hough
Definition: FPGATrackSimAnalysisConfig.py:758
Muon::TgcClusterObj3D::Edge
Edge
Representation of the four edge points.
Definition: TgcHitClustering.h:30
Muon::MuonLayerHoughTool::Road::add
void add(std::shared_ptr< MuonHough::MuonPhiLayerHough::Maximum > max)
Definition: MuonLayerHoughTool.h:83
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::MuonLayerHoughTool::RegionHitVec
HoughDataPerSec::RegionHitVec RegionHitVec
Definition: MuonLayerHoughTool.h:60
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Muon::MuonLayerHoughTool::Road::maxima
MaximumVec maxima
Definition: MuonLayerHoughTool.h:84
Muon::MuonLayerHoughTool::m_requireTriggerConfirmationNSW
Gaudi::Property< bool > m_requireTriggerConfirmationNSW
Definition: MuonLayerHoughTool.h:201
MuonHough
Definition: MuonLayerHoughTool.h:40
AthAlgTool.h
Muon::MuonLayerHoughTool::initializeSectorMapping
void initializeSectorMapping(const EventContext &ctx) const
Definition: MuonLayerHoughTool.cxx:1868
Muon::MuonLayerHoughTool::insertHash
void insertHash(const IdentifierHash &hash, const Identifier &id) const
Definition: MuonLayerHoughTool.cxx:1857
Muon::HoughDataPerSec::HitVec
MuonHough::HitVec HitVec
Definition: HoughDataPerSec.h:21
Muon::HoughDataPerSec::PhiMaximumVec
std::vector< std::shared_ptr< MuonHough::MuonPhiLayerHough::Maximum > > PhiMaximumVec
Definition: HoughDataPerSec.h:25
MuonPatternCombinationCollection.h
Muon::MuonLayerHoughTool::CollectionsPerSector
Definition: MuonLayerHoughTool.h:53
Muon::HoughDataPerSec::RegionPhiMaximumVec
std::vector< PhiMaximumVec > RegionPhiMaximumVec
Definition: HoughDataPerSec.h:34
Muon::MuonLayerHoughTool::createPatternCombinations
void createPatternCombinations(std::vector< MaximumVec > &maxima, MuonPatternCombinationCollection &patternCombis) const
Muon::MuonLayerHoughTool::mergePhiMaxima
void mergePhiMaxima(Road &road) const
Definition: MuonLayerHoughTool.cxx:416
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
DataVector< Muon::MuonSegmentCombination >
Muon::MuonLayerHoughTool::Road::mergedPhiMaxima
std::vector< MuonHough::MuonPhiLayerHough::Maximum > mergedPhiMaxima
Definition: MuonLayerHoughTool.h:89
Muon::MuonLayerHoughTool::CollectionsPerSectorVec
std::vector< CollectionsPerSector > CollectionsPerSectorVec
Definition: MuonLayerHoughTool.h:57
Muon::MuonLayerHoughTool::MaximumVec
HoughDataPerSec::MaximumVec MaximumVec
Definition: MuonLayerHoughTool.h:63
Muon::MuonStationIndex::StIndex
StIndex
enum to classify the different station layers in the muon spectrometer
Definition: MuonStationIndex.h:23
Muon::MuonLayerHoughTool::State::truthHits
std::set< Identifier > truthHits
Definition: MuonLayerHoughTool.h:126
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Muon::MuonLayerHoughTool::State
Definition: MuonLayerHoughTool.h:123
Muon::HoughDataPerSec::RegionMaximumVec
std::vector< MaximumVec > RegionMaximumVec
Definition: HoughDataPerSec.h:28
Muon::MuonLayerHoughTool::Road
Definition: MuonLayerHoughTool.h:70
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
Muon::MuonLayerHoughTool::associateMaximaInNeighbouringSectors
void associateMaximaInNeighbouringSectors(HoughDataPerSector &houghData, std::vector< HoughDataPerSector > &houghDataPerSectorVec) const
Definition: MuonLayerHoughTool.cxx:780
Muon::MuonLayerHoughTool::Road::neighbouringRegion
DetRegIdx neighbouringRegion
Definition: MuonLayerHoughTool.h:76
Muon::MuonLayerHoughTool::sublay
int sublay(const Identifier &id, float z=0) const
Definition: MuonLayerHoughTool.h:245
MuonHough::MuonDetectorHough
class managing all Hough transforms in the detector
Definition: MuonRegionHough.h:66
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
Muon::MdtPrepData
Class to represent measurements from the Monitored Drift Tubes.
Definition: MdtPrepData.h:33
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::MuonLayerHoughTool::associatePhiMaxima
void associatePhiMaxima(Road &road, PhiMaximumVec &phiMaxima) const
Definition: MuonLayerHoughTool.cxx:652
Muon::TgcClusterObj3D::getEdge
Amg::Vector3D & getEdge(const Edge e)
Definition: TgcHitClustering.h:36
Muon::TgcClusterObj3D
Definition: TgcHitClustering.h:19
Muon::MuonStationIndex::PhiIndex
PhiIndex
enum to classify the different phi layers in the muon spectrometer
Definition: MuonStationIndex.h:31
MuonDetectorManager.h
Muon::MuonLayerHoughTool::printTruthSummary
void printTruthSummary(std::set< Identifier > &truth, std::set< Identifier > &found) const
Definition: MuonLayerHoughTool.cxx:1994
Muon::HoughDataPerSec
Definition: HoughDataPerSec.h:20
Muon::MuonLayerHoughTool::matchTruth
void matchTruth(std::set< Identifier > &truthHits, const PRD_MultiTruthCollection &truthCol, const Identifier &id, MuonHough::HitDebugInfo &debug) const
Definition: MuonLayerHoughTool.cxx:1462
MuonPhiLayerHough.h
Muon::MuonLayerHoughTool::find
virtual std::pair< std::unique_ptr< MuonPatternCombinationCollection >, std::unique_ptr< HoughDataPerSectorVec > > find(const MdtPrepDataContainer *mdtCont, const CscPrepDataContainer *cscCols, const TgcPrepDataContainer *tgcCont, const RpcPrepDataContainer *rpcCont, const sTgcPrepDataContainer *stgcCont, const MMPrepDataContainer *mmCont, const EventContext &ctx) const override
Definition: MuonLayerHoughTool.cxx:147
Muon::MuonLayerHoughTool::getSectors
void getSectors(const Amg::Vector3D &pos, std::vector< int > &sectors) const
Definition: MuonLayerHoughTool.h:228
Muon::MuonLayerHoughTool::Road::phiMaxima
PhiMaximumVec phiMaxima
Definition: MuonLayerHoughTool.h:85
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Muon::MuonLayerHoughTool::m_addSectors
Gaudi::Property< bool > m_addSectors
Definition: MuonLayerHoughTool.h:207
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
Muon::MuonLayerHoughTool::fill
void fill(const EventContext &ctx, std::set< Identifier > &truthHits, const MdtPrepDataCollection &mdts, HitVec &hits) const
Definition: MuonLayerHoughTool.cxx:1481
Muon::HoughDataPerSec::RegionHitVec
std::vector< HitVec > RegionHitVec
Definition: HoughDataPerSec.h:27
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
Muon::MuonLayerHoughTool::m_useSeeds
Gaudi::Property< bool > m_useSeeds
Definition: MuonLayerHoughTool.h:187
Muon::MuonLayerHoughTool::fillHitsPerSector
void fillHitsPerSector(const EventContext &ctx, State &state, const int sector, const CollectionsPerSector &hashes, const MdtPrepDataContainer *mdtCont, const CscPrepDataContainer *cscCont, const TgcPrepDataContainer *tgcCont, const RpcPrepDataContainer *rpcCont, const sTgcPrepDataContainer *stgcCont, const MMPrepDataContainer *mmCont) const
Definition: MuonLayerHoughTool.cxx:1421
Muon::MuonLayerHoughTool::PhiHitVec
HoughDataPerSec::PhiHitVec PhiHitVec
Definition: MuonLayerHoughTool.h:61
IMuonHoughPatternFinderTool.h
HoughDataPerSec.h
MuonSectorMapping.h
Muon::MuonStationIndex::PhiIndex::T3
@ T3
Muon::MuonLayerHoughTool::m_truthNames
SG::ReadHandleKeyArray< PRD_MultiTruthCollection > m_truthNames
Definition: MuonLayerHoughTool.h:198
Muon::MuonStationIndex::DetectorRegionIndex
DetectorRegionIndex
enum to classify the different layers in the muon spectrometer
Definition: MuonStationIndex.h:47
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108
Muon::MuonStationIndex::PhiIndex::T2
@ T2
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
Muon::MuonLayerHoughTool::CollectionsPerSector::technologyRegionHashVecs
TechnologyRegionHashVec technologyRegionHashVecs
Definition: MuonLayerHoughTool.h:55
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
Muon::MuonLayerHoughTool::Road::Road
Road(std::shared_ptr< MuonHough::MuonLayerHough::Maximum > seed_)
Definition: MuonLayerHoughTool.h:72
Muon::MuonLayerHoughTool::RegionHashVec
std::vector< HashVec > RegionHashVec
Definition: MuonLayerHoughTool.h:49
Muon::MuonLayerHoughTool::RegionPhiMaximumVec
HoughDataPerSec::RegionPhiMaximumVec RegionPhiMaximumVec
Definition: MuonLayerHoughTool.h:67
Muon::MuonLayerHoughTool::ATLAS_THREAD_SAFE
CollectionsPerSectorVec m_collectionsPerSector ATLAS_THREAD_SAFE
Definition: MuonLayerHoughTool.h:214
Muon::MuonLayerHoughTool::buildRoads
void buildRoads(MaximumVec &seedMaxima, MuonHough::MuonDetectorHough &detectorHoughTransforms, std::unique_ptr< HoughDataPerSectorVec > &houghDataPerSectorVec, std::vector< Road > &roads) const
Definition: MuonLayerHoughTool.cxx:300
PRD_MultiTruthCollection.h
Muon::MuonLayerHoughTool::CollectionsPerSector::sector
int sector
Definition: MuonLayerHoughTool.h:54
Muon::MuonLayerHoughTool::m_sectorMapping
MuonSectorMapping m_sectorMapping
Definition: MuonLayerHoughTool.h:211
Muon::MuonSectorMapping
Definition: MuonSectorMapping.h:20
Muon::MuonCluster
Class representing clusters in the muon system.
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonCluster.h:37
Muon::MuonLayerHoughTool::m_debugHough
Gaudi::Property< bool > m_debugHough
Definition: MuonLayerHoughTool.h:203
Muon::MuonLayerHoughTool::m_idHelperSvc
ServiceHandle< IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonLayerHoughTool.h:192
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
Muon::HoughDataPerSec::RegionPhiHitVec
std::vector< PhiHitVec > RegionPhiHitVec
Definition: HoughDataPerSec.h:32
Muon::MuonLayerHoughTool::Road::Road
Road()=default
Muon::MuonLayerHoughTool
Definition: MuonLayerHoughTool.h:46
MuonLayerHoughSelector.h
Muon::MuonLayerHoughTool::Road::neighbouringSector
int neighbouringSector
Definition: MuonLayerHoughTool.h:77
Muon::HoughDataPerSec::MaximumVec
std::vector< std::shared_ptr< MuonHough::MuonLayerHough::Maximum > > MaximumVec
Definition: HoughDataPerSec.h:24
IMuonIdHelperSvc.h
Muon::MuonLayerHoughTool::~MuonLayerHoughTool
virtual ~MuonLayerHoughTool()=default
Destructor.
Muon::MuonLayerHoughTool::m_selectors
std::vector< MuonHough::MuonLayerHoughSelector > m_selectors
Definition: MuonLayerHoughTool.h:195
Muon::MuonLayerHoughTool::State::houghDataPerSectorVec
std::unique_ptr< HoughDataPerSectorVec > houghDataPerSectorVec
Definition: MuonLayerHoughTool.h:125
ServiceHandle
Definition: ClusterMakerTool.h:37
Identifier
Definition: IdentifierFieldParser.cxx:14
Muon::MuonLayerHoughTool::State::outputTruthHits
std::set< Identifier > outputTruthHits
Definition: MuonLayerHoughTool.h:128