ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDetDescr
ITkStripCabling
src
ITkStripCablingData.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
11
12
#include "
ITkStripCabling/ITkStripCablingData.h
"
13
#include <iostream>
14
15
const
IdentifierHash
ITkStripCablingData::s_invalidHash
{};
16
const
ITkStripOnlineId
ITkStripCablingData::s_invalidId
{};
17
18
bool
19
ITkStripCablingData::empty
()
const
{
20
return
m_offline2OnlineMap
.empty();
21
}
22
23
std::size_t
24
ITkStripCablingData::size
()
const
{
25
return
m_offline2OnlineMap
.size();
26
}
27
28
ITkStripOnlineId
29
ITkStripCablingData::onlineId
(
const
Identifier
&
id
)
const
{
30
const
ITkStripOnlineId
invalidId
;
31
const
auto
result =
m_offline2OnlineMap
.find(
id
);
32
if
(result ==
m_offline2OnlineMap
.end())
return
invalidId
;
33
return
result->second;
34
}
35
36
//stream extraction to read value from stream into ITkStripCablingData
37
std::istream&
38
operator>>
(std::istream & is,
ITkStripCablingData
& cabling){
39
unsigned
int
onlineInt{}, offlineInt{};
40
std::string extendedId{};
41
//very primitive, should refine with regex and value range checking
42
std::string line{};
43
int
indx=0;
44
while
(getline(is,line)){
45
std::stringstream
ss
(line);
46
std::string t{};
47
std::vector<std::string> words;
48
std::string offIdShort =
""
;
49
if
(line[0] ==
'#'
)
continue
;
50
while
(getline(
ss
,t,
' '
)){
51
words.push_back(t);
52
}
53
if
(words[0].
size
()>10) offIdShort=words[0].erase(10);
54
else
offIdShort=words[0];
55
offlineInt=
static_cast<
unsigned
int
>
(std::strtoul(offIdShort.c_str(),NULL,0));
56
onlineInt=
static_cast<
unsigned
int
>
(std::strtoul(words[2].c_str(),NULL,0));
57
const
Identifier
offlineId(offlineInt);
58
const
ITkStripOnlineId
onlineId
(onlineInt);
59
cabling.m_offline2OnlineMap[offlineId] =
onlineId
;
60
cabling.m_hash2OnlineIdArray[indx] =
onlineId
;
61
cabling.m_rodIdSet.insert(
onlineId
.rod());
62
words.clear();
63
indx++;
64
65
}
66
return
is;
67
}
68
69
//stream insertion to output cabling map values
70
std::ostream&
71
operator<<
(std::ostream & os,
const
ITkStripCablingData
& cabling){
72
for
(
const
auto
& [offlineId,
onlineId
]:cabling.m_offline2OnlineMap){
73
os<<offlineId<<
", "
<<
onlineId
<<
"\n"
;
74
}
75
os<<std::endl;
76
return
os;
77
}
78
79
ITkStripOnlineId
ITkStripCablingData::getOnlineIdFromHash
(
const
IdentifierHash
& hash)
const
{
80
return
hash.is_valid()?
m_hash2OnlineIdArray
[hash] :
s_invalidId
;
81
}
82
83
void
ITkStripCablingData::getRods
(std::vector<std::uint32_t>& usersVector)
const
{
84
std::copy(
m_rodIdSet
.begin(),
m_rodIdSet
.end(), std::back_inserter(usersVector));
85
}
operator>>
std::istream & operator>>(std::istream &is, ITkStripCablingData &cabling)
Definition
ITkStripCablingData.cxx:38
operator<<
std::ostream & operator<<(std::ostream &os, const ITkStripCablingData &cabling)
Definition
ITkStripCablingData.cxx:71
ITkStripCablingData.h
invalidId
static const ITkStripOnlineId invalidId
Definition
ITkStripCablingTool.cxx:31
ss
static Double_t ss
Definition
LArPhysWaveHECTool.cxx:37
size
size_t size() const
Number of registered mappings.
ITkStripCablingData
Definition
ITkStripCablingData.h:24
ITkStripCablingData::m_rodIdSet
std::set< std::uint32_t > m_rodIdSet
Set of robIds.
Definition
ITkStripCablingData.h:44
ITkStripCablingData::s_invalidId
static const ITkStripOnlineId s_invalidId
Invalid SCT_OnlineId.
Definition
ITkStripCablingData.h:16
ITkStripCablingData::getRods
void getRods(std::vector< std::uint32_t > &usersVector) const
Get a vector of all RODs.
Definition
ITkStripCablingData.cxx:83
ITkStripCablingData::m_offline2OnlineMap
std::unordered_map< Identifier, ITkStripOnlineId > m_offline2OnlineMap
Definition
ITkStripCablingData.h:43
ITkStripCablingData::empty
bool empty() const
Definition
ITkStripCablingData.cxx:19
ITkStripCablingData::m_hash2OnlineIdArray
std::array< ITkStripOnlineId, NUMBER_OF_HASHES > m_hash2OnlineIdArray
Array for hash to onlineId; hash goes from 0-49536.
Definition
ITkStripCablingData.h:45
ITkStripCablingData::size
std::size_t size() const
Definition
ITkStripCablingData.cxx:24
ITkStripCablingData::getOnlineIdFromHash
ITkStripOnlineId getOnlineIdFromHash(const IdentifierHash &hash) const
Get ITkStripOnlineId from IdentifierHash.
Definition
ITkStripCablingData.cxx:79
ITkStripCablingData::onlineId
ITkStripOnlineId onlineId(const Identifier &id) const
Definition
ITkStripCablingData.cxx:29
ITkStripCablingData::s_invalidHash
static const IdentifierHash s_invalidHash
Invalid IdentifierHash.
Definition
ITkStripCablingData.h:15
ITkStripOnlineId
Definition
ITkStripOnlineId.h:16
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0