ATLAS Offline Software
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 
24 namespace Trk {
25 
26 class Layer;
27 class Material;
28 class MaterialProperties;
29 class MaterialEffectsOnTrack;
30 
32 static const InterfaceID IID_ITimedMatEffUpdator("ITimedMatEffUpdator", 1, 0);
33 
42 class ITimedMatEffUpdator : virtual public IAlgTool
43 {
44 public:
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,
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,
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,
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&,
114  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 
136 inline 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 
Trk::ITimedMatEffUpdator::interfaceID
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
Definition: ITimedMatEffUpdator.h:49
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:126
TrackParameters.h
GeometrySignature.h
Trk::ParametersBase::uniqueClone
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...
Definition: ParametersBase.h:97
Trk::ITimedMatEffUpdator::~ITimedMatEffUpdator
virtual ~ITimedMatEffUpdator()=default
Virtual destructor.
Trk::ITimedMatEffUpdator::update
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.
PropDirection.h
Trk::MaterialUpdateMode
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
Definition: MaterialUpdateMode.h:18
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
SUSY_SimplifiedModel_PostInclude.process
string process
Definition: SUSY_SimplifiedModel_PostInclude.py:42
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
HelperStructs.h
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition: MaterialEffectsOnTrack.h:40
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::GeometrySignature
GeometrySignature
Definition: GeometrySignature.h:24
Trk::ITimedMatEffUpdator::update
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.
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Trk::ITimedMatEffUpdator::recordBremPhoton
virtual void recordBremPhoton(double, double, double, const Amg::Vector3D &, Amg::Vector3D &, Trk::ParticleHypothesis) const
the helper function for a brem photon record
Definition: ITimedMatEffUpdator.h:110
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::TimeLimit
Definition: HelperStructs.h:58
ParticleHypothesis.h
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::PathLimit
Definition: HelperStructs.h:34
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MaterialUpdateMode.h
Trk::ITimedMatEffUpdator
Definition: ITimedMatEffUpdator.h:43
Trk::MaterialProperties
Definition: MaterialProperties.h:40
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
Trk::ITimedMatEffUpdator::interact
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.
Definition: ITimedMatEffUpdator.h:137
Trk::Material
Definition: Material.h:116
Trk::ITimedMatEffUpdator::modelAction
virtual void modelAction(const TrackParameters *parm=nullptr) const
Model Action: Can be implemented optionally.
Definition: ITimedMatEffUpdator.h:127
Trk::ITimedMatEffUpdator::validationAction
virtual void validationAction() const
Validation Action: Can be implemented optionally, outside access to internal validation steps.
Definition: ITimedMatEffUpdator.h:121
Material
@ Material
Definition: MaterialTypes.h:8
Trk::ITimedMatEffUpdator::update
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.
Definition: ITimedMatEffUpdator.h:72
Trk::Layer
Definition: Layer.h:73