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"
35 namespace Trk {
36  class PrepRawData;
37 }
38 
39 namespace MuonGM {
40  class MuonDetectorManager;
41 }
42 namespace MuonHough {
43  class HitDebugInfo;
44 }
45 
46 namespace Muon {
47 
49  public:
50  typedef std::vector<IdentifierHash> HashVec;
51  typedef std::vector<HashVec> RegionHashVec;
52  typedef std::vector<RegionHashVec> TechnologyRegionHashVec;
53 
55  int sector;
57  };
58  typedef std::vector<CollectionsPerSector> CollectionsPerSectorVec;
59 
69 
71 
73 
74  class Road {
75  public:
76  Road(std::shared_ptr<MuonHough::MuonLayerHough::Maximum> seed_) : seed(seed_) { add(seed_); }
77  Road() = default;
80  std::shared_ptr<MuonHough::MuonLayerHough::Maximum> seed{nullptr};
81  void add(std::shared_ptr<MuonHough::MuonLayerHough::Maximum> max) {
82  maxima.emplace_back(max);
83  maximumSet.insert(max);
84  }
85  void add(std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum> max) { phiMaxima.emplace_back(max); }
88  std::set<std::shared_ptr<MuonHough::MuonLayerHough::Maximum>> maximumSet;
89 
90  std::vector<MuonHough::MuonPhiLayerHough::Maximum> mergedPhiMaxima;
91  };
92 
94  MuonLayerHoughTool(const std::string& type, const std::string& name, const IInterface* parent);
95 
97  virtual ~MuonLayerHoughTool() = default;
98 
99  virtual StatusCode initialize() override;
100 
101  virtual std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> find(
102  const MdtPrepDataContainer* mdtCont, const CscPrepDataContainer* cscCols, const TgcPrepDataContainer* tgcCont,
103  const RpcPrepDataContainer* rpcCont, const sTgcPrepDataContainer* stgcCont, const MMPrepDataContainer* mmCont,
104  const EventContext& ctx) const override;
105 
107  virtual std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> find(
108  const std::vector<const MdtPrepDataCollection*>& mdtCols, const std::vector<const CscPrepDataCollection*>& cscCols,
109  const std::vector<const TgcPrepDataCollection*>& tgcCols, const std::vector<const RpcPrepDataCollection*>& rpcCols,
110  const MuonSegmentCombinationCollection*, const EventContext& ctx) const override;
111 
112  private:
114 
115  void getSectors(const Amg::Vector3D& pos, std::vector<int>& sectors) const;
116  void getSectors(const TgcClusterObj3D& tgc, std::vector<int>& sectors) const;
117 
118  double rCor(const Amg::Vector3D& pos, const Identifier& id) const;
119  double rCor(const MuonCluster& rpc) const;
120  double rCor(const MdtPrepData& mdt) const;
121  double rCor(const TgcClusterObj3D& tgc, const TgcEdge val, int sector) const;
122 
123  int sublay(const Identifier& id, float z = 0) const; // the z value is only used for the tgcs
124 
125  struct State {
126  MaximumVec
127  seedMaxima; // Does not own the contained objects, they're just references to objects stored in houghDataPerSectorVec.
128  std::unique_ptr<HoughDataPerSectorVec> houghDataPerSectorVec{std::make_unique<HoughDataPerSectorVec>()};
129  std::set<Identifier> truthHits;
130  std::set<Identifier> foundTruthHits;
131  std::set<Identifier> outputTruthHits;
132  };
133 
134  std::pair<std::unique_ptr<MuonPatternCombinationCollection>, std::unique_ptr<HoughDataPerSectorVec>> analyse(State& state) const;
135 
136  void fillHitsPerSector(const EventContext& ctx, State& state, const int sector, const CollectionsPerSector& hashes,
137  const MdtPrepDataContainer* mdtCont, const CscPrepDataContainer* cscCont,
138  const TgcPrepDataContainer* tgcCont, const RpcPrepDataContainer* rpcCont,
139  const sTgcPrepDataContainer* stgcCont, const MMPrepDataContainer* mmCont) const;
140 
141  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const MdtPrepDataCollection& mdts, HitVec& hits) const;
142  void fill(const EventContext& ctx, std::set<Identifier>& truthHits,
143  std::vector<std::unique_ptr<TgcHitClusteringObj>>& tgcClusteringObjs, const TgcPrepDataCollection& tgcs, HitVec& hits,
144  PhiHitVec& phiHits, int sector) const;
145  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const RpcPrepDataCollection& rpcs, HitVec& hits,
146  PhiHitVec& phiHits) const;
147  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const MMPrepDataCollection& mdts, HitVec& hits) const;
148  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const sTgcPrepDataCollection& stgcs, HitVec& hits,
149  PhiHitVec& phiHits, int sector) const;
150 
151  void fill(const EventContext& ctx, std::set<Identifier>& truthHits, const CscPrepDataCollection& cscs, HitVec& hits,
152  PhiHitVec& phiHits) const;
153 
154  bool findMaxima(MaximumVec& seedMaxima,
155  MuonHough::MuonLayerHough& hough, HitVec& hits, MaximumVec& maxima) const;
157  PhiHitVec& hits, PhiMaximumVec& maxima, int sector) const;
158 
160  std::map<MuonHough::MuonPhiLayerHough::Maximum*, MaximumVec>& phiEtaAssociations,
161  std::vector<MaximumVec>& unassEtaMaxima) const;
162 
164  std::vector<HoughDataPerSector>& houghDataPerSectorVec) const;
165 
166  void extendSeed(MuonHough::MuonDetectorHough& detectorHoughTransforms,
167  Road& road, HoughDataPerSector& sectorData) const; // const;
168  void associatePhiMaxima(Road& road, PhiMaximumVec& phiMaxima) const;
169 
170  double combinedPeakheight(double ph, double ph1, double ph2, double phn, double rot, int layer, int /*region*/) const;
171  void createPatternCombinations(std::vector<MaximumVec>& maxima, MuonPatternCombinationCollection& patternCombis) const;
172 
173  void createPatternCombinations(std::map<MuonHough::MuonPhiLayerHough::Maximum*, MaximumVec>& phiEtaAssociations,
174  MuonPatternCombinationCollection& patternCombis) const;
175 
176  void insertHash(const IdentifierHash& hash, const Identifier& id);
177  void insertHash(int sector, const IdentifierHash& hash, const Identifier& id);
178 
179  void matchTruth(std::set<Identifier>& truthHits, const PRD_MultiTruthCollection& truthCol, const Identifier& id,
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  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
192  PublicToolHandle<MuonEDMPrinterTool> m_printer{this, "printerTool", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
193 
194  std::vector<MuonHough::MuonLayerHoughSelector> m_selectors;
195  std::vector<MuonHough::MuonLayerHoughSelector> m_selectorsLoose;
196 
198 
199  Gaudi::Property<bool> m_useRpcTimeVeto{this, "RpcTimeVeto", false};
200  Gaudi::Property<bool> m_requireTriggerConfirmationNSW{this, "TriggerConfirmationNSW", false};
201  Gaudi::Property<bool> m_onlyUseCurrentBunch{this, "OnlyUseCurrentBunch", false};
202  Gaudi::Property<bool> m_debugHough{this, "DebugHough", false};
203  Gaudi::Property<bool> m_doParabolicExtrapolation{this, "DoParabolicExtrapolation",
204  true}; // if true, do parabolic; if false, do linear extrapolation
205  Gaudi::Property<float> m_extrapolationDistance{this, "ExtrapolationDistance", 1500.}; // default value is 1500
206  Gaudi::Property<bool> m_addSectors{this, "AddSectors", false}; // default false
207  unsigned int m_ntechnologies{UINT_MAX};
208  std::map<unsigned int, unsigned int> m_techToTruthNameIdx{}; // mapping the muon technology to the index of the m_truthNames vector
210 
212  };
213 
216  return s2->maxEtaHits() < s1->maxEtaHits();
217  }
218  };
219 
220  inline void MuonLayerHoughTool::getSectors(const TgcClusterObj3D& tgc, std::vector<int>& sectors) const {
222  }
223 
224  inline void MuonLayerHoughTool::getSectors(const Amg::Vector3D& pos, std::vector<int>& sectors) const {
225  return m_sectorMapping.getSectors(pos.phi(), sectors);
226  }
227 
228  inline double MuonLayerHoughTool::rCor(const Amg::Vector3D& pos, const Identifier& id) const {
229  return m_sectorMapping.transformRToSector(pos.perp(), pos.phi(), m_idHelperSvc->sector(id));
230  }
231 
232  inline double MuonLayerHoughTool::rCor(const MuonCluster& mm) const { return rCor(mm.globalPosition(), mm.identify()); }
233 
234  inline double MuonLayerHoughTool::rCor(const MdtPrepData& mm) const { return rCor(mm.globalPosition(), mm.identify()); }
235 
236  inline double MuonLayerHoughTool::rCor(const TgcClusterObj3D& tgc, const TgcEdge val, int sector) const {
237  const Amg::Vector3D& pos{tgc.getEdge(val)};
238  return m_sectorMapping.transformRToSector(pos.perp(), pos.phi(), sector);
239  }
240 
241  inline int MuonLayerHoughTool::sublay(const Identifier& id, float /*z*/) const {
242  int sublayer = 0;
243  if (m_idHelperSvc->isMdt(id)) {
244  sublayer = m_idHelperSvc->mdtIdHelper().tubeLayer(id) - 1;
245  if (m_idHelperSvc->mdtIdHelper().multilayer(id) == 2) sublayer += 4;
246  } else if (m_idHelperSvc->isMM(id)) {
247  sublayer = m_idHelperSvc->mmIdHelper().gasGap(id) - 1;
248  if (m_idHelperSvc->mmIdHelper().multilayer(id) == 2) sublayer += 4;
249  sublayer += 600; // type info
250  } else if (m_idHelperSvc->issTgc(id)) {
251  sublayer = m_idHelperSvc->stgcIdHelper().gasGap(id) - 1;
252  if (m_idHelperSvc->stgcIdHelper().multilayer(id) == 2) sublayer += 4;
253  sublayer += 500; // type info
254  } else if (m_idHelperSvc->isRpc(id)) {
255  sublayer = m_idHelperSvc->rpcIdHelper().gasGap(id) - 1;
256  if (m_idHelperSvc->rpcIdHelper().doubletR(id) == 2) sublayer += 2;
257  sublayer += 100; // type info
258  } else if (m_idHelperSvc->isTgc(id)) {
259  sublayer = m_idHelperSvc->tgcIdHelper().gasGap(id) - 1;
260  Muon::MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
261  if (stIndex == Muon::MuonStationIndex::EM) {
262  // T1 gets +3; T2 gets +3+3; T3 gets +3+6; T4 gets0 (because it is also EI)
264  sublayer += 3;
266  sublayer += 3;
268  sublayer += 6;
269  // float fz = fabs(z);
270  // if( fz < 13350 ) sublayer += 0;
271  // else if( fz < 13440 ) sublayer += 3;
272  // else if( fz < 13520 ) sublayer += 6;
273  // else if( fz < 13600 ) sublayer += 9;
274  // else if( fz < 14650 ) sublayer += 12;
275  // else if( fz < 14740 ) sublayer += 15;
276  // else if( fz < 14800 ) sublayer += 18;
277  // else if( fz < 14850 ) sublayer += 21;
278  // else if( fz < 15070 ) sublayer += 24;
279  // else if( fz < 15150 ) sublayer += 27;
280  // else if( fz < 15220 ) sublayer += 30;
281  // else if( fz < 15250 ) sublayer += 33;
282  // else sublayer += 36;
283  }
284  sublayer += 300; // type info
285  }
286  return sublayer;
287  }
288 
289  inline double MuonLayerHoughTool::combinedPeakheight(double ph, double ph1, double ph2, double phn, double /*rot*/, int layer,
290  int /*region*/) const {
291  if (layer == 0 && ph < 3.) return ph;
292  if (layer == 1 && ph < 4.) return ph;
293  if (layer == 2 && ph < 3.) return ph;
294 
295  if (phn > 7) ph += phn;
296 
297  if (layer == 0) {
298  if (ph1 > 6.9) ph += 2;
299  if (ph1 > 8.9) ph += 2;
300  if (ph2 > 5.9) ph += 2;
301  if (ph2 > 7.9) ph += 2;
302  }
303  if (layer == 1) {
304  if (ph1 > 6.9) ph += 2;
305  if (ph2 > 5.9) ph += 2;
306  if (ph2 > 7.9) ph += 2;
307  if (ph2 > 11.9) ph += 2;
308  }
309  if (layer == 2) {
310  if (ph1 > 6.9) ph += 2;
311  if (ph2 > 6.9) ph += 2;
312  if (ph2 > 8.9) ph += 2;
313  }
314  return ph;
315  }
316 
317 } // namespace Muon
318 #endif
python.root_lsr_rank.hashes
hashes
Definition: root_lsr_rank.py:34
Muon::MuonLayerHoughTool::RegionHitVec
HoughDataPerSec::RegionHitVec RegionHitVec
Definition: MuonLayerHoughTool.h:61
Muon::MuonLayerHoughTool::initializeSectorMapping
void initializeSectorMapping(const MuonGM::MuonDetectorManager *detMgr)
Definition: MuonLayerHoughTool.cxx:1897
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
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
max
#define max(a, b)
Definition: cfImp.cxx:41
Muon::MuonLayerHoughTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition: MuonLayerHoughTool.h:192
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:136
MuonEDMPrinterTool.h
Muon::MuonLayerHoughTool::m_selectorsLoose
std::vector< MuonHough::MuonLayerHoughSelector > m_selectorsLoose
Definition: MuonLayerHoughTool.h:195
Muon::MuonLayerHoughTool::m_extrapolationDistance
Gaudi::Property< float > m_extrapolationDistance
Definition: MuonLayerHoughTool.h:205
xAODP4Helpers.h
Muon::MuonLayerHoughTool::Road::neighbouringRegion
MuonStationIndex::DetectorRegionIndex neighbouringRegion
Definition: MuonLayerHoughTool.h:78
Muon::MuonLayerHoughTool::combinedPeakheight
double combinedPeakheight(double ph, double ph1, double ph2, double phn, double rot, int layer, int) const
Definition: MuonLayerHoughTool.h:289
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:93
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:228
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:62
Muon::MuonLayerHoughTool::Road::seed
std::shared_ptr< MuonHough::MuonLayerHough::Maximum > seed
Definition: MuonLayerHoughTool.h:80
Muon::MuonLayerHoughTool::m_useRpcTimeVeto
Gaudi::Property< bool > m_useRpcTimeVeto
Definition: MuonLayerHoughTool.h:199
RpcHitClustering.h
Muon::MuonLayerHoughTool::initialize
virtual StatusCode initialize() override
Definition: MuonLayerHoughTool.cxx:26
MuonHough::MuonLayerHough
Definition: MuonLayerHough.h:54
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:215
Muon::MuonLayerHoughTool::State::foundTruthHits
std::set< Identifier > foundTruthHits
Definition: MuonLayerHoughTool.h:130
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:60
MuonPrepDataContainer.h
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
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:203
Muon::MuonLayerHoughTool::Road::maximumSet
std::set< std::shared_ptr< MuonHough::MuonLayerHough::Maximum > > maximumSet
Definition: MuonLayerHoughTool.h:88
Muon::MuonLayerHoughTool::m_ntechnologies
unsigned int m_ntechnologies
Definition: MuonLayerHoughTool.h:207
Muon::MuonStationIndex::T2
@ T2
Definition: MuonStationIndex.h:33
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:81
Muon::MuonLayerHoughTool::RegionPhiHitVec
HoughDataPerSec::RegionPhiHitVec RegionPhiHitVec
Definition: MuonLayerHoughTool.h:63
MuonLayerHough.h
Muon::MuonLayerHoughTool::analyse
std::pair< std::unique_ptr< MuonPatternCombinationCollection >, std::unique_ptr< HoughDataPerSectorVec > > analyse(State &state) const
Definition: MuonLayerHoughTool.cxx:203
Muon::MuonLayerHoughTool::m_collectionsPerSector
CollectionsPerSectorVec m_collectionsPerSector
Definition: MuonLayerHoughTool.h:209
Muon::MuonStationIndex::T3
@ T3
Definition: MuonStationIndex.h:33
GeoPrimitives.h
Muon::TgcClusterObj3D::Edge::LowEtaLowPhi
@ LowEtaLowPhi
Muon::SortHoughDataPerSector
Definition: MuonLayerHoughTool.h:214
Muon::MuonLayerHoughTool::State::seedMaxima
MaximumVec seedMaxima
Definition: MuonLayerHoughTool.h:127
MuonHough::MuonPhiLayerHough
Definition: MuonPhiLayerHough.h:22
Muon::MuonLayerHoughTool::RegionHashVec
std::vector< HashVec > RegionHashVec
Definition: MuonLayerHoughTool.h:51
Muon::MuonLayerHoughTool::MaximumVec
HoughDataPerSec::MaximumVec MaximumVec
Definition: MuonLayerHoughTool.h:64
Muon::MuonLayerHoughTool::m_techToTruthNameIdx
std::map< unsigned int, unsigned int > m_techToTruthNameIdx
Definition: MuonLayerHoughTool.h:208
Muon::MuonLayerHoughTool::m_onlyUseCurrentBunch
Gaudi::Property< bool > m_onlyUseCurrentBunch
Definition: MuonLayerHoughTool.h:201
z
#define z
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Muon::MuonLayerHoughTool::Road::maxima
MaximumVec maxima
Definition: MuonLayerHoughTool.h:86
Muon::MuonLayerHoughTool::m_requireTriggerConfirmationNSW
Gaudi::Property< bool > m_requireTriggerConfirmationNSW
Definition: MuonLayerHoughTool.h:200
MuonHough
Definition: MuonLayerHoughTool.h:42
AthAlgTool.h
Muon::HoughDataPerSec::RegionPhiHitVec
std::vector< PhiHitVec > RegionPhiHitVec
Definition: HoughDataPerSec.h:28
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:191
Muon::MuonLayerHoughTool::CollectionsPerSector
Definition: MuonLayerHoughTool.h:54
Muon::MuonLayerHoughTool::createPatternCombinations
void createPatternCombinations(std::vector< MaximumVec > &maxima, MuonPatternCombinationCollection &patternCombis) const
Muon::MuonLayerHoughTool::PhiMaximumVec
HoughDataPerSec::PhiMaximumVec PhiMaximumVec
Definition: MuonLayerHoughTool.h:65
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:90
Muon::MuonLayerHoughTool::CollectionsPerSectorVec
std::vector< CollectionsPerSector > CollectionsPerSectorVec
Definition: MuonLayerHoughTool.h:58
Muon::MuonLayerHoughTool::MuonLayerHoughTool
MuonLayerHoughTool(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
Definition: MuonLayerHoughTool.cxx:21
Muon::HoughDataPerSec::RegionPhiMaximumVec
std::vector< PhiMaximumVec > RegionPhiMaximumVec
Definition: HoughDataPerSec.h:31
Muon::MuonLayerHoughTool::insertHash
void insertHash(const IdentifierHash &hash, const Identifier &id)
Definition: MuonLayerHoughTool.cxx:1886
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:129
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Muon::MuonLayerHoughTool::State
Definition: MuonLayerHoughTool.h:125
Muon::MuonLayerHoughTool::Road
Definition: MuonLayerHoughTool.h:74
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
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:241
MuonHough::MuonDetectorHough
class managing all Hough transforms in the detector
Definition: MuonRegionHough.h:56
Muon::MuonLayerHoughTool::RegionMaximumVec
HoughDataPerSec::RegionMaximumVec RegionMaximumVec
Definition: MuonLayerHoughTool.h:67
Muon::MdtPrepData
Class to represent measurements from the Monitored Drift Tubes.
Definition: MdtPrepData.h:37
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
Muon::MuonLayerHoughTool::printTruthSummary
void printTruthSummary(std::set< Identifier > &truth, std::set< Identifier > &found) const
Definition: MuonLayerHoughTool.cxx:2033
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:50
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:181
Muon::MuonLayerHoughTool::getSectors
void getSectors(const Amg::Vector3D &pos, std::vector< int > &sectors) const
Definition: MuonLayerHoughTool.h:224
Muon::MuonLayerHoughTool::Road::phiMaxima
PhiMaximumVec phiMaxima
Definition: MuonLayerHoughTool.h:87
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Muon::MuonLayerHoughTool::m_addSectors
Gaudi::Property< bool > m_addSectors
Definition: MuonLayerHoughTool.h:206
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
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:70
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:66
HoughDataPerSec.h
MuonSectorMapping.h
Muon::MuonLayerHoughTool::m_truthNames
SG::ReadHandleKeyArray< PRD_MultiTruthCollection > m_truthNames
Definition: MuonLayerHoughTool.h:197
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:52
Muon::MuonLayerHoughTool::RegionPhiMaximumVec
HoughDataPerSec::RegionPhiMaximumVec RegionPhiMaximumVec
Definition: MuonLayerHoughTool.h:68
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
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:56
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
Muon::MuonLayerHoughTool::Road::Road
Road(std::shared_ptr< MuonHough::MuonLayerHough::Maximum > seed_)
Definition: MuonLayerHoughTool.h:76
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:55
Muon::MuonLayerHoughTool::m_sectorMapping
MuonSectorMapping m_sectorMapping
Definition: MuonLayerHoughTool.h:211
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:202
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
Muon::MuonLayerHoughTool::Road::Road
Road()=default
Muon::MuonLayerHoughTool
Definition: MuonLayerHoughTool.h:48
MuonLayerHoughSelector.h
Muon::MuonLayerHoughTool::Road::neighbouringSector
int neighbouringSector
Definition: MuonLayerHoughTool.h:79
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:194
Muon::MuonLayerHoughTool::State::houghDataPerSectorVec
std::unique_ptr< HoughDataPerSectorVec > houghDataPerSectorVec
Definition: MuonLayerHoughTool.h:128
ServiceHandle< Muon::IMuonIdHelperSvc >
Muon::MuonLayerHoughTool::State::outputTruthHits
std::set< Identifier > outputTruthHits
Definition: MuonLayerHoughTool.h:131