ATLAS Offline Software
IMultiStateExtrapolator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
41 static const InterfaceID IID_IMultiStateExtrapolator("IMultiStateExtrapolator",
42  1, 0);
43 
44 class IMultiStateExtrapolator : virtual public IAlgTool
45 {
46 public:
55  struct Cache
56  {
58  bool m_recall = false;
60  const Surface* m_recallSurface = nullptr;
62  const Layer* m_recallLayer = nullptr;
65  // Current State at boundary (not owning)
67  // Current Navigation parameters
68  std::unique_ptr<TrackParameters> m_navigationParameters = nullptr;
69  // Ptr to current volume (not owning)
70  const TrackingVolume* m_trackingVolume = nullptr;
72  std::vector<MultiComponentState> m_mcsRecycleBin;
73  // Vector of combined material effects
74  std::vector<GsfMaterial::Combined> m_materialEffectsCaches;
75  Cache() { m_materialEffectsCaches.reserve(12); }
76  };
77 
79  virtual ~IMultiStateExtrapolator() = default;
80 
82  static const InterfaceID& interfaceID()
83  {
84  return IID_IMultiStateExtrapolator;
85  };
86 
89  const EventContext& ctx,
90  Cache&,
91  const MultiComponentState&,
92  const Surface&,
93  PropDirection direction,
94  const BoundaryCheck& boundaryCheck,
95  ParticleHypothesis particleHypothesis) const = 0;
96 
99  const EventContext& ctx,
100  const MultiComponentState&,
101  const Surface&,
102  PropDirection direction,
103  const BoundaryCheck& boundaryCheck,
104  ParticleHypothesis particleHypothesis) const = 0;
105 };
106 
107 } // end trk namespace
108 
109 #endif
TrackParameters.h
Trk::IMultiStateExtrapolator::Cache::m_recallSurface
const Surface * m_recallSurface
Layer for recall (not owning)
Definition: IMultiStateExtrapolator.h:60
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::IMultiStateExtrapolator::Cache::m_stateAtBoundary
const MultiComponentState * m_stateAtBoundary
Definition: IMultiStateExtrapolator.h:66
PropDirection.h
GsfMaterial.h
Trk::IMultiStateExtrapolator::Cache::Cache
Cache()
Definition: IMultiStateExtrapolator.h:75
Trk::IMultiStateExtrapolator::extrapolate
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis) const =0
Configured AlgTool extrapolation method (1)
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
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:64
Trk::IMultiStateExtrapolator::interfaceID
static const InterfaceID & interfaceID()
AlgTool interface method.
Definition: IMultiStateExtrapolator.h:82
Trk::IMultiStateExtrapolator::Cache
MultiStateExtrapolator cache class.
Definition: IMultiStateExtrapolator.h:56
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:62
ComponentParameters.h
Definition of component parameters for use in a mixture of many components. In this regime each track...
Trk::IMultiStateExtrapolator::Cache::m_recall
bool m_recall
< Flag the recall solution
Definition: IMultiStateExtrapolator.h:58
Trk::IMultiStateExtrapolator::extrapolateDirectly
virtual MultiComponentState extrapolateDirectly(const EventContext &ctx, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck, ParticleHypothesis particleHypothesis) const =0
Configured AlgTool extrapolation without material effects method (2)
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
BoundaryCheck.h
Trk::IMultiStateExtrapolator::Cache::m_materialEffectsCaches
std::vector< GsfMaterial::Combined > m_materialEffectsCaches
Definition: IMultiStateExtrapolator.h:74
Trk::IMultiStateExtrapolator::Cache::m_trackingVolume
const TrackingVolume * m_trackingVolume
keep track of the MultiComponentStates
Definition: IMultiStateExtrapolator.h:70
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::IMultiStateExtrapolator::Cache::m_mcsRecycleBin
std::vector< MultiComponentState > m_mcsRecycleBin
Definition: IMultiStateExtrapolator.h:72
Trk::IMultiStateExtrapolator::Cache::m_navigationParameters
std::unique_ptr< TrackParameters > m_navigationParameters
Definition: IMultiStateExtrapolator.h:68
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::IMultiStateExtrapolator
Definition: IMultiStateExtrapolator.h:45
Trk::Layer
Definition: Layer.h:73