ATLAS Offline Software
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 "ExtrUniquePtrHolder.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 
62 using TrackParametersUVector = std::vector<std::unique_ptr<Trk::TrackParameters>>;
63 using DestSurf = std::pair<const Surface*, BoundaryCheck>;
64 
112  : public AthCheckedComponent<AthAlgTool>
113  , virtual public IExtrapolator
114 {
115 public:
116 
118  Extrapolator(const std::string&, const std::string&, const IInterface*);
121 
123  virtual StatusCode initialize() override;
125  virtual StatusCode finalize() override;
126 
131  virtual std::unique_ptr<TrackParameters> extrapolateDirectly(
132  const EventContext& ctx,
133  const TrackParameters& parm,
134  const Surface& sf,
136  const BoundaryCheck& bcheck = true,
137  ParticleHypothesis particle = pion) const override final;
138 
141  virtual std::unique_ptr<NeutralParameters> extrapolate(
143  const Surface& sf,
145  const BoundaryCheck& bcheck = true) const override final;
146 
149  virtual std::unique_ptr<TrackParameters> extrapolate(
150  const EventContext& ctx,
151  const TrackParameters& parm,
152  const Surface& sf,
154  const BoundaryCheck& bcheck = true,
156  MaterialUpdateMode matupmode = addNoise,
157  Trk::ExtrapolationCache* cache = nullptr) const override final;
158 
164  const EventContext& ctx,
165  const TrackParameters& parm,
166  const Surface& sf,
168  const BoundaryCheck& bcheck = true,
169  ParticleHypothesis particle = pion) const override final;
170 
174  virtual std::unique_ptr<TrackParameters> extrapolateTrack(
175  const EventContext& ctx,
176  const Track& trk,
177  const Surface& sf,
179  const BoundaryCheck& bcheck = true,
181  MaterialUpdateMode matupmode = addNoise,
182  Trk::ExtrapolationCache* cache = nullptr) const override final;
183 
190  const EventContext& ctx,
191  const TrackParameters& parm,
193  const BoundaryCheck& bcheck = true,
195  const Volume* boundaryVol = nullptr) const override final;
196 
202  const EventContext& ctx,
204  const Surface& sf,
206  const BoundaryCheck& bcheck,
208  Trk::ExtrapolationCache* cache = nullptr) const override final;
209 
217  virtual std::unique_ptr<std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>>>
219  const EventContext& ctx,
220  const Trk::TrackParameters& parm,
223  int destination = 3) const override final;
224 
226  virtual std::pair<std::unique_ptr<TrackParameters>, const Layer*> extrapolateToNextActiveLayerM(
227  const EventContext& ctx,
228  const TrackParameters& parm,
230  const BoundaryCheck& bcheck,
231  std::vector<const Trk::TrackStateOnSurface*>& material,
233  MaterialUpdateMode matupmode = addNoise) const override final;
234 
236  virtual std::unique_ptr<TrackParameters> extrapolateToVolume(
237  const EventContext& ctx,
238  const TrackParameters& parm,
239  const Trk::TrackingVolume& vol,
241  ParticleHypothesis particle = pion) const override final;
242 
244  virtual const TrackingGeometry* trackingGeometry() const override final;
245 
246 private:
247 
248  typedef std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>> identifiedParameters_t;
253  const EventContext& ctx,
254  Cache& cache,
255  const IPropagator& prop,
257  const Surface& sf,
259  const BoundaryCheck& bcheck = true,
261  MaterialUpdateMode matupmode = addNoise) const;
262 
269  const EventContext& ctx,
270  const IPropagator& prop,
271  const TrackParameters& parm,
272  const Surface& sf,
274  const BoundaryCheck& bcheck = true,
276 
285  const EventContext& ctx,
286  Cache& cache,
287  const IPropagator& prop,
289  const std::vector<MaterialEffectsOnTrack>& sfMeff,
290  const TrackingVolume& tvol,
293  MaterialUpdateMode matupmode = addNoise) const;
294 
298  const EventContext& ctx,
299  Cache& cache,
301  const Surface& sf,
303  const BoundaryCheck& bcheck = true,
305  MaterialUpdateMode matupmode = addNoise,
306  Trk::ExtrapolationCache* extrapolationCache = nullptr) const;
307 
310  std::unique_ptr<TrackParameters> extrapolateDirectlyImpl(
311  const EventContext& ctx,
312  const IPropagator& prop,
313  const TrackParameters& parm,
314  const Surface& sf,
316  const BoundaryCheck& bcheck = true,
318 
322  const EventContext& ctx,
323  Cache& cache,
324  const IPropagator& prop,
327  const BoundaryCheck& bcheck = true,
329  const Volume* boundaryVol = nullptr) const;
330 
333  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
335  const EventContext& ctx,
336  const IPropagator& prop,
337  const TrackParameters& parm,
339  const BoundaryCheck& bcheck,
341  MaterialUpdateMode matupmode = addNoise) const;
342 
345  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
347  const EventContext& ctx,
348  const IPropagator& prop,
349  const TrackParameters& parm,
351  const BoundaryCheck& bcheck,
352  std::vector<const Trk::TrackStateOnSurface*>& material,
354  MaterialUpdateMode matupmode = addNoise) const;
355 
358  std::unique_ptr<TrackParameters> extrapolateToVolumeImpl(
359  const EventContext& ctx,
360  const IPropagator& prop,
361  const TrackParameters& parm,
362  const Trk::TrackingVolume& vol,
365 
381  Cache& cache,
382  const IPropagator& prop,
384  const Surface& sf,
385  const Layer* associatedLayer,
386  const TrackingVolume& tvol,
388  const BoundaryCheck& bcheck = true,
390  MaterialUpdateMode matupmode = addNoise) const;
391 
396  Cache& cache,
397  bool toBoundary,
398  const IPropagator& prop,
400  const Layer* associatedLayer,
401  const TrackingVolume& tvol,
403  const BoundaryCheck& bcheck = true,
405  MaterialUpdateMode matupmode = addNoise) const;
406 
409  const EventContext& ctx,
410  Cache& cache,
411  const IPropagator& prop,
413  const Surface& sf,
414  const TrackingVolume& tvol,
416  const BoundaryCheck& bcheck = true,
418  MaterialUpdateMode matupmode = addNoise) const;
419 
421  const EventContext& ctx,
422  Cache& cache,
423  const IPropagator& prop,
425  const Trk::Surface* destSurf,
426  const Trk::TrackingVolume* vol,
428  const BoundaryCheck& bcheck,
430  MaterialUpdateMode matupmode = addNoise) const;
431 
433  const EventContext& ctx,
434  Cache& cache,
435  const IPropagator& prop,
437  const Trk::Surface* destSurf,
441 
443  const EventContext& ctx,
444  Cache& cache,
446  double pathLim,
449  const Trk::TrackingVolume* destVol,
450  MaterialUpdateMode matupmod = addNoise) const;
451 
466  const EventContext& ctx,
467  Cache& cache,
468  const IPropagator& prop,
470  const Layer* associatedLayer,
471  const TrackingVolume& tvol,
473  const BoundaryCheck& bcheck = true,
475  MaterialUpdateMode matupmode = addNoise) const;
476 
480  const EventContext& ctx,
481  Cache& cache,
482  const IPropagator& prop,
484  const TrackingVolume& tvol,
485  const Layer* nextLayer,
486  const Layer* destinationLayer,
487  Trk::CacheOwnedPtr<Trk::TrackParameters> navParameters,
489  const BoundaryCheck& bcheck = true,
491  MaterialUpdateMode matupmode = addNoise) const;
492 
496  const EventContext& ctx,
497  Cache& cache,
498  const IPropagator& prop,
500  const Surface& sf,
501  const Layer& lay,
502  const TrackingVolume& tvol,
503  const Layer* startLayer,
505  const BoundaryCheck& bcheck = true,
507  MaterialUpdateMode matupmode = addNoise) const;
508 
514  const EventContext& ctx,
515  Cache& cache,
516  const IPropagator& prop,
518  const Layer& lay,
519  const TrackingVolume& tvol,
521  const BoundaryCheck& bcheck = true,
523  MaterialUpdateMode matupmode = addNoise,
524  bool perpendicularCheck = true) const;
525 
527  void overlapSearch(const EventContext& ctx,
528  Cache& cache,
529  const IPropagator& prop,
531  Trk::CacheOwnedPtr<Trk::TrackParameters> parsOnLayer,
532  const Layer& lay,
533  const TrackingVolume& tvol,
535  const BoundaryCheck& bcheck = true,
537  bool startingLayer = false) const;
538 
546  const EventContext& ctx,
547  Cache& cache,
548  const Trk::IPropagator& prop,
549  Trk::CacheOwnedPtr<Trk::TrackParameters> startPars,
550  const Trk::Surface& destSurface,
553  Trk::CacheOwnedPtr<Trk::TrackParameters>& referenceParameters,
554  const Trk::Layer*& associatedLayer,
555  const Trk::TrackingVolume*& associatedVolume,
556  const Trk::TrackingVolume*& destinationVolume) const;
557 
562  bool radialDirectionCheck(const EventContext& ctx,
563  const IPropagator& prop,
564  const TrackParameters& startParm,
565  const TrackParameters& parsOnLayer,
566  const TrackingVolume& tvol,
569 
572 
575 
577  std::string positionOutput(const Amg::Vector3D& pos) const;
578 
580  void addMaterialEffectsOnTrack(const EventContext& ctx,
581  Cache& cache,
582  const Trk::IPropagator& prop,
584  const Trk::Layer& lay,
585  const Trk::TrackingVolume& vol,
586  Trk::PropDirection propDir,
588 
589 
590 
593  // unsigned int geoIDToDetOrder(Trk::GeometrySignature geoid) const;
594 
595  // --------------- Used Tools ----------------------------- //
597  ToolHandleArray<IPropagator> m_propagators{ this, "Propagators", {} };
599  ToolHandle<IPropagator> m_stepPropagator{
600  this,
601  "STEP_Propagator",
602  "Trk::STEP_Propagator/AtlasSTEP_Propagator"
603  };
605  ToolHandle<INavigator> m_navigator{ this,
606  "Navigator",
607  "Trk::Navigator/AtlasNavigator" };
609  ToolHandleArray<IMaterialEffectsUpdator> m_updaters{
610  this,
611  "MaterialEffectsUpdators",
612  {}
613  };
615  ToolHandle<IMultipleScatteringUpdator> m_msupdater{
616  this,
617  "MultipleScatteringUpdater",
618  "Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator"
619  };
621  ToolHandle<IEnergyLossUpdator> m_elossupdater{ this,
622  "EnergyLossUpdater",
623  "Trk::EnergyLossUpdator/AtlasEnergyLossUpdator" };
624 
625  // ---------------- For Extrapolation handling ------------ //
626 
628  std::vector<const IPropagator*> m_subPropagators;
630  std::vector<const IMaterialEffectsUpdator*> m_subupdaters;
631 
632  // ---------------- For Extrapolator configuration ------------ //
633 
634  StringArrayProperty m_propNames{this, "SubPropagators", {},
635  "configuration of subPropagators"};
636  StringArrayProperty m_updatNames{this, "SubMEUpdators", {},
637  "configuration of subupdaters"};
638 
639  // --------------- General steering & Navigation -------------- //
640 
641  BooleanProperty m_includeMaterialEffects{this, "ApplyMaterialEffects", true,
642  "boolean to switch on/off material effects"};
644  {this, "StopWithNavigationBreak", false,
645  "return 0 if navigation breaks - for validation reasons"};
646  BooleanProperty m_stopWithUpdateZero{this, "StopWithUpdateKill", false,
647  "return 0 if update kills the trajectory"};
648  BooleanProperty m_skipInitialLayerUpdate{this, "SkipInitialPostUpdate", false,
649  "skip the initial post-Update at the layer [Fatras conversion mode]"};
650  BooleanProperty m_resolveActive{this, "ResolveMuonStation", false};
651  BooleanProperty m_resolveMultilayers{this, "ResolveMultilayers", true};
653  //if we have no valid subpropagatos it will be set to an INVALID value
655  UnsignedIntegerProperty m_initialLayerAttempts
656  {this, "InitialLayerAttempts", 3,
657  "allowed layer intersection attempts at the start of a volume"};
658  UnsignedIntegerProperty m_successiveLayerAttempts
659  {this, "SuccessiveLayerAttempts", 1,
660  "layer intersection attemps after one layer has been hit sucessfully"};
661  UnsignedIntegerProperty m_maxMethodSequence
662  {this, "MaximalMethodSequence", 2000};
663  DoubleProperty m_tolerance{this, "Tolerance", 0.002,
664  "surface & volume tolerance"};
665  // ------------------------------------------------------- //
666  BooleanProperty m_useMuonMatApprox{this, "UseMuonMatApproximation", false,
667  "use approximative MS inert material"};
669  {this, "UseDenseVolumeDescription", true,
670  "use dense volume description when available in ID/Calo"};
671  UnsignedIntegerProperty m_maxRecursion{this, "MaxRecursion", 1000};
672 
673  static const unsigned int m_maxNavigSurf = 1000;
674  static const unsigned int m_maxNavigVol = 50;
675  BooleanProperty m_dumpCache{this, "DumpCache", false};
676  //------------ Magnetic field properties
677  BooleanProperty m_fastField{this, "MagneticFieldProperties", false};
679  //------------Reference surface --------------
680  std::unique_ptr<Surface> m_referenceSurface = nullptr;
681  //-------------------------- SCREEN output steering -------------------------------------------//
682  BooleanProperty m_printRzOutput{this, "positionOutput", true};
683  //------------------------- VALIDATION SECTION ------------------------------------------//
684  // flags
685  BooleanProperty m_navigationStatistics
686  {this, "NavigationStatisticsOutput", false,
687  "steer the output for the navigation statistics"};
688  BooleanProperty m_navigationBreakDetails
689  {this, "DetailedNavigationOutput", false,
690  "steer the output for the navigation break details"};
691 
692  // extrapolation counters
693  mutable Gaudi::Accumulators::Counter<> m_extrapolateCalls{};
694  mutable Gaudi::Accumulators::Counter<> m_extrapolateBlindlyCalls{};
695  mutable Gaudi::Accumulators::Counter<> m_extrapolateDirectlyCalls{};
696  mutable Gaudi::Accumulators::Counter<> m_extrapolateStepwiseCalls{};
697 
698  mutable Gaudi::Accumulators::Counter<> m_startThroughAssociation{};
699  mutable Gaudi::Accumulators::Counter<> m_startThroughRecall{};
700  mutable Gaudi::Accumulators::Counter<> m_startThroughGlobalSearch{};
701  mutable Gaudi::Accumulators::Counter<> m_destinationThroughAssociation{};
702  mutable Gaudi::Accumulators::Counter<> m_destinationThroughRecall{};
703  mutable Gaudi::Accumulators::Counter<> m_destinationThroughGlobalSearch{};
704  mutable Gaudi::Accumulators::Counter<> m_layerSwitched{};
705 
706  // navigation counters
707  mutable Gaudi::Accumulators::Counter<> m_navigationBreakLoop{};
708  mutable Gaudi::Accumulators::Counter<> m_navigationBreakOscillation{};
709  mutable Gaudi::Accumulators::Counter<> m_navigationBreakNoVolume{};
710  mutable Gaudi::Accumulators::Counter<> m_navigationBreakDistIncrease{};
711  mutable Gaudi::Accumulators::Counter<> m_navigationBreakVolumeSignature{};
712  mutable Gaudi::Accumulators::Counter<> m_overlapSurfaceHit{};
713 
714  mutable Dbg::PropStat m_propStat ATLAS_THREAD_SAFE;
715 };
716 
717 } // end of namespace
719 
720 #endif // TRKEXTOOLS_TRKEXTRAPOLATOR_H
721 
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::Extrapolator::overlapSearch
void overlapSearch(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > parm, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:3540
Trk::Extrapolator
Extrapolation of track parameters and their associated covariances to destination surfaces.
Definition: Extrapolator.h:114
Trk::Extrapolator::m_propNames
StringArrayProperty m_propNames
Definition: Extrapolator.h:634
Trk::Extrapolator::finalize
virtual StatusCode finalize() override
AlgTool finalize method.
Definition: Extrapolator.cxx:277
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
Trk::Extrapolator::m_resolveMultilayers
BooleanProperty m_resolveMultilayers
number of sub valid propagators in the m_subPropagators array
Definition: Extrapolator.h:651
Dbg::PropStat
Definition: LocalExtrapolatorCache.h:27
TrackParameters.h
Trk::Extrapolator::m_navigationBreakDetails
BooleanProperty m_navigationBreakDetails
Definition: Extrapolator.h:689
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::Extrapolator::m_elossupdater
ToolHandle< IEnergyLossUpdator > m_elossupdater
Definition: Extrapolator.h:621
Trk::Extrapolator::m_extrapolateDirectlyCalls
Gaudi::Accumulators::Counter m_extrapolateDirectlyCalls
number of calls: extrapolateDirectly() method
Definition: Extrapolator.h:695
Trk::Extrapolator::m_extrapolateBlindlyCalls
Gaudi::Accumulators::Counter m_extrapolateBlindlyCalls
number of calls: extrapolateBlindly() method
Definition: Extrapolator.h:694
Trk::Extrapolator::m_navigationBreakNoVolume
Gaudi::Accumulators::Counter m_navigationBreakNoVolume
number of navigation breaks due no Volume found
Definition: Extrapolator.h:709
Trk::Extrapolator::m_includeMaterialEffects
BooleanProperty m_includeMaterialEffects
Definition: Extrapolator.h:641
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:36
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:511
Trk::Extrapolator::addMaterialEffectsOnTrack
void addMaterialEffectsOnTrack(const EventContext &ctx, Cache &cache, const Trk::IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:3959
Trk::Extrapolator::m_numOfValidPropagators
unsigned int m_numOfValidPropagators
Definition: Extrapolator.h:654
Trk::Extrapolator::m_navigationBreakLoop
Gaudi::Accumulators::Counter m_navigationBreakLoop
number of navigation breaks due to loop
Definition: Extrapolator.h:707
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::Extrapolator::insideVolumeStaticLayers
Trk::CacheOwnedPtr< Trk::TrackParameters > insideVolumeStaticLayers(const EventContext &ctx, Cache &cache, bool toBoundary, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2873
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:1978
PropDirection.h
IExtrapolator.h
Trk::Extrapolator::m_fastField
BooleanProperty m_fastField
Definition: Extrapolator.h:677
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:680
NeutralParameters.h
Trk::Extrapolator::extrapolateBlindlyImpl
Trk::TrackParametersUVector extrapolateBlindlyImpl(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2615
Trk::Extrapolator::m_destinationThroughRecall
Gaudi::Accumulators::Counter m_destinationThroughRecall
navigation intialization
Definition: Extrapolator.h:702
Trk::Extrapolator::extrapolateImpl
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateImpl(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2084
Trk::Extrapolator::m_overlapSurfaceHit
Gaudi::Accumulators::Counter m_overlapSurfaceHit
number of OverlapSurfaces found
Definition: Extrapolator.h:712
ExtrUniquePtrHolder.h
Trk::Extrapolator::~Extrapolator
~Extrapolator()
Destructor.
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::Extrapolator::m_maxNavigVol
static const unsigned int m_maxNavigVol
Definition: Extrapolator.h:674
Trk::Extrapolator::m_extrapolateStepwiseCalls
Gaudi::Accumulators::Counter m_extrapolateStepwiseCalls
number of calls: extrapolateStepwise() method
Definition: Extrapolator.h:696
Trk::Extrapolator::m_extrapolateCalls
Gaudi::Accumulators::Counter m_extrapolateCalls
number of calls: extrapolate() method
Definition: Extrapolator.h:693
Trk::Extrapolator::m_maxMethodSequence
UnsignedIntegerProperty m_maxMethodSequence
Definition: Extrapolator.h:662
Trk::Extrapolator::m_tolerance
DoubleProperty m_tolerance
Definition: Extrapolator.h:663
Trk::Extrapolator::m_subupdaters
std::vector< const IMaterialEffectsUpdator * > m_subupdaters
Definition: Extrapolator.h:630
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::Extrapolator::m_startThroughGlobalSearch
Gaudi::Accumulators::Counter m_startThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:700
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:588
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:1992
Trk::Extrapolator::m_updatNames
StringArrayProperty m_updatNames
Definition: Extrapolator.h:636
Trk::Extrapolator::m_initialLayerAttempts
UnsignedIntegerProperty m_initialLayerAttempts
Definition: Extrapolator.h:656
Trk::Extrapolator::m_fieldProperties
Trk::MagneticFieldProperties m_fieldProperties
Definition: Extrapolator.h:678
Trk::Extrapolator::m_useDenseVolumeDescription
BooleanProperty m_useDenseVolumeDescription
Definition: Extrapolator.h:669
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:346
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition: MaterialEffectsOnTrack.h:40
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::Extrapolator::m_navigationBreakDistIncrease
Gaudi::Accumulators::Counter m_navigationBreakDistIncrease
number of navigation breaks due to distance increase
Definition: Extrapolator.h:710
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:615
AthCheckedComponent
Mixin class to perform additional checks on a component.
Definition: AthCheckedComponent.h:25
Trk::Extrapolator::m_stopWithNavigationBreak
BooleanProperty m_stopWithNavigationBreak
Definition: Extrapolator.h:644
Trk::Extrapolator::extrapolateToIntermediateLayer
std::pair< Trk::CacheOwnedPtr< Trk::TrackParameters >, bool > extrapolateToIntermediateLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:3442
Trk::Extrapolator::m_navigationBreakOscillation
Gaudi::Accumulators::Counter m_navigationBreakOscillation
number of navigation breaks due to oscillation
Definition: Extrapolator.h:708
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:605
vector
Definition: MultiHisto.h:13
Trk::Extrapolator::extrapolateInAlignableTV
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateInAlignableTV(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > parm, const Trk::Surface *destSurf, const Trk::AlignableTrackingVolume *vol, PropDirection dir, ParticleHypothesis particle=pion) const
Definition: Extrapolator.cxx:1736
Trk::Extrapolator::m_navigationBreakVolumeSignature
Gaudi::Accumulators::Counter m_navigationBreakVolumeSignature
number of navigation breaks due to distance increase
Definition: Extrapolator.h:711
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:3900
Trk::pion
@ pion
Definition: ParticleHypothesis.h:32
AthAlgTool.h
Trk::Extrapolator::extrapolateToVolumeWithPathLimit
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateToVolumeWithPathLimit(const EventContext &ctx, Cache &cache, Trk::CacheOwnedPtr< Trk::TrackParameters > parm, double pathLim, Trk::PropDirection dir, Trk::ParticleHypothesis particle, const Trk::TrackingVolume *destVol, MaterialUpdateMode matupmod=addNoise) const
Definition: Extrapolator.cxx:4064
Trk::Extrapolator::identifiedParameters_t
std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > identifiedParameters_t
Definition: Extrapolator.h:248
Trk::Extrapolator::m_dumpCache
BooleanProperty m_dumpCache
Definition: Extrapolator.h:675
Trk::Extrapolator::m_navigationStatistics
BooleanProperty m_navigationStatistics
Definition: Extrapolator.h:686
Trk::ParametersBase
Definition: ParametersBase.h:55
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::m_printRzOutput
BooleanProperty m_printRzOutput
Definition: Extrapolator.h:682
Trk::Extrapolator::positionOutput
std::string positionOutput(const Amg::Vector3D &pos) const
For the output - global position.
Definition: Extrapolator.cxx:3946
Trk::TrackParametersUVector
std::vector< std::unique_ptr< Trk::TrackParameters > > TrackParametersUVector
Definition: Extrapolator.h:62
Trk::Extrapolator::subPropagator
const IPropagator * subPropagator(const TrackingVolume &tvol) const
Access the subPropagator to the given volume.
ParticleHypothesis.h
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::Extrapolator::m_destinationThroughAssociation
Gaudi::Accumulators::Counter m_destinationThroughAssociation
navigation intialization
Definition: Extrapolator.h:701
beamspotman.dir
string dir
Definition: beamspotman.py:621
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:401
Trk::Extrapolator::extrapolateFromLayerToLayer
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateFromLayerToLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > parm, const TrackingVolume &tvol, const Layer *nextLayer, const Layer *destinationLayer, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:3259
Trk::Extrapolator::m_useMuonMatApprox
BooleanProperty m_useMuonMatApprox
Definition: Extrapolator.h:666
Trk::Extrapolator::m_successiveLayerAttempts
UnsignedIntegerProperty m_successiveLayerAttempts
Definition: Extrapolator.h:659
Trk::Extrapolator::m_resolveActive
BooleanProperty m_resolveActive
Definition: Extrapolator.h:650
EventPrimitives.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
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
Trk::Extrapolator::extrapolateToDestinationLayer
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateToDestinationLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:3374
Trk::Extrapolator::m_stopWithUpdateZero
BooleanProperty m_stopWithUpdateZero
Definition: Extrapolator.h:646
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:385
IMaterialEffectsUpdator.h
NeutralParticle.h
Trk::Extrapolator::extrapolateWithinDetachedVolumes
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateWithinDetachedVolumes(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2672
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:471
Trk::Extrapolator::m_updaters
ToolHandleArray< IMaterialEffectsUpdator > m_updaters
Array of MultipleScattering updaters.
Definition: Extrapolator.h:609
Trk::Extrapolator::m_maxRecursion
UnsignedIntegerProperty m_maxRecursion
Definition: Extrapolator.h:671
Trk::Extrapolator::m_maxNavigSurf
static const unsigned int m_maxNavigSurf
Definition: Extrapolator.h:673
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::IExtrapolator
Definition: IExtrapolator.h:62
Trk::Extrapolator::initializeNavigation
PropDirection initializeNavigation(const EventContext &ctx, Cache &cache, const Trk::IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > startPars, const Trk::Surface &destSurface, Trk::PropDirection dir, ParticleHypothesis particle, Trk::CacheOwnedPtr< Trk::TrackParameters > &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:3711
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Trk::Extrapolator::initialize
virtual StatusCode initialize() override
AlgTool initailize method.
Definition: Extrapolator.cxx:131
TrackParticle.h
AthCheckedComponent.h
Trk::Extrapolator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry() const override final
Return the TrackingGeometry used by the Extrapolator (forward information from Navigator)
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
LocalExtrapolatorCache.h
INavigator.h
Trk::Extrapolator::m_startThroughAssociation
Gaudi::Accumulators::Counter m_startThroughAssociation
navigation intialization
Definition: Extrapolator.h:698
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
Trk::Extrapolator::extrapolateToNextMaterialLayer
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateToNextMaterialLayer(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > parm, const Trk::Surface *destSurf, const Trk::TrackingVolume *vol, PropDirection dir, const BoundaryCheck &bcheck, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
Definition: Extrapolator.cxx:726
BoundaryCheck.h
Trk::Extrapolator::Extrapolator
Extrapolator(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition: Extrapolator.cxx:116
Trk::IMaterialEffectsUpdator
Definition: IMaterialEffectsUpdator.h:45
Trk::Extrapolator::extrapolateToVolumeBoundary
void extrapolateToVolumeBoundary(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2845
Trk::Extrapolator::m_startThroughRecall
Gaudi::Accumulators::Counter m_startThroughRecall
navigation intialization
Definition: Extrapolator.h:699
private
#define private
Definition: xAODTruthCnvAlg.h:20
Trk::Extrapolator::m_layerSwitched
Gaudi::Accumulators::Counter m_layerSwitched
number of layers that have been switched
Definition: Extrapolator.h:704
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::Extrapolator::m_destinationThroughGlobalSearch
Gaudi::Accumulators::Counter m_destinationThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:703
Trk::Extrapolator::m_subPropagators
std::vector< const IPropagator * > m_subPropagators
< Propagators to chose from (steered by signature)
Definition: Extrapolator.h:628
Trk::CacheOwnedPtr
T * CacheOwnedPtr
Definition: ExtrUniquePtrHolder.h:28
Trk::Extrapolator::extrapolateInsideVolume
Trk::CacheOwnedPtr< Trk::TrackParameters > extrapolateInsideVolume(const EventContext &ctx, Cache &cache, const IPropagator &prop, Trk::CacheOwnedPtr< Trk::TrackParameters > 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:2649
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
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:422
Trk::Volume
Definition: Volume.h:36
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:563
Trk::TrackingVolume
Definition: TrackingVolume.h:119
Trk::Extrapolator::ATLAS_THREAD_SAFE
Dbg::PropStat m_propStat ATLAS_THREAD_SAFE
Definition: Extrapolator.h:714
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:652
Trk::ExtrapolationCache
Definition: ExtrapolationCache.h:26
Trk::Extrapolator::m_msupdater
ToolHandle< IMultipleScatteringUpdator > m_msupdater
Array of EnergyLoss updaters.
Definition: Extrapolator.h:615
Trk::Extrapolator::m_skipInitialLayerUpdate
BooleanProperty m_skipInitialLayerUpdate
Definition: Extrapolator.h:648
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:447
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:597
Trk::Extrapolator::m_stepPropagator
ToolHandle< IPropagator > m_stepPropagator
Navigator for TrackingGeometry and magnetic fiels acces.
Definition: Extrapolator.h:599
Trk::Layer
Definition: Layer.h:72
Trk::AlignableTrackingVolume
Definition: AlignableTrackingVolume.h:36