ATLAS Offline Software
MuonNSWSegmentFinderTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONNSWSEGMENTFINDERTOOL_H
6 #define MUONNSWSEGMENTFINDERTOOL_H
7 
8 #include <utility>
9 #include <vector>
10 
14 #include "CxxUtils/ArrayHelper.h"
26 namespace Muon {
27 
28  class MuonNSWSegmentFinderTool;
29  struct NSWSeed {
30 
34  SeedMeasurement() = default;
37  const Muon::MuonClusterOnTrack* get() const{return m_cl;}
38  const Muon::MuonClusterOnTrack* operator->() const{return get();}
39  operator const Muon::MuonClusterOnTrack* () const { return get(); }
40 
41  bool operator==(const SeedMeasurement& other) const {return get() == other.get();}
42  bool operator!() const {return !get();}
43  operator bool() const {return get();}
44 
45  const Amg::Vector3D& dir() const {return m_dir;}
46  const Amg::Vector3D& pos() const {return m_cl->globalPosition();}
47 
48  double dirDot(const SeedMeasurement& other) const {return dirDot(other.dir());}
49  double dirDot(const Amg::Vector3D& v) const { return dir().dot(v); }
50 
51  void setDistance(double d){m_distance = d;}
52  double distance() const {return m_distance;}
53 
54  private:
55  const Muon::MuonClusterOnTrack* m_cl{nullptr};
57  double m_distance{0.};
58  };
59 
60  NSWSeed() = default;
61 
63  NSWSeed(const MuonNSWSegmentFinderTool* parent, const std::array<SeedMeasurement, 4>& seed,
64  const std::array<double, 2>& lengths);
65 
72 
73  double chi2() const {return m_chi2;}
75  size_t size() const { return m_size; }
77  const Amg::Vector3D& pos() const { return m_pos; }
79  const Amg::Vector3D& dir() const { return m_dir; }
80 
82  using MeasVec = std::vector<SeedMeasurement>;
83  MeasVec measurements() const;
85  bool add(SeedMeasurement meas, double max_uncert);
87  const Muon::MuonClusterOnTrack* newCalibClust(std::unique_ptr<const Muon::MuonClusterOnTrack> new_clust);
88 
89  enum class SeedOR { NoOverlap, Same, SubSet, SuperSet };
90  SeedOR overlap(const NSWSeed& other) const;
91 
92  private:
94  int channel(const SeedMeasurement& meas) const;
96  bool find(const SeedMeasurement& meas) const;
98  double distance(const SeedMeasurement& meas) const;
99  bool insert(const Muon::MuonClusterOnTrack* cl);
100 
101  bool insert(SeedMeasurement meas);
102 
105  using SeedMeasCache = std::array<SeedMeasurement, 16>;
117  double m_width{0.};
119  double m_chi2{0.};
121  size_t m_size{0};
123  std::set<std::shared_ptr<const Muon::MuonClusterOnTrack>> m_calibClust{};
124  };
125 
127  public:
129  MuonNSWSegmentFinderTool(const std::string& type, const std::string& name, const IInterface* parent);
131  virtual ~MuonNSWSegmentFinderTool() = default;
132 
133  virtual StatusCode initialize() override;
134 
135  private:
137  this,
138  "MuonIdHelperSvc",
139  "Muon::MuonIdHelperSvc/MuonIdHelperSvc",
140  };
142  this,
143  "edmHelper",
144  "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
145  "Handle to the service providing the IMuonEDMHelperSvc interface",
146  }; //<! Id helper tool
147 
148  ToolHandle<Trk::ITrackAmbiguityProcessorTool> m_ambiTool{
149  this,
150  "SegmentAmbiguityTool",
151  "Trk::SimpleAmbiguityProcessorTool/MuonAmbiProcessor",
152  };
153  ToolHandle<Trk::ITrackFitter> m_slTrackFitter{
154  this,
155  "SLFitter",
156  "Trk::GlobalChi2Fitter/MCTBSLFitter",
157  }; //<! fitter, always use straightline
158  ToolHandle<IMuonTrackToSegmentTool> m_trackToSegmentTool{
159  this,
160  "TrackToSegmentTool",
161  "Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool",
162  }; //<! track to segment converter
163  PublicToolHandle<MuonEDMPrinterTool> m_printer{
164  this,
165  "Printer",
166  "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool",
167  };
168  ToolHandle<IMuonTrackCleaner> m_trackCleaner{
169  this,
170  "TrackCleaner",
171  "Muon::MuonTrackCleaner/MuonTrackCleaner",
172  };
173  ToolHandle<Trk::ITrackSummaryTool> m_trackSummary{
174  this,
175  "TrackSummaryTool",
176  "Trk::TrackSummaryTool/MuidTrackSummaryTool",
177  };
178 
179  ToolHandle<IMuonClusterOnTrackCreator> m_muonClusterCreator{this, "MuonClusterCreator", ""};
180 
181  Gaudi::Property<bool> m_ipConstraint{this, "IPConstraint", true}; // use a ip perigee(0,0) constraint in the segment fit
182 
184  Gaudi::Property<bool> m_caloConstraint{this, "CaloConstraint", false};
185  Gaudi::Property<double> m_maxClustDist{this, "ClusterDistance", 5.};
186  Gaudi::Property<int> m_nOfSeedLayers{this, "NOfSeedLayers", 1};
187 
188 
189  Gaudi::Property<bool> m_useStereoSeeding{this, "SeedMMStereos", true};
191  Gaudi::Property<unsigned int> m_ocupMmBinWidth{this, "MmOccupancyBinWidth", 100,
192  "Size of the channel window to group the MicroMegaCluster"};
193  Gaudi::Property<unsigned int> m_ocupMmNumPerBin{this, "MmOccupancySingleCut", 5,
194  "Cut on the number of MicroMega clusters in a particular occupancy bin"};
195  Gaudi::Property<unsigned int> m_ocupMmNumPerPair{this, "MmOccupancyPairCut", 7,
196  "Cut on the number of MicroMega clusters in two neighbouring occupancy bins"};
197  public:
200  using LayerMeasVec = std::vector<MeasVec>;
201 
202 
203  // find segments given a list of MuonCluster
204  // segments can be added directly to a SegmentCollection, if they are to be written to SG, or returned in a list for
205  // further processing
206  void find(const EventContext& ctx, SegmentMakingCache& cache) const override;
207 
208  int wedgeNumber(const Muon::MuonClusterOnTrack* cluster) const;
209  int layerNumber(const Muon::MuonClusterOnTrack* cluster) const;
211  int channel(const Muon::MuonClusterOnTrack* cluster) const;
212 
213  const IMuonIdHelperSvc* idHelper() const;
214  bool isPad(const Muon::MuonClusterOnTrack* clust) const;
215  bool isStrip(const Muon::MuonClusterOnTrack* clust) const;
216  bool isWire(const Muon::MuonClusterOnTrack* clust) const;
217  template <size_t N>
218  std::string printSeed(const std::array<SeedMeasurement, N>& seed) const;
219  std::string print(const SeedMeasurement& meas) const;
220  std::string print(const MeasVec& clusters) const;
221  std::string print(const LayerMeasVec& sortedVec) const;
222 
223 
224 
225  private:
226  enum HitType { Eta = 1, Phi = 1 << 1, Wire = 1 << 2, Pad = 1 << 3 };
227 
234  std::vector<std::unique_ptr<Muon::MuonSegment>> findStereoSegments(const EventContext& ctx,
235  const std::vector<const Muon::MuonClusterOnTrack*>& allClusts,
236  int singleWedge = 0) const;
237 
239  std::vector<std::unique_ptr<Muon::MuonSegment>> findStgcPrecisionSegments(const EventContext& ctx,
240  const std::vector<const Muon::MuonClusterOnTrack*>& MuonClusters,
241  int singleWedge = 0) const;
242  // recontruct 3D segments
243  std::vector<std::unique_ptr<Muon::MuonSegment>> find3DSegments(const EventContext& ctx,
244  const std::vector<const Muon::MuonClusterOnTrack*>& MuonClusters,
245  std::vector<std::unique_ptr<Muon::MuonSegment>>& etaSegs,
246  int singleWedge = 0) const;
247  // clean the clusters
248  MeasVec cleanClusters(const std::vector<const Muon::MuonClusterOnTrack*>& MuonClusters,
249  int hit_sel, int singleWedge) const;
250 
251  // classify clusters by layer (one vector per layer)
252  LayerMeasVec classifyByLayer(const MeasVec& clusters, int hit_sel) const;
253 
254  // find segment seeds
255  std::vector<NSWSeed> segmentSeedFromStgc(const LayerMeasVec& orderedClusters,
256  bool usePhi) const;
257 
258  std::vector<NSWSeed> segmentSeedFromMM(const LayerMeasVec& orderedClusters) const;
259  std::vector<NSWSeed> segmentSeedFromMM(const LayerMeasVec& orderedClusters,
260  std::array<unsigned int,4> selLayers,
261  unsigned int& trial_counter) const;
262 
263 
264  std::vector<NSWSeed> segmentSeedFromPads(const LayerMeasVec& orderedClusters,
265  const Muon::MuonSegment& etaSeg) const;
266 
267  std::vector<std::pair<double, double>> getPadPhiOverlap(const std::vector<std::vector<const Muon::sTgcPrepData*>>& pads) const;
268 
269  // associate clusters to the segment seeds
270  int getClustersOnSegment(const LayerMeasVec& orderedclusters, NSWSeed& seed,
271  const std::set<unsigned int>& exclude) const;
272 
273  // get the clusters after calibration
275 
276  // fit eta and phi hits and fill the track collection
277  bool hitsToTrack(const EventContext& ctx, const MeasVec& etaHitVec,
278  const MeasVec& phiHitVec, const Trk::TrackParameters& startpar,
279  TrackCollection& segTrkColl) const;
280 
282  std::unique_ptr<Trk::PseudoMeasurementOnTrack> ipConstraint(const EventContext& ctx) const;
283  std::unique_ptr<Trk::PseudoMeasurementOnTrack> caloConstraint(const Trk::TrackParameters& startpar) const;
284 
285 
286  std::vector<NSWSeed> resolveAmbiguities(std::vector<NSWSeed>&& unresolved) const;
287  std::vector<std::unique_ptr<Muon::MuonSegment>> resolveAmbiguities(const EventContext& ctx,
288  const TrackCollection& segColl,
289  const Trk::Segment::Author a) const;
290  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const std::vector<const Trk::MeasurementBase*>& fit_meas,
291  const Trk::TrackParameters& perigee) const;
292 
293 
294  enum class ChannelConstraint{
295  InWindow,
296  TooNarrow,
297  TooWide
298 
299  };
301  ChannelConstraint compatiblyFromIP(const SeedMeasurement& meas1, const SeedMeasurement& meas2) const;
303  std::pair<double, double> coveredRadii(const SeedMeasurement& meas) const;
304 
306  MeasVec vetoBursts( MeasVec && clustInLay ) const;
307 
308  };
309 
310 } // namespace Muon
311 #endif // MUONROADFINDERTOOL_H
Trk::Segment::Author
Author
enum to identify who created the segment.
Definition: Tracking/TrkEvent/TrkSegment/TrkSegment/Segment.h:63
Muon::MuonNSWSegmentFinderTool::coveredRadii
std::pair< double, double > coveredRadii(const SeedMeasurement &meas) const
Returns the minimal & maximal radial distance of a measurement.
Definition: MuonNSWSegmentFinderTool.cxx:1311
Muon::MuonNSWSegmentFinderTool::printSeed
std::string printSeed(const std::array< SeedMeasurement, N > &seed) const
Definition: MuonNSWSegmentFinderTool.cxx:1477
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
Muon::NSWSeed::SeedMeasurement::m_cl
const Muon::MuonClusterOnTrack * m_cl
Definition: MuonNSWSegmentFinderTool.h:55
Muon::MuonNSWSegmentFinderTool::print
std::string print(const SeedMeasurement &meas) const
Definition: MuonNSWSegmentFinderTool.cxx:1485
ITrackSummaryTool.h
Muon::NSWSeed::measurements
MeasVec measurements() const
Definition: MuonNSWSegmentFinderTool.cxx:213
Muon::NSWSeed::m_parent
const MuonNSWSegmentFinderTool * m_parent
Definition: MuonNSWSegmentFinderTool.h:103
Muon::MuonNSWSegmentFinderTool::isPad
bool isPad(const Muon::MuonClusterOnTrack *clust) const
Definition: MuonNSWSegmentFinderTool.cxx:685
Muon::MuonNSWSegmentFinderTool::m_edmHelperSvc
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuonNSWSegmentFinderTool.h:141
IMuonTrackCleaner.h
Muon::NSWSeed::SeedOR::SuperSet
@ SuperSet
Muon::MuonNSWSegmentFinderTool::getPadPhiOverlap
std::vector< std::pair< double, double > > getPadPhiOverlap(const std::vector< std::vector< const Muon::sTgcPrepData * >> &pads) const
Definition: MuonNSWSegmentFinderTool.cxx:1347
Muon::MuonNSWSegmentFinderTool::m_ocupMmNumPerPair
Gaudi::Property< unsigned int > m_ocupMmNumPerPair
Definition: MuonNSWSegmentFinderTool.h:195
Muon::MuonClusterOnTrack::globalPosition
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
Definition: MuonClusterOnTrack.cxx:93
Muon::MuonNSWSegmentFinderTool::Wire
@ Wire
Definition: MuonNSWSegmentFinderTool.h:226
Muon::MuonNSWSegmentFinderTool::getClustersOnSegment
int getClustersOnSegment(const LayerMeasVec &orderedclusters, NSWSeed &seed, const std::set< unsigned int > &exclude) const
Definition: MuonNSWSegmentFinderTool.cxx:902
Muon::NSWSeed::SeedMeasurement::operator->
const Muon::MuonClusterOnTrack * operator->() const
Definition: MuonNSWSegmentFinderTool.h:38
Muon::MuonNSWSegmentFinderTool::m_trackToSegmentTool
ToolHandle< IMuonTrackToSegmentTool > m_trackToSegmentTool
Definition: MuonNSWSegmentFinderTool.h:158
MuonEDMPrinterTool.h
Muon::NSWSeed::m_dir
Amg::Vector3D m_dir
Seed direction.
Definition: MuonNSWSegmentFinderTool.h:115
Muon::NSWSeed::SeedMeasurement::dirDot
double dirDot(const Amg::Vector3D &v) const
Definition: MuonNSWSegmentFinderTool.h:49
Muon::MuonNSWSegmentFinderTool::findStgcPrecisionSegments
std::vector< std::unique_ptr< Muon::MuonSegment > > findStgcPrecisionSegments(const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, int singleWedge=0) const
Combines 2 sTgc strip layers to find 2D segments constraining the muon in the eta direction.
Definition: MuonNSWSegmentFinderTool.cxx:462
hist_file_dump.d
d
Definition: hist_file_dump.py:137
Muon::NSWSeed::m_pos
Amg::Vector3D m_pos
Starting position of the seed.
Definition: MuonNSWSegmentFinderTool.h:113
Muon::NSWSeed::SeedOR::NoOverlap
@ NoOverlap
Muon::MuonNSWSegmentFinderTool::ChannelConstraint
ChannelConstraint
Definition: MuonNSWSegmentFinderTool.h:294
Muon::MuonNSWSegmentFinderTool::m_idHelperSvc
ServiceHandle< IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonNSWSegmentFinderTool.h:136
Muon::MuonNSWSegmentFinderTool::m_ocupMmNumPerBin
Gaudi::Property< unsigned int > m_ocupMmNumPerBin
Definition: MuonNSWSegmentFinderTool.h:193
Muon::MuonNSWSegmentFinderTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition: MuonNSWSegmentFinderTool.h:163
Muon::NSWSeed::SeedMeasurement::dir
const Amg::Vector3D & dir() const
Definition: MuonNSWSegmentFinderTool.h:45
Muon::NSWSeed::chi2
double chi2() const
Definition: MuonNSWSegmentFinderTool.h:73
Muon::MuonNSWSegmentFinderTool::segmentSeedFromMM
std::vector< NSWSeed > segmentSeedFromMM(const LayerMeasVec &orderedClusters) const
Definition: MuonNSWSegmentFinderTool.cxx:1029
Muon::MuonNSWSegmentFinderTool::hitsToTrack
bool hitsToTrack(const EventContext &ctx, const MeasVec &etaHitVec, const MeasVec &phiHitVec, const Trk::TrackParameters &startpar, TrackCollection &segTrkColl) const
Definition: MuonNSWSegmentFinderTool.cxx:698
Muon::MuonNSWSegmentFinderTool
Definition: MuonNSWSegmentFinderTool.h:126
Muon::MuonNSWSegmentFinderTool::MuonNSWSegmentFinderTool
MuonNSWSegmentFinderTool(const std::string &type, const std::string &name, const IInterface *parent)
default constructor
Definition: MuonNSWSegmentFinderTool.cxx:256
Muon::MuonNSWSegmentFinderTool::Eta
@ Eta
Definition: MuonNSWSegmentFinderTool.h:226
Muon::NSWSeed::m_measurements
SeedMeasCache m_measurements
Cache the eta measurements.
Definition: MuonNSWSegmentFinderTool.h:107
exclude
std::set< std::string > exclude
list of directories to be excluded
Definition: hcg.cxx:95
Muon::MuonNSWSegmentFinderTool::cleanClusters
MeasVec cleanClusters(const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, int hit_sel, int singleWedge) const
Definition: MuonNSWSegmentFinderTool.cxx:759
Muon::NSWSeed::m_width
double m_width
seed width
Definition: MuonNSWSegmentFinderTool.h:117
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::MuonNSWSegmentFinderTool::compatiblyFromIP
ChannelConstraint compatiblyFromIP(const SeedMeasurement &meas1, const SeedMeasurement &meas2) const
Checks whether the two measurements are compatible within the IP constraint
Definition: MuonNSWSegmentFinderTool.cxx:1277
Muon::NSWSeed::SeedMeasurement::setDistance
void setDistance(double d)
Definition: MuonNSWSegmentFinderTool.h:51
Muon::NSWSeed::SeedMeasurement::pos
const Amg::Vector3D & pos() const
Definition: MuonNSWSegmentFinderTool.h:46
Muon::NSWSeed::NSWSeed
NSWSeed()=default
ITrackAmbiguityProcessorTool.h
Muon::MuonNSWSegmentFinderTool::HitType
HitType
Definition: MuonNSWSegmentFinderTool.h:226
Muon::NSWSeed::SeedMeasCache
std::array< SeedMeasurement, 16 > SeedMeasCache
Helper pair to cache the measurements with the respective distances.
Definition: MuonNSWSegmentFinderTool.h:105
Muon::NSWSeed::SeedMeasurement::get
const Muon::MuonClusterOnTrack * get() const
Accomodations of the interface to make the changes as transparent as possible.
Definition: MuonNSWSegmentFinderTool.h:37
Muon::NSWSeed::pos
const Amg::Vector3D & pos() const
Returns the position of the seed.
Definition: MuonNSWSegmentFinderTool.h:77
Muon::NSWSeed::SeedMeasurement::SeedMeasurement
SeedMeasurement()=default
Muon::MuonNSWSegmentFinderTool::ipConstraint
std::unique_ptr< Trk::PseudoMeasurementOnTrack > ipConstraint(const EventContext &ctx) const
creates the IP constraint
Definition: MuonNSWSegmentFinderTool.cxx:675
Muon::MuonNSWSegmentFinderTool::classifyByLayer
LayerMeasVec classifyByLayer(const MeasVec &clusters, int hit_sel) const
Definition: MuonNSWSegmentFinderTool.cxx:777
Muon::MuonNSWSegmentFinderTool::vetoBursts
MeasVec vetoBursts(MeasVec &&clustInLay) const
Removes clusters from high activity areas in the detector.
Definition: MuonNSWSegmentFinderTool.cxx:1511
Muon::MuonNSWSegmentFinderTool::find
void find(const EventContext &ctx, SegmentMakingCache &cache) const override
Definition: MuonNSWSegmentFinderTool.cxx:283
Muon::MeasVec
NSWSeed::MeasVec MeasVec
Stereo seeds can be formed using hits from 4 independent layers by solving the following system of eq...
Definition: MuonNSWSegmentFinderTool.cxx:102
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IMuonNSWSegmentFinderTool.h
Muon::NSWSeed::m_calibClust
std::set< std::shared_ptr< const Muon::MuonClusterOnTrack > > m_calibClust
Garbage container per seed.
Definition: MuonNSWSegmentFinderTool.h:123
Muon::MuonNSWSegmentFinderTool::m_trackCleaner
ToolHandle< IMuonTrackCleaner > m_trackCleaner
Definition: MuonNSWSegmentFinderTool.h:168
Muon::MuonNSWSegmentFinderTool::isWire
bool isWire(const Muon::MuonClusterOnTrack *clust) const
Definition: MuonNSWSegmentFinderTool.cxx:693
IMuonClusterOnTrackCreator.h
AthAlgTool.h
Muon::MuonNSWSegmentFinderTool::Phi
@ Phi
Definition: MuonNSWSegmentFinderTool.h:226
ArrayHelper.h
PseudoMeasurementOnTrack.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Muon::NSWSeed::newCalibClust
const Muon::MuonClusterOnTrack * newCalibClust(std::unique_ptr< const Muon::MuonClusterOnTrack > new_clust)
Adds a calibrated cluster to the garbage collection.
Definition: MuonNSWSegmentFinderTool.cxx:245
Muon::MuonNSWSegmentFinderTool::m_nOfSeedLayers
Gaudi::Property< int > m_nOfSeedLayers
Definition: MuonNSWSegmentFinderTool.h:186
Muon::NSWSeed::SeedMeasurement
Struct caching the MuonClusterOnTrack and providing the orientation of the strip in addtion.
Definition: MuonNSWSegmentFinderTool.h:33
Muon::MuonNSWSegmentFinderTool::channel
int channel(const Muon::MuonClusterOnTrack *cluster) const
Returns the channel of the measurement on the layer.
Definition: MuonNSWSegmentFinderTool.cxx:895
Muon::MuonNSWSegmentFinderTool::m_ocupMmBinWidth
Gaudi::Property< unsigned int > m_ocupMmBinWidth
Protection against slobbering Micromega events.
Definition: MuonNSWSegmentFinderTool.h:191
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::NSWSeed::dir
const Amg::Vector3D & dir() const
Returns the direction of the seed.
Definition: MuonNSWSegmentFinderTool.h:79
DataVector< Trk::Track >
Muon::MuonNSWSegmentFinderTool::m_maxClustDist
Gaudi::Property< double > m_maxClustDist
Definition: MuonNSWSegmentFinderTool.h:185
Muon::NSWSeed::SeedMeasurement::operator==
bool operator==(const SeedMeasurement &other) const
Definition: MuonNSWSegmentFinderTool.h:41
Muon::MuonNSWSegmentFinderTool::ChannelConstraint::TooNarrow
@ TooNarrow
Muon::NSWSeed::distance
double distance(const SeedMeasurement &meas) const
Calculates the minimal distance between seed and measurement.
Definition: MuonNSWSegmentFinderTool.cxx:147
Muon::NSWSeed::SeedMeasurement::m_distance
double m_distance
Definition: MuonNSWSegmentFinderTool.h:57
Muon::NSWSeed::overlap
SeedOR overlap(const NSWSeed &other) const
Definition: MuonNSWSegmentFinderTool.cxx:196
Muon::MuonNSWSegmentFinderTool::m_trackSummary
ToolHandle< Trk::ITrackSummaryTool > m_trackSummary
Definition: MuonNSWSegmentFinderTool.h:173
Muon::NSWSeed::add
bool add(SeedMeasurement meas, double max_uncert)
Tries to add the measurement to the seeds. Returns false if the measurement is incompatible with the ...
Definition: MuonNSWSegmentFinderTool.cxx:160
Muon::MuonNSWSegmentFinderTool::findStereoSegments
std::vector< std::unique_ptr< Muon::MuonSegment > > findStereoSegments(const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &allClusts, int singleWedge=0) const
Runs the NSW segment maker by combining 4 Micromega layers to a stereo seed.
Definition: MuonNSWSegmentFinderTool.cxx:384
Muon::NSWSeed::m_padMeasurements
SeedMeasCache m_padMeasurements
Cache the sTGC pad measurements.
Definition: MuonNSWSegmentFinderTool.h:111
Muon::MuonNSWSegmentFinderTool::LayerMeasVec
std::vector< MeasVec > LayerMeasVec
Definition: MuonNSWSegmentFinderTool.h:200
Muon::MuonNSWSegmentFinderTool::m_ambiTool
ToolHandle< Trk::ITrackAmbiguityProcessorTool > m_ambiTool
Tool for ambiguity solving.
Definition: MuonNSWSegmentFinderTool.h:148
Muon::MuonNSWSegmentFinderTool::segmentSeedFromStgc
std::vector< NSWSeed > segmentSeedFromStgc(const LayerMeasVec &orderedClusters, bool usePhi) const
Definition: MuonNSWSegmentFinderTool.cxx:826
IMuonEDMHelperSvc.h
Muon::NSWSeed::channel
int channel(const SeedMeasurement &meas) const
Returns the channel of the measurement on the layer.
Definition: MuonNSWSegmentFinderTool.cxx:146
Muon::MuonNSWSegmentFinderTool::ChannelConstraint::InWindow
@ InWindow
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Muon::MuonNSWSegmentFinderTool::idHelper
const IMuonIdHelperSvc * idHelper() const
Definition: MuonNSWSegmentFinderTool.cxx:281
Muon::NSWSeed::insert
bool insert(const Muon::MuonClusterOnTrack *cl)
Definition: MuonNSWSegmentFinderTool.cxx:226
Muon::NSWSeed::size
size_t size() const
Returns the number of measurements.
Definition: MuonNSWSegmentFinderTool.h:75
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::NSWSeed::m_phiMeasurements
SeedMeasCache m_phiMeasurements
Cache the phi measurements.
Definition: MuonNSWSegmentFinderTool.h:109
Muon::MuonNSWSegmentFinderTool::segmentSeedFromPads
std::vector< NSWSeed > segmentSeedFromPads(const LayerMeasVec &orderedClusters, const Muon::MuonSegment &etaSeg) const
Definition: MuonNSWSegmentFinderTool.cxx:916
Muon::NSWSeed::m_size
size_t m_size
Added measurements on track.
Definition: MuonNSWSegmentFinderTool.h:121
Muon::MuonNSWSegmentFinderTool::ChannelConstraint::TooWide
@ TooWide
python.PyAthena.v
v
Definition: PyAthena.py:154
Muon::MuonNSWSegmentFinderTool::m_slTrackFitter
ToolHandle< Trk::ITrackFitter > m_slTrackFitter
Definition: MuonNSWSegmentFinderTool.h:153
Muon::IMuonNSWSegmentFinderTool
Definition: IMuonNSWSegmentFinderTool.h:19
Muon::NSWSeed::SeedMeasurement::m_dir
Amg::Vector3D m_dir
Definition: MuonNSWSegmentFinderTool.h:56
a
TList * a
Definition: liststreamerinfos.cxx:10
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
Muon::NSWSeed
Definition: MuonNSWSegmentFinderTool.h:29
Muon::NSWSeed::SeedMeasurement::dirDot
double dirDot(const SeedMeasurement &other) const
Definition: MuonNSWSegmentFinderTool.h:48
Muon::NSWSeed::MeasVec
std::vector< SeedMeasurement > MeasVec
Returns the contained measurements.
Definition: MuonNSWSegmentFinderTool.h:82
Muon::NSWSeed::SeedOR
SeedOR
Definition: MuonNSWSegmentFinderTool.h:89
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DeMoScan.first
bool first
Definition: DeMoScan.py:536
Muon::IMuonNSWSegmentFinderTool::SegmentMakingCache
Helper struct to parse the data around.
Definition: IMuonNSWSegmentFinderTool.h:31
Muon::MuonNSWSegmentFinderTool::layerNumber
int layerNumber(const Muon::MuonClusterOnTrack *cluster) const
Definition: MuonNSWSegmentFinderTool.cxx:885
Muon::NSWSeed::find
bool find(const SeedMeasurement &meas) const
Checks whether the measurement is already part of the seed.
Definition: MuonNSWSegmentFinderTool.cxx:248
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
Muon::MuonNSWSegmentFinderTool::wedgeNumber
int wedgeNumber(const Muon::MuonClusterOnTrack *cluster) const
Definition: MuonNSWSegmentFinderTool.cxx:878
Muon::MuonNSWSegmentFinderTool::find3DSegments
std::vector< std::unique_ptr< Muon::MuonSegment > > find3DSegments(const EventContext &ctx, const std::vector< const Muon::MuonClusterOnTrack * > &MuonClusters, std::vector< std::unique_ptr< Muon::MuonSegment >> &etaSegs, int singleWedge=0) const
Definition: MuonNSWSegmentFinderTool.cxx:550
Muon::IMuonIdHelperSvc
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
Definition: IMuonIdHelperSvc.h:27
Muon::MuonNSWSegmentFinderTool::~MuonNSWSegmentFinderTool
virtual ~MuonNSWSegmentFinderTool()=default
destructor
Muon::NSWSeed::SeedOR::Same
@ Same
Pad
Definition: Pad.h:10
Muon::MuonNSWSegmentFinderTool::SeedMeasurement
NSWSeed::SeedMeasurement SeedMeasurement
Definition: MuonNSWSegmentFinderTool.h:198
MuonSegment.h
Muon::MuonNSWSegmentFinderTool::m_muonClusterCreator
ToolHandle< IMuonClusterOnTrackCreator > m_muonClusterCreator
Definition: MuonNSWSegmentFinderTool.h:179
IMuonTrackToSegmentTool.h
Muon::MuonNSWSegmentFinderTool::caloConstraint
std::unique_ptr< Trk::PseudoMeasurementOnTrack > caloConstraint(const Trk::TrackParameters &startpar) const
Definition: MuonNSWSegmentFinderTool.cxx:658
MuonClusterOnTrack.h
Muon::NSWSeed::SeedMeasurement::operator!
bool operator!() const
Definition: MuonNSWSegmentFinderTool.h:42
Muon::MuonNSWSegmentFinderTool::m_ipConstraint
Gaudi::Property< bool > m_ipConstraint
Definition: MuonNSWSegmentFinderTool.h:181
Muon::MuonNSWSegmentFinderTool::fit
std::unique_ptr< Trk::Track > fit(const EventContext &ctx, const std::vector< const Trk::MeasurementBase * > &fit_meas, const Trk::TrackParameters &perigee) const
Definition: MuonNSWSegmentFinderTool.cxx:431
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
AthAlgTool
Definition: AthAlgTool.h:26
Muon::MuonNSWSegmentFinderTool::m_caloConstraint
Gaudi::Property< bool > m_caloConstraint
Use a virtual point at the calorimeter exit with same Z as constraint...
Definition: MuonNSWSegmentFinderTool.h:184
Muon::NSWSeed::m_chi2
double m_chi2
Chi2.
Definition: MuonNSWSegmentFinderTool.h:119
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
Muon::MuonNSWSegmentFinderTool::getCalibratedClusters
MeasVec getCalibratedClusters(NSWSeed &seed) const
Definition: MuonNSWSegmentFinderTool.cxx:1447
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
Muon::MuonNSWSegmentFinderTool::initialize
virtual StatusCode initialize() override
Definition: MuonNSWSegmentFinderTool.cxx:262
ITrackFitter.h
Muon::MuonNSWSegmentFinderTool::resolveAmbiguities
std::vector< NSWSeed > resolveAmbiguities(std::vector< NSWSeed > &&unresolved) const
Definition: MuonNSWSegmentFinderTool.cxx:1321
Muon::MuonNSWSegmentFinderTool::isStrip
bool isStrip(const Muon::MuonClusterOnTrack *clust) const
Definition: MuonNSWSegmentFinderTool.cxx:689
Muon::MuonNSWSegmentFinderTool::m_useStereoSeeding
Gaudi::Property< bool > m_useStereoSeeding
Definition: MuonNSWSegmentFinderTool.h:189
IMuonIdHelperSvc.h
Muon::MuonClusterOnTrack
Base class for Muon cluster RIO_OnTracks.
Definition: MuonClusterOnTrack.h:34
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Muon::NSWSeed::SeedMeasurement::distance
double distance() const
Definition: MuonNSWSegmentFinderTool.h:52
ServiceHandle
Definition: ClusterMakerTool.h:37
Muon::MuonNSWSegmentFinderTool::MeasVec
NSWSeed::MeasVec MeasVec
Definition: MuonNSWSegmentFinderTool.h:199
Muon::NSWSeed::SeedOR::SubSet
@ SubSet