ATLAS Offline Software
Loading...
Searching...
No Matches
MaterialProperties.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// MaterialProperties.h, (c) ATLAS Detector software
8
9#ifndef TRKGEOMETRY_MATERIALPROPERTIES_H
10#define TRKGEOMETRY_MATERIALPROPERTIES_H
11
12#include "GaudiKernel/MsgStream.h"
14// STD
15#include <iosfwd>
16
18
19namespace Trk {
20
39
41 public:
43 MaterialProperties() = default;
45 MaterialProperties(const MaterialProperties& mprop) = default;
54
56 MaterialProperties(float path, float Xo, float Lo, float averageA,
57 float averageZ, float averageRho, float dEdX = 0.);
58
60 MaterialProperties(const Material& material, float path);
61
64
66 MaterialProperties& operator*=(float scale);
67
69 const Material& material() const;
70
73
75 float x0() const;
76
78 float l0() const;
79
81 float thickness() const;
82
84 float thicknessInX0() const;
85
87 float thicknessInL0() const;
88
90 float averageZ() const;
91
93 float averageA() const;
94
98 float averageRho() const;
99
101 float zOverAtimesRho() const;
102
104 float zOverAtimesRhoTimesD() const;
105
107 float dEdX() const;
108
110 void addMaterial(const Material& mp, float dInX0);
111
113 void setMaterial(const Material& mp, float thickness = 1.);
114
115 protected:
116 friend class ::MaterialPropertiesCnv_p1;
117
119 void setDeDx(float dEdX);
120
122 float m_dInX0 = 0;
123 float m_dInL0 = 0;
124 float m_zOaTrTd =
125 0;
126};
127
129MsgStream& operator<<(MsgStream& sl, const MaterialProperties& mprop);
130std::ostream& operator<<(std::ostream& sl, const MaterialProperties& mprop);
131
133typedef std::vector<const MaterialProperties*> MaterialPropertiesVector;
134typedef std::vector<MaterialPropertiesVector> MaterialPropertiesMatrix;
135
136} // namespace Trk
137
139#endif // TRKGEOMETRY_MATERIALPROPERTIES_H
140
Material with information about thickness of material.
float averageRho() const
Return the average density of the material.
MaterialProperties * clone() const
Pseudo-Constructor clone()
MaterialProperties & operator=(MaterialProperties &&mprop)=default
Move Assignment Operator.
MaterialProperties(const MaterialProperties &mprop)=default
Copy Constructor.
float thicknessInX0() const
Return the radiationlength fraction.
float zOverAtimesRho() const
Return the .
float thicknessInL0() const
Return the nuclear interaction length fraction.
float zOverAtimesRhoTimesD() const
Return the .
float averageA() const
Return the average A of the material [gram/mole].
void addMaterial(const Material &mp, float dInX0)
Material averaging.
float averageZ() const
Returns the average Z of the material.
const Material & material() const
Return the stored Material.
Material & material()
Return the stored Material.
float dEdX() const
Return method for .
float m_zOaTrTd
- in ATLAS units
void setDeDx(float dEdX)
Set dEdX - important for material calibarion.
float l0() const
Return the nuclear interaction length.
void setMaterial(const Material &mp, float thickness=1.)
Set Material.
float m_dInX0
thickness in units of radiation length
MaterialProperties & operator=(const MaterialProperties &mprop)=default
Assignment Operator.
float m_dInL0
thickness in units of nuclear interaction length
float x0() const
Return the radiation length.
MaterialProperties & operator*=(float scale)
Scale operator - scales the material thickness.
float thickness() const
Return the thickness in mm.
~MaterialProperties()=default
Destructor.
MaterialProperties()=default
Default Constructor.
MaterialProperties(MaterialProperties &&mprop)=default
Move Constructor.
A common object to be contained by.
Definition Material.h:117
Ensure that the ATLAS eigen extensions are properly loaded.
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
std::vector< const MaterialProperties * > MaterialPropertiesVector
Useful typedefs.
std::vector< std::vector< const MaterialProperties * > > MaterialPropertiesMatrix