ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkGeometry
TrkGeometry
LayerMaterialMap.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// LayerMaterialMap.h, (c) ATLAS Detector software
8
9
#ifndef TRKGEOMETRY_LAYERMATERIALMAP_H
10
#define TRKGEOMETRY_LAYERMATERIALMAP_H
11
12
#include <map>
13
#include <vector>
14
15
#include "
AthenaKernel/CLASS_DEF.h
"
16
#include "
TrkDetDescrUtils/LayerIndex.h
"
17
#include <memory>
18
#include "
TrkGeometry/ElementTable.h
"
19
#include "
TrkGeometry/LayerMaterialProperties.h
"
20
21
namespace
Trk
{
22
30
31
class
LayerMaterialMap
32
:
public
std::map<Trk::LayerIndex, const Trk::LayerMaterialProperties*> {
33
public
:
35
LayerMaterialMap
()
36
:
std
::
map
<
Trk
::
LayerIndex
,
const
Trk
::
LayerMaterialProperties
*>(),
37
m_elementTable
(
std
::shared_ptr<
const
ElementTable
>(0)) {}
38
40
LayerMaterialMap
(
const
std::shared_ptr<const ElementTable>& eTable)
41
:
std
::
map
<
Trk
::
LayerIndex
,
const
Trk
::
LayerMaterialProperties
*>(),
42
m_elementTable
(eTable) {}
43
45
LayerMaterialMap
(
const
Trk::LayerMaterialMap
& lmc)
46
:
std
::
map
<
Trk
::
LayerIndex
,
const
Trk
::
LayerMaterialProperties
*>(lmc),
47
m_elementTable
(lmc.
m_elementTable
) {}
48
50
LayerMaterialMap
&
operator=
(
const
LayerMaterialMap
& lmc) {
51
if
(
this
!= &lmc) {
52
m_elementTable
= lmc.
m_elementTable
;
53
std::map<Trk::LayerIndex, const Trk::LayerMaterialProperties*>::operator=(
54
lmc);
55
}
56
return
(*
this
);
57
}
58
60
~LayerMaterialMap
();
61
63
const
ElementTable
*
elementTable
()
const
{
return
m_elementTable
.get(); }
64
66
void
updateElementTable
(
const
std::shared_ptr<const ElementTable>& eTable) {
67
m_elementTable
= eTable;
68
synchronizeElementTable
();
69
}
70
72
void
synchronizeElementTable
();
73
74
private
:
75
std::shared_ptr<const ElementTable>
m_elementTable
;
76
};
77
78
inline
LayerMaterialMap::~LayerMaterialMap
() {
79
// delete the entries to act like a DataVector
80
for
(
auto
& it : (*
this
))
delete
(it.second);
81
}
82
83
inline
void
LayerMaterialMap::synchronizeElementTable
() {
84
// loop 1 - add up all the ElementTable
85
Trk::ElementTable
* eTable =
new
Trk::ElementTable
();
86
if
(
elementTable
()) (*eTable) += (*
elementTable
());
87
for
(
auto
& it : (*
this
)) {
88
const
Trk::ElementTable
* eTableLM = it.second->elementTable();
89
if
(eTableLM) (*eTable) += (*eTableLM);
90
}
91
// loop 2 - set the updated ElementTable
92
m_elementTable
= std::shared_ptr<const ElementTable>(eTable);
93
for
(
auto
& it : (*
this
)) it.second->updateElementTable(
m_elementTable
);
94
}
95
96
}
// namespace Trk
97
98
CLASS_DEF
(
Trk::LayerMaterialMap
, 142190734, 1)
99
#include "AthenaKernel/CondCont.h"
100
CONDCONT_DEF
(
Trk::LayerMaterialMap
, 139083292 );
101
102
#endif
CONDCONT_DEF
#define CONDCONT_DEF(...)
Definition
CondCont.h:1413
CLASS_DEF.h
macros to associate a CLID to a type
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition
Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
ElementTable.h
LayerIndex.h
LayerMaterialProperties.h
Trk::ElementTable
Definition
ElementTable.h:24
Trk::LayerIndex
LayerIndex for the identification of layers in a simplified detector geometry of Cylinders and Discs.
Definition
LayerIndex.h:37
Trk::LayerMaterialMap
This class extends the DataVector<Trk::LayerMaterialProperties> by an elementTable;.
Definition
LayerMaterialMap.h:32
Trk::LayerMaterialMap::m_elementTable
std::shared_ptr< const ElementTable > m_elementTable
Definition
LayerMaterialMap.h:75
Trk::LayerMaterialMap::synchronizeElementTable
void synchronizeElementTable()
synchronize the ElementTable
Definition
LayerMaterialMap.h:83
Trk::LayerMaterialMap::elementTable
const ElementTable * elementTable() const
retrieval method
Definition
LayerMaterialMap.h:63
Trk::LayerMaterialMap::updateElementTable
void updateElementTable(const std::shared_ptr< const ElementTable > &eTable)
update method
Definition
LayerMaterialMap.h:66
Trk::LayerMaterialMap::LayerMaterialMap
LayerMaterialMap(const std::shared_ptr< const ElementTable > &eTable)
Default constructor.
Definition
LayerMaterialMap.h:40
Trk::LayerMaterialMap::~LayerMaterialMap
~LayerMaterialMap()
Destructor.
Definition
LayerMaterialMap.h:78
Trk::LayerMaterialMap::operator=
LayerMaterialMap & operator=(const LayerMaterialMap &lmc)
Assigment operator.
Definition
LayerMaterialMap.h:50
Trk::LayerMaterialMap::LayerMaterialMap
LayerMaterialMap()
Default constructor.
Definition
LayerMaterialMap.h:35
Trk::LayerMaterialMap::LayerMaterialMap
LayerMaterialMap(const Trk::LayerMaterialMap &lmc)
Copy constructor.
Definition
LayerMaterialMap.h:45
Trk::LayerMaterialProperties
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
Definition
LayerMaterialProperties.h:64
map
STL class.
const
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0