ATLAS Offline Software
Loading...
Searching...
No Matches
ITkStripCablingData Class Reference

#include <ITkStripCablingData.h>

Collaboration diagram for ITkStripCablingData:

Public Types

enum  { NUMBER_OF_HASHES =49536 }

Public Member Functions

bool empty () const
std::size_t size () const
ITkStripOnlineId onlineId (const Identifier &id) const
void getRods (std::vector< std::uint32_t > &usersVector) const
 Get a vector of all RODs.
ITkStripOnlineId getOnlineIdFromHash (const IdentifierHash &hash) const
 Get ITkStripOnlineId from IdentifierHash.

Private Attributes

std::unordered_map< Identifier, ITkStripOnlineIdm_offline2OnlineMap
std::set< std::uint32_t > m_rodIdSet
 Set of robIds.
std::array< ITkStripOnlineId, NUMBER_OF_HASHESm_hash2OnlineIdArray
 Array for hash to onlineId; hash goes from 0-49536.

Static Private Attributes

static const IdentifierHash s_invalidHash {}
 Invalid IdentifierHash.
static const ITkStripOnlineId s_invalidId {}
 Invalid SCT_OnlineId.

Friends

std::istream & operator>> (std::istream &is, ITkStripCablingData &cabling)
 stream extraction to read value from stream into ITkStripCablingData
std::ostream & operator<< (std::ostream &os, const ITkStripCablingData &cabling)
 stream insertion for debugging

Detailed Description

Definition at line 24 of file ITkStripCablingData.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
NUMBER_OF_HASHES 

Definition at line 40 of file ITkStripCablingData.h.

40{NUMBER_OF_HASHES=49536}; // In ITk, we have 49536 sensors.

Member Function Documentation

◆ empty()

bool ITkStripCablingData::empty ( ) const

Definition at line 19 of file ITkStripCablingData.cxx.

19 {
20 return m_offline2OnlineMap.empty();
21}
std::unordered_map< Identifier, ITkStripOnlineId > m_offline2OnlineMap

◆ getOnlineIdFromHash()

ITkStripOnlineId ITkStripCablingData::getOnlineIdFromHash ( const IdentifierHash & hash) const

Get ITkStripOnlineId from IdentifierHash.

Definition at line 79 of file ITkStripCablingData.cxx.

79 {
80 return hash.is_valid()? m_hash2OnlineIdArray[hash] : s_invalidId;
81}
static const ITkStripOnlineId s_invalidId
Invalid SCT_OnlineId.
std::array< ITkStripOnlineId, NUMBER_OF_HASHES > m_hash2OnlineIdArray
Array for hash to onlineId; hash goes from 0-49536.

◆ getRods()

void ITkStripCablingData::getRods ( std::vector< std::uint32_t > & usersVector) const

Get a vector of all RODs.

Definition at line 83 of file ITkStripCablingData.cxx.

83 {
84 std::copy(m_rodIdSet.begin(), m_rodIdSet.end(), std::back_inserter(usersVector));
85}
std::set< std::uint32_t > m_rodIdSet
Set of robIds.

◆ onlineId()

ITkStripOnlineId ITkStripCablingData::onlineId ( const Identifier & id) const

Definition at line 29 of file ITkStripCablingData.cxx.

29 {
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}

◆ size()

std::size_t ITkStripCablingData::size ( ) const

Definition at line 24 of file ITkStripCablingData.cxx.

24 {
25 return m_offline2OnlineMap.size();
26}

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const ITkStripCablingData & cabling )
friend

stream insertion for debugging

Definition at line 70 of file ITkStripCablingData.cxx.

71 {
72 for (const auto & [offlineId, onlineId]:cabling.m_offline2OnlineMap){
73 os<<offlineId<<", "<<onlineId<<"\n";
74 }
75 os<<std::endl;
76 return os;
77}
ITkStripOnlineId onlineId(const Identifier &id) const

◆ operator>>

std::istream & operator>> ( std::istream & is,
ITkStripCablingData & cabling )
friend

stream extraction to read value from stream into ITkStripCablingData

Definition at line 38 of file ITkStripCablingData.cxx.

38 {
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}
std::size_t size() const

Member Data Documentation

◆ m_hash2OnlineIdArray

std::array<ITkStripOnlineId, NUMBER_OF_HASHES> ITkStripCablingData::m_hash2OnlineIdArray
private

Array for hash to onlineId; hash goes from 0-49536.

Definition at line 45 of file ITkStripCablingData.h.

◆ m_offline2OnlineMap

std::unordered_map<Identifier, ITkStripOnlineId> ITkStripCablingData::m_offline2OnlineMap
private

Definition at line 43 of file ITkStripCablingData.h.

◆ m_rodIdSet

std::set<std::uint32_t> ITkStripCablingData::m_rodIdSet
private

Set of robIds.

Definition at line 44 of file ITkStripCablingData.h.

◆ s_invalidHash

const IdentifierHash ITkStripCablingData::s_invalidHash {}
staticprivate

Invalid IdentifierHash.

Definition at line 15 of file ITkStripCablingData.h.

◆ s_invalidId

const ITkStripOnlineId ITkStripCablingData::s_invalidId {}
staticprivate

Invalid SCT_OnlineId.

Definition at line 16 of file ITkStripCablingData.h.


The documentation for this class was generated from the following files: