ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetDetDescr
ITkPixelCabling
ITkPixelCabling
ITkPixelOnlineId.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
#ifndef ITkPixelOnlineId_h
5
#define ITkPixelOnlineId_h
12
#include <cstdint>
13
#include <iosfwd>
14
#include <compare>
15
#include <utility>
16
#include <typeindex>
//provides std::hash
17
18
// ***************************************
19
// The 'online' ID is 64-bits, encoding
20
//
21
// sourceID [32b] | DetectorResourceID [32b]
22
//
23
// sourceID is also known as ROD/ROB ID, calculated as
24
//
25
// 0 [8b] | subdetector ID [8b] | FELIX host [8b] | 0b00 | FELIX card [1b] | FELIX device [1b] | 0b00 | DMA buffer number [2b]
26
//
27
// DetectorResourceID is ITk-specific, and constructed as
28
//
29
// chipID [2b] | 0b00 | chipID on/off [1b] | BCID on/off [1b] | 0b00 | module ID [24b]
30
31
namespace
ITkPixelCabling
{
32
33
//mask for the source ID part
34
static
constexpr
uint64_t
SOURCE_ID_MASK
= 0xFFFFFFFF00000000;
35
36
//mask for the DetectorResourceID part
37
static
constexpr
uint64_t
DRID_MASK
= 0x00000000FFFFFFFF;
38
39
//mask for the moduleID part of the full DetectorResourceID and the chipID, needed in encoding
40
static
constexpr
uint32_t
OFFLINE_DRID_MASK
= 0xC0FFFFFF;
41
42
//mask for the upper 8 bits of the full DetectorResourceID, which encodes
43
//chipID [31:30], unused [29:28], chip ID on/off [27] and BCID on/off [26], unused [25]
44
static
constexpr
uint32_t
ONLINE_DRID_MASK
= 0xFF000000;
45
46
//mask for the module ID part
47
static
constexpr
uint32_t
MODULE_DRID_MASK
= 0x00FFFFFF;
48
49
//mask for the chipID part
50
static
constexpr
uint32_t
CHIP_DRID_MASK
= 0xC0000000;
51
52
//DRID to module ID
53
inline
uint32_t
dridToModuleID
(
const
uint32_t& drid){
return
(drid &
MODULE_DRID_MASK
) << 8;}
54
55
//DRID to chip ID
56
inline
uint8_t
dridToChipID
(
const
uint32_t& drid){
return
static_cast<
uint8_t
>
((drid &
CHIP_DRID_MASK
) >> 30);}
57
58
}
59
60
class
ITkPixelOnlineId
{
61
public
:
63
friend
std::ostream&
operator<<
(std::ostream & os,
const
ITkPixelOnlineId
&
id
);
65
ITkPixelOnlineId
() =
default
;
67
ITkPixelOnlineId
(
const
std::uint64_t onlineId);
69
ITkPixelOnlineId
(
const
std::uint32_t rodId,
const
std::uint32_t
detectorResourceID
);
71
std::uint32_t
sourceID
()
const
;
73
std::uint32_t
detectorResourceID
()
const
;
75
std::uint32_t
offlineDetectorResourceID
()
const
;
77
std::uint32_t
offlineModuleID
()
const
;
79
explicit
operator
unsigned
long
int()
const
{
return
m_onlineId
;}
81
auto
operator<=>
(
const
ITkPixelOnlineId
& other)
const
=
default
;
82
83
bool
isValid
()
const
;
84
85
enum
{
86
INVALID_DETECTORRESOURCE_ID
=0xFFFFFFFF,
INVALID_SOURCE_ID
=0xFFFFFFFF,
INVALID_ONLINE_ID
=0xFFFFFFFFFFFFFFFF
87
};
88
89
private
:
90
std::uint64_t
m_onlineId
{
INVALID_ONLINE_ID
};
91
92
};
93
94
namespace
std
{
95
template
<>
96
struct
hash<
ITkPixelOnlineId
>{
97
size_t
operator()
(
const
ITkPixelOnlineId
&
id
)
const
{
98
return
static_cast<
size_t
>
((uint64_t)id);
99
}
100
};
101
}
102
103
104
105
#endif
ITkPixelOnlineId
Definition
ITkPixelOnlineId.h:60
ITkPixelOnlineId::ITkPixelOnlineId
ITkPixelOnlineId()=default
Default constructor produces an invalid serial number.
ITkPixelOnlineId::INVALID_ONLINE_ID
@ INVALID_ONLINE_ID
Definition
ITkPixelOnlineId.h:86
ITkPixelOnlineId::INVALID_SOURCE_ID
@ INVALID_SOURCE_ID
Definition
ITkPixelOnlineId.h:86
ITkPixelOnlineId::INVALID_DETECTORRESOURCE_ID
@ INVALID_DETECTORRESOURCE_ID
Definition
ITkPixelOnlineId.h:86
ITkPixelOnlineId::offlineModuleID
std::uint32_t offlineModuleID() const
Return the offline module ID part.
Definition
ITkPixelOnlineId.cxx:31
ITkPixelOnlineId::isValid
bool isValid() const
Definition
ITkPixelOnlineId.cxx:36
ITkPixelOnlineId::detectorResourceID
std::uint32_t detectorResourceID() const
Return the detectorResourceID.
Definition
ITkPixelOnlineId.cxx:26
ITkPixelOnlineId::operator<<
friend std::ostream & operator<<(std::ostream &os, const ITkPixelOnlineId &id)
representation for debugging, messages
Definition
ITkPixelOnlineId.cxx:40
ITkPixelOnlineId::m_onlineId
std::uint64_t m_onlineId
Definition
ITkPixelOnlineId.h:90
ITkPixelOnlineId::offlineDetectorResourceID
std::uint32_t offlineDetectorResourceID() const
Return the offline part of detectorResourceID.
ITkPixelOnlineId::operator<=>
auto operator<=>(const ITkPixelOnlineId &other) const =default
Equality etc.
ITkPixelOnlineId::sourceID
std::uint32_t sourceID() const
Return the rod/rob Id.
Definition
ITkPixelOnlineId.cxx:20
ITkPixelCabling
Definition
ITkPixelCablingData.h:23
ITkPixelCabling::MODULE_DRID_MASK
static constexpr uint32_t MODULE_DRID_MASK
Definition
ITkPixelOnlineId.h:47
ITkPixelCabling::dridToModuleID
uint32_t dridToModuleID(const uint32_t &drid)
Definition
ITkPixelOnlineId.h:53
ITkPixelCabling::ONLINE_DRID_MASK
static constexpr uint32_t ONLINE_DRID_MASK
Definition
ITkPixelOnlineId.h:44
ITkPixelCabling::SOURCE_ID_MASK
static constexpr uint64_t SOURCE_ID_MASK
Definition
ITkPixelOnlineId.h:34
ITkPixelCabling::CHIP_DRID_MASK
static constexpr uint32_t CHIP_DRID_MASK
Definition
ITkPixelOnlineId.h:50
ITkPixelCabling::dridToChipID
uint8_t dridToChipID(const uint32_t &drid)
Definition
ITkPixelOnlineId.h:56
ITkPixelCabling::OFFLINE_DRID_MASK
static constexpr uint32_t OFFLINE_DRID_MASK
Definition
ITkPixelOnlineId.h:40
ITkPixelCabling::DRID_MASK
static constexpr uint64_t DRID_MASK
Definition
ITkPixelOnlineId.h:37
std
STL namespace.
std::hash< ITkPixelOnlineId >::operator()
size_t operator()(const ITkPixelOnlineId &id) const
Definition
ITkPixelOnlineId.h:97
Generated on
for ATLAS Offline Software by
1.17.0