ATLAS Offline Software
MooTrackFitter.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 MUON_MOOTRACKFITTER_H
6 #define MUON_MOOTRACKFITTER_H
7 
9 #include "GaudiKernel/ServiceHandle.h"
10 #include "GaudiKernel/ToolHandle.h"
11 
12 // Misc
14 
15 // Tracking EDM
17 #include "TrkTrack/TrackInfo.h"
18 
19 // Tools & tool interfaces
34 
35 // Local
36 #include <set>
37 
38 #include "MuPatHitTool.h"
41 
42 namespace Trk {
43  class PrepRawData;
44  class Track;
45  class MeasurementBase;
46  class Layer;
47 } // namespace Trk
48 
49 namespace Muon {
50  class MuPatTrack;
51 }
52 
53 
54 namespace Muon {
55 
62  class MooTrackFitter : public AthAlgTool {
63  public:
64  typedef std::vector<const Trk::MeasurementBase*> MeasVec;
66  typedef MeasVec::const_iterator MeasCit;
67 
68  typedef std::vector<const Trk::PrepRawData*> PrepVec;
70  typedef PrepVec::const_iterator PrepCit;
71 
72  typedef std::pair<int, int> SmallLargeChambers;
73  typedef std::map<MuonStationIndex::StIndex, SmallLargeChambers> SLStationMap;
74 
75  typedef std::vector<std::pair<const Trk::TrackParameters*, const Trk::Layer*> > MaterialLayers;
76 
77 
78 
79  public:
81  MooTrackFitter(const std::string&, const std::string&, const IInterface*);
82 
84  ~MooTrackFitter() = default;
85 
88 
91 
93  static const InterfaceID& interfaceID() {
94  static const InterfaceID IID_MooTrackFitter("Muon::MooTrackFitter", 1, 0);
95  return IID_MooTrackFitter;
96  }
97 
104  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const MuPatCandidateBase& firstEntry, const MuPatCandidateBase& secondEntry,
105  const PrepVec& externalPhiHits) const;
106 
108  std::unique_ptr<Trk::Track> refit(const EventContext& ctx, const MuPatTrack& trkCan) const;
109 
111  std::unique_ptr<Trk::Track> refit(const EventContext& ctx, const Trk::Track& track) const;
112 
114  static double restrictedMomentum(double momentum) ;
115 
117  std::unique_ptr<Trk::Perigee> createPerigee(const EventContext& ctx, const Trk::TrackParameters& firstPars, const Trk::MeasurementBase& firstMeas) const;
118 
120  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const Trk::Perigee& startPars, MeasVec& hits,
121  Trk::ParticleHypothesis partHypo, bool prefit) const;
122 
124  std::unique_ptr<Trk::Track> fitWithRefit(const EventContext& ctx, const Trk::Perigee& startPars, MeasVec& hits) const;
125 
129  std::pair<std::unique_ptr<Trk::Track>, std::unique_ptr<Trk::Track> > splitTrack(const EventContext& ctx, const Trk::Track& track) const;
130 
132  std::unique_ptr<Trk::Track> fitSplitTrack(const EventContext& ctx, const Trk::TrackParameters& startPars,
133  const std::vector<const Trk::TrackStateOnSurface*>& tsos) const;
134 
135  private:
136  struct FitterData {
137  FitterData() = default;
138  ~FitterData() = default;
139 
144 
145  int nOverlaps{-1};
146  int nSmall{-1};
147  int nLarge{-1};
149 
150  double avePhi{0.};
151  double phiMin{0.};
152  double phiMax{0.};
153 
154  bool hasBarrel{false};
155  bool hasEndcap{false};
158  std::set<MuonStationIndex::StIndex> stations{};
160 
161  std::unique_ptr<Trk::Perigee> startPars{nullptr};
162 
163  std::vector<std::unique_ptr<const Trk::MeasurementBase>> garbage{};
164 
165  bool firstIsTrack{false};
166  bool secondIsTrack{false};
167  bool firstHasMomentum{false};
168  bool secondHasMomentum{false};
169  std::set<Identifier> mdtIdsFirst{};
170  std::set<Identifier> mdtIdsSecond{};
171 
173  // check if already initialized
174  if (nOverlaps == -1) {
175  nOverlaps = 0;
176  nSmall = 0;
177  nLarge = 0;
178  // loop over SLStationMap and count the number of times there is a station with both S and L
181  for (; it != it_end; ++it) {
182  if (it->second.first) ++nSmall;
183  if (it->second.second) ++nLarge;
184  if (it->second.first && it->second.second) ++nOverlaps;
185  }
186  }
187  return nOverlaps;
188  }
190  if (nSmall < 0) numberOfSLOverlaps();
191  return nSmall;
192  }
194  if (nLarge < 0) numberOfSLOverlaps();
195  return nLarge;
196  }
197 
199  };
203  std::unique_ptr<Trk::Track> cleanAndEvaluateTrack(const EventContext& ctx, Trk::Track& track, const std::set<Identifier>& excludedChambers) const;
204 
206  bool extractData(const MuPatCandidateBase& entry1, const MuPatCandidateBase& entry2, FitterData& fitterData) const;
207 
209  bool extractData(FitterData& fitterData, bool usePreciseHits) const;
210 
212  bool addFakePhiHits(const EventContext& ctx, FitterData& fitterData, const Trk::TrackParameters& referenceParameter) const;
213 
215  bool corruptEntry(const MuPatCandidateBase& entry) const;
216 
218  bool getMaterial(const Trk::TrackParameters& pars, FitterData& fitterData) const;
219 
221  void createStartParameters(const EventContext& ctx, FitterData& inputData) const;
222 
224  std::shared_ptr<const MuonSegment> segmentFromEntry(const EventContext& ctx, const MuPatCandidateBase& entry) const;
225 
227  unsigned int hasPhiConstrain(FitterData& inputData) const;
228 
230  unsigned int hasPhiConstrain(Trk::Track* track) const;
231 
233  std::unique_ptr<Trk::MeasurementBase> createFakePhiForMeasurement(const Trk::MeasurementBase& measurement, const Amg::Vector3D* overlapPos,
234  const Amg::Vector3D* phiPos, double error) const;
235 
237  static double qOverPFromEntry(const MuPatCandidateBase& entry) ;
238 
240  double qOverPFromEntries(const EventContext& ctx, const MuPatCandidateBase& firstEntry, const MuPatCandidateBase& secondEntry) const;
241 
243  double phiSeeding(const EventContext& ctx, FitterData& fitterData) const;
244 
246  double thetaSeeding(const MuPatCandidateBase& entry, MeasVec& etaHits) const;
247 
249  bool cleanPhiHits(const EventContext& ctx, double momentum, FitterData& phiHits, const PrepVec& patternPhiHits) const;
250 
252  bool validMomentum(const Trk::TrackParameters& pars) const;
253 
255  bool getMinMaxPhi(FitterData& fitterData) const;
256 
257  void removeSegmentOutliers(FitterData& fitterData) const;
258  void cleanEntry(const MuPatCandidateBase& entry, std::set<Identifier>& removedIdentifiers) const;
259  void cleanSegment(const MuonSegment& seg, std::set<Identifier>& removedIdentifiers) const;
260 
261  std::pair<double, double> getElementHalfLengths(const Identifier& id, const Trk::TrkDetElementBase* ele) const;
262 
263  ToolHandle<Trk::IPropagator> m_propagator{this, "Propagator",
264  "Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator"};
265  ToolHandle<Trk::ITrackFitter> m_trackFitter{this, "Fitter", "Trk::GlobalChi2Fitter/MCTBFitter"};
266  PublicToolHandle<MuPatHitTool> m_hitHandler{this, "HitTool", "Muon::MuPatHitTool/MuPatHitTool"};
267  ToolHandle<IMuonSegmentMomentumEstimator> m_momentumEstimator{
268  this, "SegmentMomentum", "MuonSegmentMomentum/MuonSegmentMomentum"};
269 
270  Gaudi::Property<Trk::RunOutlierRemoval> m_runOutlier{this, "RunOutlier", false, "Switch whether to run outlier logics or not"};
271  Gaudi::Property<int> m_matEffects{this, "MatEffects", 2, "type of material interaction in extrapolation"};
275  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
277  this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
278  "Handle to the service providing the IMuonEDMHelperSvc interface"};
279  ToolHandle<MuonEDMPrinterTool> m_printer{this, "MuonPrinterTool",
280  "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
281  ToolHandle<IMuonTrackToSegmentTool> m_trackToSegmentTool{
282  this, "TrackToSegmentTool",
283  "Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"};
284 
285  ToolHandle<IMuonHitSelector> m_phiHitSelector{this, "PhiHitSelector",
286  "MuonPhiHitSelector/MuonPhiHitSelector"};
287  ToolHandle<IMuonTrackCleaner> m_cleaner{this, "TrackCleaner", "Muon::MuonTrackCleaner/MuonTrackCleaner"};
288  ToolHandle<IMuonSegmentInOverlapResolvingTool> m_overlapResolver{
289  this, "SegmentInOverlapTool", "Muon::MuonSegmentInOverlapResolvingTool/MuonSegmentInOverlapResolvingTool"};
290  ToolHandle<Trk::ITrackSummaryHelperTool> m_trackSummaryTool{
291  this, "TrackSummaryTool", "Muon::MuonTrackSummaryHelperTool/MuonTrackSummaryHelperTool"}; //<! muon track summary helper
292 
293  Gaudi::Property<bool> m_slFit{this, "SLFit", true, "Perform sl fit"};
294  Gaudi::Property<bool> m_slProp{this, "SLProp", false, "Enable straight line propagation"};
295  Gaudi::Property<bool> m_seedWithSegmentTheta{this, "SeedWithSegmentTheta", true, "Seed with theta connecting first + last eta hit"};
296  Gaudi::Property<bool> m_seedWithAvePhi{this, "SeedWithAvePhi", true, "Seed with average phi of all phi hits"};
297  Gaudi::Property<bool> m_seedPhiWithEtaHits{this, "SeedPhiWithEtaHits", false, "Seed phi from positions first last eta hit"};
298  Gaudi::Property<bool> m_usePreciseHits{this, "UsePreciseHits", false, "Use actual measurement error"};
299  Gaudi::Property<bool> m_usePrefit{this, "UsePrefit", true, "Use prefit"};
300  Gaudi::Property<bool> m_allowFirstFit{this, "AllowFirstFitResult", false, "Return the result of the prefit is final fit fails"};
301  Gaudi::Property<double> m_pThreshold{this, "PThreshold", 500.,
302  "Momentum cut-off. Seeds below the threshold will not be fitted"}; //<!
303  Gaudi::Property<bool> m_cosmics{this, "Cosmics", false, "Special treatment for cosmics"};
304  Gaudi::Property<bool> m_cleanPhiHits{this, "CleanPhiHits", true, "Special flag to switch off phi hit cleaning"};
305  Gaudi::Property<unsigned int> m_phiHitsMax{this, "MaxPatternPhiHits", 40,
306  "If more than maximum number of phi hits on pattern, no hits will be added"};
307  Gaudi::Property<bool> m_seedAtStartOfTrack{this, "SeedAtStartOfTrack", true, "Provide seed parameters at the start of the track"};
308  Gaudi::Property<bool> m_preciseFirstStation{this, "UsePreciseHitsInFirstStation", false,
309  "use precise hits in first station to stabalise the fit"};
310 
311  Gaudi::Property<double> m_openingAngleCut{this, "OpeningAngleCut", 0.3,
312  "cut on the maximum difference in phi between measurements on the track"};
313  Gaudi::Property<double> m_preCleanChi2Cut{this, "PreCleaningReducedChi2Cut", 500.,
314  "minimum chi2/ndof for a track to be passed to cleaner"};
315  Gaudi::Property<double> m_chi2Cut{this, "ReducedChi2Cut", 100., "minimum chi2/ndof for a track to be accepted"};
316 
317  mutable std::atomic_uint m_nfits{0};
318  mutable std::atomic_uint m_nfailedExtractInital{0};
319  mutable std::atomic_uint m_nfailedMinMaxPhi{0};
320  mutable std::atomic_uint m_nfailedParsInital{0};
321  mutable std::atomic_uint m_nfailedExtractCleaning{0};
322  mutable std::atomic_uint m_nfailedFakeInitial{0};
323  mutable std::atomic_uint m_nfailedTubeFit{0};
324  mutable std::atomic_uint m_noPerigee{0};
325  mutable std::atomic_uint m_nlowMomentum{0};
326  mutable std::atomic_uint m_nfailedExtractPrecise{0};
327  mutable std::atomic_uint m_nfailedFakePrecise{0};
328  mutable std::atomic_uint m_nfailedFitPrecise{0};
329  mutable std::atomic_uint m_nsuccess{0};
330 
331  struct StationPhiData {
332  unsigned int nphiHits{0};
333  unsigned int nSmallChambers{0};
334  unsigned int nLargeChambers{0};
335  };
336  };
337 
338 } // namespace Muon
339 
340 #endif
Muon::MooTrackFitter::cleanAndEvaluateTrack
std::unique_ptr< Trk::Track > cleanAndEvaluateTrack(const EventContext &ctx, Trk::Track &track, const std::set< Identifier > &excludedChambers) const
clean and evaluate the track,
Definition: MooTrackFitter.cxx:1839
Muon::MooTrackFitter::m_phiHitsMax
Gaudi::Property< unsigned int > m_phiHitsMax
Definition: MooTrackFitter.h:305
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Muon::MooTrackFitter::m_nfits
std::atomic_uint m_nfits
Definition: MooTrackFitter.h:317
Muon::MooTrackFitter::FitterData::hitList
MuPatHitList hitList
Definition: MooTrackFitter.h:159
Muon::MooTrackFitter::FitterData::materialLayers
MaterialLayers materialLayers
Definition: MooTrackFitter.h:198
Muon::MooTrackFitter::extractData
bool extractData(const MuPatCandidateBase &entry1, const MuPatCandidateBase &entry2, FitterData &fitterData) const
extract all information needed for the fit from the track
Definition: MooTrackFitter.cxx:326
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Muon::MooTrackFitter::m_seedPhiWithEtaHits
Gaudi::Property< bool > m_seedPhiWithEtaHits
Definition: MooTrackFitter.h:297
Muon::MooTrackFitter::StationPhiData::nphiHits
unsigned int nphiHits
Definition: MooTrackFitter.h:332
Muon::MooTrackFitter::qOverPFromEntry
static double qOverPFromEntry(const MuPatCandidateBase &entry)
get q/p from entry
Definition: MooTrackFitter.cxx:1272
Muon::MooTrackFitter::FitterData::smallLargeChambersPerStation
SLStationMap smallLargeChambersPerStation
Definition: MooTrackFitter.h:148
Muon::MooTrackFitter::FitterData::measurements
MeasVec measurements
Definition: MooTrackFitter.h:142
Muon::MooTrackFitter::createPerigee
std::unique_ptr< Trk::Perigee > createPerigee(const EventContext &ctx, const Trk::TrackParameters &firstPars, const Trk::MeasurementBase &firstMeas) const
create perigee parameter to initialize fit
Definition: MooTrackFitter.cxx:1543
Muon::MooTrackFitter::m_nfailedExtractCleaning
std::atomic_uint m_nfailedExtractCleaning
Definition: MooTrackFitter.h:321
IMuonTrackCleaner.h
Muon::MooTrackFitter::m_nfailedExtractInital
std::atomic_uint m_nfailedExtractInital
Definition: MooTrackFitter.h:318
Muon::MooTrackFitter::m_seedWithSegmentTheta
Gaudi::Property< bool > m_seedWithSegmentTheta
Definition: MooTrackFitter.h:295
Muon::MooTrackFitter::FitterData::numberOfSmallChambers
int numberOfSmallChambers()
Definition: MooTrackFitter.h:189
TrackParameters.h
Muon::MooTrackFitter::refit
std::unique_ptr< Trk::Track > refit(const EventContext &ctx, const MuPatTrack &trkCan) const
refit a MuPatTrack
Definition: MooTrackFitter.cxx:115
Muon::MuPatCandidateBase
track candidate entry object.
Definition: MuPatCandidateBase.h:46
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Muon::MooTrackFitter::getMinMaxPhi
bool getMinMaxPhi(FitterData &fitterData) const
calculate the minimum and maximum phi value a track could have to pass all eta channels
Definition: MooTrackFitter.cxx:1130
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Muon::MooTrackFitter::m_usePreciseHits
Gaudi::Property< bool > m_usePreciseHits
Definition: MooTrackFitter.h:298
MuonEDMPrinterTool.h
Muon::MooTrackFitter::m_hitHandler
PublicToolHandle< MuPatHitTool > m_hitHandler
hit handler
Definition: MooTrackFitter.h:266
Muon::MooTrackFitter::m_momentumEstimator
ToolHandle< IMuonSegmentMomentumEstimator > m_momentumEstimator
tool to estimate track momentum
Definition: MooTrackFitter.h:267
SegmentFinder.h
Muon::MooTrackFitter
Tool to fit a trajectory using a set of two segments or a track and a segment as input.
Definition: MooTrackFitter.h:62
Muon::MooTrackFitter::segmentFromEntry
std::shared_ptr< const MuonSegment > segmentFromEntry(const EventContext &ctx, const MuPatCandidateBase &entry) const
get segment from entry
Definition: MooTrackFitter.cxx:1255
Muon::MooTrackFitter::m_noPerigee
std::atomic_uint m_noPerigee
Definition: MooTrackFitter.h:324
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
Muon::MooTrackFitter::m_nfailedTubeFit
std::atomic_uint m_nfailedTubeFit
Definition: MooTrackFitter.h:323
Muon::MooTrackFitter::m_chi2Cut
Gaudi::Property< double > m_chi2Cut
Definition: MooTrackFitter.h:315
Muon::MooTrackFitter::FitterData::avePhi
double avePhi
Definition: MooTrackFitter.h:150
Muon::MooTrackFitter::m_openingAngleCut
Gaudi::Property< double > m_openingAngleCut
Definition: MooTrackFitter.h:311
Muon::MooTrackFitter::thetaSeeding
double thetaSeeding(const MuPatCandidateBase &entry, MeasVec &etaHits) const
calculate theta used for seeding the fit
Definition: MooTrackFitter.cxx:1414
Muon::MooTrackFitter::FitterData::~FitterData
~FitterData()=default
Muon::MooTrackFitter::m_nsuccess
std::atomic_uint m_nsuccess
Definition: MooTrackFitter.h:329
Muon::MooTrackFitter::addFakePhiHits
bool addFakePhiHits(const EventContext &ctx, FitterData &fitterData, const Trk::TrackParameters &referenceParameter) const
check fitterData, add fake phi hits if needed.
Definition: MooTrackFitter.cxx:512
skel.it
it
Definition: skel.GENtoEVGEN.py:423
Muon::MooTrackFitter::SmallLargeChambers
std::pair< int, int > SmallLargeChambers
Definition: MooTrackFitter.h:72
Muon::MooTrackFitter::MeasIt
MeasVec::iterator MeasIt
Definition: MooTrackFitter.h:65
Muon::MooTrackFitter::PrepIt
PrepVec::iterator PrepIt
Definition: MooTrackFitter.h:69
Muon::MooTrackFitter::m_matEffects
Gaudi::Property< int > m_matEffects
Definition: MooTrackFitter.h:271
Muon::MooTrackFitter::m_seedWithAvePhi
Gaudi::Property< bool > m_seedWithAvePhi
Definition: MooTrackFitter.h:296
Muon::MooTrackFitter::FitterData::FitterData
FitterData()=default
MuPatCandidateBase.h
IPropagator.h
Muon::MooTrackFitter::m_nfailedExtractPrecise
std::atomic_uint m_nfailedExtractPrecise
Definition: MooTrackFitter.h:326
Trk::TrkDetElementBase
Definition: TrkDetElementBase.h:52
Muon::MooTrackFitter::cleanPhiHits
bool cleanPhiHits(const EventContext &ctx, double momentum, FitterData &phiHits, const PrepVec &patternPhiHits) const
clean phi hits, returns true if anything happened during the cleaning
Definition: MooTrackFitter.cxx:1686
DCSLFitter.h
Muon::MooTrackFitter::m_patRecInfo
Trk::TrackInfo::TrackPatternRecoInfo m_patRecInfo
Definition: MooTrackFitter.h:273
Muon::MooTrackFitter::FitterData::nSmall
int nSmall
Definition: MooTrackFitter.h:146
Muon::MooTrackFitter::StationPhiData
Definition: MooTrackFitter.h:331
Muon::MooTrackFitter::FitterData::secondHasMomentum
bool secondHasMomentum
Definition: MooTrackFitter.h:168
Muon::MooTrackFitter::fitSplitTrack
std::unique_ptr< Trk::Track > fitSplitTrack(const EventContext &ctx, const Trk::TrackParameters &startPars, const std::vector< const Trk::TrackStateOnSurface * > &tsos) const
construct a track from a list of TSOS and a start parameters
Definition: MooTrackFitter.cxx:2149
Muon::MooTrackFitter::m_pThreshold
Gaudi::Property< double > m_pThreshold
Definition: MooTrackFitter.h:301
Muon::MooTrackFitter::FitterData::hasBarrel
bool hasBarrel
Definition: MooTrackFitter.h:154
MuPatHitTool.h
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::MooTrackFitter::m_trackToSegmentTool
ToolHandle< IMuonTrackToSegmentTool > m_trackToSegmentTool
helper tool to convert tracks into segments
Definition: MooTrackFitter.h:281
Muon::MooTrackFitter::createFakePhiForMeasurement
std::unique_ptr< Trk::MeasurementBase > createFakePhiForMeasurement(const Trk::MeasurementBase &measurement, const Amg::Vector3D *overlapPos, const Amg::Vector3D *phiPos, double error) const
create fake phi hit on the surface of the give measurement
Definition: MooTrackFitter.cxx:825
Muon::MooTrackFitter::getMaterial
bool getMaterial(const Trk::TrackParameters &pars, FitterData &fitterData) const
get material
Muon::MooTrackFitter::FitterData::firstHasMomentum
bool firstHasMomentum
Definition: MooTrackFitter.h:167
Muon::MooTrackFitter::MeasCit
MeasVec::const_iterator MeasCit
Definition: MooTrackFitter.h:66
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Muon::MooTrackFitter::m_slProp
Gaudi::Property< bool > m_slProp
Definition: MooTrackFitter.h:294
Muon::MooTrackFitter::FitterData::phiHits
MeasVec phiHits
Definition: MooTrackFitter.h:140
Muon::MooTrackFitter::m_preCleanChi2Cut
Gaudi::Property< double > m_preCleanChi2Cut
Definition: MooTrackFitter.h:313
Muon::MooTrackFitter::MeasVec
std::vector< const Trk::MeasurementBase * > MeasVec
Definition: MooTrackFitter.h:64
MagneticFieldProperties.h
Muon::MooTrackFitter::FitterData::startPars
std::unique_ptr< Trk::Perigee > startPars
Definition: MooTrackFitter.h:161
Muon::MooTrackFitter::FitterData::etaHits
MeasVec etaHits
Definition: MooTrackFitter.h:141
Muon::MooTrackFitter::FitterData::nLarge
int nLarge
Definition: MooTrackFitter.h:147
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Muon::MooTrackFitter::FitterData::numberOfSLOverlaps
int numberOfSLOverlaps()
Definition: MooTrackFitter.h:172
Muon::MooTrackFitter::m_runOutlier
Gaudi::Property< Trk::RunOutlierRemoval > m_runOutlier
Definition: MooTrackFitter.h:270
Muon::MooTrackFitter::m_printer
ToolHandle< MuonEDMPrinterTool > m_printer
tool to print out EDM objects
Definition: MooTrackFitter.h:279
Muon::MooTrackFitter::interfaceID
static const InterfaceID & interfaceID()
access to tool interface
Definition: MooTrackFitter.h:93
Muon::MooTrackFitter::SLStationMap
std::map< MuonStationIndex::StIndex, SmallLargeChambers > SLStationMap
Definition: MooTrackFitter.h:73
Muon::MooTrackFitter::MaterialLayers
std::vector< std::pair< const Trk::TrackParameters *, const Trk::Layer * > > MaterialLayers
Definition: MooTrackFitter.h:75
Muon::MooTrackFitter::m_cleanPhiHits
Gaudi::Property< bool > m_cleanPhiHits
Definition: MooTrackFitter.h:304
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Muon::MooTrackFitter::corruptEntry
bool corruptEntry(const MuPatCandidateBase &entry) const
sanity check for entries
Definition: MooTrackFitter.cxx:106
IMuonSegmentInOverlapResolvingTool.h
Muon::MooTrackFitter::FitterData::nOverlaps
int nOverlaps
Definition: MooTrackFitter.h:145
Muon::MooTrackFitter::finalize
StatusCode finalize()
finialize method, method taken from bass-class AlgTool
Definition: MooTrackFitter.cxx:78
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
Muon::MooTrackFitter::validMomentum
bool validMomentum(const Trk::TrackParameters &pars) const
check whether mometum of start parameter is ok
Definition: MooTrackFitter.cxx:1870
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
AthAlgTool.h
Muon::MooTrackFitter::~MooTrackFitter
~MooTrackFitter()=default
destructor
Muon::MooTrackFitter::StationPhiData::nLargeChambers
unsigned int nLargeChambers
Definition: MooTrackFitter.h:334
Muon::MooTrackFitter::FitterData::phiMax
double phiMax
Definition: MooTrackFitter.h:152
Muon::MooTrackFitter::m_nfailedFakePrecise
std::atomic_uint m_nfailedFakePrecise
Definition: MooTrackFitter.h:327
Muon::MooTrackFitter::FitterData::hasEndcap
bool hasEndcap
Definition: MooTrackFitter.h:155
Muon::MooTrackFitter::m_usePrefit
Gaudi::Property< bool > m_usePrefit
Definition: MooTrackFitter.h:299
Muon::MooTrackFitter::FitterData::firstEntry
const MuPatCandidateBase * firstEntry
Definition: MooTrackFitter.h:156
Muon::MooTrackFitter::removeSegmentOutliers
void removeSegmentOutliers(FitterData &fitterData) const
Definition: MooTrackFitter.cxx:1984
Muon::MooTrackFitter::m_preciseFirstStation
Gaudi::Property< bool > m_preciseFirstStation
Definition: MooTrackFitter.h:308
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::MooTrackFitter::m_ParticleHypothesis
Trk::ParticleHypothesis m_ParticleHypothesis
nomen est omen
Definition: MooTrackFitter.h:272
Muon::MooTrackFitter::m_nlowMomentum
std::atomic_uint m_nlowMomentum
Definition: MooTrackFitter.h:325
Muon::MooTrackFitter::FitterData::stations
std::set< MuonStationIndex::StIndex > stations
Definition: MooTrackFitter.h:158
Muon::MooTrackFitter::m_nfailedMinMaxPhi
std::atomic_uint m_nfailedMinMaxPhi
Definition: MooTrackFitter.h:319
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
Muon::MooTrackFitter::m_phiHitSelector
ToolHandle< IMuonHitSelector > m_phiHitSelector
tool to clean phi hits
Definition: MooTrackFitter.h:285
Muon::MooTrackFitter::FitterData::secondEntry
const MuPatCandidateBase * secondEntry
Definition: MooTrackFitter.h:157
Muon::MooTrackFitter::FitterData::mdtIdsSecond
std::set< Identifier > mdtIdsSecond
Definition: MooTrackFitter.h:170
Muon::MooTrackFitter::restrictedMomentum
static double restrictedMomentum(double momentum)
impose upper and lower bound on momentum
Definition: MooTrackFitter.cxx:1588
Trk::MeasurementBase
Definition: MeasurementBase.h:58
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
Muon::MooTrackFitter::FitterData::firstIsTrack
bool firstIsTrack
Definition: MooTrackFitter.h:165
IMuonEDMHelperSvc.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
TrackInfo.h
Muon::MooTrackFitter::m_allowFirstFit
Gaudi::Property< bool > m_allowFirstFit
Definition: MooTrackFitter.h:300
IMdtDriftCircleOnTrackCreator.h
Muon::MooTrackFitter::initialize
StatusCode initialize()
initialize method, method taken from bass-class AlgTool
Definition: MooTrackFitter.cxx:56
Muon::MooTrackFitter::m_cosmics
Gaudi::Property< bool > m_cosmics
Definition: MooTrackFitter.h:303
Muon::MooTrackFitter::MooTrackFitter
MooTrackFitter(const std::string &, const std::string &, const IInterface *)
default AlgTool constructor
Definition: MooTrackFitter.cxx:52
Muon::MooTrackFitter::FitterData::phiMin
double phiMin
Definition: MooTrackFitter.h:151
Muon::MooTrackFitter::m_trackSummaryTool
ToolHandle< Trk::ITrackSummaryHelperTool > m_trackSummaryTool
Definition: MooTrackFitter.h:290
Muon::MooTrackFitter::m_nfailedFitPrecise
std::atomic_uint m_nfailedFitPrecise
Definition: MooTrackFitter.h:328
IMuonSegmentMomentumEstimator.h
Muon::MooTrackFitter::cleanSegment
void cleanSegment(const MuonSegment &seg, std::set< Identifier > &removedIdentifiers) const
Definition: MooTrackFitter.cxx:1891
Muon::MooTrackFitter::FitterData::firstLastMeasurements
MeasVec firstLastMeasurements
Definition: MooTrackFitter.h:143
Muon::MooTrackFitter::PrepCit
PrepVec::const_iterator PrepCit
Definition: MooTrackFitter.h:70
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::MuPatHitList
std::vector< MuPatHitPtr > MuPatHitList
Definition: MuPatHit.h:26
Muon::MooTrackFitter::PrepVec
std::vector< const Trk::PrepRawData * > PrepVec
Definition: MooTrackFitter.h:68
Muon::MooTrackFitter::m_nfailedParsInital
std::atomic_uint m_nfailedParsInital
Definition: MooTrackFitter.h:320
Muon::MooTrackFitter::m_propagator
ToolHandle< Trk::IPropagator > m_propagator
propagator
Definition: MooTrackFitter.h:263
Muon::MooTrackFitter::m_magFieldProperties
Trk::MagneticFieldProperties m_magFieldProperties
magnetic field properties
Definition: MooTrackFitter.h:274
Trk::TrackInfo::Moore
@ Moore
Moore (MoMu)
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:177
ITrackSummaryHelperTool.h
Muon::MooTrackFitter::hasPhiConstrain
unsigned int hasPhiConstrain(FitterData &inputData) const
check whether data has sufficient phi constraints
Definition: MooTrackFitter.cxx:976
Muon::MooTrackFitter::FitterData::numberOfLargeChambers
int numberOfLargeChambers()
Definition: MooTrackFitter.h:193
Muon::MooTrackFitter::m_nfailedFakeInitial
std::atomic_uint m_nfailedFakeInitial
Definition: MooTrackFitter.h:322
Muon::MooTrackFitter::FitterData::mdtIdsFirst
std::set< Identifier > mdtIdsFirst
Definition: MooTrackFitter.h:169
Muon::MooTrackFitter::StationPhiData::nSmallChambers
unsigned int nSmallChambers
Definition: MooTrackFitter.h:333
Muon::MooTrackFitter::m_cleaner
ToolHandle< IMuonTrackCleaner > m_cleaner
Definition: MooTrackFitter.h:287
Muon::MuPatTrack
track candidate object.
Definition: MuPatTrack.h:37
Muon::MooTrackFitter::fitWithRefit
std::unique_ptr< Trk::Track > fitWithRefit(const EventContext &ctx, const Trk::Perigee &startPars, MeasVec &hits) const
fit track, refit if needed
Definition: MooTrackFitter.cxx:1650
Muon::MooTrackFitter::splitTrack
std::pair< std::unique_ptr< Trk::Track >, std::unique_ptr< Trk::Track > > splitTrack(const EventContext &ctx, const Trk::Track &track) const
split given track if it crosses the calorimeter volume, code assumes that the track was already extra...
Definition: MooTrackFitter.cxx:1999
Muon::MooTrackFitter::FitterData::secondIsTrack
bool secondIsTrack
Definition: MooTrackFitter.h:166
Muon::MooTrackFitter::m_slFit
Gaudi::Property< bool > m_slFit
Definition: MooTrackFitter.h:293
Muon::MooTrackFitter::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
fitter
Definition: MooTrackFitter.h:265
IMuonTrackToSegmentTool.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
IMuonHitSelector.h
Muon::MooTrackFitter::phiSeeding
double phiSeeding(const EventContext &ctx, FitterData &fitterData) const
calculate phi used to for seeding the fit
Definition: MooTrackFitter.cxx:1311
Muon::MooTrackFitter::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MooTrackFitter.h:275
Muon::MooTrackFitter::FitterData
Definition: MooTrackFitter.h:136
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Muon::MooTrackFitter::fit
std::unique_ptr< Trk::Track > fit(const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &externalPhiHits) const
fit the hits of two MuPatCandidateBase
Definition: MooTrackFitter.cxx:175
Muon::MooTrackFitter::cleanEntry
void cleanEntry(const MuPatCandidateBase &entry, std::set< Identifier > &removedIdentifiers) const
Definition: MooTrackFitter.cxx:1879
Muon::MuonSegment
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment/MuonSegment/MuonSegment.h:45
Muon::MooTrackFitter::createStartParameters
void createStartParameters(const EventContext &ctx, FitterData &inputData) const
create a perigee parameter give the input data
Definition: MooTrackFitter.cxx:1438
AthAlgTool
Definition: AthAlgTool.h:26
MuPatHit.h
error
Definition: IImpactPoint3dEstimator.h:70
ITrackFitter.h
Muon::MooTrackFitter::m_seedAtStartOfTrack
Gaudi::Property< bool > m_seedAtStartOfTrack
Definition: MooTrackFitter.h:307
Trk::TrackInfo::TrackPatternRecoInfo
TrackPatternRecoInfo
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:100
Muon::MooTrackFitter::qOverPFromEntries
double qOverPFromEntries(const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry) const
get q/p using angle + position of the two entries
Definition: MooTrackFitter.cxx:1276
IMuonIdHelperSvc.h
Muon::MooTrackFitter::m_edmHelperSvc
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
multi purpose helper tool
Definition: MooTrackFitter.h:276
Muon::MooTrackFitter::m_overlapResolver
ToolHandle< IMuonSegmentInOverlapResolvingTool > m_overlapResolver
Definition: MooTrackFitter.h:288
Muon::MooTrackFitter::getElementHalfLengths
std::pair< double, double > getElementHalfLengths(const Identifier &id, const Trk::TrkDetElementBase *ele) const
Definition: MooTrackFitter.cxx:1092
Muon::MooTrackFitter::FitterData::garbage
std::vector< std::unique_ptr< const Trk::MeasurementBase > > garbage
Definition: MooTrackFitter.h:163
ServiceHandle< Muon::IMuonIdHelperSvc >