ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::Material Class Reference

A common object to be contained by. More...

#include <Material.h>

Inheritance diagram for Trk::Material:
Collaboration diagram for Trk::Material:

Public Member Functions

 Material ()
 Default Constructor needed for POOL.
 Material (float iX0, float iL0, float iA, float iZ, float iRho, float idEdX=0., MaterialComposition *mc=nullptr)
 Constructor with arguments.
 Material (const Material &amc)
 Copy Constructor.
 Material (Material &&amc)
 Move Constructor.
virtual ~Material ()
 Destructor - delete the composition if there.
Materialoperator= (const Material &amc)
 Assignment operator.
Materialoperator= (Material &&amc)
 Move Assignment operator.
std::unique_ptr< Materialscale (float sf) const
 scaling method
float zOverAtimesRho () const
 access to members
float x0 () const
float averageZ () const
std::string toString () const
 spit out as a string

Public Attributes

float X0
float L0
float A
float Z
float rho
float dEdX
float zOaTr
MaterialCompositioncomposition

Detailed Description

A common object to be contained by.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 117 of file Material.h.

Constructor & Destructor Documentation

◆ Material() [1/4]

Trk::Material::Material ( )
inline

Default Constructor needed for POOL.

Definition at line 130 of file Material.h.

131 : X0(10.e10),
132 L0(10.e10),
133 A(0.),
134 Z(0.),
135 rho(0.),
136 dEdX(0.),
137 zOaTr(0.),
138 composition(nullptr) {}
MaterialComposition * composition
Definition Material.h:127

◆ Material() [2/4]

Trk::Material::Material ( float iX0,
float iL0,
float iA,
float iZ,
float iRho,
float idEdX = 0.,
MaterialComposition * mc = nullptr )
inline

Constructor with arguments.

Definition at line 141 of file Material.h.

143 : X0(iX0),
144 L0(iL0),
145 A(iA),
146 Z(iZ),
147 rho(iRho),
148 dEdX(idEdX),
149 composition(mc)
150 {
151 // Tell clang to optimize assuming that FP exceptions can trap.
152 // Otherwise, it can vectorize the division, which can lead to
153 // spurious division-by-zero traps from unused vector lanes.
155 zOaTr = iA > 0 ? iZ / iA * iRho : 0.;
156 }
#define CXXUTILS_TRAPPING_FP
Definition trapping_fp.h:24

◆ Material() [3/4]

Trk::Material::Material ( const Material & amc)
inline

Copy Constructor.

Definition at line 159 of file Material.h.

160 : X0(amc.X0),
161 L0(amc.L0),
162 A(amc.A),
163 Z(amc.Z),
164 rho(amc.rho),
165 dEdX(amc.dEdX),
166 zOaTr(amc.zOaTr),
167 composition(amc.composition ? new MaterialComposition(*amc.composition)
168 : nullptr) {}

◆ Material() [4/4]

Trk::Material::Material ( Material && amc)
inline

Move Constructor.

Definition at line 171 of file Material.h.

172 : X0(amc.X0),
173 L0(amc.L0),
174 A(amc.A),
175 Z(amc.Z),
176 rho(amc.rho),
177 dEdX(amc.dEdX),
178 zOaTr(amc.zOaTr),
179 composition(amc.composition) {
180 amc.composition = nullptr;
181 }

◆ ~Material()

virtual Trk::Material::~Material ( )
inlinevirtual

Destructor - delete the composition if there.

Definition at line 184 of file Material.h.

184 {
185 if (composition) delete composition;
186 }

Member Function Documentation

◆ averageZ()

float Trk::Material::averageZ ( ) const
inline

Definition at line 228 of file Material.h.

228{ return (*this).Z; }

◆ operator=() [1/2]

Material & Trk::Material::operator= ( const Material & amc)
inline

Assignment operator.

Definition at line 189 of file Material.h.

189 {
190 if (this != &amc) {
191 X0 = amc.X0;
192 L0 = amc.L0;
193 A = amc.A;
194 Z = amc.Z;
195 rho = amc.rho;
196 dEdX = amc.dEdX;
197 zOaTr = amc.zOaTr;
198 delete composition;
200 amc.composition ? new MaterialComposition(*amc.composition) : nullptr;
201 }
202 return (*this);
203 }

◆ operator=() [2/2]

Material & Trk::Material::operator= ( Material && amc)
inline

Move Assignment operator.

Definition at line 206 of file Material.h.

206 {
207 X0 = amc.X0;
208 L0 = amc.L0;
209 A = amc.A;
210 Z = amc.Z;
211 rho = amc.rho;
212 dEdX = amc.dEdX;
213 zOaTr = amc.zOaTr;
214 if (composition && composition != amc.composition) {
215 delete composition;
216 }
217 composition = amc.composition;
218 amc.composition = nullptr;
219 return *this;
220 }

◆ scale()

std::unique_ptr< Material > Trk::Material::scale ( float sf) const
inline

scaling method

Definition at line 240 of file Material.h.

240 {
241 // Tell clang to optimize assuming that FP exceptions can trap.
242 // Otherwise, it can vectorize the division, which can lead to
243 // spurious division-by-zero traps from unused vector lanes.
245 return std::make_unique<Material>(X0 / sf, L0 / sf, sf * A, sf * Z, sf * rho);
246}

◆ toString()

std::string Trk::Material::toString ( ) const
inline

spit out as a string

Definition at line 231 of file Material.h.

231 {
232 std::ostringstream sout;
233 sout << std::setiosflags(std::ios::fixed) << std::setprecision(4);
234 sout << "(" << X0 << " | " << L0 << " | " << A << " | " << Z << " | " << rho
235 << ")";
236 return sout.str();
237 }

◆ x0()

float Trk::Material::x0 ( ) const
inline

Definition at line 227 of file Material.h.

227{ return (*this).X0; }

◆ zOverAtimesRho()

float Trk::Material::zOverAtimesRho ( ) const
inline

access to members

Definition at line 226 of file Material.h.

226{ return (*this).zOaTr; }

Member Data Documentation

◆ A

float Trk::Material::A

Definition at line 122 of file Material.h.

◆ composition

MaterialComposition* Trk::Material::composition

Definition at line 127 of file Material.h.

◆ dEdX

float Trk::Material::dEdX

Definition at line 125 of file Material.h.

◆ L0

float Trk::Material::L0

Definition at line 121 of file Material.h.

◆ rho

float Trk::Material::rho

Definition at line 124 of file Material.h.

◆ X0

float Trk::Material::X0

Definition at line 120 of file Material.h.

◆ Z

float Trk::Material::Z

Definition at line 123 of file Material.h.

◆ zOaTr

float Trk::Material::zOaTr

Definition at line 126 of file Material.h.


The documentation for this class was generated from the following file: