ATLAS Offline Software
HomogeneousLayerMaterial.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // HomogeneousLayerMaterial.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
10 #define TRKGEOMETY_HOMOGENOUSLAYERMATERIAL_H
11 
12 // Amg
14 // Trk
17 // Gaudi
18 #include "GaudiKernel/MsgStream.h"
19 // STD
20 #include <memory>
21 #include <vector>
22 
24 
25 namespace Trk {
26 
27 class BinUtility;
54  public:
57 
60  HomogeneousLayerMaterial(const MaterialProperties& full, double splitFactor);
61 
64 
66  virtual ~HomogeneousLayerMaterial() override;
67 
69  virtual HomogeneousLayerMaterial* clone() const override;
70 
73 
76 
79  default;
80 
82  virtual HomogeneousLayerMaterial& operator*=(double scale) override;
83 
85  virtual const MaterialProperties* fullMaterial(
86  const Amg::Vector3D& gp) const override;
87 
89  virtual const MaterialProperties* material(size_t ib0,
90  size_t ib1) const override;
91 
93  virtual const BinUtility* binUtility() const override { return nullptr; }
94 
97  virtual void updateBinning(BinUtility*) override {}
98 
100  virtual MsgStream& dump(MsgStream& sl) const override;
102  virtual std::ostream& dump(std::ostream& sl) const override;
103 
104  private:
105  friend class ::HomogeneousLayerMaterialCnv_p1;
106 
108  std::unique_ptr<MaterialProperties> m_fullMaterial;
109 };
110 
112  return new HomogeneousLayerMaterial(*this);
113 }
114 
116  const Amg::Vector3D&) const {
117  return m_fullMaterial.get();
118 }
119 
121  size_t, size_t) const {
122  return m_fullMaterial.get();
123 }
124 
125 } // namespace Trk
126 
127 #endif
128 
HomogeneousLayerMaterialCnv_p1
Definition: HomogeneousLayerMaterialCnv_p1.h:24
Trk::HomogeneousLayerMaterial::operator=
HomogeneousLayerMaterial & operator=(const HomogeneousLayerMaterial &lmp)
Assignment operator.
Definition: HomogeneousLayerMaterial.cxx:28
MaterialProperties.h
Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial
HomogeneousLayerMaterial(Trk::HomogeneousLayerMaterial &&lmp)=default
Default move constructor.
Trk::HomogeneousLayerMaterial::operator*=
virtual HomogeneousLayerMaterial & operator*=(double scale) override
Scale operator.
Definition: HomogeneousLayerMaterial.cxx:39
Trk::HomogeneousLayerMaterial::operator=
HomogeneousLayerMaterial & operator=(Trk::HomogeneousLayerMaterial &&lmp)=default
Default move assignment operator.
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
Trk::HomogeneousLayerMaterial::fullMaterial
virtual const MaterialProperties * fullMaterial(const Amg::Vector3D &gp) const override
Return method for full material description of the Layer.
Definition: HomogeneousLayerMaterial.h:115
GeoPrimitives.h
Trk::HomogeneousLayerMaterial::m_fullMaterial
std::unique_ptr< MaterialProperties > m_fullMaterial
The five different MaterialProperties.
Definition: HomogeneousLayerMaterial.h:108
Trk::LayerMaterialProperties
Definition: LayerMaterialProperties.h:62
Trk::BinUtility
Definition: BinUtility.h:39
Trk::HomogeneousLayerMaterial::binUtility
virtual const BinUtility * binUtility() const override
Return the BinUtility.
Definition: HomogeneousLayerMaterial.h:93
Trk::HomogeneousLayerMaterial::updateBinning
virtual void updateBinning(BinUtility *) override
Update the BinUtility if necessary - passing ownership of the utility class.
Definition: HomogeneousLayerMaterial.h:97
Trk::HomogeneousLayerMaterial::material
virtual const MaterialProperties * material(size_t ib0, size_t ib1) const override
Direct access via bins to the MaterialProperties.
Definition: HomogeneousLayerMaterial.h:120
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::HomogeneousLayerMaterial::~HomogeneousLayerMaterial
virtual ~HomogeneousLayerMaterial() override
Destructor.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
find_data.full
full
Definition: find_data.py:27
Trk::MaterialProperties
Definition: MaterialProperties.h:40
Trk::HomogeneousLayerMaterial::clone
virtual HomogeneousLayerMaterial * clone() const override
Pseudo-Constructor clone()
Definition: HomogeneousLayerMaterial.h:111
Trk::HomogeneousLayerMaterial::HomogeneousLayerMaterial
HomogeneousLayerMaterial()
Default Constructor - creates empty HomogeneousLayerMaterial.
Definition: HomogeneousLayerMaterial.cxx:13
Trk::HomogeneousLayerMaterial
Definition: HomogeneousLayerMaterial.h:53
LayerMaterialProperties.h
Trk::HomogeneousLayerMaterial::dump
virtual MsgStream & dump(MsgStream &sl) const override
Output Method for MsgStream, to be overloaded by child classes.
Definition: HomogeneousLayerMaterial.cxx:47