ATLAS Offline Software
Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
Trk::BinnedMaterial Class Referencefinal

#include <BinnedMaterial.h>

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

Public Member Functions

 BinnedMaterial ()=default
 Default Constructor needed for POOL. More...
 
 BinnedMaterial (float iX0, float iL0, float iA, float iZ, float iRho, const CompactBinnedArray< const IdentifiedMaterial > *binMat=nullptr)
 Constructor with arguments. More...
 
 BinnedMaterial (const Material *mat, BinUtility *&bu, const std::vector< size_t > &index, const std::vector< IdentifiedMaterial > &detailedMat)
 Constructor with averaged material and binning in 1D. More...
 
 BinnedMaterial (const Material *mat, BinUtility *&bu, 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. More...
 
 BinnedMaterial (const BinnedMaterial &amc)
 Copy Constructor. More...
 
virtual ~BinnedMaterial ()=default
 Destructor - delete the composition if there. More...
 
BinnedMaterialoperator= (const BinnedMaterial &amc)
 Assignment operator. More...
 
const Trk::BinUtilitylayerBinUtility (const Amg::Vector3D &position) const
 access to layer bin utility More...
 
size_t layerBin (const Amg::Vector3D &position) const
 layer bin More...
 
const IdentifiedMaterialmaterial (const Amg::Vector3D &position) const
 access to material/id per bin More...
 
const IdentifiedMaterialmaterialNext (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool layOnly) const
 access to binned material More...
 
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
 

Private Types

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

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 38 of file BinnedMaterial.h.

Member Typedef Documentation

◆ binsPtr_t

Definition at line 84 of file BinnedMaterial.h.

Constructor & Destructor Documentation

◆ BinnedMaterial() [1/5]

Trk::BinnedMaterial::BinnedMaterial ( )
default

Default Constructor needed for POOL.

◆ BinnedMaterial() [2/5]

Trk::BinnedMaterial::BinnedMaterial ( float  iX0,
float  iL0,
float  iA,
float  iZ,
float  iRho,
const CompactBinnedArray< const IdentifiedMaterial > *  binMat = nullptr 
)
inline

Constructor with arguments.

Definition at line 44 of file BinnedMaterial.h.

47  : Material(iX0, iL0, iA, iZ, iRho), m_matBins(binMat) {}

◆ BinnedMaterial() [3/5]

Trk::BinnedMaterial::BinnedMaterial ( const Material mat,
Trk::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.

◆ BinnedMaterial() [4/5]

Trk::BinnedMaterial::BinnedMaterial ( const Material mat,
Trk::BinUtility *&  bu,
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 19 of file BinnedMaterial.cxx.

◆ BinnedMaterial() [5/5]

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

Copy Constructor.

Definition at line 30 of file BinnedMaterial.cxx.

31  : Material(amc), m_matVec(amc.m_matVec) {
32  if (amc.m_matBins) {
33  if (!m_matVec.empty()) {
34  m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
35  } else {
36  m_matBins = binsPtr_t(amc.m_matBins->clone());
37  }
38  }
39 }

◆ ~BinnedMaterial()

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

Destructor - delete the composition if there.

Member Function Documentation

◆ averageZ()

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

Definition at line 227 of file Material.h.

227 { return (*this).Z; }

◆ layerBin()

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

layer bin

Definition at line 96 of file BinnedMaterial.h.

97  {
98  return m_matBins ? m_matBins->layerBin(position) : 0;
99 }

◆ layerBinUtility()

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

access to layer bin utility

Definition at line 91 of file BinnedMaterial.h.

92  {
93  return m_matBins ? m_matBins->layerBinUtility(position) : nullptr;
94 }

◆ 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 65 of file BinnedMaterial.cxx.

66  {
68  m_matBins ? m_matBins->object(position) : nullptr;
69  return mat;
70 }

◆ 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 73 of file BinnedMaterial.cxx.

75  {
77  m_matBins ? m_matBins->nextObject(position, direction, layOnly) : nullptr;
78  return mat;
79 }

◆ operator=()

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

Assignment operator.

Definition at line 42 of file BinnedMaterial.cxx.

42  {
43  if (this != &amc) {
44  X0 = amc.X0;
45  L0 = amc.L0;
46  A = amc.A;
47  Z = amc.Z;
48  rho = amc.rho;
49  dEdX = amc.dEdX;
50  zOaTr = amc.zOaTr;
51  m_matVec = amc.m_matVec;
52  m_matBins.reset();
53  if (amc.m_matBins) {
54  if (!m_matVec.empty()) {
55  m_matBins = binsPtr_t(amc.m_matBins->clone(ptrs()));
56  } else {
57  m_matBins = binsPtr_t(amc.m_matBins->clone());
58  }
59  }
60  }
61  return (*this);
62 }

◆ ptrs()

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

Definition at line 81 of file BinnedMaterial.cxx.

81  {
82  std::vector<const Trk::IdentifiedMaterial*> p;
83  p.reserve(m_matVec.size());
84  for (const Trk::IdentifiedMaterial& m : m_matVec) {
85  p.push_back(&m);
86  }
87  return p;
88 }

◆ scale()

Material * Trk::Material::scale ( float  sf) const
inlineinherited

scaling method

Definition at line 239 of file Material.h.

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

◆ toString()

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

spit out as a string

Definition at line 230 of file Material.h.

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

◆ x0()

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

Definition at line 226 of file Material.h.

226 { return (*this).X0; }

◆ zOverAtimesRho()

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

access to members

Definition at line 225 of file Material.h.

225 { return (*this).zOaTr; }

Member Data Documentation

◆ A

float Trk::Material::A
inherited

Definition at line 121 of file Material.h.

◆ composition

MaterialComposition* Trk::Material::composition
inherited

Definition at line 126 of file Material.h.

◆ dEdX

float Trk::Material::dEdX
inherited

Definition at line 124 of file Material.h.

◆ L0

float Trk::Material::L0
inherited

Definition at line 120 of file Material.h.

◆ m_matBins

binsPtr_t Trk::BinnedMaterial::m_matBins
private

Definition at line 86 of file BinnedMaterial.h.

◆ m_matVec

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

Definition at line 83 of file BinnedMaterial.h.

◆ rho

float Trk::Material::rho
inherited

Definition at line 123 of file Material.h.

◆ X0

float Trk::Material::X0
inherited

Definition at line 119 of file Material.h.

◆ Z

float Trk::Material::Z
inherited

Definition at line 122 of file Material.h.

◆ zOaTr

float Trk::Material::zOaTr
inherited

Definition at line 125 of file Material.h.


The documentation for this class was generated from the following files:
Trk::Material::Material
Material()
Default Constructor needed for POOL.
Definition: Material.h:129
CXXUTILS_TRAPPING_FP
#define CXXUTILS_TRAPPING_FP
Definition: trapping_fp.h:24
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::Material::L0
float L0
Definition: Material.h:120
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
index
Definition: index.py:1
Trk::Material::Z
float Z
Definition: Material.h:122
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
Trk::BinnedMaterial::m_matVec
std::vector< IdentifiedMaterial > m_matVec
Definition: BinnedMaterial.h:83
Trk::CompactBinnedArray2D
Definition: CompactBinnedArray2D.h:32
Trk::Material::A
float A
Definition: Material.h:121
Trk::Material::X0
float X0
Definition: Material.h:119
Trk::BinnedMaterial::binsPtr_t
std::unique_ptr< const CompactBinnedArray< const IdentifiedMaterial > > binsPtr_t
Definition: BinnedMaterial.h:85
Trk::Material::rho
float rho
Definition: Material.h:123
Trk::BinnedMaterial::m_matBins
binsPtr_t m_matBins
Definition: BinnedMaterial.h:86
Trk::BinnedMaterial::ptrs
std::vector< const Trk::IdentifiedMaterial * > ptrs() const
Definition: BinnedMaterial.cxx:81
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::Material::dEdX
float dEdX
Definition: Material.h:124
Trk::Material::zOaTr
float zOaTr
Definition: Material.h:125
Trk::CompactBinnedArray1D
Definition: CompactBinnedArray1D.h:33
Trk::IdentifiedMaterial
std::pair< const Material *, int > IdentifiedMaterial
Definition: BinnedMaterial.h:28
Material
@ Material
Definition: MaterialTypes.h:8