ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkGeometry
src
BinnedMaterial.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrkGeometry/BinnedMaterial.h
"
6
8
Trk::BinnedMaterial::BinnedMaterial
(
9
const
Trk::Material
& mat,
const
Trk::BinUtility
& bu,
10
const
std::vector<size_t>&
index
,
11
const
std::vector<Trk::IdentifiedMaterial>& detailedMat)
12
:
Trk
::
Material
(mat),
13
m_matVec
(detailedMat),
14
m_matBins
(
std
::make_unique<
Trk
::
CompactBinnedArray1D
<
const
Trk
::
IdentifiedMaterial
> >(
ptrs
(),
index
, bu))
15
{}
16
18
Trk::BinnedMaterial::BinnedMaterial
(
19
const
Trk::Material
& mat,
const
Trk::BinUtility
& bu,
20
const
std::vector<Trk::BinUtility>& bVec,
21
const
std::vector<std::vector<size_t> >&
index
,
22
const
std::vector<Trk::IdentifiedMaterial>& detailedMat)
23
:
Trk
::
Material
(mat),
24
m_matVec
(detailedMat),
25
m_matBins
(
std
::make_unique<
Trk
::
CompactBinnedArray2D
<
const
Trk
::
IdentifiedMaterial
> >(
ptrs
(),
index
, bu, bVec))
26
{}
27
28
//copy
29
Trk::BinnedMaterial::BinnedMaterial
(
const
BinnedMaterial
& amc)
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
}
39
41
Trk::BinnedMaterial
&
Trk::BinnedMaterial::operator=
(
const
BinnedMaterial
& amc) {
42
if
(
this
!= &amc) {
43
Material::operator=
(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
}
56
58
const
Trk::IdentifiedMaterial
*
Trk::BinnedMaterial::material
(
59
const
Amg::Vector3D
&
position
)
const
{
60
const
Trk::IdentifiedMaterial
* mat =
61
m_matBins
?
m_matBins
->object(
position
) :
nullptr
;
62
return
mat;
63
}
64
66
const
Trk::IdentifiedMaterial
*
Trk::BinnedMaterial::materialNext
(
67
const
Amg::Vector3D
&
position
,
const
Amg::Vector3D
&
direction
,
68
bool
layOnly)
const
{
69
const
Trk::IdentifiedMaterial
* mat =
70
m_matBins
?
m_matBins
->nextObject(
position
,
direction
, layOnly) :
nullptr
;
71
return
mat;
72
}
73
74
//utility to return pointers to the elements of m_matVec
75
std::vector<const Trk::IdentifiedMaterial*>
Trk::BinnedMaterial::ptrs
()
const
{
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
}
BinnedMaterial.h
Trk::BinUtility
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition
BinUtility.h:39
Trk::BinnedMaterial
for description of non-homogenous dense volumes
Definition
BinnedMaterial.h:31
Trk::BinnedMaterial::binsPtr_t
std::unique_ptr< const CompactBinnedArray< const IdentifiedMaterial > > binsPtr_t
Definition
BinnedMaterial.h:33
Trk::BinnedMaterial::materialNext
const IdentifiedMaterial * materialNext(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool layOnly) const
access to binned material
Definition
BinnedMaterial.cxx:66
Trk::BinnedMaterial::operator=
BinnedMaterial & operator=(BinnedMaterial &&)=default
Trk::BinnedMaterial::BinnedMaterial
BinnedMaterial()=default
Default Constructors.
Trk::BinnedMaterial::ptrs
std::vector< const Trk::IdentifiedMaterial * > ptrs() const
Definition
BinnedMaterial.cxx:75
Trk::BinnedMaterial::material
const IdentifiedMaterial * material(const Amg::Vector3D &position) const
access to material/id per bin
Definition
BinnedMaterial.cxx:58
Trk::BinnedMaterial::m_matVec
std::vector< IdentifiedMaterial > m_matVec
Definition
BinnedMaterial.h:74
Trk::BinnedMaterial::m_matBins
binsPtr_t m_matBins
Definition
BinnedMaterial.h:76
Trk::CompactBinnedArray1D
1-dimensional binned arry based on a sorting given by the BinUtitlity.
Definition
CompactBinnedArray1D.h:33
Trk::CompactBinnedArray2D
2-dimensional binned array
Definition
CompactBinnedArray2D.h:32
Trk::Material
A common object to be contained by.
Definition
Material.h:117
Trk::Material::Material
Material()
Default Constructor needed for POOL.
Definition
Material.h:130
Trk::Material::operator=
Material & operator=(const Material &amc)
Assignment operator.
Definition
Material.h:189
const
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::direction
const Amg::Vector3D & direction() const
Method to retrieve the direction at the Intersection.
Trk::IdentifiedMaterial
std::pair< std::shared_ptr< Material >, int > IdentifiedMaterial
Definition
BinnedMaterial.h:23
Trk::position
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
index
Definition
index.py:1
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0