ATLAS Offline Software
ElectronMaterialMixtureConvolution.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 TrkElectronMaterialMixtureConvolution_H
13 #define TrkElectronMaterialMixtureConvolution_H
14 
16 //
20 //
22 #include "GaudiKernel/ToolHandle.h"
23 
24 namespace Trk {
25 class Layer;
26 class MaterialProperties;
27 
29  : public AthAlgTool
30  , virtual public IMaterialMixtureConvolution
31 {
32 
33 public:
35  {
36  Normal = 0,
37  Preupdate = 1,
38  Postupdate = 2
39  };
40 
42  ElectronMaterialMixtureConvolution(const std::string&,
43  const std::string&,
44  const IInterface*);
45 
48 
50  virtual StatusCode initialize() override final;
51 
55  const Layer&,
56  PropDirection direction = anyDirection) const override final;
57 
61  const Layer&,
62  PropDirection direction = anyDirection) const override final;
63 
67  const Layer&,
68  PropDirection direction = anyDirection) const override final;
69 
70  virtual Trk::ParticleHypothesis particleHypothesis() const override final {
71  return Trk::electron;
72  }
73 
74  private:
75  Trk::MultiComponentState update(std::vector<GsfMaterial::Combined>&,
76  const Trk::MultiComponentState& inputState,
77  const Trk::Layer& layer,
78  Trk::PropDirection direction,
79  double updateFactor) const;
80 
81  //pimpl
82  std::unique_ptr<ElectronCombinedMaterialEffects> m_materialEffects;
83 
84  Gaudi::Property<unsigned int> m_maximumNumberOfComponents{
85  this,
86  "MaximumNumberOfComponents",
87  12,
88  "Maximum number of components"
89  };
90 
91  Gaudi::Property<std::string> m_parameterisationFileName{
92  this,
93  "BetheHeitlerParameterisationFileName",
94  "GeantSim_LT01_cdf_nC6_O5.par",
95  "Parametrization of Bethe Heitler material effects"
96  };
97 
98  Gaudi::Property<std::string> m_parameterisationFileNameHighX0{
99  this,
100  "BetheHeitlerParameterisationFileNameHighX0",
101  "GeantSim_GT01_cdf_nC6_O5.par",
102  "Parametrization of Bethe Heitler material effects for high X0"
103  };
104 };
105 
106 } // end Trk namespace
107 
108 #endif
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Trk::ElectronMaterialMixtureConvolution::initialize
virtual StatusCode initialize() override final
Convolution with full material properties.
Definition: ElectronMaterialMixtureConvolution.cxx:185
Trk::ElectronMaterialMixtureConvolution::Normal
@ Normal
Definition: ElectronMaterialMixtureConvolution.h:36
Trk::ElectronMaterialMixtureConvolution::m_maximumNumberOfComponents
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
Definition: ElectronMaterialMixtureConvolution.h:84
Trk::ElectronMaterialMixtureConvolution::particleHypothesis
virtual Trk::ParticleHypothesis particleHypothesis() const override final
Definition: ElectronMaterialMixtureConvolution.h:70
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
GsfMaterial.h
Trk::ElectronMaterialMixtureConvolution::~ElectronMaterialMixtureConvolution
virtual ~ElectronMaterialMixtureConvolution()
AlgTool initialise method.
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::electron
@ electron
Definition: ParticleHypothesis.h:30
vector
Definition: MultiHisto.h:13
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Trk::ElectronMaterialMixtureConvolution::m_materialEffects
std::unique_ptr< ElectronCombinedMaterialEffects > m_materialEffects
Definition: ElectronMaterialMixtureConvolution.h:82
AthAlgTool.h
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::ElectronMaterialMixtureConvolution::postUpdate
virtual MultiComponentState postUpdate(std::vector< GsfMaterial::Combined > &, const MultiComponentState &, const Layer &, PropDirection direction=anyDirection) const override final
The particle hypothesis we implement material effects for.
Definition: ElectronMaterialMixtureConvolution.cxx:248
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
Trk::ElectronMaterialMixtureConvolution::preUpdate
virtual MultiComponentState preUpdate(std::vector< GsfMaterial::Combined > &, const MultiComponentState &, const Layer &, PropDirection direction=anyDirection) const override final
Convolution with post-measurement-update material properties.
Definition: ElectronMaterialMixtureConvolution.cxx:223
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ElectronMaterialMixtureConvolution::Postupdate
@ Postupdate
Definition: ElectronMaterialMixtureConvolution.h:38
ElectronCombinedMaterialEffects.h
ComponentParameters.h
Definition of component parameters for use in a mixture of many components. In this regime each track...
Trk::ElectronMaterialMixtureConvolution
Definition: ElectronMaterialMixtureConvolution.h:31
GsfMaterial
Collect Structs we use for material effects in GSF and their meaning in one place.
Definition: GsfMaterial.h:19
Trk::IMaterialMixtureConvolution
Definition: IMaterialMixtureConvolution.h:30
Trk::ElectronMaterialMixtureConvolution::m_parameterisationFileNameHighX0
Gaudi::Property< std::string > m_parameterisationFileNameHighX0
Definition: ElectronMaterialMixtureConvolution.h:98
AthAlgTool
Definition: AthAlgTool.h:26
IMaterialMixtureConvolution.h
Abstract base class for convolution of material effects.
Trk::ElectronMaterialMixtureConvolution::MaterialUpdateType
MaterialUpdateType
Definition: ElectronMaterialMixtureConvolution.h:35
Trk::ElectronMaterialMixtureConvolution::update
virtual MultiComponentState update(std::vector< GsfMaterial::Combined > &, const MultiComponentState &, const Layer &, PropDirection direction=anyDirection) const override final
Convolution with pre-measurement-update material properties.
Definition: ElectronMaterialMixtureConvolution.cxx:202
Trk::ElectronMaterialMixtureConvolution::ElectronMaterialMixtureConvolution
ElectronMaterialMixtureConvolution(const std::string &, const std::string &, const IInterface *)
Destructor.
Definition: ElectronMaterialMixtureConvolution.cxx:173
Trk::ElectronMaterialMixtureConvolution::m_parameterisationFileName
Gaudi::Property< std::string > m_parameterisationFileName
Definition: ElectronMaterialMixtureConvolution.h:91
Trk::ElectronMaterialMixtureConvolution::Preupdate
@ Preupdate
Definition: ElectronMaterialMixtureConvolution.h:37
Trk::Layer
Definition: Layer.h:72