ATLAS Offline Software
Loading...
Searching...
No Matches
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
13#include <iostream>
14
17
18bool
20 return m_offline2OnlineMap.empty();
21}
22
23std::size_t
25 return m_offline2OnlineMap.size();
26}
27
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
37std::istream&
38operator>>(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
70std::ostream&
71operator<<(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
82
83void ITkStripCablingData::getRods(std::vector<std::uint32_t>& usersVector) const {
84 std::copy(m_rodIdSet.begin(), m_rodIdSet.end(), std::back_inserter(usersVector));
85}
std::istream & operator>>(std::istream &is, ITkStripCablingData &cabling)
std::ostream & operator<<(std::ostream &os, const ITkStripCablingData &cabling)
std::set< std::uint32_t > m_rodIdSet
Set of robIds.
static const ITkStripOnlineId s_invalidId
Invalid SCT_OnlineId.
void getRods(std::vector< std::uint32_t > &usersVector) const
Get a vector of all RODs.
std::unordered_map< Identifier, ITkStripOnlineId > m_offline2OnlineMap
std::array< ITkStripOnlineId, NUMBER_OF_HASHES > m_hash2OnlineIdArray
Array for hash to onlineId; hash goes from 0-49536.
std::size_t size() const
ITkStripOnlineId getOnlineIdFromHash(const IdentifierHash &hash) const
Get ITkStripOnlineId from IdentifierHash.
ITkStripOnlineId onlineId(const Identifier &id) const
static const IdentifierHash s_invalidHash
Invalid IdentifierHash.
This is a "hash" representation of an Identifier.