ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkDetDescrTPCnv
src
TrkGeometry
CompoundLayerMaterialCnv_p1.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// CompoundLayerMaterialCnv_p1.cxx, (c) ATLAS Detector software
8
#include "
TrkGeometry/CompoundLayerMaterial.h
"
9
#include "
TrkDetDescrUtils/BinUtility.h
"
10
#include "
TrkGeometry/MaterialProperties.h
"
11
#include "
TrkGeometry/Material.h
"
12
#include "
TrkDetDescrTPCnv/TrkGeometry/CompoundLayerMaterialCnv_p1.h
"
13
#include "
TrkDetDescrTPCnv/TrkDetDescrUtils/BinUtility_p1.h
"
14
15
16
void
CompoundLayerMaterialCnv_p1::persToTrans
(
const
Trk::CompoundLayerMaterial_p1
*persObj,
17
Trk::CompoundLayerMaterial
*transObj,
18
MsgStream &mlog )
19
{
20
21
// create the transient BinUtility
22
transObj->
updateBinning
(
new
Trk::BinUtility
);
23
m_gBinUtilityCnv
.persToTrans(&persObj->
binUtility
, transObj->
m_binUtility
, mlog);
24
25
// the minimum values
26
transObj->
m_thicknessBins
.
valueMin
= persObj->
valueMins
[0];
27
transObj->
m_x0Bins
.
valueMin
= persObj->
valueMins
[1];
28
transObj->
m_l0Bins
.
valueMin
= persObj->
valueMins
[2];
29
transObj->
m_aBins
.
valueMin
= persObj->
valueMins
[3];
30
transObj->
m_zBins
.
valueMin
= persObj->
valueMins
[4];
31
transObj->
m_rhoBins
.
valueMin
= persObj->
valueMins
[5];
32
33
// the step values
34
transObj->
m_thicknessBins
.
valueStep
= persObj->
valueSteps
[0];
35
transObj->
m_x0Bins
.
valueStep
= persObj->
valueSteps
[1];
36
transObj->
m_l0Bins
.
valueStep
= persObj->
valueSteps
[2];
37
transObj->
m_aBins
.
valueStep
= persObj->
valueSteps
[3];
38
transObj->
m_zBins
.
valueStep
= persObj->
valueSteps
[4];
39
transObj->
m_rhoBins
.
valueStep
= persObj->
valueSteps
[5];
40
41
// the matrix values
42
transObj->
m_thicknessBins
.
valueBinMatrix
= persObj->
valueMatrices
[0];
43
transObj->
m_x0Bins
.
valueBinMatrix
= persObj->
valueMatrices
[1];
44
transObj->
m_l0Bins
.
valueBinMatrix
= persObj->
valueMatrices
[2];
45
transObj->
m_aBins
.
valueBinMatrix
= persObj->
valueMatrices
[3];
46
transObj->
m_zBins
.
valueBinMatrix
= persObj->
valueMatrices
[4];
47
transObj->
m_rhoBins
.
valueBinMatrix
= persObj->
valueMatrices
[5];
48
49
// composition matrix
50
size_t
ocBins = persObj->
composition
.size();
51
if
(ocBins){
52
size_t
icBins = persObj->
composition
[0].size();
53
// reserve the right amount
54
transObj->
m_composition
.reserve(ocBins);
55
for
(
size_t
ioc = 0; ioc < ocBins; ++ioc){
56
transObj->
m_composition
.emplace_back( );
57
transObj->
m_composition
[ioc].reserve(icBins);
58
for
(
size_t
iic = 0; iic < icBins; ++iic){
59
const
std::vector< std::pair<unsigned char, unsigned char> >& cEntry = persObj->
composition
[ioc][iic];
60
transObj->
m_composition
[ioc].emplace_back(cEntry );
61
}
62
}
63
}
64
65
transObj->
resizeMaterialProperties
();
66
}
67
68
void
CompoundLayerMaterialCnv_p1::transToPers
(
const
Trk::CompoundLayerMaterial
*transObj,
69
Trk::CompoundLayerMaterial_p1
*persObj,
70
MsgStream &mlog )
71
{
72
73
// create the persistent BinUtility
74
m_gBinUtilityCnv
.transToPers(transObj->
m_binUtility
, &persObj->
binUtility
, mlog);
75
76
// the minimum values
77
persObj->
valueMins
.push_back(transObj->
m_thicknessBins
.
valueMin
);
78
persObj->
valueMins
.push_back(transObj->
m_x0Bins
.
valueMin
);
79
persObj->
valueMins
.push_back(transObj->
m_l0Bins
.
valueMin
);
80
persObj->
valueMins
.push_back(transObj->
m_aBins
.
valueMin
);
81
persObj->
valueMins
.push_back(transObj->
m_zBins
.
valueMin
);
82
persObj->
valueMins
.push_back(transObj->
m_rhoBins
.
valueMin
);
83
84
// the step values
85
persObj->
valueSteps
.push_back(transObj->
m_thicknessBins
.
valueStep
);
86
persObj->
valueSteps
.push_back(transObj->
m_x0Bins
.
valueStep
);
87
persObj->
valueSteps
.push_back(transObj->
m_l0Bins
.
valueStep
);
88
persObj->
valueSteps
.push_back(transObj->
m_aBins
.
valueStep
);
89
persObj->
valueSteps
.push_back(transObj->
m_zBins
.
valueStep
);
90
persObj->
valueSteps
.push_back(transObj->
m_rhoBins
.
valueStep
);
91
92
// the matrix values
93
persObj->
valueMatrices
.push_back(transObj->
m_thicknessBins
.
valueBinMatrix
);
94
persObj->
valueMatrices
.push_back(transObj->
m_x0Bins
.
valueBinMatrix
);
95
persObj->
valueMatrices
.push_back(transObj->
m_l0Bins
.
valueBinMatrix
);
96
persObj->
valueMatrices
.push_back(transObj->
m_aBins
.
valueBinMatrix
);
97
persObj->
valueMatrices
.push_back(transObj->
m_zBins
.
valueBinMatrix
);
98
persObj->
valueMatrices
.push_back(transObj->
m_rhoBins
.
valueBinMatrix
);
99
100
using
CVector = std::vector<std::pair<unsigned char, unsigned char>>;
101
// composition matrix
102
size_t
ocBins = transObj->
m_composition
.size();
103
if
(ocBins){
104
size_t
icBins = transObj->
m_composition
[0].size();
105
// reserve the right amoung
106
persObj->
composition
= std::vector< std::vector < CVector > >(ocBins, std::vector < CVector >(icBins, CVector()) );
107
for
(
size_t
ioc = 0; ioc < ocBins; ++ioc)
108
for
(
size_t
iic=0; iic < icBins; ++iic){
109
persObj->
composition
[ioc][iic] = CVector();
110
persObj->
composition
[ioc][iic].reserve(transObj->
m_composition
[ioc][iic].size());
111
for
(
const
auto
& ic : transObj->
m_composition
[ioc][iic]){
112
persObj->
composition
[ioc][iic].push_back(ic);
113
}
114
115
}
116
}
117
}
BinUtility.h
BinUtility_p1.h
CompoundLayerMaterialCnv_p1.h
CompoundLayerMaterial.h
MaterialProperties.h
Material.h
CompoundLayerMaterialCnv_p1::m_gBinUtilityCnv
BinUtilityCnv_p1 m_gBinUtilityCnv
Definition
CompoundLayerMaterialCnv_p1.h:32
CompoundLayerMaterialCnv_p1::transToPers
void transToPers(const Trk::CompoundLayerMaterial *, Trk::CompoundLayerMaterial_p1 *, MsgStream &)
Definition
CompoundLayerMaterialCnv_p1.cxx:68
CompoundLayerMaterialCnv_p1::persToTrans
void persToTrans(const Trk::CompoundLayerMaterial_p1 *, Trk::CompoundLayerMaterial *, MsgStream &)
Definition
CompoundLayerMaterialCnv_p1.cxx:16
Trk::BinUtility
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition
BinUtility.h:39
Trk::CompoundLayerMaterial_p1
Definition
CompoundLayerMaterial_p1.h:24
Trk::CompoundLayerMaterial_p1::valueMins
std::vector< float > valueMins
Definition
CompoundLayerMaterial_p1.h:36
Trk::CompoundLayerMaterial_p1::valueMatrices
std::vector< ValueMatrix > valueMatrices
Definition
CompoundLayerMaterial_p1.h:38
Trk::CompoundLayerMaterial_p1::composition
std::vector< std::vector< std::vector< std::pair< unsigned char, unsigned char > > > > composition
Definition
CompoundLayerMaterial_p1.h:40
Trk::CompoundLayerMaterial_p1::binUtility
BinUtility_p1 binUtility
Definition
CompoundLayerMaterial_p1.h:34
Trk::CompoundLayerMaterial_p1::valueSteps
std::vector< float > valueSteps
Definition
CompoundLayerMaterial_p1.h:37
Trk::CompoundLayerMaterial
It extends the LayerMaterialProperties base class, and has a intrinsic accuracy of about 0....
Definition
CompoundLayerMaterial.h:60
Trk::CompoundLayerMaterial::m_rhoBins
ValueStore m_rhoBins
rho parameter (averaged)
Definition
CompoundLayerMaterial.h:131
Trk::CompoundLayerMaterial::m_thicknessBins
ValueStore m_thicknessBins
thickness parameter
Definition
CompoundLayerMaterial.h:126
Trk::CompoundLayerMaterial::m_x0Bins
ValueStore m_x0Bins
x0 parameter
Definition
CompoundLayerMaterial.h:127
Trk::CompoundLayerMaterial::resizeMaterialProperties
void resizeMaterialProperties()
Definition
CompoundLayerMaterial.cxx:162
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::m_composition
std::vector< std::vector< MaterialComposition > > m_composition
composition matrix
Definition
CompoundLayerMaterial.h:133
Trk::CompoundLayerMaterial::m_binUtility
BinUtility * m_binUtility
the helper for the bin finding
Definition
CompoundLayerMaterial.h:125
Trk::CompoundLayerMaterial::m_l0Bins
ValueStore m_l0Bins
l0 parameter
Definition
CompoundLayerMaterial.h:128
Trk::ValueStore::valueBinMatrix
ValueMatrix valueBinMatrix
Definition
CompoundLayerMaterial.h:35
Trk::ValueStore::valueMin
float valueMin
Definition
CompoundLayerMaterial.h:33
Trk::ValueStore::valueStep
float valueStep
Definition
CompoundLayerMaterial.h:34
Generated on
for ATLAS Offline Software by
1.17.0