ATLAS Offline Software
Loading...
Searching...
No Matches
ITimedMatEffUpdator.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_ITIMEDMATEFFUPDATOR_H
10#define TRKEXINTERFACES_ITIMEDMATEFFUPDATOR_H
11
12// Gaudi
13#include "GaudiKernel/IAlgTool.h"
14// Trk
15#include "HelperStructs.h"
21
22#include <memory>
23
24namespace Trk {
25
26class Layer;
27class Material;
30
32static const InterfaceID IID_ITimedMatEffUpdator("ITimedMatEffUpdator", 1, 0);
33
42class ITimedMatEffUpdator : virtual public IAlgTool
43{
44public:
46 virtual ~ITimedMatEffUpdator() = default;
47
49 static const InterfaceID& interfaceID() { return IID_ITimedMatEffUpdator; }
50
56 virtual std::unique_ptr<TrackParameters> update(
57 const TrackParameters* parm,
58 const Layer& sf,
59 TimeLimit& time,
60 PathLimit& path,
63 ParticleHypothesis particle = pion) const = 0;
64
72 virtual std::unique_ptr<TrackParameters> update(
73 double /* time*/,
74 const TrackParameters* parm,
76 ParticleHypothesis particle = pion,
77 MaterialUpdateMode matupmode = addNoise) const
78 {
79 (void)particle;
80 (void)matupmode;
81 return parm->uniqueClone();
82 }
83
89 virtual std::unique_ptr<TrackParameters> update(
90 double time,
91 const TrackParameters& parm,
92 const MaterialProperties& mprop,
93 double pathcorrection,
95 ParticleHypothesis particle = pion,
96 MaterialUpdateMode matupmode = addNoise) const = 0;
97
101 virtual std::unique_ptr<TrackParameters> interact(
102 double time,
103 const Amg::Vector3D& position,
104 const Amg::Vector3D& momentum,
105 ParticleHypothesis particle,
106 int process,
107 const Trk::Material* extMatProp = nullptr) const;
108
110 virtual void recordBremPhoton(double,
111 double, // emitting electron momentum
112 double, // brem photon momentum
113 const Amg::Vector3D&,
116 {}
117
121 virtual void validationAction() const {}
122
127 virtual void modelAction(const TrackParameters* parm = nullptr) const
128 {
129 if (parm)
130 return;
131 }
132};
133
134} // end of namespace
135
136inline std::unique_ptr<Trk::TrackParameters>
138 const Amg::Vector3D&,
139 const Amg::Vector3D&,
141 int,
142 const Trk::Material*) const
143{
144 return nullptr;
145}
146
147#endif // TRKEXINTERFACES_TIMEDMATEFFUPDATOR_H
148
Interface class for the updater AlgTool, it inherits from IAlgTool Detailed information about private...
virtual void validationAction() const
Validation Action: Can be implemented optionally, outside access to internal validation steps.
virtual std::unique_ptr< TrackParameters > update(double, const TrackParameters *parm, const MaterialEffectsOnTrack &, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const
User updator interface (full update for a layer): The parmeters are given as a pointer.
virtual std::unique_ptr< TrackParameters > update(const TrackParameters *parm, const Layer &sf, TimeLimit &time, PathLimit &path, Trk::GeometrySignature geoID, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion) const =0
Updator interface (full update for a layer): The parmeters are given as a const pointer.
virtual ~ITimedMatEffUpdator()=default
Virtual destructor.
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
virtual std::unique_ptr< TrackParameters > interact(double time, const Amg::Vector3D &position, const Amg::Vector3D &momentum, ParticleHypothesis particle, int process, const Trk::Material *extMatProp=nullptr) const
Updator interface: Perform pre-selected interaction.
virtual void modelAction(const TrackParameters *parm=nullptr) const
Model Action: Can be implemented optionally.
virtual std::unique_ptr< TrackParameters > update(double time, const TrackParameters &parm, const MaterialProperties &mprop, double pathcorrection, PropDirection dir=alongMomentum, ParticleHypothesis particle=pion, MaterialUpdateMode matupmode=addNoise) const =0
Updator interface: The parmeters are given as a pointer, they are delete inside the update method.
virtual void recordBremPhoton(double, double, double, const Amg::Vector3D &, Amg::Vector3D &, Trk::ParticleHypothesis) const
the helper function for a brem photon record
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.
A common object to be contained by.
Definition Material.h:117
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
const std::string process
Eigen::Matrix< double, 3, 1 > Vector3D
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_ITimedMatEffUpdator("ITimedMatEffUpdator", 1, 0)
Interface ID for ITimedMatEffUpdator.