ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDetDescr
PixelGeoModel
src
PixelMaterialMap.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
PixelMaterialMap.h
"
6
#include "
RDBAccessSvc/IRDBRecordset.h
"
7
8
#include <iostream>
9
#include <tuple>
10
11
PixelMaterialMap::Key::Key
(
int
layerdisk_in,
int
typenum_in, std::string_view volumeName_in):
12
layerdisk
(layerdisk_in),
13
typenum
(typenum_in),
14
volumeName
(volumeName_in)
15
{}
16
17
bool
18
PixelMaterialMap::Key::operator<
(
const
PixelMaterialMap::Key
& rhs)
const
19
{
20
return
std::tie(
volumeName
,
layerdisk
,
typenum
) <
21
std::tie(rhs.
volumeName
, rhs.
layerdisk
, rhs.
typenum
);
22
}
23
24
25
PixelMaterialMap::PixelMaterialMap
(
const
IRDBRecordset_ptr
& mapTable)
26
{
27
for
(
const
auto
& rec : *mapTable) {
28
int
layerdisk = rec->getInt(
"LAYERDISK"
);
29
int
typenum = rec->getInt(
"TYPENUM"
);
30
const
std::string & volumeName = rec->getString(
"VOLUMENAME"
);
31
const
std::string & material = rec->getString(
"MATERIAL"
);
32
addMaterial
(layerdisk, typenum, volumeName, material);
33
}
34
}
35
36
std::string
37
PixelMaterialMap::getMaterial
(
int
layerdisk,
int
typenum, std::string_view volumeName)
const
38
{
39
// If not found try (layerdisk, 0) then (0, typenum), then (0,0)
40
auto
iter =
m_matmap
.find(
Key
(layerdisk, typenum, volumeName));
41
if
(iter ==
m_matmap
.end() && typenum) {
42
iter =
m_matmap
.find(
Key
(layerdisk, 0, volumeName));
43
}
44
if
(iter ==
m_matmap
.end() && layerdisk) {
45
iter =
m_matmap
.find(
Key
(0, typenum, volumeName));
46
}
47
if
(iter ==
m_matmap
.end() && typenum && layerdisk) {
48
iter =
m_matmap
.find(
Key
(0, 0, volumeName));
49
}
50
if
(iter !=
m_matmap
.end()) {
51
return
iter->second;
52
}
else
{
53
std::cout <<
"ERROR: PixelMaterialMap::getMaterial Cannot find material for volumeName: "
<< volumeName << std::endl;
54
return
""
;
55
}
56
}
57
58
59
void
60
PixelMaterialMap::addMaterial
(
int
layerdisk,
int
typenum, std::string_view volumeName, std::string_view materialName)
61
{
62
m_matmap
[
Key
(layerdisk, typenum, volumeName)] = materialName;
63
}
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition
IRDBAccessSvc.h:30
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
PixelMaterialMap.h
PixelMaterialMap::Key
Definition
PixelMaterialMap.h:27
PixelMaterialMap::Key::typenum
int typenum
Definition
PixelMaterialMap.h:31
PixelMaterialMap::Key::Key
Key(int layerdisk_in, int typenum_in, std::string_view volumeName_in)
Definition
PixelMaterialMap.cxx:11
PixelMaterialMap::Key::volumeName
std::string volumeName
Definition
PixelMaterialMap.h:32
PixelMaterialMap::Key::layerdisk
int layerdisk
Definition
PixelMaterialMap.h:30
PixelMaterialMap::Key::operator<
bool operator<(const Key &rhs) const
Definition
PixelMaterialMap.cxx:18
PixelMaterialMap::getMaterial
std::string getMaterial(int layerdisk, int typenum, std::string_view volumeName) const
Definition
PixelMaterialMap.cxx:37
PixelMaterialMap::m_matmap
mapType m_matmap
Definition
PixelMaterialMap.h:37
PixelMaterialMap::addMaterial
void addMaterial(int layerdisk, int typenum, std::string_view volumeName, std::string_view materialName)
Definition
PixelMaterialMap.cxx:60
PixelMaterialMap::PixelMaterialMap
PixelMaterialMap(const IRDBRecordset_ptr &mapTable)
Definition
PixelMaterialMap.cxx:25
Generated on
for ATLAS Offline Software by
1.17.0