ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
Trk::Material Class Reference

#include <Material.h>

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

Public Member Functions

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

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) {}

◆ 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  }

◆ 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;
199  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:
CXXUTILS_TRAPPING_FP
#define CXXUTILS_TRAPPING_FP
Definition: trapping_fp.h:24
Trk::Material::L0
float L0
Definition: Material.h:121
Trk::Material::Z
float Z
Definition: Material.h:123
A
mc
Definition: mc.PG_single_nu_valid.py:1
Trk::Material::A
float A
Definition: Material.h:122
Trk::Material::X0
float X0
Definition: Material.h:120
Trk::Material::rho
float rho
Definition: Material.h:124
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::Material::composition
MaterialComposition * composition
Definition: Material.h:127
Trk::Material::dEdX
float dEdX
Definition: Material.h:125
Trk::Material::zOaTr
float zOaTr
Definition: Material.h:126