ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::BinnedMaterial Class Referencefinal

for description of non-homogenous dense volumes More...

#include <BinnedMaterial.h>

Inheritance diagram for Trk::BinnedMaterial:
Collaboration diagram for Trk::BinnedMaterial:

Public Types

using binsPtr_t = std::unique_ptr<const CompactBinnedArray<const IdentifiedMaterial> >

Public Member Functions

 BinnedMaterial ()=default
 Default Constructors.
BinnedMaterialoperator= (BinnedMaterial &&)=default
 BinnedMaterial (BinnedMaterial &&)=default
virtual ~BinnedMaterial ()=default
 BinnedMaterial (const BinnedMaterial &amc)
BinnedMaterialoperator= (const BinnedMaterial &amc)
 Assignment operator.
 BinnedMaterial (const Material &mat, const BinUtility &bu, const std::vector< size_t > &index, const std::vector< IdentifiedMaterial > &detailedMat)
 Constructor with averaged material and binning in 1D.
 BinnedMaterial (const Material &mat, const BinUtility &bu, const std::vector< Trk::BinUtility > &bVec, const std::vector< std::vector< size_t > > &index, const std::vector< IdentifiedMaterial > &detailedMat)
 Constructor with averaged material and binning in 2D.
const Trk::BinUtilitylayerBinUtility (const Amg::Vector3D &position) const
 access to layer bin utility
size_t layerBin (const Amg::Vector3D &position) const
 layer bin
const IdentifiedMaterialmaterial (const Amg::Vector3D &position) const
 access to material/id per bin
const IdentifiedMaterialmaterialNext (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool layOnly) const
 access to binned material
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

Private Member Functions

std::vector< const Trk::IdentifiedMaterial * > ptrs () const

Private Attributes

std::vector< IdentifiedMaterialm_matVec
binsPtr_t m_matBins

Detailed Description

for description of non-homogenous dense volumes

Author
sarka.nosp@m..tod.nosp@m.orova.nosp@m.@cer.nosp@m.n.ch

Definition at line 31 of file BinnedMaterial.h.

Member Typedef Documentation

◆ binsPtr_t

Definition at line 33 of file BinnedMaterial.h.

Constructor & Destructor Documentation

◆ BinnedMaterial() [1/5]

Trk::BinnedMaterial::BinnedMaterial ( )
default

Default Constructors.

◆ BinnedMaterial() [2/5]

Trk::BinnedMaterial::BinnedMaterial ( BinnedMaterial && )
default

◆ ~BinnedMaterial()

virtual Trk::BinnedMaterial::~BinnedMaterial ( )
virtualdefault

◆ BinnedMaterial() [3/5]

Trk::BinnedMaterial::BinnedMaterial ( const BinnedMaterial & amc)

Definition at line 29 of file BinnedMaterial.cxx.

30 : Material(amc), m_matVec(amc.m_matVec) {
31 if (amc.m_matBins) {
32 if (!m_matVec.empty()) {
33 m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
34 } else {
35 m_matBins = binsPtr_t(amc.m_matBins->clone());
36 }
37 }
38}
std::unique_ptr< const CompactBinnedArray< const IdentifiedMaterial > > binsPtr_t
std::vector< const Trk::IdentifiedMaterial * > ptrs() const
std::vector< IdentifiedMaterial > m_matVec
Material()
Default Constructor needed for POOL.
Definition Material.h:130

◆ BinnedMaterial() [4/5]

Trk::BinnedMaterial::BinnedMaterial ( const Material & mat,
const BinUtility & bu,
const std::vector< size_t > & index,
const std::vector< IdentifiedMaterial > & detailedMat )

Constructor with averaged material and binning in 1D.

Definition at line 8 of file BinnedMaterial.cxx.

12 : Trk::Material(mat),
13 m_matVec(detailedMat),
14 m_matBins(std::make_unique<Trk::CompactBinnedArray1D<const Trk::IdentifiedMaterial> >(ptrs(), index, bu))
15 {}

◆ BinnedMaterial() [5/5]

Trk::BinnedMaterial::BinnedMaterial ( const Material & mat,
const BinUtility & bu,
const std::vector< Trk::BinUtility > & bVec,
const std::vector< std::vector< size_t > > & index,
const std::vector< IdentifiedMaterial > & detailedMat )

Constructor with averaged material and binning in 2D.

Definition at line 18 of file BinnedMaterial.cxx.

23 : Trk::Material(mat),
24 m_matVec(detailedMat),
25 m_matBins(std::make_unique<Trk::CompactBinnedArray2D<const Trk::IdentifiedMaterial> >(ptrs(), index, bu, bVec))
26 {}

Member Function Documentation

◆ averageZ()

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

Definition at line 228 of file Material.h.

228{ return (*this).Z; }

◆ layerBin()

size_t Trk::BinnedMaterial::layerBin ( const Amg::Vector3D & position) const
inline

layer bin

Definition at line 85 of file BinnedMaterial.h.

86 {
87 return m_matBins ? m_matBins->layerBin(position) : 0;
88}

◆ layerBinUtility()

const Trk::BinUtility * Trk::BinnedMaterial::layerBinUtility ( const Amg::Vector3D & position) const
inline

access to layer bin utility

Definition at line 80 of file BinnedMaterial.h.

81 {
82 return m_matBins ? m_matBins->layerBinUtility(position) : nullptr;
83}

◆ material()

const Trk::IdentifiedMaterial * Trk::BinnedMaterial::material ( const Amg::Vector3D & position) const

access to material/id per bin

access to binned material

Definition at line 58 of file BinnedMaterial.cxx.

59 {
61 m_matBins ? m_matBins->object(position) : nullptr;
62 return mat;
63}
std::pair< std::shared_ptr< Material >, int > IdentifiedMaterial

◆ materialNext()

const Trk::IdentifiedMaterial * Trk::BinnedMaterial::materialNext ( const Amg::Vector3D & pos,
const Amg::Vector3D & dir,
bool layOnly ) const

access to binned material

Definition at line 66 of file BinnedMaterial.cxx.

68 {
70 m_matBins ? m_matBins->nextObject(position, direction, layOnly) : nullptr;
71 return mat;
72}

◆ operator=() [1/2]

BinnedMaterial & Trk::BinnedMaterial::operator= ( BinnedMaterial && )
default

◆ operator=() [2/2]

Trk::BinnedMaterial & Trk::BinnedMaterial::operator= ( const BinnedMaterial & amc)

Assignment operator.

Definition at line 41 of file BinnedMaterial.cxx.

41 {
42 if (this != &amc) {
44 m_matVec = amc.m_matVec;
45 m_matBins.reset();
46 if (amc.m_matBins) {
47 if (!m_matVec.empty()) {
48 m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
49 } else {
50 m_matBins = binsPtr_t(amc.m_matBins->clone());
51 }
52 }
53 }
54 return (*this);
55}
Material & operator=(const Material &amc)
Assignment operator.
Definition Material.h:189

◆ ptrs()

std::vector< const Trk::IdentifiedMaterial * > Trk::BinnedMaterial::ptrs ( ) const
private

Definition at line 75 of file BinnedMaterial.cxx.

75 {
76 std::vector<const Trk::IdentifiedMaterial*> p;
77 p.reserve(m_matVec.size());
78 for (const Trk::IdentifiedMaterial& m : m_matVec) {
79 p.push_back(&m);
80 }
81 return p;
82}

◆ scale()

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

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}
#define CXXUTILS_TRAPPING_FP
Definition trapping_fp.h:24

◆ toString()

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

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
inlineinherited

Definition at line 227 of file Material.h.

227{ return (*this).X0; }

◆ zOverAtimesRho()

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

access to members

Definition at line 226 of file Material.h.

226{ return (*this).zOaTr; }

Member Data Documentation

◆ A

float Trk::Material::A
inherited

Definition at line 122 of file Material.h.

◆ composition

MaterialComposition* Trk::Material::composition
inherited

Definition at line 127 of file Material.h.

◆ dEdX

float Trk::Material::dEdX
inherited

Definition at line 125 of file Material.h.

◆ L0

float Trk::Material::L0
inherited

Definition at line 121 of file Material.h.

◆ m_matBins

binsPtr_t Trk::BinnedMaterial::m_matBins
private

Definition at line 76 of file BinnedMaterial.h.

◆ m_matVec

std::vector<IdentifiedMaterial> Trk::BinnedMaterial::m_matVec
private

Definition at line 74 of file BinnedMaterial.h.

◆ rho

float Trk::Material::rho
inherited

Definition at line 124 of file Material.h.

◆ X0

float Trk::Material::X0
inherited

Definition at line 120 of file Material.h.

◆ Z

float Trk::Material::Z
inherited

Definition at line 123 of file Material.h.

◆ zOaTr

float Trk::Material::zOaTr
inherited

Definition at line 126 of file Material.h.


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