ATLAS Offline Software
Loading...
Searching...
No Matches
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
11
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
29namespace Trk {
30
31class Surface;
32class Track;
33class TrackingVolume;
35
36static const InterfaceID IID_IMultiStateExtrapolator("IMultiStateExtrapolator",
37 1, 0);
38
39class IMultiStateExtrapolator : virtual public IAlgTool
40{
41public:
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)
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 {
78 };
79
82 const EventContext& ctx,
83 Cache&,
85 const Surface&,
86 PropDirection direction,
87 const BoundaryCheck& boundaryCheck) const = 0;
88
91 const EventContext& ctx,
93 const Surface&,
94 PropDirection direction,
95 const BoundaryCheck& boundaryCheck) const = 0;
96
99
100
101};
102
103} // end trk namespace
104
105#endif
Definition of component parameters for use in a mixture of many components. In this regime each track...
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
virtual MultiComponentState extrapolate(const EventContext &ctx, Cache &, const MultiComponentState &, const Surface &, PropDirection direction, const BoundaryCheck &boundaryCheck) const =0
Configured AlgTool extrapolation method (1)
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)
virtual ~IMultiStateExtrapolator()=default
Virtual destructor.
static const InterfaceID & interfaceID()
AlgTool interface method.
virtual Trk::ParticleHypothesis particleHypothesis() const =0
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
Abstract Base Class for tracking surfaces.
represents the track state (measurement, material, fit parameters and quality) at a surface.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
std::vector< ComponentParameters > MultiComponentState
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
static const InterfaceID IID_IMultiStateExtrapolator("IMultiStateExtrapolator", 1, 0)
MultiStateExtrapolator cache class.
const Surface * m_recallSurface
< Surface for recall (not owning)
const Layer * m_recallLayer
Tracking volume for recall (not owning)
std::unique_ptr< TrackParameters > m_navigationParameters
const TrackingVolume * m_trackingVolume
keep track of the MultiComponentStates
std::vector< MultiComponentState > m_mcsRecycleBin
const MultiComponentState * m_stateAtBoundary
std::vector< GsfMaterial::Combined > m_materialEffectsCaches