ATLAS Offline Software
Loading...
Searching...
No Matches
BinnedLayerMaterial.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6// BinnedLayerMaterial.h, (c) ATLAS Detector software
8
9#ifndef TRKGEOMETRY_BINNEDLAYERMATERIAL_H
10#define TRKGEOMETRY_BINNEDLAYERMATERIAL_H
11
12//Trk
17
18#include <iosfwd>
19//Gaudi
20class MsgStream;
22
23namespace Trk {
24
25
33
35
36 public:
39
42
52 BinnedLayerMaterial(const Trk::BinUtility& binutility,
53 const MaterialPropertiesVector& fullProperties,
54 double splitFactor=0.);
55
65 BinnedLayerMaterial(const Trk::BinUtility& binutility,
66 const MaterialPropertiesMatrix& fullProperties,
67 double splitFactor=0.);
68
71
73 virtual ~BinnedLayerMaterial() override;
74
76 virtual BinnedLayerMaterial* clone() const override;
77
81
83 virtual BinnedLayerMaterial& operator*=(double scale) override;
84
86 virtual const BinUtility* binUtility() const override;
87
89 virtual void updateBinning(BinUtility* bu) override;
90
93
95 virtual const MaterialProperties* fullMaterial(const Amg::Vector3D& gp) const override;
96
98 virtual const MaterialProperties* material(size_t bin0, size_t bin1 ) const override;
99
101 virtual MsgStream& dump(MsgStream& sl) const override;
102
104 virtual std::ostream& dump(std::ostream& sl) const override;
105
106 private:
107 friend class ::BinnedLayerMaterialCnv_p1;
108
110
113
115 void clearMaterial();
116
118 void fillMaterial(const MaterialPropertiesMatrix& matMatrix);
119
120 };
121
122
124 { return m_binUtility; }
125
128
129 inline const MaterialProperties* BinnedLayerMaterial::material(size_t bin0, size_t bin1 ) const
130 {
131 return m_fullMaterial[bin1][bin0];
132 }
133
135 if (bu){
136 delete m_binUtility;
137 m_binUtility = bu;
138 }
139 }
140
141
142}
143
144#endif
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition BinUtility.h:39
BinnedLayerMaterial & operator=(const BinnedLayerMaterial &lmp)
Assignment operator.
virtual ~BinnedLayerMaterial() override
Destructor.
virtual const MaterialProperties * material(size_t bin0, size_t bin1) const override
Access the single bin.
void fillMaterial(const MaterialPropertiesMatrix &matMatrix)
helper method - to refill the material
virtual BinnedLayerMaterial * clone() const override
Pseudo-Constructor clone().
virtual const BinUtility * binUtility() const override
Return the BinUtility.
void clearMaterial()
helper method - to clear the material
MaterialPropertiesMatrix m_fullMaterial
The five different MaterialProperties.
virtual BinnedLayerMaterial & operator*=(double scale) override
Scale operator.
virtual void updateBinning(BinUtility *bu) override
Update the BinUtility if necessary - passing ownership of the utility class.
const MaterialPropertiesMatrix & fullMaterial() const
Return method for full material description of the Layer - for all bins.
BinUtility * m_binUtility
the helper for the bin finding
BinnedLayerMaterial()
Default Constructor - needed by POOL.
LayerMaterialProperties()=default
Constructor.
Material with information about thickness of material.
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
std::vector< const MaterialProperties * > MaterialPropertiesVector
Useful typedefs.
std::vector< std::vector< const MaterialProperties * > > MaterialPropertiesMatrix
-event-from-file