ATLAS Offline Software
Loading...
Searching...
No Matches
IMaterialEffectsUpdator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// IMaterialEffectsUpdator.h, (c) ATLAS Detector software
8
9#ifndef TRKEXINTERFACES_IMATERIALEFFECTSUPDATOR_H
10#define TRKEXINTERFACES_IMATERIALEFFECTSUPDATOR_H
11
12// Gaudi
13#include "GaudiKernel/IAlgTool.h"
14// Trk
19#include <memory>
20
21namespace Trk {
22
23class Layer;
26
28static const InterfaceID IID_IMaterialEffectsUpdator("IMaterialEffectsUpdator",
29 1,
30 0);
31
43
44class IMaterialEffectsUpdator : virtual public IAlgTool
45{
46
47public:
50
52 static const InterfaceID& interfaceID()
53 {
55 }
56
62 class ICache
63 {
64 public:
66 : validationLayer{ nullptr }
67 , validationSteps{ 0 }
68 , validationPhi{ 0. }
69 , validationEta{ 0. }
71 {}
72 ~ICache() = default;
74 const Trk::Layer* validationLayer{ nullptr };
75 int validationSteps{ 0 };
76 double validationPhi{ 0. };
77 double validationEta{ 0. };
81 };
82
87 virtual ICache getCache() const { return {}; }
88
93 virtual std::unique_ptr<TrackParameters> update(
94 ICache& icache,
95 const TrackParameters* param,
96 const Layer& sf,
98 ParticleHypothesis particle = pion,
100 ) const = 0;
101
106 virtual std::unique_ptr<TrackParameters> update(
107 ICache& icache,
108 const TrackParameters* param,
109 const MaterialEffectsOnTrack& meff,
110 Trk::ParticleHypothesis particle = pion,
111 MaterialUpdateMode matupmode = addNoise
112 ) const = 0;
113
118 virtual std::unique_ptr<TrackParameters> preUpdate(
119 ICache& icache,
120 const TrackParameters* param,
121 const Layer& sf,
123 ParticleHypothesis particle = pion,
124 MaterialUpdateMode matupmode = addNoise
125 ) const = 0;
126
132 virtual std::unique_ptr<TrackParameters> postUpdate(
133 ICache& icache,
134 const TrackParameters& param,
135 const Layer& sf,
137 ParticleHypothesis particle = pion,
138 MaterialUpdateMode matupmode = addNoise
139 ) const = 0;
140
146 virtual std::unique_ptr<TrackParameters> update(
147 ICache& icache,
148 const TrackParameters& param,
149 const MaterialProperties& mprop,
150 double pathcorrection,
152 ParticleHypothesis particle = pion,
153 MaterialUpdateMode matupmode = addNoise
154 ) const = 0;
155
157 virtual void validationAction(ICache& icache) const = 0;
158
160 virtual void modelAction(ICache& icache,
161 const TrackParameters* param = nullptr) const = 0;
162
165 virtual std::unique_ptr<TrackParameters> update(
166 const TrackParameters* param,
167 const Layer& sf,
169 ParticleHypothesis particle = pion,
170 MaterialUpdateMode matupmode = addNoise
171 ) const = 0;
172
175 virtual std::unique_ptr<TrackParameters> update(
176 const TrackParameters* param,
177 const MaterialEffectsOnTrack& meff,
178 ParticleHypothesis particle = pion,
179 MaterialUpdateMode matupmode = addNoise
180 ) const = 0;
183 virtual std::unique_ptr<TrackParameters> preUpdate(
184 const TrackParameters* param,
185 const Layer& sf,
187 ParticleHypothesis particle = pion,
188 MaterialUpdateMode matupmode = addNoise
189 ) const = 0;
190
193 virtual std::unique_ptr<TrackParameters> postUpdate(
194 const TrackParameters& param,
195 const Layer& sf,
197 ParticleHypothesis particle = pion,
198 MaterialUpdateMode matupmode = addNoise
199 ) const = 0;
200
205 virtual std::unique_ptr<TrackParameters> update(
206 const TrackParameters& param,
207 const MaterialProperties& mprop,
208 double pathcorrection,
210 ParticleHypothesis particle = pion,
211 MaterialUpdateMode matupmode = addNoise
212 ) const = 0;
216 virtual void validationAction() const = 0;
217
222 virtual void modelAction(const TrackParameters* param = nullptr) const = 0;
223};
224
225} // end of namespace
226
227#endif // TRKEXINTERFACES_MATERIALEFFECTSUPDATOR_H
228
Cache class to allow passing information to/between calls.
~ICache()=default
layer in the current validation step
int validationSteps
number of validation steps
Interface class for the updater AlgTool, it inherits from IAlgTool.
virtual std::unique_ptr< TrackParameters > postUpdate(const TrackParameters &param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (pre-update for a layer):
virtual void validationAction(ICache &icache) const =0
Validation Action:
virtual void validationAction() const =0
Validation Action: outside access to internal validation steps Optional.
virtual std::unique_ptr< TrackParameters > update(const TrackParameters *param, const MaterialEffectsOnTrack &meff, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
User updator interface (full update for a layer):
virtual ~IMaterialEffectsUpdator()
Virtual destructor.
virtual ICache getCache() const
Creates an instance of the cache to be used.
virtual std::unique_ptr< TrackParameters > preUpdate(const TrackParameters *param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (pre-update for a layer):
virtual std::unique_ptr< TrackParameters > update(ICache &icache, const TrackParameters *param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (full update for a layer): The parameters are given as a pointer owned by the calle...
virtual std::unique_ptr< TrackParameters > postUpdate(ICache &icache, const TrackParameters &param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (pre-update for a layer): The parameters are given as a pointer owned by the caller...
virtual std::unique_ptr< TrackParameters > update(const TrackParameters *param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (full update for a layer):
virtual std::unique_ptr< TrackParameters > update(ICache &icache, const TrackParameters &param, const MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface: The parameters are given as a pointer owned by the caller.
virtual std::unique_ptr< TrackParameters > update(const TrackParameters &param, const MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface: MaterialProperties based material update.
virtual void modelAction(const TrackParameters *param=nullptr) const =0
Model Action: Provides the possibility of doing non-local MaterialEffectsUpdates for different models...
virtual std::unique_ptr< TrackParameters > preUpdate(ICache &icache, const TrackParameters *param, const Layer &sf, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface (pre-update for a layer): The parameters are given as a pointer owned by the caller...
virtual void modelAction(ICache &icache, const TrackParameters *param=nullptr) const =0
Model Action:
virtual std::unique_ptr< TrackParameters > update(ICache &icache, const TrackParameters *param, const MaterialEffectsOnTrack &meff, Trk::ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
User updator interface (full update for a layer): The parameters are given as a pointer owned by the ...
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
represents the full description of deflection and e-loss of a track in material.
Material with information about thickness of material.
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
@ alongMomentum
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
ParametersBase< TrackParametersDim, Charged > TrackParameters
static const InterfaceID IID_IMaterialEffectsUpdator("IMaterialEffectsUpdator", 1, 0)
Interface ID for IMaterialEffectsUpdator.