ATLAS Offline Software
IMultiStateExtrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #ifndef TrkIMultiStateExtrapolator_H
13 #define TrkIMultiStateExtrapolator_H
14 
17 //
22 //
23 #include "GaudiKernel/EventContext.h"
24 #include "GaudiKernel/IAlgTool.h"
25 //
26 #include <memory>
27 #include <vector>
28 
29 namespace Trk {
30 
31 class Surface;
32 class Track;
33 class TrackingVolume;
34 class TrackStateOnSurface;
35 
36 static const InterfaceID IID_IMultiStateExtrapolator("IMultiStateExtrapolator",
37  1, 0);
38 
39 class IMultiStateExtrapolator : virtual public IAlgTool
40 {
41 public:
50  struct Cache
51  {
53  const Surface* m_recallSurface = nullptr;
55  const Layer* m_recallLayer = nullptr;
58  // Current State at boundary (not owning)
60  // Current Navigation parameters
61  std::unique_ptr<TrackParameters> m_navigationParameters = nullptr;
62  // Ptr to current volume (not owning)
63  const TrackingVolume* m_trackingVolume = nullptr;
65  std::vector<MultiComponentState> m_mcsRecycleBin;
66  // Vector of combined material effects
67  std::vector<GsfMaterial::Combined> m_materialEffectsCaches;
68  Cache() { m_materialEffectsCaches.reserve(12); }
69  };
70 
72  virtual ~IMultiStateExtrapolator() = default;
73 
75  static const InterfaceID& interfaceID()
76  {
77  return IID_IMultiStateExtrapolator;
78  };
79 
82  const EventContext& ctx,
83  Cache&,
84  const MultiComponentState&,
85  const Surface&,
86  PropDirection direction,
87  const BoundaryCheck& boundaryCheck) const = 0;
88 
91  const EventContext& ctx,
92  const MultiComponentState&,
93  const Surface&,
94  PropDirection direction,
95  const BoundaryCheck& boundaryCheck) const = 0;
96 
99 
100 
101 };
102 
103 } // end trk namespace
104 
105 #endif
Trk::IMultiStateExtrapolator::particleHypothesis
virtual Trk::ParticleHypothesis particleHypothesis() const =0
TrackParameters.h
Trk::IMultiStateExtrapolator::Cache::m_recallSurface
const Surface * m_recallSurface
< Surface for recall (not owning)
Definition: IMultiStateExtrapolator.h:53
Trk::IMultiStateExtrapolator::extrapolateDirectly
virtual MultiComponentState extrapolateDirectly(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const =0
Configured AlgTool extrapolation without material effects method (2)
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::IMultiStateExtrapolator::Cache::m_stateAtBoundary
const MultiComponentState * m_stateAtBoundary
Definition: IMultiStateExtrapolator.h:59
PropDirection.h
GsfMaterial.h
Trk::IMultiStateExtrapolator::extrapolate
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const =0
Configured AlgTool extrapolation method (1)
Trk::IMultiStateExtrapolator::Cache::Cache
Cache()
Definition: IMultiStateExtrapolator.h:68
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::IMultiStateExtrapolator::~IMultiStateExtrapolator
virtual ~IMultiStateExtrapolator()=default
Virtual destructor.
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::IMultiStateExtrapolator::Cache::m_recallTrackingVolume
const TrackingVolume * m_recallTrackingVolume
Definition: IMultiStateExtrapolator.h:57
Trk::IMultiStateExtrapolator::interfaceID
static const InterfaceID & interfaceID()
AlgTool interface method.
Definition: IMultiStateExtrapolator.h:75
Trk::IMultiStateExtrapolator::Cache
MultiStateExtrapolator cache class.
Definition: IMultiStateExtrapolator.h:51
ParticleHypothesis.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::IMultiStateExtrapolator::Cache::m_recallLayer
const Layer * m_recallLayer
Tracking volume for recall (not owning)
Definition: IMultiStateExtrapolator.h:55
ComponentParameters.h
Definition of component parameters for use in a mixture of many components. In this regime each track...
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
BoundaryCheck.h
Trk::IMultiStateExtrapolator::Cache::m_materialEffectsCaches
std::vector< GsfMaterial::Combined > m_materialEffectsCaches
Definition: IMultiStateExtrapolator.h:67
Trk::IMultiStateExtrapolator::Cache::m_trackingVolume
const TrackingVolume * m_trackingVolume
keep track of the MultiComponentStates
Definition: IMultiStateExtrapolator.h:63
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::IMultiStateExtrapolator::Cache::m_mcsRecycleBin
std::vector< MultiComponentState > m_mcsRecycleBin
Definition: IMultiStateExtrapolator.h:65
Trk::IMultiStateExtrapolator::Cache::m_navigationParameters
std::unique_ptr< TrackParameters > m_navigationParameters
Definition: IMultiStateExtrapolator.h:61
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::TrackingVolume
Definition: TrackingVolume.h:119
Trk::IMultiStateExtrapolator
Definition: IMultiStateExtrapolator.h:40
Trk::Layer
Definition: Layer.h:72