ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkGeometry
TrkGeometry
CompoundLayerMaterial.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// CompoundLayerMaterial.h, (c) ATLAS Detector software
8
9
#ifndef TRKGEOMETRY_COMPOUNDLAYERMATERIAL_H
10
#define TRKGEOMETRY_COMPOUNDLAYERMATERIAL_H
11
12
// Trk
13
#include "
TrkDetDescrUtils/BinUtility.h
"
14
#include <memory>
15
#include "
TrkGeometry/ElementTable.h
"
16
#include "
TrkGeometry/LayerMaterialProperties.h
"
17
#include "
TrkGeometry/Material.h
"
18
#include "
TrkGeometry/MaterialProperties.h
"
19
#include "
CxxUtils/CachedUniquePtr.h
"
20
// Amg
21
#include "
GeoPrimitives/GeoPrimitives.h
"
22
// Gaudi
23
#include "GaudiKernel/MsgStream.h"
24
25
class
CompoundLayerMaterialCnv_p1
;
26
27
namespace
Trk
{
28
29
typedef
std::vector<unsigned char>
ValueVector
;
30
typedef
std::vector<ValueVector>
ValueMatrix
;
31
32
struct
ValueStore
{
33
float
valueMin
= 0;
34
float
valueStep
= 0;
35
ValueMatrix
valueBinMatrix
;
36
37
double
value
(
unsigned
char
ibin0,
unsigned
char
ibin1)
const
{
38
// allows for single entry
39
if
(
valueBinMatrix
.empty())
return
valueMin
;
40
// get the entry from the matrix
41
unsigned
int
ibin =
static_cast<
unsigned
int
>
(
42
valueBinMatrix
[
static_cast<
unsigned
int
>
(ibin1)]
43
[
static_cast<
unsigned
int
>
(ibin0)]);
44
if
(!ibin)
return
0.;
45
double
value
=
valueMin
+ (double(ibin) - 0.5) *
valueStep
;
46
return
value
;
47
}
48
};
49
59
60
class
CompoundLayerMaterial
final:
public
LayerMaterialProperties
{
61
public
:
63
CompoundLayerMaterial
() =
default
;
64
66
CompoundLayerMaterial
(
67
const
Trk::BinUtility
& binutility,
const
ValueStore
& thicknessBins,
68
const
ValueStore
& x0Bins,
const
ValueStore
& l0Bins,
69
const
ValueStore
& aBins,
const
ValueStore
& zBins,
70
const
ValueStore
& rhoBins,
71
const
std::vector<std::vector<MaterialComposition> >& composition,
72
bool
fComposition =
false
);
73
75
CompoundLayerMaterial
(
const
CompoundLayerMaterial
& mprop);
76
78
virtual
~CompoundLayerMaterial
()
override
;
79
81
virtual
CompoundLayerMaterial
*
clone
()
const
override final;
82
84
CompoundLayerMaterial
& operator=(
const
CompoundLayerMaterial
& lmp);
85
87
virtual
CompoundLayerMaterial
& operator*=(
double
scale) override final;
88
90
virtual
const
BinUtility
*
binUtility
()
const
override final;
91
94
virtual
void
updateBinning
(
BinUtility
* bu) override final;
95
97
virtual
const
MaterialProperties
*
fullMaterial
(
98
const
Amg
::
Vector3D
& gp)
const
override final;
99
101
virtual
const
MaterialProperties
*
material
(
size_t
bin0,
102
size_t
bin1)
const
override final;
103
105
void
updateElementTable
(
const
std
::shared_ptr<
const
ElementTable
>&
set
);
106
108
const
ElementTable
*
elementTable
()
const
;
109
111
virtual MsgStream&
dump
(MsgStream& sl)
const
override final;
112
114
virtual
std
::
ostream
&
dump
(
std
::
ostream
& sl)
const
override final;
115
116
private
:
117
friend class ::
CompoundLayerMaterialCnv_p1
;
118
119
void
resizeMaterialProperties
();
120
121
using
MaterialPropertiesCUP
=
CxxUtils
::CachedUniquePtr<
MaterialProperties
>;
122
std
::
vector
<
std
::
vector
<
MaterialPropertiesCUP
> >
123
m_materialProperties
;
124
125
BinUtility
*
m_binUtility
{
nullptr
};
126
ValueStore
m_thicknessBins
{};
127
ValueStore
m_x0Bins
{};
128
ValueStore
m_l0Bins
{};
129
ValueStore
m_aBins
{};
130
ValueStore
m_zBins
{};
131
ValueStore
m_rhoBins
{};
132
std::vector<std::vector<MaterialComposition> >
133
m_composition
;
134
bool
m_fullComposition
{
false
};
135
std::shared_ptr<const ElementTable>
136
m_elementTable
;
// the ElementTable (filled/synchronised)
137
};
138
139
inline
const
BinUtility
*
CompoundLayerMaterial::binUtility
()
const
{
140
return
m_binUtility
;
141
}
142
143
inline
void
CompoundLayerMaterial::updateElementTable
(
144
const
std::shared_ptr<const ElementTable>&
set
) {
145
m_elementTable
=
set
;
146
}
147
148
inline
void
CompoundLayerMaterial::updateBinning
(
BinUtility
* bu) {
149
if
(bu) {
150
delete
m_binUtility
;
151
m_binUtility
= bu;
152
}
153
}
154
155
inline
const
ElementTable
*
CompoundLayerMaterial::elementTable
()
const
{
156
return
m_elementTable
.get();
157
}
158
159
}
// namespace Trk
160
161
#endif
BinUtility.h
CachedUniquePtr.h
Cached unique_ptr with atomic update.
ElementTable.h
GeoPrimitives.h
LayerMaterialProperties.h
MaterialProperties.h
Material.h
Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
CompoundLayerMaterialCnv_p1
Definition
CompoundLayerMaterialCnv_p1.h:24
Trk::BinUtility
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition
BinUtility.h:39
Trk::CompoundLayerMaterial::CompoundLayerMaterial
CompoundLayerMaterial()=default
Default Constructor - needed by POOL.
Trk::CompoundLayerMaterial::m_rhoBins
ValueStore m_rhoBins
rho parameter (averaged)
Definition
CompoundLayerMaterial.h:131
Trk::CompoundLayerMaterial::m_materialProperties
std::vector< std::vector< MaterialPropertiesCUP > > m_materialProperties
the ones you return
Definition
CompoundLayerMaterial.h:123
Trk::CompoundLayerMaterial::~CompoundLayerMaterial
virtual ~CompoundLayerMaterial() override
Destructor.
Definition
CompoundLayerMaterial.cxx:73
Trk::CompoundLayerMaterial::m_fullComposition
bool m_fullComposition
full composition calculation
Definition
CompoundLayerMaterial.h:134
Trk::CompoundLayerMaterial::CompoundLayerMaterialCnv_p1
friend class ::CompoundLayerMaterialCnv_p1
Definition
CompoundLayerMaterial.h:117
Trk::CompoundLayerMaterial::fullMaterial
virtual const MaterialProperties * fullMaterial(const Amg::Vector3D &gp) const override final
Return method for full material description of the Layer.
Definition
CompoundLayerMaterial.cxx:87
Trk::CompoundLayerMaterial::elementTable
const ElementTable * elementTable() const
Get the ElementTable.
Definition
CompoundLayerMaterial.h:155
Trk::CompoundLayerMaterial::m_elementTable
std::shared_ptr< const ElementTable > m_elementTable
Definition
CompoundLayerMaterial.h:136
Trk::CompoundLayerMaterial::m_thicknessBins
ValueStore m_thicknessBins
thickness parameter
Definition
CompoundLayerMaterial.h:126
Trk::CompoundLayerMaterial::binUtility
virtual const BinUtility * binUtility() const override final
Return the BinUtility.
Definition
CompoundLayerMaterial.h:139
Trk::CompoundLayerMaterial::m_x0Bins
ValueStore m_x0Bins
x0 parameter
Definition
CompoundLayerMaterial.h:127
Trk::CompoundLayerMaterial::resizeMaterialProperties
void resizeMaterialProperties()
Definition
CompoundLayerMaterial.cxx:162
Trk::CompoundLayerMaterial::MaterialPropertiesCUP
CxxUtils::CachedUniquePtr< MaterialProperties > MaterialPropertiesCUP
Definition
CompoundLayerMaterial.h:121
Trk::CompoundLayerMaterial::m_aBins
ValueStore m_aBins
A parameters (averaged).
Definition
CompoundLayerMaterial.h:129
Trk::CompoundLayerMaterial::updateBinning
virtual void updateBinning(BinUtility *bu) override final
Update the BinUtility if necessary - passing ownership of the utility class.
Definition
CompoundLayerMaterial.h:148
Trk::CompoundLayerMaterial::m_zBins
ValueStore m_zBins
Z parameter (averaged).
Definition
CompoundLayerMaterial.h:130
Trk::CompoundLayerMaterial::material
virtual const MaterialProperties * material(size_t bin0, size_t bin1) const override final
Access the single bin.
Definition
CompoundLayerMaterial.cxx:96
Trk::CompoundLayerMaterial::m_composition
std::vector< std::vector< MaterialComposition > > m_composition
composition matrix
Definition
CompoundLayerMaterial.h:133
Trk::CompoundLayerMaterial::clone
virtual CompoundLayerMaterial * clone() const override final
Pseudo-Constructor clone().
Definition
CompoundLayerMaterial.cxx:77
Trk::CompoundLayerMaterial::m_binUtility
BinUtility * m_binUtility
the helper for the bin finding
Definition
CompoundLayerMaterial.h:125
Trk::CompoundLayerMaterial::updateElementTable
void updateElementTable(const std::shared_ptr< const ElementTable > &set)
Update the ElementTable.
Definition
CompoundLayerMaterial.h:143
Trk::CompoundLayerMaterial::m_l0Bins
ValueStore m_l0Bins
l0 parameter
Definition
CompoundLayerMaterial.h:128
Trk::ElementTable
Definition
ElementTable.h:24
Trk::LayerMaterialProperties::LayerMaterialProperties
LayerMaterialProperties()=default
Constructor.
Trk::MaterialProperties
Material with information about thickness of material.
Definition
MaterialProperties.h:40
ostream
STL class.
set
STL class.
vector
Definition
MultiHisto.h:13
const
Amg
Definition of ATLAS Math & Geometry primitives (Amg).
Definition
AmgStringHelpers.h:19
CxxUtils
Definition
aligned_vector.h:29
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::ValueMatrix
std::vector< ValueVector > ValueMatrix
Definition
CompoundLayerMaterial.h:30
Trk::ValueVector
std::vector< unsigned char > ValueVector
Definition
CompoundLayerMaterial.h:29
dump
-event-from-file
std
STL namespace.
Trk::ValueStore
Definition
CompoundLayerMaterial.h:32
Trk::ValueStore::valueBinMatrix
ValueMatrix valueBinMatrix
Definition
CompoundLayerMaterial.h:35
Trk::ValueStore::valueMin
float valueMin
Definition
CompoundLayerMaterial.h:33
Trk::ValueStore::value
double value(unsigned char ibin0, unsigned char ibin1) const
Definition
CompoundLayerMaterial.h:37
Trk::ValueStore::valueStep
float valueStep
Definition
CompoundLayerMaterial.h:34
private
#define private
Definition
testRead.cxx:27
Generated on
for ATLAS Offline Software by
1.17.0