ATLAS Offline Software
Extrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
115 class Extrapolator final
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,
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,
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,
199  const Volume* boundaryVol = nullptr) const override final;
200 
206  const EventContext& ctx,
208  const Surface& sf,
210  const BoundaryCheck& bcheck,
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,
228  std::vector<const Trk::TrackStateOnSurface*>*& material,
229  int destination = 3) const override final;
230 
232  virtual std::pair<std::unique_ptr<TrackParameters>, const Layer*> extrapolateToNextActiveLayerM(
233  const EventContext& ctx,
234  const TrackParameters& parm,
236  const BoundaryCheck& bcheck,
237  std::vector<const Trk::TrackStateOnSurface*>& material,
239  MaterialUpdateMode matupmode = addNoise) const override final;
240 
242  virtual std::unique_ptr<TrackParameters> extrapolateToVolume(
243  const EventContext& ctx,
244  const TrackParameters& parm,
245  const Trk::TrackingVolume& vol,
247  ParticleHypothesis particle = pion) const override final;
248 
250  virtual const TrackingGeometry* trackingGeometry() const override final;
251 
252 private:
253 
254  typedef std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>> identifiedParameters_t;
259  const EventContext& ctx,
260  Cache& cache,
261  const IPropagator& prop,
262  TrackParmPtr parm,
263  const Surface& sf,
265  const BoundaryCheck& bcheck = true,
267  MaterialUpdateMode matupmode = addNoise) const;
268 
275  const EventContext& ctx,
276  const IPropagator& prop,
277  const TrackParameters& parm,
278  const Surface& sf,
280  const BoundaryCheck& bcheck = true,
282 
291  const EventContext& ctx,
292  Cache& cache,
293  const IPropagator& prop,
294  TrackParmPtr parm,
295  const std::vector<MaterialEffectsOnTrack>& sfMeff,
296  const TrackingVolume& tvol,
299  MaterialUpdateMode matupmode = addNoise) const;
300 
304  const EventContext& ctx,
305  Cache& cache,
306  TrackParmPtr parm,
307  const Surface& sf,
309  const BoundaryCheck& bcheck = true,
311  MaterialUpdateMode matupmode = addNoise,
312  Trk::ExtrapolationCache* extrapolationCache = nullptr) const;
313 
316  std::unique_ptr<TrackParameters> extrapolateDirectlyImpl(
317  const EventContext& ctx,
318  const IPropagator& prop,
319  const TrackParameters& parm,
320  const Surface& sf,
322  const BoundaryCheck& bcheck = true,
324 
328  const EventContext& ctx,
329  Cache& cache,
330  const IPropagator& prop,
331  TrackParmPtr parm,
333  const BoundaryCheck& bcheck = true,
335  const Volume* boundaryVol = nullptr) const;
336 
339  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
341  const EventContext& ctx,
342  const IPropagator& prop,
343  const TrackParameters& parm,
345  const BoundaryCheck& bcheck,
347  MaterialUpdateMode matupmode = addNoise) const;
348 
351  std::pair<std::unique_ptr<TrackParameters>, const Layer*>
353  const EventContext& ctx,
354  const IPropagator& prop,
355  const TrackParameters& parm,
357  const BoundaryCheck& bcheck,
358  std::vector<const Trk::TrackStateOnSurface*>& material,
360  MaterialUpdateMode matupmode = addNoise) const;
361 
364  std::unique_ptr<TrackParameters> extrapolateToVolumeImpl(
365  const EventContext& ctx,
366  const IPropagator& prop,
367  const TrackParameters& parm,
368  const Trk::TrackingVolume& vol,
371 
387  Cache& cache,
388  const IPropagator& prop,
389  TrackParmPtr parm,
390  const Surface& sf,
391  const Layer* associatedLayer,
392  const TrackingVolume& tvol,
394  const BoundaryCheck& bcheck = true,
396  MaterialUpdateMode matupmode = addNoise) const;
397 
402  Cache& cache,
403  bool toBoundary,
404  const IPropagator& prop,
405  TrackParmPtr parm,
406  const Layer* associatedLayer,
407  const TrackingVolume& tvol,
409  const BoundaryCheck& bcheck = true,
411  MaterialUpdateMode matupmode = addNoise) const;
412 
415  const EventContext& ctx,
416  Cache& cache,
417  const IPropagator& prop,
418  TrackParmPtr parm,
419  const Surface& sf,
420  const TrackingVolume& tvol,
422  const BoundaryCheck& bcheck = true,
424  MaterialUpdateMode matupmode = addNoise) const;
425 
427  const EventContext& ctx,
428  Cache& cache,
429  const IPropagator& prop,
430  TrackParmPtr parm,
431  const Trk::Surface* destSurf,
432  const Trk::TrackingVolume* vol,
434  const BoundaryCheck& bcheck,
436  MaterialUpdateMode matupmode = addNoise) const;
437 
439  const EventContext& ctx,
440  Cache& cache,
441  const IPropagator& prop,
442  TrackParmPtr parm,
443  const Trk::Surface* destSurf,
447 
449  const EventContext& ctx,
450  Cache& cache,
451  TrackParmPtr parm,
452  double pathLim,
455  const Trk::TrackingVolume* destVol,
456  MaterialUpdateMode matupmod = addNoise) const;
457 
472  const EventContext& ctx,
473  Cache& cache,
474  const IPropagator& prop,
475  TrackParmPtr parm,
476  const Layer* associatedLayer,
477  const TrackingVolume& tvol,
479  const BoundaryCheck& bcheck = true,
481  MaterialUpdateMode matupmode = addNoise) const;
482 
486  const EventContext& ctx,
487  Cache& cache,
488  const IPropagator& prop,
489  TrackParmPtr parm,
490  const TrackingVolume& tvol,
491  const Layer* nextLayer,
492  const Layer* destinationLayer,
493  TrackParmPtr navParameters,
495  const BoundaryCheck& bcheck = true,
497  MaterialUpdateMode matupmode = addNoise) const;
498 
502  const EventContext& ctx,
503  Cache& cache,
504  const IPropagator& prop,
505  TrackParmPtr parm,
506  const Surface& sf,
507  const Layer& lay,
508  const TrackingVolume& tvol,
509  const Layer* startLayer,
511  const BoundaryCheck& bcheck = true,
513  MaterialUpdateMode matupmode = addNoise) const;
514 
520  const EventContext& ctx,
521  Cache& cache,
522  const IPropagator& prop,
523  TrackParmPtr parm,
524  const Layer& lay,
525  const TrackingVolume& tvol,
527  const BoundaryCheck& bcheck = true,
529  MaterialUpdateMode matupmode = addNoise,
530  bool perpendicularCheck = true) const;
531 
533  void overlapSearch(const EventContext& ctx,
534  Cache& cache,
535  const IPropagator& prop,
536  TrackParmPtr parm,
537  TrackParmPtr parsOnLayer,
538  const Layer& lay,
539  const TrackingVolume& tvol,
541  const BoundaryCheck& bcheck = true,
543  bool startingLayer = false) const;
544 
552  const EventContext& ctx,
553  Cache& cache,
554  const Trk::IPropagator& prop,
555  TrackParmPtr startPars,
556  const Trk::Surface& destSurface,
559  ManagedTrackParmPtr& referenceParameters,
560  const Trk::Layer*& associatedLayer,
561  const Trk::TrackingVolume*& associatedVolume,
562  const Trk::TrackingVolume*& destinationVolume) const;
563 
568  bool radialDirectionCheck(const EventContext& ctx,
569  const IPropagator& prop,
570  const TrackParameters& startParm,
571  const TrackParameters& parsOnLayer,
572  const TrackingVolume& tvol,
575 
578 
581 
582 
586 
588  std::string positionOutput(const Amg::Vector3D& pos) const;
589 
591  void addMaterialEffectsOnTrack(const EventContext& ctx,
592  Cache& cache,
593  const Trk::IPropagator& prop,
594  TrackParmPtr parm,
595  const Trk::Layer& lay,
596  const Trk::TrackingVolume& vol,
597  Trk::PropDirection propDir,
599 
600 
601 
604  // unsigned int geoIDToDetOrder(Trk::GeometrySignature geoid) const;
605 
606  // --------------- Used Tools ----------------------------- //
608  ToolHandleArray<IPropagator> m_propagators{ this, "Propagators", {} };
610  ToolHandle<IPropagator> m_stepPropagator{
611  this,
612  "STEP_Propagator",
613  "Trk::STEP_Propagator/AtlasSTEP_Propagator"
614  };
616  ToolHandle<INavigator> m_navigator{ this,
617  "Navigator",
618  "Trk::Navigator/AtlasNavigator" };
620  ToolHandleArray<IMaterialEffectsUpdator> m_updaters{
621  this,
622  "MaterialEffectsUpdators",
623  {}
624  };
626  ToolHandle<IMultipleScatteringUpdator> m_msupdater{
627  this,
628  "MultipleScatteringUpdater",
629  "Trk::MultipleScatteringUpdator/AtlasMultipleScatteringUpdator"
630  };
632  ToolHandle<IEnergyLossUpdator> m_elossupdater{ this,
633  "EnergyLossUpdater",
634  "Trk::EnergyLossUpdator/AtlasEnergyLossUpdator" };
635 
636  // ---------------- For Extrapolation handling ------------ //
637 
639  std::vector<const IPropagator*> m_subPropagators;
641  std::vector<const IMaterialEffectsUpdator*> m_subupdaters;
642 
643  // ---------------- For Extrapolator configuration ------------ //
644 
645  std::vector<std::string> m_propNames;
646  std::vector<std::string> m_updatNames;
647 
648  // --------------- General steering & Navigation -------------- //
649 
657  bool m_extendedLayerSearch;
665  unsigned int m_meotpIndex;
666  //if we have no valid subpropagatos it will be set to an INVALID value
669  unsigned int m_initialLayerAttempts;
671  unsigned int m_maxMethodSequence;
673  double m_tolerance;
674  // ------------------------------------------------------- //
679  unsigned int m_maxNavigSurf;
680  unsigned int m_maxNavigVol;
682  //------------ Magnetic field properties
685  //------------Reference surface --------------
686  std::unique_ptr<Surface> m_referenceSurface;
687  //-------------------------- SCREEN output steering -------------------------------------------//
689  //------------------------- VALIDATION SECTION ------------------------------------------//
690  // flags
694 
695  // extrapolation counters
696  mutable Gaudi::Accumulators::Counter<> m_extrapolateCalls;
697  mutable Gaudi::Accumulators::Counter<> m_extrapolateBlindlyCalls;
698  mutable Gaudi::Accumulators::Counter<> m_extrapolateDirectlyCalls;
699  mutable Gaudi::Accumulators::Counter<> m_extrapolateStepwiseCalls;
700 
701  mutable Gaudi::Accumulators::Counter<> m_startThroughAssociation;
702  mutable Gaudi::Accumulators::Counter<> m_startThroughRecall;
703  mutable Gaudi::Accumulators::Counter<> m_startThroughGlobalSearch;
704  mutable Gaudi::Accumulators::Counter<> m_destinationThroughAssociation;
705  mutable Gaudi::Accumulators::Counter<> m_destinationThroughRecall;
706  mutable Gaudi::Accumulators::Counter<> m_destinationThroughGlobalSearch;
707  mutable Gaudi::Accumulators::Counter<> m_layerSwitched;
708 
709  // navigation counters
710  mutable Gaudi::Accumulators::Counter<> m_navigationBreakLoop;
711  mutable Gaudi::Accumulators::Counter<> m_navigationBreakOscillation;
712  mutable Gaudi::Accumulators::Counter<> m_navigationBreakNoVolume;
713  mutable Gaudi::Accumulators::Counter<> m_navigationBreakDistIncrease;
714  mutable Gaudi::Accumulators::Counter<>m_navigationBreakVolumeSignature;
715  mutable Gaudi::Accumulators::Counter<> m_overlapSurfaceHit;
716 
717  mutable Gaudi::Accumulators::Counter<> m_meotSearchCallsFw;
718  mutable Gaudi::Accumulators::Counter<> m_meotSearchCallsBw;
719  mutable Gaudi::Accumulators::Counter<> m_meotSearchSuccessfulFw;
720  mutable Gaudi::Accumulators::Counter<> m_meotSearchSuccessfulBw;
721 };
722 
723 } // end of namespace
725 
726 #endif // TRKEXTOOLS_TRKEXTRAPOLATOR_H
727 
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:655
Trk::Extrapolator::m_successiveLayerAttempts
unsigned int m_successiveLayerAttempts
layer intersection attemps after one layer has been hit sucessfully
Definition: Extrapolator.h:670
Trk::Extrapolator::m_returnPassiveLayers
bool m_returnPassiveLayers
Definition: Extrapolator.h:664
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::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
Trk::Extrapolator::m_stopWithUpdateZero
bool m_stopWithUpdateZero
return 0 if update kills the trajectory
Definition: Extrapolator.h:654
Trk::Extrapolator::m_extendedLayerSearch
bool m_extendedLayerSearch
extended layer search
Definition: Extrapolator.h:658
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:676
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:673
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:632
Trk::Extrapolator::m_propNames
std::vector< std::string > m_propNames
configuration of subPropagators
Definition: Extrapolator.h:645
Trk::Extrapolator::m_extrapolateDirectlyCalls
Gaudi::Accumulators::Counter m_extrapolateDirectlyCalls
number of calls: extrapolateDirectly() method
Definition: Extrapolator.h:698
Trk::Extrapolator::m_extrapolateBlindlyCalls
Gaudi::Accumulators::Counter m_extrapolateBlindlyCalls
number of calls: extrapolateBlindly() method
Definition: Extrapolator.h:697
Trk::Extrapolator::m_navigationBreakNoVolume
Gaudi::Accumulators::Counter m_navigationBreakNoVolume
number of navigation breaks due no Volume found
Definition: Extrapolator.h:712
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:693
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:675
Trk::Extrapolator::m_printRzOutput
bool m_printRzOutput
Definition: Extrapolator.h:688
Trk::Extrapolator::m_numOfValidPropagators
unsigned int m_numOfValidPropagators
Definition: Extrapolator.h:668
Trk::Extrapolator::m_navigationBreakLoop
Gaudi::Accumulators::Counter m_navigationBreakLoop
number of navigation breaks due to loop
Definition: Extrapolator.h:710
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
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:686
NeutralParameters.h
Trk::Extrapolator::m_destinationThroughRecall
Gaudi::Accumulators::Counter m_destinationThroughRecall
navigation intialization
Definition: Extrapolator.h:705
Trk::Extrapolator::m_overlapSurfaceHit
Gaudi::Accumulators::Counter m_overlapSurfaceHit
number of OverlapSurfaces found
Definition: Extrapolator.h:715
Trk::Extrapolator::m_fastField
bool m_fastField
Definition: Extrapolator.h:683
Trk::Extrapolator::~Extrapolator
~Extrapolator()
Destructor.
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::Extrapolator::m_meotSearchSuccessfulBw
Gaudi::Accumulators::Counter m_meotSearchSuccessfulBw
how often the meot search was successful: backward
Definition: Extrapolator.h:720
Trk::Extrapolator::m_includeMaterialEffects
bool m_includeMaterialEffects
boolean to switch on/off material effects
Definition: Extrapolator.h:650
Trk::Extrapolator::m_extrapolateStepwiseCalls
Gaudi::Accumulators::Counter m_extrapolateStepwiseCalls
number of calls: extrapolateStepwise() method
Definition: Extrapolator.h:699
Trk::Extrapolator::m_extrapolateCalls
Gaudi::Accumulators::Counter m_extrapolateCalls
number of calls: extrapolate() method
Definition: Extrapolator.h:696
Trk::Extrapolator::m_subupdaters
std::vector< const IMaterialEffectsUpdator * > m_subupdaters
Definition: Extrapolator.h:641
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::Extrapolator::m_startThroughGlobalSearch
Gaudi::Accumulators::Counter m_startThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:703
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:684
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:718
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:678
Trk::Extrapolator::m_skipInitialLayerUpdate
bool m_skipInitialLayerUpdate
skip the initial post-Update at the layer [Fatras conversion mode]
Definition: Extrapolator.h:656
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::Extrapolator::m_resolveActive
bool m_resolveActive
Definition: Extrapolator.h:661
Trk::Extrapolator::m_cacheLastMatLayer
bool m_cacheLastMatLayer
steering of the material layer cache
Definition: Extrapolator.h:663
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:713
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:711
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:616
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:714
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:719
AthAlgTool.h
Trk::Extrapolator::identifiedParameters_t
std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int > > identifiedParameters_t
Definition: Extrapolator.h:254
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:659
Trk::Extrapolator::m_maxNavigVol
unsigned int m_maxNavigVol
Definition: Extrapolator.h:680
Trk::Extrapolator::m_meotSearchCallsFw
Gaudi::Accumulators::Counter m_meotSearchCallsFw
how often the meot search is called: forward
Definition: Extrapolator.h:717
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:662
Trk::Extrapolator::m_maxNavigSurf
unsigned int m_maxNavigSurf
Definition: Extrapolator.h:679
Trk::Extrapolator::m_destinationThroughAssociation
Gaudi::Accumulators::Counter m_destinationThroughAssociation
navigation intialization
Definition: Extrapolator.h:704
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:651
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::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, std::vector< const Trk::TrackStateOnSurface * > *&material, int destination=3) const override final
Extrapolation method collecting intersections with subdetector boundaries and active volumes/layers.
Definition: Extrapolator.cxx:4457
Trk::Extrapolator::m_meotpIndex
unsigned int m_meotpIndex
if several meotps are available in a volume steer which one to use
Definition: Extrapolator.h:665
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:620
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:4515
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:653
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:669
Trk::Extrapolator::m_referenceMaterial
bool m_referenceMaterial
use the reference material for the update
Definition: Extrapolator.h:660
INavigator.h
Trk::Extrapolator::m_startThroughAssociation
Gaudi::Accumulators::Counter m_startThroughAssociation
navigation intialization
Definition: Extrapolator.h:701
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:691
BoundaryCheck.h
Trk::Extrapolator::m_navigationBreakDetails
bool m_navigationBreakDetails
steer the output for the navigation break details
Definition: Extrapolator.h:692
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:702
Trk::Extrapolator::m_layerSwitched
Gaudi::Accumulators::Counter m_layerSwitched
number of layers that have been switched
Definition: Extrapolator.h:707
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:646
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::Extrapolator::m_destinationThroughGlobalSearch
Gaudi::Accumulators::Counter m_destinationThroughGlobalSearch
navigation intialization
Definition: Extrapolator.h:706
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:639
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:672
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:626
Trk::Extrapolator::m_useDenseVolumeDescription
bool m_useDenseVolumeDescription
use dense volume description when available in ID/Calo
Definition: Extrapolator.h:677
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:681
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:608
ObjContainer< Trk::TrackParameters >
Trk::Extrapolator::m_stepPropagator
ToolHandle< IPropagator > m_stepPropagator
Navigator for TrackingGeometry and magnetic fiels acces.
Definition: Extrapolator.h:610
Trk::Layer
Definition: Layer.h:73
Trk::AlignableTrackingVolume
Definition: AlignableTrackingVolume.h:36