ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkDetDescrTPCnv
src
TrkGeometry
BinnedLayerMaterialCnv_p1.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// BinnedLayerMaterialCnv_p1.cxx, (c) ATLAS Detector software
8
9
#include "
TrkGeometry/BinnedLayerMaterial.h
"
10
#include "
TrkDetDescrUtils/BinUtility.h
"
11
#include "
TrkGeometry/MaterialProperties.h
"
12
#include "
TrkDetDescrTPCnv/TrkGeometry/BinnedLayerMaterialCnv_p1.h
"
13
#include "
TrkDetDescrTPCnv/TrkDetDescrUtils/BinUtility_p1.h
"
14
15
void
BinnedLayerMaterialCnv_p1::persToTrans
(
const
Trk::BinnedLayerMaterial_p1
*persObj,
16
Trk::BinnedLayerMaterial
*transObj,
17
MsgStream &mlog )
18
{
19
20
// create the transient BinUtility
21
auto
binUtility = std::make_unique<Trk::BinUtility>();
22
m_gBinUtilityCnv
.persToTrans(&persObj->
binUtility
, binUtility.get(), mlog);
23
transObj->
updateBinning
(binUtility.release());
24
25
// assign the split factor
26
transObj->
m_splitFactor
= persObj->
splitFactor
;
27
28
// create the transient material properties
29
// pointer to converter (will be auto-retrieved)
30
ITPConverterFor<Trk::MaterialProperties>
*materialCnv =
nullptr
;
31
size_t
matrixOuterDim = transObj->
m_binUtility
->
max
(1)+1;
32
size_t
matrixInnerDim = transObj->
m_binUtility
->
max
(0)+1;
33
transObj->
m_fullMaterial
= std::vector< std::vector<const Trk::MaterialProperties*> >(matrixOuterDim, std::vector< const Trk::MaterialProperties* >(matrixInnerDim,
nullptr
) );
34
for
(
size_t
iod = 0; iod < matrixOuterDim; ++iod )
35
for
(
size_t
iid = 0; iid < matrixInnerDim; ++iid) {
36
// create the material properties
37
const
Trk::MaterialProperties
* mprop =
createTransFromPStore
( &materialCnv, persObj->
materialMatrix
[iid+matrixInnerDim*iod], mlog );
38
// check if the entry carries material or not
39
const
bool
carriesMaterial{mprop and not std::isnan(mprop->
thicknessInX0
()) and mprop->
thicknessInX0
()>10e-5 and mprop->
averageZ
() > 1};
40
if
(carriesMaterial)
41
(transObj->
m_fullMaterial
)[iod][iid] = mprop;
42
else
{
43
(transObj->
m_fullMaterial
)[iod][iid] =
nullptr
;
44
delete
mprop;
// clear this instance and set to 0
45
mprop=
nullptr
;
46
}
47
}
48
}
49
50
void
BinnedLayerMaterialCnv_p1::transToPers
(
const
Trk::BinnedLayerMaterial
*transObj,
51
Trk::BinnedLayerMaterial_p1
*persObj,
52
MsgStream &mlog )
53
{
54
55
// create the persistent BinUtility
56
m_gBinUtilityCnv
.transToPers(transObj->
binUtility
(), &persObj->
binUtility
, mlog);
57
58
// assign the split factor
59
persObj->
splitFactor
= transObj->
m_splitFactor
;
60
61
// create the persistent material properties
62
// pointer to converter (will be auto-retrieved)
63
ITPConverterFor<Trk::MaterialProperties>
*materialCnv =
nullptr
;
64
// prepare the matrix
65
size_t
matrixOuterDim =transObj->
m_binUtility
->
max
(1)+1;
66
size_t
matrixInnerDim =transObj->
m_binUtility
->
max
(0)+1;
67
persObj->
materialMatrix
= std::vector<TPObjRef> ( matrixInnerDim*matrixOuterDim,
TPObjRef
() ) ;
68
for
(
size_t
iod = 0; iod < matrixOuterDim; ++iod )
69
for
(
size_t
iid = 0; iid < matrixInnerDim; ++iid)
70
(persObj->
materialMatrix
)[iod*matrixInnerDim+iid] =
toPersistent
( &materialCnv, transObj->
m_fullMaterial
[iod][iid], mlog );
71
}
72
BinUtility.h
BinUtility_p1.h
BinnedLayerMaterialCnv_p1.h
BinnedLayerMaterial.h
MaterialProperties.h
BinnedLayerMaterialCnv_p1::transToPers
void transToPers(const Trk::BinnedLayerMaterial *, Trk::BinnedLayerMaterial_p1 *, MsgStream &)
Definition
BinnedLayerMaterialCnv_p1.cxx:50
BinnedLayerMaterialCnv_p1::persToTrans
void persToTrans(const Trk::BinnedLayerMaterial_p1 *, Trk::BinnedLayerMaterial *, MsgStream &)
Definition
BinnedLayerMaterialCnv_p1.cxx:15
BinnedLayerMaterialCnv_p1::m_gBinUtilityCnv
BinUtilityCnv_p1 m_gBinUtilityCnv
Definition
BinnedLayerMaterialCnv_p1.h:31
ITPConverterFor< TRANS_BASE >::createTransFromPStore
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
Definition
TPConverter.h:172
ITPConverterFor< TRANS_BASE >::toPersistent
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
Definition
TPConverter.h:119
ITPConverterFor< TRANS_BASE >::ITPConverterFor
ITPConverterFor()
Definition
TPConverter.h:43
TPObjRef
This class is an object reference used in Athena persistent data model.
Definition
TPObjRef.h:20
Trk::BinUtility::max
size_t max(size_t ba=0) const
First bin maximal value.
Definition
BinUtility.h:210
Trk::BinnedLayerMaterial_p1
Definition
BinnedLayerMaterial_p1.h:21
Trk::BinnedLayerMaterial_p1::materialMatrix
std::vector< TPObjRef > materialMatrix
Definition
BinnedLayerMaterial_p1.h:27
Trk::BinnedLayerMaterial_p1::binUtility
BinUtility_p1 binUtility
Definition
BinnedLayerMaterial_p1.h:28
Trk::BinnedLayerMaterial_p1::splitFactor
float splitFactor
Definition
BinnedLayerMaterial_p1.h:29
Trk::BinnedLayerMaterial
It extends the LayerMaterialProperties base class.
Definition
BinnedLayerMaterial.h:34
Trk::BinnedLayerMaterial::binUtility
virtual const BinUtility * binUtility() const override
Return the BinUtility.
Definition
BinnedLayerMaterial.h:123
Trk::BinnedLayerMaterial::m_fullMaterial
MaterialPropertiesMatrix m_fullMaterial
The five different MaterialProperties.
Definition
BinnedLayerMaterial.h:112
Trk::BinnedLayerMaterial::updateBinning
virtual void updateBinning(BinUtility *bu) override
Update the BinUtility if necessary - passing ownership of the utility class.
Definition
BinnedLayerMaterial.h:134
Trk::BinnedLayerMaterial::m_binUtility
BinUtility * m_binUtility
the helper for the bin finding
Definition
BinnedLayerMaterial.h:109
Trk::LayerMaterialProperties::m_splitFactor
double m_splitFactor
the split factor in favour of oppositePre
Definition
LayerMaterialProperties.h:134
Trk::MaterialProperties
Material with information about thickness of material.
Definition
MaterialProperties.h:40
Trk::MaterialProperties::thicknessInX0
float thicknessInX0() const
Return the radiationlength fraction.
Trk::MaterialProperties::averageZ
float averageZ() const
Returns the average Z of the material.
Generated on
for ATLAS Offline Software by
1.17.0