ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_CablingData.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7// STL includes
8#include <algorithm>
9
10//Utility functions at file scope
11namespace {
12 //make a number even
13 IdentifierHash even(const IdentifierHash& hash) {
14 return (hash>>1) << 1;
15 }
16}
17
21
25
33
37
39 //compute the index for insertion to the onlineId/Hash array
40 const unsigned int indx{onlineId.index()};
41 if (m_onlineId2HashArray[indx].is_valid()) return false; //don't insert if theres already a valid hash there
42 m_onlineId2HashArray[indx] = hash;
43 return true;
44}
45
47 const unsigned int indx{onlineId.index()};
49 return s_invalidHash;
50 }
51 return m_onlineId2HashArray[indx];
52}
53
57
59 if (m_hash2OnlineIdArray[hash].is_valid()) return false; //don't insert if there's already a valid online id there
60 //insert to hash/onlineId array
61 m_hash2OnlineIdArray[hash] = onlineId;
62 return true;
63}
64
66 return hash.is_valid()? m_hash2OnlineIdArray[hash] : s_invalidId;
67}
68
72
74 return m_sn2HashMap.insert(std::make_pair(sn, hash)).second;
75}
76
78 std::map<SCT_SerialNumber, IdentifierHash>::const_iterator it{m_sn2HashMap.find(sn)};
79 if (it==m_sn2HashMap.end()) return s_invalidHash;
80 return it->second;
81}
82
86
88 const IdentifierHash evenHash{even(hash)};
89 if (m_hash2SnArray[evenHash]!=s_invalidSn) return false; //don't insert if there's already a valid online id there
90 m_hash2SnArray[evenHash] = sn;
91 return true;
92}
93
95 return hash.is_valid() ? m_hash2SnArray[even(hash)] : s_invalidSn;
96}
97
101
102void SCT_CablingData::setRod(const std::uint32_t& rod) {
103 m_rodIdSet.insert(rod);
104}
105
106void SCT_CablingData::getRods(std::vector<std::uint32_t>& usersVector) const {
107 std::copy(m_rodIdSet.begin(), m_rodIdSet.end(), std::back_inserter(usersVector));
108}
109
111 return m_sn2HashMap.size();
112}
Header file for SCT cabling data.
This is a "hash" representation of an Identifier.
void invalidateOnlineIdsForHashes()
Invalidate m_hash2OnlineIdArray.
static const IdentifierHash s_invalidHash
Invalid IdentifierHash.
void invalidateSerialNumbersForHashes()
Invalidate m_hash2SnArray.
std::set< std::uint32_t > m_rodIdSet
Set of robIds.
static const SCT_SerialNumber s_invalidSn
Invalid SCT_SerialNumber.
std::map< SCT_SerialNumber, IdentifierHash > m_sn2HashMap
Data map for serial number to hash.
IdentifierHash getHashFromOnlineId(const SCT_OnlineId &onlineId) const
Get IdentifierHash from SCT_OnlineId.
void setRod(const std::uint32_t &rod)
Set m_rodIdSet.
static const SCT_OnlineId s_invalidId
Invalid SCT_OnlineId.
std::array< SCT_OnlineId, NUMBER_OF_HASHES > m_hash2OnlineIdArray
Array for hash to onlineId; hash goes from 0-8175.
SCT_CablingData()
constructor
void getRods(std::vector< std::uint32_t > &usersVector) const
Get a vector of all RODs.
void invalidateHashesForSerialNumbers()
Invalidate m_sn2HashMap.
void invalidate()
Invalidate all data members.
IdentifierHash getHashFromSerialNumber(const SCT_SerialNumber &sn) const
Get IdentifierHash from SCT_SerialNumber.
std::array< IdentifierHash, SCT_OnlineId::NUMBER_OF_INDICES > m_onlineId2HashArray
Array for onlineId to hash.
SCT_SerialNumber getSerialNumberFromHash(const IdentifierHash &hash) const
Get SCT_SerialNumber from IdentifierHash.
bool setOnlineIdForHash(const SCT_OnlineId &onlineId, const IdentifierHash &hash)
Set m_hash2OnlineIdArray.
unsigned int getHashEntries() const
Return the size of m_sn2HashMap.
bool setSerialNumberForHash(const SCT_SerialNumber &sn, const IdentifierHash &hash)
Set m_hash2SnArray.
void invalidateRods()
Invalidate m_rodIdSet.
bool setHashForSerialNumber(const IdentifierHash &hash, const SCT_SerialNumber &sn)
Set m_sn2HashMap.
std::array< SCT_SerialNumber, NUMBER_OF_HASHES > m_hash2SnArray
Array for hash to serial number.
SCT_OnlineId getOnlineIdFromHash(const IdentifierHash &hash) const
Get SCT_OnlineId from IdentifierHash.
void invalidateHashesForOnlineIds()
Invalidate m_onlineId2HashArray.
bool setHashForOnlineId(const IdentifierHash &hash, const SCT_OnlineId &onlineId)
Set m_onlineId2HashArray.
SCT_OnlineId is a class to hold an online id number and provide check on validity,...
unsigned int index() const
Return an index in the range 0-9215, calculated from parts of the onlineId.
SCT_SerialNumber is a class to hold a serial number and provide check on validity,...