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