ATLAS Offline Software
MooTrackFitter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUON_MOOTRACKFITTER_H
5 #define MUON_MOOTRACKFITTER_H
6 
8 
9 // Misc
11 
12 // Tracking EDM
14 #include "TrkTrack/TrackInfo.h"
15 
16 // Tools & tool interfaces
31 
32 // Local
33 #include <set>
34 
35 #include "MuPatHitTool.h"
38 
39 namespace Trk {
40  class PrepRawData;
41  class Track;
42  class MeasurementBase;
43  class Layer;
44 } // namespace Trk
45 
46 namespace Muon {
47  class MuPatTrack;
48 }
49 
50 
51 namespace Muon {
52 
59  class MooTrackFitter : public AthAlgTool {
60  public:
61  typedef std::vector<const Trk::MeasurementBase*> MeasVec;
63  typedef MeasVec::const_iterator MeasCit;
64 
65  typedef std::vector<const Trk::PrepRawData*> PrepVec;
67  typedef PrepVec::const_iterator PrepCit;
68 
69  typedef std::pair<int, int> SmallLargeChambers;
70  typedef std::map<MuonStationIndex::StIndex, SmallLargeChambers> SLStationMap;
71 
72  typedef std::vector<std::pair<const Trk::TrackParameters*, const Trk::Layer*> > MaterialLayers;
73 
74 
75 
76  public:
78  MooTrackFitter(const std::string&, const std::string&, const IInterface*);
79 
81  ~MooTrackFitter() = default;
82 
85 
88 
90  static const InterfaceID& interfaceID() {
91  static const InterfaceID IID_MooTrackFitter("Muon::MooTrackFitter", 1, 0);
92  return IID_MooTrackFitter;
93  }
94 
101  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const MuPatCandidateBase& firstEntry, const MuPatCandidateBase& secondEntry,
102  const PrepVec& externalPhiHits) const;
103 
105  std::unique_ptr<Trk::Track> refit(const EventContext& ctx, const MuPatTrack& trkCan) const;
106 
108  std::unique_ptr<Trk::Track> refit(const EventContext& ctx, const Trk::Track& track) const;
109 
111  static double restrictedMomentum(double momentum) ;
112 
114  std::unique_ptr<Trk::Perigee> createPerigee(const EventContext& ctx, const Trk::TrackParameters& firstPars, const Trk::MeasurementBase& firstMeas) const;
115 
117  std::unique_ptr<Trk::Track> fit(const EventContext& ctx, const Trk::Perigee& startPars, MeasVec& hits,
118  Trk::ParticleHypothesis partHypo, bool prefit) const;
119 
121  std::unique_ptr<Trk::Track> fitWithRefit(const EventContext& ctx, const Trk::Perigee& startPars, MeasVec& hits) const;
122 
126  std::pair<std::unique_ptr<Trk::Track>, std::unique_ptr<Trk::Track> > splitTrack(const EventContext& ctx, const Trk::Track& track) const;
127 
129  std::unique_ptr<Trk::Track> fitSplitTrack(const EventContext& ctx, const Trk::TrackParameters& startPars,
130  const std::vector<const Trk::TrackStateOnSurface*>& tsos) const;
131 
132  private:
133  struct FitterData {
134  FitterData() = default;
135  ~FitterData() = default;
136 
141 
142  int nOverlaps{-1};
143  int nSmall{-1};
144  int nLarge{-1};
146 
147  double avePhi{0.};
148  double phiMin{0.};
149  double phiMax{0.};
150 
151  bool hasBarrel{false};
152  bool hasEndcap{false};
155  std::set<MuonStationIndex::StIndex> stations{};
157 
158  std::unique_ptr<Trk::Perigee> startPars{nullptr};
159 
160  std::vector<std::unique_ptr<const Trk::MeasurementBase>> garbage{};
161 
162  bool firstIsTrack{false};
163  bool secondIsTrack{false};
164  bool firstHasMomentum{false};
165  bool secondHasMomentum{false};
166  std::set<Identifier> mdtIdsFirst{};
167  std::set<Identifier> mdtIdsSecond{};
168 
170  // check if already initialized
171  if (nOverlaps == -1) {
172  nOverlaps = 0;
173  nSmall = 0;
174  nLarge = 0;
175  // loop over SLStationMap and count the number of times there is a station with both S and L
178  for (; it != it_end; ++it) {
179  if (it->second.first) ++nSmall;
180  if (it->second.second) ++nLarge;
181  if (it->second.first && it->second.second) ++nOverlaps;
182  }
183  }
184  return nOverlaps;
185  }
187  if (nSmall < 0) numberOfSLOverlaps();
188  return nSmall;
189  }
191  if (nLarge < 0) numberOfSLOverlaps();
192  return nLarge;
193  }
194 
196  };
200  std::unique_ptr<Trk::Track> cleanAndEvaluateTrack(const EventContext& ctx, Trk::Track& track, const std::set<Identifier>& excludedChambers) const;
201 
203  bool extractData(const MuPatCandidateBase& entry1, const MuPatCandidateBase& entry2, FitterData& fitterData) const;
204 
206  bool extractData(FitterData& fitterData, bool usePreciseHits) const;
207 
209  bool addFakePhiHits(const EventContext& ctx, FitterData& fitterData, const Trk::TrackParameters& referenceParameter) const;
210 
212  bool corruptEntry(const MuPatCandidateBase& entry) const;
213 
215  bool getMaterial(const Trk::TrackParameters& pars, FitterData& fitterData) const;
216 
218  void createStartParameters(const EventContext& ctx, FitterData& inputData) const;
219 
221  std::shared_ptr<const MuonSegment> segmentFromEntry(const EventContext& ctx, const MuPatCandidateBase& entry) const;
222 
224  unsigned int hasPhiConstrain(FitterData& inputData) const;
225 
227  unsigned int hasPhiConstrain(Trk::Track* track) const;
228 
230  std::unique_ptr<Trk::MeasurementBase> createFakePhiForMeasurement(const Trk::MeasurementBase& measurement, const Amg::Vector3D* overlapPos,
231  const Amg::Vector3D* phiPos, double error) const;
232 
234  static double qOverPFromEntry(const MuPatCandidateBase& entry) ;
235 
237  double qOverPFromEntries(const EventContext& ctx, const MuPatCandidateBase& firstEntry, const MuPatCandidateBase& secondEntry) const;
238 
240  double phiSeeding(const EventContext& ctx, FitterData& fitterData) const;
241 
243  double thetaSeeding(const MuPatCandidateBase& entry, MeasVec& etaHits) const;
244 
246  bool cleanPhiHits(const EventContext& ctx, double momentum, FitterData& phiHits, const PrepVec& patternPhiHits) const;
247 
249  bool validMomentum(const Trk::TrackParameters& pars) const;
250 
252  bool getMinMaxPhi(FitterData& fitterData) const;
253 
254  void removeSegmentOutliers(FitterData& fitterData) const;
255  void cleanEntry(const MuPatCandidateBase& entry, std::set<Identifier>& removedIdentifiers) const;
256  void cleanSegment(const MuonSegment& seg, std::set<Identifier>& removedIdentifiers) const;
257 
258  std::pair<double, double> getElementHalfLengths(const Identifier& id, const Trk::TrkDetElementBase* ele) const;
259 
260  ToolHandle<Trk::IPropagator> m_propagator{this, "Propagator",
261  "Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator"};
262  ToolHandle<Trk::ITrackFitter> m_trackFitter{this, "Fitter", "Trk::GlobalChi2Fitter/MCTBFitter"};
263  PublicToolHandle<MuPatHitTool> m_hitHandler{this, "HitTool", "Muon::MuPatHitTool/MuPatHitTool"};
264  ToolHandle<IMuonSegmentMomentumEstimator> m_momentumEstimator{
265  this, "SegmentMomentum", "MuonSegmentMomentum/MuonSegmentMomentum"};
266 
267  Gaudi::Property<Trk::RunOutlierRemoval> m_runOutlier{this, "RunOutlier", false, "Switch whether to run outlier logics or not"};
268  Gaudi::Property<int> m_matEffects{this, "MatEffects", 2, "type of material interaction in extrapolation"};
272  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
274  this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
275  "Handle to the service providing the IMuonEDMHelperSvc interface"};
276  PublicToolHandle<MuonEDMPrinterTool> m_printer{this, "MuonPrinterTool",
277  "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"};
278  ToolHandle<IMuonTrackToSegmentTool> m_trackToSegmentTool{
279  this, "TrackToSegmentTool",
280  "Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"};
281 
282  ToolHandle<IMuonHitSelector> m_phiHitSelector{this, "PhiHitSelector",
283  "MuonPhiHitSelector/MuonPhiHitSelector"};
284  ToolHandle<IMuonTrackCleaner> m_cleaner{this, "TrackCleaner", "Muon::MuonTrackCleaner/MuonTrackCleaner"};
285  ToolHandle<IMuonSegmentInOverlapResolvingTool> m_overlapResolver{
286  this, "SegmentInOverlapTool", "Muon::MuonSegmentInOverlapResolvingTool/MuonSegmentInOverlapResolvingTool"};
287  ToolHandle<Trk::ITrackSummaryHelperTool> m_trackSummaryTool{
288  this, "TrackSummaryTool", "Muon::MuonTrackSummaryHelperTool/MuonTrackSummaryHelperTool"}; //<! muon track summary helper
289 
290  Gaudi::Property<bool> m_slFit{this, "SLFit", true, "Perform sl fit"};
291  Gaudi::Property<bool> m_slProp{this, "SLProp", false, "Enable straight line propagation"};
292  Gaudi::Property<bool> m_seedWithSegmentTheta{this, "SeedWithSegmentTheta", true, "Seed with theta connecting first + last eta hit"};
293  Gaudi::Property<bool> m_seedWithAvePhi{this, "SeedWithAvePhi", true, "Seed with average phi of all phi hits"};
294  Gaudi::Property<bool> m_seedPhiWithEtaHits{this, "SeedPhiWithEtaHits", false, "Seed phi from positions first last eta hit"};
295  Gaudi::Property<bool> m_usePreciseHits{this, "UsePreciseHits", false, "Use actual measurement error"};
296  Gaudi::Property<bool> m_usePrefit{this, "UsePrefit", true, "Use prefit"};
297  Gaudi::Property<bool> m_allowFirstFit{this, "AllowFirstFitResult", false, "Return the result of the prefit is final fit fails"};
298  Gaudi::Property<double> m_pThreshold{this, "PThreshold", 500.,
299  "Momentum cut-off. Seeds below the threshold will not be fitted"}; //<!
300  Gaudi::Property<bool> m_cosmics{this, "Cosmics", false, "Special treatment for cosmics"};
301  Gaudi::Property<bool> m_cleanPhiHits{this, "CleanPhiHits", true, "Special flag to switch off phi hit cleaning"};
302  Gaudi::Property<unsigned int> m_phiHitsMax{this, "MaxPatternPhiHits", 40,
303  "If more than maximum number of phi hits on pattern, no hits will be added"};
304  Gaudi::Property<bool> m_seedAtStartOfTrack{this, "SeedAtStartOfTrack", true, "Provide seed parameters at the start of the track"};
305  Gaudi::Property<bool> m_preciseFirstStation{this, "UsePreciseHitsInFirstStation", false,
306  "use precise hits in first station to stabalise the fit"};
307 
308  Gaudi::Property<double> m_openingAngleCut{this, "OpeningAngleCut", 0.3,
309  "cut on the maximum difference in phi between measurements on the track"};
310  Gaudi::Property<double> m_preCleanChi2Cut{this, "PreCleaningReducedChi2Cut", 500.,
311  "minimum chi2/ndof for a track to be passed to cleaner"};
312  Gaudi::Property<double> m_chi2Cut{this, "ReducedChi2Cut", 100., "minimum chi2/ndof for a track to be accepted"};
313 
314  mutable std::atomic_uint m_nfits{0};
315  mutable std::atomic_uint m_nfailedExtractInital{0};
316  mutable std::atomic_uint m_nfailedMinMaxPhi{0};
317  mutable std::atomic_uint m_nfailedParsInital{0};
318  mutable std::atomic_uint m_nfailedExtractCleaning{0};
319  mutable std::atomic_uint m_nfailedFakeInitial{0};
320  mutable std::atomic_uint m_nfailedTubeFit{0};
321  mutable std::atomic_uint m_noPerigee{0};
322  mutable std::atomic_uint m_nlowMomentum{0};
323  mutable std::atomic_uint m_nfailedExtractPrecise{0};
324  mutable std::atomic_uint m_nfailedFakePrecise{0};
325  mutable std::atomic_uint m_nfailedFitPrecise{0};
326  mutable std::atomic_uint m_nsuccess{0};
327 
328  struct StationPhiData {
329  unsigned int nphiHits{0};
330  unsigned int nSmallChambers{0};
331  unsigned int nLargeChambers{0};
332  };
333  };
334 
335 } // namespace Muon
336 
337 #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:302
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Muon::MooTrackFitter::m_nfits
std::atomic_uint m_nfits
Definition: MooTrackFitter.h:314
Muon::MooTrackFitter::FitterData::hitList
MuPatHitList hitList
Definition: MooTrackFitter.h:156
Muon::MooTrackFitter::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
tool to print out EDM objects
Definition: MooTrackFitter.h:276
Muon::MooTrackFitter::FitterData::materialLayers
MaterialLayers materialLayers
Definition: MooTrackFitter.h:195
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:294
Muon::MooTrackFitter::StationPhiData::nphiHits
unsigned int nphiHits
Definition: MooTrackFitter.h:329
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:145
Muon::MooTrackFitter::FitterData::measurements
MeasVec measurements
Definition: MooTrackFitter.h:139
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:318
IMuonTrackCleaner.h
Muon::MooTrackFitter::m_nfailedExtractInital
std::atomic_uint m_nfailedExtractInital
Definition: MooTrackFitter.h:315
Muon::MooTrackFitter::m_seedWithSegmentTheta
Gaudi::Property< bool > m_seedWithSegmentTheta
Definition: MooTrackFitter.h:292
Muon::MooTrackFitter::FitterData::numberOfSmallChambers
int numberOfSmallChambers()
Definition: MooTrackFitter.h:186
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
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:295
MuonEDMPrinterTool.h
Muon::MooTrackFitter::m_hitHandler
PublicToolHandle< MuPatHitTool > m_hitHandler
hit handler
Definition: MooTrackFitter.h:263
Muon::MooTrackFitter::m_momentumEstimator
ToolHandle< IMuonSegmentMomentumEstimator > m_momentumEstimator
tool to estimate track momentum
Definition: MooTrackFitter.h:264
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:59
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:321
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:320
Muon::MooTrackFitter::m_chi2Cut
Gaudi::Property< double > m_chi2Cut
Definition: MooTrackFitter.h:312
Muon::MooTrackFitter::FitterData::avePhi
double avePhi
Definition: MooTrackFitter.h:147
Muon::MooTrackFitter::m_openingAngleCut
Gaudi::Property< double > m_openingAngleCut
Definition: MooTrackFitter.h:308
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:326
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:396
Muon::MooTrackFitter::SmallLargeChambers
std::pair< int, int > SmallLargeChambers
Definition: MooTrackFitter.h:69
Muon::MooTrackFitter::MeasIt
MeasVec::iterator MeasIt
Definition: MooTrackFitter.h:62
Muon::MooTrackFitter::PrepIt
PrepVec::iterator PrepIt
Definition: MooTrackFitter.h:66
Muon::MooTrackFitter::m_matEffects
Gaudi::Property< int > m_matEffects
Definition: MooTrackFitter.h:268
Muon::MooTrackFitter::m_seedWithAvePhi
Gaudi::Property< bool > m_seedWithAvePhi
Definition: MooTrackFitter.h:293
Muon::MooTrackFitter::FitterData::FitterData
FitterData()=default
MuPatCandidateBase.h
IPropagator.h
Muon::MooTrackFitter::m_nfailedExtractPrecise
std::atomic_uint m_nfailedExtractPrecise
Definition: MooTrackFitter.h:323
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:270
Muon::MooTrackFitter::FitterData::nSmall
int nSmall
Definition: MooTrackFitter.h:143
Muon::MooTrackFitter::StationPhiData
Definition: MooTrackFitter.h:328
Muon::MooTrackFitter::FitterData::secondHasMomentum
bool secondHasMomentum
Definition: MooTrackFitter.h:165
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:298
Muon::MooTrackFitter::FitterData::hasBarrel
bool hasBarrel
Definition: MooTrackFitter.h:151
MuPatHitTool.h
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:45
Muon::MooTrackFitter::m_trackToSegmentTool
ToolHandle< IMuonTrackToSegmentTool > m_trackToSegmentTool
helper tool to convert tracks into segments
Definition: MooTrackFitter.h:278
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:164
Muon::MooTrackFitter::MeasCit
MeasVec::const_iterator MeasCit
Definition: MooTrackFitter.h:63
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Muon::MooTrackFitter::m_slProp
Gaudi::Property< bool > m_slProp
Definition: MooTrackFitter.h:291
Muon::MooTrackFitter::FitterData::phiHits
MeasVec phiHits
Definition: MooTrackFitter.h:137
Muon::MooTrackFitter::m_preCleanChi2Cut
Gaudi::Property< double > m_preCleanChi2Cut
Definition: MooTrackFitter.h:310
Muon::MooTrackFitter::MeasVec
std::vector< const Trk::MeasurementBase * > MeasVec
Definition: MooTrackFitter.h:61
MagneticFieldProperties.h
Muon::MooTrackFitter::FitterData::startPars
std::unique_ptr< Trk::Perigee > startPars
Definition: MooTrackFitter.h:158
Muon::MooTrackFitter::FitterData::etaHits
MeasVec etaHits
Definition: MooTrackFitter.h:138
Muon::MooTrackFitter::FitterData::nLarge
int nLarge
Definition: MooTrackFitter.h:144
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Muon::MooTrackFitter::FitterData::numberOfSLOverlaps
int numberOfSLOverlaps()
Definition: MooTrackFitter.h:169
Muon::MooTrackFitter::m_runOutlier
Gaudi::Property< Trk::RunOutlierRemoval > m_runOutlier
Definition: MooTrackFitter.h:267
Muon::MooTrackFitter::interfaceID
static const InterfaceID & interfaceID()
access to tool interface
Definition: MooTrackFitter.h:90
Muon::MooTrackFitter::SLStationMap
std::map< MuonStationIndex::StIndex, SmallLargeChambers > SLStationMap
Definition: MooTrackFitter.h:70
Muon::MooTrackFitter::MaterialLayers
std::vector< std::pair< const Trk::TrackParameters *, const Trk::Layer * > > MaterialLayers
Definition: MooTrackFitter.h:72
Muon::MooTrackFitter::m_cleanPhiHits
Gaudi::Property< bool > m_cleanPhiHits
Definition: MooTrackFitter.h:301
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:142
Muon::MooTrackFitter::finalize
StatusCode finalize()
finialize method, method taken from bass-class AlgTool
Definition: MooTrackFitter.cxx:78
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
AthAlgTool.h
Muon::MooTrackFitter::~MooTrackFitter
~MooTrackFitter()=default
destructor
Muon::MooTrackFitter::StationPhiData::nLargeChambers
unsigned int nLargeChambers
Definition: MooTrackFitter.h:331
Muon::MooTrackFitter::FitterData::phiMax
double phiMax
Definition: MooTrackFitter.h:149
Muon::MooTrackFitter::m_nfailedFakePrecise
std::atomic_uint m_nfailedFakePrecise
Definition: MooTrackFitter.h:324
Muon::MooTrackFitter::FitterData::hasEndcap
bool hasEndcap
Definition: MooTrackFitter.h:152
Muon::MooTrackFitter::m_usePrefit
Gaudi::Property< bool > m_usePrefit
Definition: MooTrackFitter.h:296
Muon::MooTrackFitter::FitterData::firstEntry
const MuPatCandidateBase * firstEntry
Definition: MooTrackFitter.h:153
Muon::MooTrackFitter::removeSegmentOutliers
void removeSegmentOutliers(FitterData &fitterData) const
Definition: MooTrackFitter.cxx:1984
Muon::MooTrackFitter::m_preciseFirstStation
Gaudi::Property< bool > m_preciseFirstStation
Definition: MooTrackFitter.h:305
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::MooTrackFitter::m_ParticleHypothesis
Trk::ParticleHypothesis m_ParticleHypothesis
nomen est omen
Definition: MooTrackFitter.h:269
Muon::MooTrackFitter::m_nlowMomentum
std::atomic_uint m_nlowMomentum
Definition: MooTrackFitter.h:322
Muon::MooTrackFitter::FitterData::stations
std::set< MuonStationIndex::StIndex > stations
Definition: MooTrackFitter.h:155
Muon::MooTrackFitter::m_nfailedMinMaxPhi
std::atomic_uint m_nfailedMinMaxPhi
Definition: MooTrackFitter.h:316
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:282
Muon::MooTrackFitter::FitterData::secondEntry
const MuPatCandidateBase * secondEntry
Definition: MooTrackFitter.h:154
Muon::MooTrackFitter::FitterData::mdtIdsSecond
std::set< Identifier > mdtIdsSecond
Definition: MooTrackFitter.h:167
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:162
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:297
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:300
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:148
Muon::MooTrackFitter::m_trackSummaryTool
ToolHandle< Trk::ITrackSummaryHelperTool > m_trackSummaryTool
Definition: MooTrackFitter.h:287
Muon::MooTrackFitter::m_nfailedFitPrecise
std::atomic_uint m_nfailedFitPrecise
Definition: MooTrackFitter.h:325
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:140
Muon::MooTrackFitter::PrepCit
PrepVec::const_iterator PrepCit
Definition: MooTrackFitter.h:67
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:65
Muon::MooTrackFitter::m_nfailedParsInital
std::atomic_uint m_nfailedParsInital
Definition: MooTrackFitter.h:317
Muon::MooTrackFitter::m_propagator
ToolHandle< Trk::IPropagator > m_propagator
propagator
Definition: MooTrackFitter.h:260
Muon::MooTrackFitter::m_magFieldProperties
Trk::MagneticFieldProperties m_magFieldProperties
magnetic field properties
Definition: MooTrackFitter.h:271
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:190
Muon::MooTrackFitter::m_nfailedFakeInitial
std::atomic_uint m_nfailedFakeInitial
Definition: MooTrackFitter.h:319
Muon::MooTrackFitter::FitterData::mdtIdsFirst
std::set< Identifier > mdtIdsFirst
Definition: MooTrackFitter.h:166
Muon::MooTrackFitter::StationPhiData::nSmallChambers
unsigned int nSmallChambers
Definition: MooTrackFitter.h:330
Muon::MooTrackFitter::m_cleaner
ToolHandle< IMuonTrackCleaner > m_cleaner
Definition: MooTrackFitter.h:284
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:163
Muon::MooTrackFitter::m_slFit
Gaudi::Property< bool > m_slFit
Definition: MooTrackFitter.h:290
Muon::MooTrackFitter::m_trackFitter
ToolHandle< Trk::ITrackFitter > m_trackFitter
fitter
Definition: MooTrackFitter.h:262
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:272
Muon::MooTrackFitter::FitterData
Definition: MooTrackFitter.h:133
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:304
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:273
Muon::MooTrackFitter::m_overlapResolver
ToolHandle< IMuonSegmentInOverlapResolvingTool > m_overlapResolver
Definition: MooTrackFitter.h:285
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:160
ServiceHandle< Muon::IMuonIdHelperSvc >
Identifier
Definition: IdentifierFieldParser.cxx:14