Loading [MathJax]/jax/output/SVG/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Extrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 // Extrapolator.h, (c) ATLAS Detector software
8 
9 #ifndef TRKEXTOOLS_EXTRAPOLATOR_H
10 #define TRKEXTOOLS_EXTRAPOLATOR_H
11 
12 #include "LocalExtrapolatorCache.h" //for Trk::Cache
13 #include "ObjContainer.h"
14 
16 #include "TrkExInterfaces/IMaterialEffectsUpdator.h" // in tool handle array
17 #include "TrkExInterfaces/INavigator.h" //in tool handle
18 #include "TrkExInterfaces/IPropagator.h" //in tool handle
19 // Trk
21 #include "TrkEventPrimitives/PropDirection.h" //enum
22 #include "TrkGeometry/MagneticFieldProperties.h" //member
24 #include "TrkParameters/TrackParameters.h" //template parameter in typedef
25 #include "TrkSurfaces/BoundaryCheck.h" //template parameter in typedef
26 // Amg
27 #include "EventPrimitives/EventPrimitives.h" //Amg::Vector etc
28 // xAOD
29 #include "xAODTracking/NeutralParticle.h" //typedef
30 #include "xAODTracking/TrackParticle.h" //typedef
31 // Gaudi/StoreGate
34 #include "GaudiKernel/ToolHandle.h"
35 #include <Gaudi/Accumulators.h>
36 // STL
37 #include <cstring>
38 #include <map>
39 #include <memory>
40 #include <utility>
41 #include <vector>
42 
43 class MsgStream;
44 class EventContext;
45 
46 namespace Trk {
47 class Track;
48 class Surface;
49 class Layer;
50 class Volume;
51 class DetachedTrackingVolume;
52 class TrackingGeometry;
53 class TrackParticleBase;
54 class IDynamicLayerCreator;
55 class IMultipleScatteringUpdator;
56 class IEnergyLossUpdator;
57 class AlignableTrackingVolume;
58 class ExtrapolationCache;
59 class TrackingVolume;
60 
61 typedef std::vector<std::unique_ptr<Trk::TrackParameters>> TrackParametersUVector;
62 typedef std::pair<const Surface*, BoundaryCheck> DestSurf;
63 
67 
68 
116  : public AthCheckedComponent<AthAlgTool>
117  , virtual public IExtrapolator
118 {
119 public:
120 
122  Extrapolator(const std::string&, const std::string&, const IInterface*);
125 
127  virtual StatusCode initialize() override;
129  virtual StatusCode finalize() override;
130 
135  virtual std::unique_ptr<TrackParameters> extrapolateDirectly(
136  const EventContext& ctx,
137  const TrackParameters& parm,
138  const Surface& sf,
140  const BoundaryCheck& bcheck = true,
141  ParticleHypothesis particle = pion) const override final;
142 
145  virtual std::unique_ptr<NeutralParameters> extrapolate(
147  const Surface& sf,
149  const BoundaryCheck& bcheck = true) const override final;
150 
153  virtual std::unique_ptr<TrackParameters> extrapolate(
154  const EventContext& ctx,
155  const TrackParameters& parm,
156  const Surface& sf,
158  const BoundaryCheck& bcheck = true,
159  ParticleHypothesis particle = pion,
160  MaterialUpdateMode matupmode = addNoise,
161  Trk::ExtrapolationCache* cache = nullptr) const override final;
162 
168  const EventContext& ctx,
169  const TrackParameters& parm,
170  const Surface& sf,
172  const BoundaryCheck& bcheck = true,
173  ParticleHypothesis particle = pion) const override final;
174 
178  virtual std::unique_ptr<TrackParameters> extrapolateTrack(
179  const EventContext& ctx,
180  const Track& trk,
181  const Surface& sf,
183  const BoundaryCheck& bcheck = true,
184  ParticleHypothesis particle = pion,
185  MaterialUpdateMode matupmode = addNoise,
186  Trk::ExtrapolationCache* cache = nullptr) const override final;
187 
194  const EventContext& ctx,
195  const TrackParameters& parm,
197  const BoundaryCheck& bcheck = true,
198  ParticleHypothesis particle = pion,
199  const Volume* boundaryVol = nullptr) const override final;
200 
206  const EventContext& ctx,
208  const Surface& sf,
210  const BoundaryCheck& bcheck,
211  ParticleHypothesis particle = pion,
212  Trk::ExtrapolationCache* cache = nullptr) const override final;
213 
221  virtual std::unique_ptr<
222  std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>>
224  const EventContext& ctx,
225  const Trk::TrackParameters& parm,
227  Trk::ParticleHypothesis particle,
228  int destination = 3) const override final;
229 
231  virtual std::pair<std::unique_ptr<TrackParameters>, const Layer*> extrapolateToNextActiveLayerM(
232  const EventContext& ctx,
233  const TrackParameters& parm,
235  const BoundaryCheck& bcheck,
236  std::vector<const Trk::TrackStateOnSurface*>& material,
237  ParticleHypothesis particle = pion,
238  MaterialUpdateMode matupmode = addNoise) const override final;
239 
241  virtual std::unique_ptr<TrackParameters> extrapolateToVolume(
242  const EventContext& ctx,
243  const TrackParameters& parm,
244  const Trk::TrackingVolume& vol,
246  ParticleHypothesis particle = pion) const override final;
247 
249  virtual const TrackingGeometry* trackingGeometry() const override final;
250 
251 private:
252 
253  typedef std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>> identifiedParameters_t;
258  const EventContext& ctx,
259  Cache& cache,
260  const IPropagator& prop,
261  TrackParmPtr parm,
262  const Surface& sf,
264  const BoundaryCheck& bcheck = true,
265  ParticleHypothesis particle = pion,
266  MaterialUpdateMode matupmode = addNoise) const;
267 
274  const EventContext& ctx,
275  const IPropagator& prop,
276  const TrackParameters& parm,
277  const Surface& sf,
279  const BoundaryCheck& bcheck = true,
280  ParticleHypothesis particle = pion) const;
281 
290  const EventContext& ctx,
291  Cache& cache,
292  const IPropagator& prop,
293  TrackParmPtr parm,
294  const std::vector<MaterialEffectsOnTrack>& sfMeff,
295  const TrackingVolume& tvol,
297  ParticleHypothesis particle = pion,
298  MaterialUpdateMode matupmode = addNoise) const;
299 
303  const EventContext& ctx,
304  Cache& cache,
305  TrackParmPtr parm,
306  const Surface& sf,
308  const BoundaryCheck& bcheck = true,
309  ParticleHypothesis particle = pion,
310  MaterialUpdateMode matupmode = addNoise,
311  Trk::ExtrapolationCache* extrapolationCache = nullptr) const;
312 
315  std::unique_ptr<TrackParameters> extrapolateDirectlyImpl(
316  const EventContext& ctx,
317  const IPropagator& prop,
318  const TrackParameters& parm,
319  const Surface& sf,
321  const BoundaryCheck& bcheck = true,
322  ParticleHypothesis particle = pion) const;
323 
327  const EventContext& ctx,
328  Cache& cache,
329  const IPropagator& prop,
330  TrackParmPtr parm,
332  const BoundaryCheck& bcheck = true,
333  ParticleHypothesis particle = pion,
334  const Volume* boundaryVol = nullptr) const;
335 
338  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
340  const EventContext& ctx,
341  const IPropagator& prop,
342  const TrackParameters& parm,
344  const BoundaryCheck& bcheck,
345  ParticleHypothesis particle = pion,
346  MaterialUpdateMode matupmode = addNoise) const;
347 
350  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
352  const EventContext& ctx,
353  const IPropagator& prop,
354  const TrackParameters& parm,
356  const BoundaryCheck& bcheck,
357  std::vector<const Trk::TrackStateOnSurface*>& material,
358  ParticleHypothesis particle = pion,
359  MaterialUpdateMode matupmode = addNoise) const;
360 
363  std::unique_ptr<TrackParameters> extrapolateToVolumeImpl(
364  const EventContext& ctx,
365  const IPropagator& prop,
366  const TrackParameters& parm,
367  const Trk::TrackingVolume& vol,
369  ParticleHypothesis particle = pion) const;
370 
386  Cache& cache,
387  const IPropagator& prop,
388  TrackParmPtr parm,
389  const Surface& sf,
390  const Layer* associatedLayer,
391  const TrackingVolume& tvol,
393  const BoundaryCheck& bcheck = true,
394  ParticleHypothesis particle = pion,
395  MaterialUpdateMode matupmode = addNoise) const;
396 
401  Cache& cache,
402  bool toBoundary,
403  const IPropagator& prop,
404  TrackParmPtr parm,
405  const Layer* associatedLayer,
406  const TrackingVolume& tvol,
408  const BoundaryCheck& bcheck = true,
409  ParticleHypothesis particle = pion,
410  MaterialUpdateMode matupmode = addNoise) const;
411 
414  const EventContext& ctx,
415  Cache& cache,
416  const IPropagator& prop,
417  TrackParmPtr parm,
418  const Surface& sf,
419  const TrackingVolume& tvol,
421  const BoundaryCheck& bcheck = true,
422  ParticleHypothesis particle = pion,
423  MaterialUpdateMode matupmode = addNoise) const;
424 
426  const EventContext& ctx,
427  Cache& cache,
428  const IPropagator& prop,
429  TrackParmPtr parm,
430  const Trk::Surface* destSurf,
431  const Trk::TrackingVolume* vol,
433  const BoundaryCheck& bcheck,
434  ParticleHypothesis particle = pion,
435  MaterialUpdateMode matupmode = addNoise) const;
436 
438  const EventContext& ctx,
439  Cache& cache,
440  const IPropagator& prop,
441  TrackParmPtr parm,
442  const Trk::Surface* destSurf,
445  ParticleHypothesis particle = pion) const;
446 
448  const EventContext& ctx,
449  Cache& cache,
450  TrackParmPtr parm,
451  double pathLim,
453  Trk::ParticleHypothesis particle,
454  const Trk::TrackingVolume* destVol,
455  MaterialUpdateMode matupmod = addNoise) const;
456 
471  const EventContext& ctx,
472  Cache& cache,
473  const IPropagator& prop,
474  TrackParmPtr parm,
475  const Layer* associatedLayer,
476  const TrackingVolume& tvol,
478  const BoundaryCheck& bcheck = true,
479  ParticleHypothesis particle = pion,
480  MaterialUpdateMode matupmode = addNoise) const;
481 
485  const EventContext& ctx,
486  Cache& cache,
487  const IPropagator& prop,
488  TrackParmPtr parm,
489  const TrackingVolume& tvol,
490  const Layer* nextLayer,
491  const Layer* destinationLayer,
492  TrackParmPtr navParameters,
494  const BoundaryCheck& bcheck = true,
495  ParticleHypothesis particle = pion,
496  MaterialUpdateMode matupmode = addNoise) const;
497 
501  const EventContext& ctx,
502  Cache& cache,
503  const IPropagator& prop,
504  TrackParmPtr parm,
505  const Surface& sf,
506  const Layer& lay,
507  const TrackingVolume& tvol,
508  const Layer* startLayer,
510  const BoundaryCheck& bcheck = true,
511  ParticleHypothesis particle = pion,
512  MaterialUpdateMode matupmode = addNoise) const;
513 
519  const EventContext& ctx,
520  Cache& cache,
521  const IPropagator& prop,
522  TrackParmPtr parm,
523  const Layer& lay,
524  const TrackingVolume& tvol,
526  const BoundaryCheck& bcheck = true,
527  ParticleHypothesis particle = pion,
528  MaterialUpdateMode matupmode = addNoise,
529  bool perpendicularCheck = true) const;
530 
532  void overlapSearch(const EventContext& ctx,
533  Cache& cache,
534  const IPropagator& prop,
535  TrackParmPtr parm,
536  TrackParmPtr parsOnLayer,
537  const Layer& lay,
538  const TrackingVolume& tvol,
540  const BoundaryCheck& bcheck = true,
541  ParticleHypothesis particle = pion,
542  bool startingLayer = false) const;
543 
551  const EventContext& ctx,
552  Cache& cache,
553  const Trk::IPropagator& prop,
554  TrackParmPtr startPars,
555  const Trk::Surface& destSurface,
557  ParticleHypothesis particle,
558  ManagedTrackParmPtr& referenceParameters,
559  const Trk::Layer*& associatedLayer,
560  const Trk::TrackingVolume*& associatedVolume,
561  const Trk::TrackingVolume*& destinationVolume) const;
562 
567  bool radialDirectionCheck(const EventContext& ctx,
568  const IPropagator& prop,
569  const TrackParameters& startParm,
570  const TrackParameters& parsOnLayer,
571  const TrackingVolume& tvol,
573  ParticleHypothesis particle = pion) const;
574 
577 
580 
581 
585 
587  std::string positionOutput(const Amg::Vector3D& pos) const;
588 
590  void addMaterialEffectsOnTrack(const EventContext& ctx,
591  Cache& cache,
592  const Trk::IPropagator& prop,
593  TrackParmPtr parm,
594  const Trk::Layer& lay,
595  const Trk::TrackingVolume& vol,
596  Trk::PropDirection propDir,
598 
599 
600 
603  // unsigned int geoIDToDetOrder(Trk::GeometrySignature geoid) const;
604 
605  // --------------- Used Tools ----------------------------- //
607  ToolHandleArray<IPropagator> m_propagators{ this, "Propagators", {} };
609  ToolHandle<IPropagator> m_stepPropagator{
610  this,
611  "STEP_Propagator",
612  "Trk::STEP_Propagator/AtlasSTEP_Propagator"
613  };
615  ToolHandle<INavigator> m_navigator{ this,
616  "Navigator",
617  "Trk::Navigator/AtlasNavigator" };
619  ToolHandleArray<IMaterialEffectsUpdator> m_updaters{
620  this,
621  "MaterialEffectsUpdators",
622  {}
623  };
625  ToolHandle<IMultipleScatteringUpdator> m_msupdater{
626  this,
627  "MultipleScatteringUpdater",
628  "Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator"
629  };
631  ToolHandle<IEnergyLossUpdator> m_elossupdater{ this,
632  "EnergyLossUpdater",
633  "Trk::EnergyLossUpdator/AtlasEnergyLossUpdator" };
634 
635  // ---------------- For Extrapolation handling ------------ //
636 
638  std::vector<const IPropagator*> m_subPropagators;
640  std::vector<const IMaterialEffectsUpdator*> m_subupdaters;
641 
642  // ---------------- For Extrapolator configuration ------------ //
643 
644  std::vector<std::string> m_propNames;
645  std::vector<std::string> m_updatNames;
646 
647  // --------------- General steering & Navigation -------------- //
648 
656  bool m_extendedLayerSearch;
664  unsigned int m_meotpIndex;
665  //if we have no valid subpropagatos it will be set to an INVALID value
668  unsigned int m_initialLayerAttempts;
670  unsigned int m_maxMethodSequence;
672  double m_tolerance;
673  // ------------------------------------------------------- //
678  unsigned int m_maxNavigSurf;
679  unsigned int m_maxNavigVol;
681  //------------ Magnetic field properties
684  //------------Reference surface --------------
685  std::unique_ptr<Surface> m_referenceSurface;
686  //-------------------------- SCREEN output steering -------------------------------------------//
688  //------------------------- VALIDATION SECTION ------------------------------------------//
689  // flags
693 
694  // extrapolation counters
695  mutable Gaudi::Accumulators::Counter<> m_extrapolateCalls;
696  mutable Gaudi::Accumulators::Counter<> m_extrapolateBlindlyCalls;
697  mutable Gaudi::Accumulators::Counter<> m_extrapolateDirectlyCalls;
698  mutable Gaudi::Accumulators::Counter<> m_extrapolateStepwiseCalls;
699 
700  mutable Gaudi::Accumulators::Counter<> m_startThroughAssociation;
701  mutable Gaudi::Accumulators::Counter<> m_startThroughRecall;
702  mutable Gaudi::Accumulators::Counter<> m_startThroughGlobalSearch;
703  mutable Gaudi::Accumulators::Counter<> m_destinationThroughAssociation;
704  mutable Gaudi::Accumulators::Counter<> m_destinationThroughRecall;
705  mutable Gaudi::Accumulators::Counter<> m_destinationThroughGlobalSearch;
706  mutable Gaudi::Accumulators::Counter<> m_layerSwitched;
707 
708  // navigation counters
709  mutable Gaudi::Accumulators::Counter<> m_navigationBreakLoop;
710  mutable Gaudi::Accumulators::Counter<> m_navigationBreakOscillation;
711  mutable Gaudi::Accumulators::Counter<> m_navigationBreakNoVolume;
712  mutable Gaudi::Accumulators::Counter<> m_navigationBreakDistIncrease;
713  mutable Gaudi::Accumulators::Counter<>m_navigationBreakVolumeSignature;
714  mutable Gaudi::Accumulators::Counter<> m_overlapSurfaceHit;
715 
716  mutable Gaudi::Accumulators::Counter<> m_meotSearchCallsFw;
717  mutable Gaudi::Accumulators::Counter<> m_meotSearchCallsBw;
718  mutable Gaudi::Accumulators::Counter<> m_meotSearchSuccessfulFw;
719  mutable Gaudi::Accumulators::Counter<> m_meotSearchSuccessfulBw;
720 };
721 
722 } // end of namespace
724 
725 #endif // TRKEXTOOLS_TRKEXTRAPOLATOR_H
726 
Trk::Extrapolator::initializeNavigation
PropDirection initializeNavigation(const EventContext &ctx, Cache &cache, const Trk::IPropagator &prop, TrackParmPtr startPars, const Trk::Surface &destSurface, Trk::PropDirection dir, ParticleHypothesis particle, ManagedTrackParmPtr &referenceParameters, const Trk::Layer *&associatedLayer, const Trk::TrackingVolume *&associatedVolume, const Trk::TrackingVolume *&destinationVolume) const
Private method for Initial Extrapolation setup -> overwrites the given pointers for the start and des...
Definition: Extrapolator.cxx:4066
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::Extrapolator::m_subSurfaceLevel
bool m_subSurfaceLevel
tep down to sub-surface level
Definition: Extrapolator.h:654
Trk::Extrapolator::m_successiveLayerAttempts
unsigned int m_successiveLayerAttempts
layer intersection attemps after one layer has been hit sucessfully
Definition: Extrapolator.h:669
Trk::Extrapolator::m_returnPassiveLayers
bool m_returnPassiveLayers
Definition: Extrapolator.h:663
Trk::Extrapolator
Extrapolation of track parameters and their associated covariances to destination surfaces.
Definition: Extrapolator.h:118
Trk::TrackParametersUVector
std::vector< std::unique_ptr< Trk::TrackParameters > > TrackParametersUVector
Definition: Extrapolator.h:59
Trk::Extrapolator::finalize
virtual StatusCode finalize() override
AlgTool finalize method.
Definition: Extrapolator.cxx:368
Trk::Extrapolator::m_stopWithUpdateZero
bool m_stopWithUpdateZero
return 0 if update kills the trajectory
Definition: Extrapolator.h:653
Trk::Extrapolator::m_extendedLayerSearch
bool m_extendedLayerSearch
extended layer search
Definition: Extrapolator.h:657
get_generator_info.result
result
Definition: get_generator_info.py:21
Trk::Extrapolator::m_useMuonMatApprox
bool m_useMuonMatApprox
use approximative MS inert material
Definition: Extrapolator.h:675
TrackParameters.h
Trk::Extrapolator::returnResult
const Trk::TrackParameters * returnResult(Cache &cache, const Trk::TrackParameters *result) const
Private method to return from extrapolate() main method, cleans up, calls model action or validation ...
Trk::Extrapolator::m_tolerance
double m_tolerance
surfacen & volume tolerance
Definition: Extrapolator.h:672
Trk::Extrapolator::extrapolateImpl
ManagedTrackParmPtr extrapolateImpl(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Actual heavy lifting implementation for extrapolate.
Definition: Extrapolator.cxx:2220
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::Extrapolator::m_elossupdater
ToolHandle< IEnergyLossUpdator > m_elossupdater
Definition: Extrapolator.h:631
Trk::Extrapolator::m_propNames
std::vector< std::string > m_propNames
configuration of subPropagators
Definition: Extrapolator.h:644
Trk::Extrapolator::m_extrapolateDirectlyCalls
Gaudi::Accumulators::Counter m_extrapolateDirectlyCalls
number of calls: extrapolateDirectly() method
Definition: Extrapolator.h:697
Trk::Extrapolator::m_extrapolateBlindlyCalls
Gaudi::Accumulators::Counter m_extrapolateBlindlyCalls
number of calls: extrapolateBlindly() method
Definition: Extrapolator.h:696
Trk::Extrapolator::m_navigationBreakNoVolume
Gaudi::Accumulators::Counter m_navigationBreakNoVolume
number of navigation breaks due no Volume found
Definition: Extrapolator.h:711
Trk::Extrapolator::extrapolateToVolumeBoundary
void extrapolateToVolumeBoundary(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Layer *associatedLayer, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Private method for extrapolation in intermediate volume to boundary surface.
Definition: Extrapolator.cxx:3087
Trk::Extrapolator::m_materialEffectsOnTrackValidation
bool m_materialEffectsOnTrackValidation
mat effects on track validation
Definition: Extrapolator.h:692
Trk::Extrapolator::extrapolateToNextActiveLayerImpl
std::pair< std::unique_ptr< TrackParameters >, const Layer * > extrapolateToNextActiveLayerImpl(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parm, PropDirection dir, const BoundaryCheck &bcheck, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Actual heavy lifting implementation for extrapolateToNextActiveLayer.
Trk::Cache
Definition: LocalExtrapolatorCache.h:27
Trk::Extrapolator::m_activeOverlap
bool m_activeOverlap
consider overlaps between active muon volumes
Definition: Extrapolator.h:674
Trk::Extrapolator::collectIntersections
virtual std::unique_ptr< std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > > collectIntersections(const EventContext &ctx, const Trk::TrackParameters &parm, Trk::PropDirection dir, Trk::ParticleHypothesis particle, int destination=3) const override final
Extrapolation method collecting intersections with subdetector boundaries and active volumes/layers.
Definition: Extrapolator.cxx:4457
Trk::Extrapolator::m_printRzOutput
bool m_printRzOutput
Definition: Extrapolator.h:687
Trk::Extrapolator::m_numOfValidPropagators
unsigned int m_numOfValidPropagators
Definition: Extrapolator.h:667
Trk::Extrapolator::m_navigationBreakLoop
Gaudi::Accumulators::Counter m_navigationBreakLoop
number of navigation breaks due to loop
Definition: Extrapolator.h:709
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::Extrapolator::extrapolateDirectlyImpl
std::unique_ptr< TrackParameters > extrapolateDirectlyImpl(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const
Actual heavy lifting implementation for extrapolateDirectly.
Definition: Extrapolator.cxx:1862
PropDirection.h
IExtrapolator.h
IPropagator.h
Trk::MaterialUpdateMode
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
Definition: MaterialUpdateMode.h:18
Trk::Extrapolator::m_referenceSurface
std::unique_ptr< Surface > m_referenceSurface
Definition: Extrapolator.h:685
NeutralParameters.h
Trk::Extrapolator::m_destinationThroughRecall
Gaudi::Accumulators::Counter m_destinationThroughRecall
navigation intialization
Definition: Extrapolator.h:704
Trk::Extrapolator::m_overlapSurfaceHit
Gaudi::Accumulators::Counter m_overlapSurfaceHit
number of OverlapSurfaces found
Definition: Extrapolator.h:714
Trk::Extrapolator::m_fastField
bool m_fastField
Definition: Extrapolator.h:682
Trk::Extrapolator::~Extrapolator
~Extrapolator()
Destructor.
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::Extrapolator::m_meotSearchSuccessfulBw
Gaudi::Accumulators::Counter m_meotSearchSuccessfulBw
how often the meot search was successful: backward
Definition: Extrapolator.h:719
Trk::Extrapolator::m_includeMaterialEffects
bool m_includeMaterialEffects
boolean to switch on/off material effects
Definition: Extrapolator.h:649
Trk::Extrapolator::m_extrapolateStepwiseCalls
Gaudi::Accumulators::Counter m_extrapolateStepwiseCalls
number of calls: extrapolateStepwise() method
Definition: Extrapolator.h:698
Trk::Extrapolator::m_extrapolateCalls
Gaudi::Accumulators::Counter m_extrapolateCalls
number of calls: extrapolate() method
Definition: Extrapolator.h:695
Trk::Extrapolator::m_subupdaters
std::vector< const IMaterialEffectsUpdator * > m_subupdaters
Definition: Extrapolator.h:640
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::Extrapolator::m_startThroughGlobalSearch
Gaudi::Accumulators::Counter m_startThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:702
Trk::Extrapolator::extrapolateToVolume
virtual std::unique_ptr< TrackParameters > extrapolateToVolume(const EventContext &ctx, const TrackParameters &parm, const Trk::TrackingVolume &vol, PropDirection dir=anyDirection, ParticleHypothesis particle=pion) const override final
Extrapolation to volume :
Definition: Extrapolator.cxx:2127
Trk::Extrapolator::extrapolateToVolumeImpl
std::unique_ptr< TrackParameters > extrapolateToVolumeImpl(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parm, const Trk::TrackingVolume &vol, PropDirection dir=anyDirection, ParticleHypothesis particle=pion) const
Actual heavy lifting implementation for extrapolateToVolume.
Definition: Extrapolator.cxx:1876
Trk::Extrapolator::m_fieldProperties
Trk::MagneticFieldProperties m_fieldProperties
Definition: Extrapolator.h:683
MagneticFieldProperties.h
Trk::Extrapolator::extrapolateDirectly
virtual std::unique_ptr< TrackParameters > extrapolateDirectly(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const override final
Extrapolate directly: Forwards directly the call to the configured "Global" propagator.
Definition: Extrapolator.cxx:2081
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::Extrapolator::m_meotSearchCallsBw
Gaudi::Accumulators::Counter m_meotSearchCallsBw
how often the meot search is called: backward
Definition: Extrapolator.h:717
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition: MaterialEffectsOnTrack.h:40
Trk::Extrapolator::m_checkForCompundLayers
bool m_checkForCompundLayers
use the multi-layer tests for compound layers
Definition: Extrapolator.h:677
Trk::Extrapolator::m_skipInitialLayerUpdate
bool m_skipInitialLayerUpdate
skip the initial post-Update at the layer [Fatras conversion mode]
Definition: Extrapolator.h:655
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::Extrapolator::m_resolveActive
bool m_resolveActive
Definition: Extrapolator.h:660
Trk::Extrapolator::m_cacheLastMatLayer
bool m_cacheLastMatLayer
steering of the material layer cache
Definition: Extrapolator.h:662
Trk::Extrapolator::addMaterialEffectsOnTrack
void addMaterialEffectsOnTrack(const EventContext &ctx, Cache &cache, const Trk::IPropagator &prop, TrackParmPtr parm, const Trk::Layer &lay, const Trk::TrackingVolume &vol, Trk::PropDirection propDir, Trk::ParticleHypothesis) const
helper method for MaterialEffectsOnTrack to be added
Definition: Extrapolator.cxx:4316
ObjContainer.h
Trk::Extrapolator::m_navigationBreakDistIncrease
Gaudi::Accumulators::Counter m_navigationBreakDistIncrease
number of navigation breaks due to distance increase
Definition: Extrapolator.h:712
Trk::Extrapolator::extrapolateStepwiseImpl
TrackParametersUVector extrapolateStepwiseImpl(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const
Definition: Extrapolator.cxx:456
AthCheckedComponent
Mixin class to perform additional checks on a component.
Definition: AthCheckedComponent.h:25
Trk::Extrapolator::extrapolateFromLayerToLayer
ManagedTrackParmPtr extrapolateFromLayerToLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const TrackingVolume &tvol, const Layer *nextLayer, const Layer *destinationLayer, TrackParmPtr navParameters, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Private method to step from one to the last layer and stop at last layer (before 0) or before destina...
Definition: Extrapolator.cxx:3559
Trk::Extrapolator::m_navigationBreakOscillation
Gaudi::Accumulators::Counter m_navigationBreakOscillation
number of navigation breaks due to oscillation
Definition: Extrapolator.h:710
Trk::IPropagator
Definition: IPropagator.h:55
Trk::TrackingGeometry
Definition: TrackingGeometry.h:67
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::Extrapolator::m_navigator
ToolHandle< INavigator > m_navigator
Array of Material updatersc.
Definition: Extrapolator.h:615
vector
Definition: MultiHisto.h:13
Trk::Extrapolator::m_navigationBreakVolumeSignature
Gaudi::Accumulators::Counter m_navigationBreakVolumeSignature
number of navigation breaks due to distance increase
Definition: Extrapolator.h:713
Trk::Extrapolator::radialDirectionCheck
bool radialDirectionCheck(const EventContext &ctx, const IPropagator &prop, const TrackParameters &startParm, const TrackParameters &parsOnLayer, const TrackingVolume &tvol, PropDirection dir=anyDirection, ParticleHypothesis particle=pion) const
Check for punchThrough in case of radial (perpendicular) direction change, returns true if the radial...
Definition: Extrapolator.cxx:4257
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Trk::Extrapolator::extrapolateToDestinationLayer
ManagedTrackParmPtr extrapolateToDestinationLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Surface &sf, const Layer &lay, const TrackingVolume &tvol, const Layer *startLayer, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Private to extrapolate to the destination layer + surface.
Definition: Extrapolator.cxx:3684
Trk::Extrapolator::m_meotSearchSuccessfulFw
Gaudi::Accumulators::Counter m_meotSearchSuccessfulFw
how often the meot search was successful: forward
Definition: Extrapolator.h:718
AthAlgTool.h
Trk::Extrapolator::identifiedParameters_t
std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > identifiedParameters_t
Definition: Extrapolator.h:253
Trk::Extrapolator::extrapolateInAlignableTV
ManagedTrackParmPtr extrapolateInAlignableTV(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Trk::Surface *destSurf, const Trk::AlignableTrackingVolume *vol, PropDirection dir, ParticleHypothesis particle=pion) const
Definition: Extrapolator.cxx:1600
Trk::Extrapolator::m_robustSampling
bool m_robustSampling
Definition: Extrapolator.h:658
Trk::Extrapolator::m_maxNavigVol
unsigned int m_maxNavigVol
Definition: Extrapolator.h:679
Trk::Extrapolator::m_meotSearchCallsFw
Gaudi::Accumulators::Counter m_meotSearchCallsFw
how often the meot search is called: forward
Definition: Extrapolator.h:716
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::Extrapolator::extrapolateWithinDetachedVolumes
ManagedTrackParmPtr extrapolateWithinDetachedVolumes(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Surface &sf, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
C) call from extrapolateInsideVolume.
Definition: Extrapolator.cxx:2880
Trk::Extrapolator::subMaterialEffectsUpdator
const IMaterialEffectsUpdator * subMaterialEffectsUpdator(const TrackingVolume &tvol) const
Access the subPropagator to the given volume.
Trk::DestSurf
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
Definition: IPropagator.h:45
Trk::Extrapolator::positionOutput
std::string positionOutput(const Amg::Vector3D &pos) const
For the output - global position.
Definition: Extrapolator.cxx:4303
Trk::Extrapolator::subPropagator
const IPropagator * subPropagator(const TrackingVolume &tvol) const
Access the subPropagator to the given volume.
ParticleHypothesis.h
Trk::Extrapolator::m_resolveMultilayers
bool m_resolveMultilayers
Definition: Extrapolator.h:661
Trk::Extrapolator::m_maxNavigSurf
unsigned int m_maxNavigSurf
Definition: Extrapolator.h:678
Trk::Extrapolator::m_destinationThroughAssociation
Gaudi::Accumulators::Counter m_destinationThroughAssociation
navigation intialization
Definition: Extrapolator.h:703
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::Extrapolator::m_requireMaterialDestinationHit
bool m_requireMaterialDestinationHit
require the destination surface hit for material collection
Definition: Extrapolator.h:650
Trk::Extrapolator::extrapolateStepwise
virtual TrackParametersUVector extrapolateStepwise(const EventContext &ctx, const TrackParameters &parm, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion) const override final
Extrapolation method where a step-wise navigation to the destination surface is performed.
Definition: Extrapolator.cxx:2009
EventPrimitives.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
ObjPtr< Trk::TrackParameters >
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::Extrapolator::m_meotpIndex
unsigned int m_meotpIndex
if several meotps are available in a volume steer which one to use
Definition: Extrapolator.h:664
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::Extrapolator::extrapolate
virtual std::unique_ptr< NeutralParameters > extrapolate(const NeutralParameters &parameters, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true) const override final
Main extrapolation Interface starting from neutral parameters and aiming at surface.
Definition: Extrapolator.cxx:440
IMaterialEffectsUpdator.h
NeutralParticle.h
Trk::Extrapolator::extrapolateM
virtual std::vector< const TrackStateOnSurface * > * extrapolateM(const EventContext &ctx, const TrackParameters &parameters, const Surface &sf, PropDirection dir, const BoundaryCheck &bcheck, ParticleHypothesis particle=pion, Trk::ExtrapolationCache *cache=nullptr) const override final
Extrapolate to a destination surface, while collecting all the material layers in between.
Definition: Extrapolator.cxx:2148
Trk::Extrapolator::m_updaters
ToolHandleArray< IMaterialEffectsUpdator > m_updaters
Array of MultipleScattering updaters.
Definition: Extrapolator.h:619
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::IExtrapolator
Definition: IExtrapolator.h:62
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::Extrapolator::initialize
virtual StatusCode initialize() override
AlgTool initailize method.
Definition: Extrapolator.cxx:222
TrackParticle.h
Trk::Extrapolator::extrapolateToVolumeWithPathLimit
ManagedTrackParmPtr extrapolateToVolumeWithPathLimit(const EventContext &ctx, Cache &cache, TrackParmPtr parm, double pathLim, Trk::PropDirection dir, Trk::ParticleHypothesis particle, const Trk::TrackingVolume *destVol, MaterialUpdateMode matupmod=addNoise) const
Definition: Extrapolator.cxx:4512
ObjRef
Helper class to refer to objects in the container ObjContainer.
Definition: ObjContainer.h:61
Trk::Extrapolator::m_stopWithNavigationBreak
bool m_stopWithNavigationBreak
return 0 if navigation breaks - for validation reasons
Definition: Extrapolator.h:652
AthCheckedComponent.h
Trk::Extrapolator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry() const override final
Return the TrackingGeometry used by the Extrapolator (forward information from Navigator)
Trk::Extrapolator::insideVolumeStaticLayers
ManagedTrackParmPtr insideVolumeStaticLayers(const EventContext &ctx, Cache &cache, bool toBoundary, const IPropagator &prop, TrackParmPtr parm, const Layer *associatedLayer, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
A) call from extrapolateInsideVolume or toBoundary, if it is to boundary, the return parameters are t...
Definition: Extrapolator.cxx:3115
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
LocalExtrapolatorCache.h
Trk::Extrapolator::m_initialLayerAttempts
unsigned int m_initialLayerAttempts
allowed layer intersection attempts at the start of a volume
Definition: Extrapolator.h:668
Trk::Extrapolator::m_referenceMaterial
bool m_referenceMaterial
use the reference material for the update
Definition: Extrapolator.h:659
INavigator.h
Trk::Extrapolator::m_startThroughAssociation
Gaudi::Accumulators::Counter m_startThroughAssociation
navigation intialization
Definition: Extrapolator.h:700
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
Trk::Extrapolator::overlapSearch
void overlapSearch(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, TrackParmPtr parsOnLayer, const Layer &lay, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, bool startingLayer=false) const
Private to search for overlap surfaces.
Definition: Extrapolator.cxx:3893
Trk::Extrapolator::m_navigationStatistics
bool m_navigationStatistics
steer the output for the navigation statistics
Definition: Extrapolator.h:690
BoundaryCheck.h
Trk::Extrapolator::m_navigationBreakDetails
bool m_navigationBreakDetails
steer the output for the navigation break details
Definition: Extrapolator.h:691
Trk::Extrapolator::Extrapolator
Extrapolator(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition: Extrapolator.cxx:118
Trk::IMaterialEffectsUpdator
Definition: IMaterialEffectsUpdator.h:45
Trk::Extrapolator::m_startThroughRecall
Gaudi::Accumulators::Counter m_startThroughRecall
navigation intialization
Definition: Extrapolator.h:701
Trk::Extrapolator::m_layerSwitched
Gaudi::Accumulators::Counter m_layerSwitched
number of layers that have been switched
Definition: Extrapolator.h:706
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Trk::Extrapolator::m_updatNames
std::vector< std::string > m_updatNames
configuration of subupdaters
Definition: Extrapolator.h:645
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::Extrapolator::m_destinationThroughGlobalSearch
Gaudi::Accumulators::Counter m_destinationThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:705
Trk::Extrapolator::extrapolateToIntermediateLayer
std::pair< ManagedTrackParmPtr, bool > extrapolateToIntermediateLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Layer &lay, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise, bool perpendicularCheck=true) const
Private to extrapolate to the destination layer + surface, special treatment for exit layer.
Definition: Extrapolator.cxx:3769
Trk::Extrapolator::extrapolateToNextMaterialLayer
ManagedTrackParmPtr extrapolateToNextMaterialLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Trk::Surface *destSurf, const Trk::TrackingVolume *vol, PropDirection dir, const BoundaryCheck &bcheck, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Definition: Extrapolator.cxx:565
Trk::Extrapolator::m_subPropagators
std::vector< const IPropagator * > m_subPropagators
< Propagators to chose from (steered by signature)
Definition: Extrapolator.h:638
Trk::Extrapolator::extrapolateBlindlyImpl
Trk::TrackParametersUVector extrapolateBlindlyImpl(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, const Volume *boundaryVol=nullptr) const
Actual heavy lifting implementation for extrapolateBlindly.
Definition: Extrapolator.cxx:2822
Trk::Extrapolator::m_maxMethodSequence
unsigned int m_maxMethodSequence
Definition: Extrapolator.h:671
Trk::Extrapolator::extrapolateInsideVolume
ManagedTrackParmPtr extrapolateInsideVolume(const EventContext &ctx, Cache &cache, const IPropagator &prop, TrackParmPtr parm, const Surface &sf, const Layer *associatedLayer, const TrackingVolume &tvol, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Private method for extrapolation in final volume to destination surface.
Definition: Extrapolator.cxx:2857
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Extrapolator::extrapolateTrack
virtual std::unique_ptr< TrackParameters > extrapolateTrack(const EventContext &ctx, const Track &trk, const Surface &sf, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise, Trk::ExtrapolationCache *cache=nullptr) const override final
Main extrapolation interface starting from a Trk::Track and aiming at Surface.
Definition: Extrapolator.cxx:2029
Trk::Volume
Definition: Volume.h:35
Trk::Extrapolator::extrapolateToNextActiveLayerM
virtual std::pair< std::unique_ptr< TrackParameters >, const Layer * > extrapolateToNextActiveLayerM(const EventContext &ctx, const TrackParameters &parm, PropDirection dir, const BoundaryCheck &bcheck, std::vector< const Trk::TrackStateOnSurface * > &material, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const override final
Extrapolation to the next active layer with material collection.
Definition: Extrapolator.cxx:2102
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::Extrapolator::extrapolateToNextActiveLayerMImpl
std::pair< std::unique_ptr< TrackParameters >, const Layer * > extrapolateToNextActiveLayerMImpl(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parm, PropDirection dir, const BoundaryCheck &bcheck, std::vector< const Trk::TrackStateOnSurface * > &material, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Actual heavy lifting implementation for extrapolateToNextActiveLayerM.
Definition: Extrapolator.cxx:493
Trk::ExtrapolationCache
Definition: ExtrapolationCache.h:26
Trk::Extrapolator::m_msupdater
ToolHandle< IMultipleScatteringUpdator > m_msupdater
Array of EnergyLoss updaters.
Definition: Extrapolator.h:625
Trk::Extrapolator::m_useDenseVolumeDescription
bool m_useDenseVolumeDescription
use dense volume description when available in ID/Calo
Definition: Extrapolator.h:676
Trk::Extrapolator::extrapolateBlindly
virtual TrackParametersUVector extrapolateBlindly(const EventContext &ctx, const TrackParameters &parm, PropDirection dir=anyDirection, const BoundaryCheck &bcheck=true, ParticleHypothesis particle=pion, const Volume *boundaryVol=nullptr) const override final
extrapolateBlindly like step-wise extrapolation, but without a destination surface.
Definition: Extrapolator.cxx:2054
Trk::Extrapolator::m_dumpCache
bool m_dumpCache
Definition: Extrapolator.h:680
Extrapolator.icc
Trk::Extrapolator::m_propagators
ToolHandleArray< IPropagator > m_propagators
Private method for conversion of the synchronized geometry signature to the natural subdetector order...
Definition: Extrapolator.h:607
ObjContainer< Trk::TrackParameters >
Trk::Extrapolator::m_stepPropagator
ToolHandle< IPropagator > m_stepPropagator
Navigator for TrackingGeometry and magnetic fiels acces.
Definition: Extrapolator.h:609
Trk::Layer
Definition: Layer.h:73
Trk::AlignableTrackingVolume
Definition: AlignableTrackingVolume.h:36