ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRawEvent
InDetRawData
InDetRawData
PhaseIIPixelRawDataContainer.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 PHASEII_PIXELRAWDATACONTAINER_H
5
#define PHASEII_PIXELRAWDATACONTAINER_H
6
7
#include "
AthenaKernel/CLASS_DEF.h
"
8
#include "
AthLinks/DeclareIndexingPolicy.h
"
9
#include "
PhaseIIInDetRawDataContainer.h
"
10
11
#include <vector>
12
#include <cstdint>
13
14
namespace
PhaseII
{
15
18
class
PixelRawDataContainer
:
public
InDetRawDataContainer
<2> {
19
protected
:
20
// helper constatnts to unpack the bit packed information from the data word.
21
// To extract the data the bits are shifted first and then the mask is applied
22
static
constexpr
std::uint32_t
MASK_TOT
= 0xFF;
23
static
constexpr
unsigned
int
SHIFT_TOT
= 0;
24
static
constexpr
std::uint32_t
MASK_BCID
= 0xFF;
25
static
constexpr
unsigned
int
SHIFT_BCID
= 8;
26
static
constexpr
std::uint32_t
MASK_LVL1D
= 0xFF;
27
static
constexpr
unsigned
int
SHIFT_LVL1D
= 16;
28
static
constexpr
std::uint32_t
MASK_LVL1A
= 0xF;
29
static
constexpr
unsigned
int
SHIFT_LVL1A
= 24;
30
31
private
:
32
// an addtional error container which will be filled by the bytestream converter.
33
// It will container first one value per module for module specific errors, then
34
// one value per module times max. number of front-ends for front-end specific
35
// errors.
36
// @TODO Currently just follows the same design of IDCInDetBSErrContainer, but it should get an interface.
37
std::vector<std::uint64_t>
m_errors
;
38
39
public
:
40
// convenience methods to interpret the data word.
41
static
int
getToT
(std::uint32_t
dataWord
) {
return
unpack
(
MASK_TOT
,
SHIFT_TOT
,
dataWord
); }
42
static
int
getBCID
(std::uint32_t
dataWord
) {
return
unpack
(
MASK_BCID
,
SHIFT_BCID
,
dataWord
); }
43
static
int
getLVL1A
(std::uint32_t
dataWord
) {
return
unpack
(
MASK_LVL1A
,
SHIFT_LVL1A
,
dataWord
); }
44
static
int
getLVL1ID
(std::uint32_t
dataWord
) {
return
unpack
(
MASK_LVL1D
,
SHIFT_LVL1D
,
dataWord
); }
45
46
// create the bit packed data word.
47
static
std::uint32_t
makeWord
(
int
tot,
int
bcid,
int
lvl1a,
int
lvl1d) {
48
return
pack
(
MASK_TOT
,
SHIFT_TOT
, tot)
49
|
pack
(
MASK_BCID
,
SHIFT_BCID
, bcid)
50
|
pack
(
MASK_LVL1A
,
SHIFT_LVL1A
, lvl1a)
51
|
pack
(
MASK_LVL1D
,
SHIFT_LVL1D
, lvl1d);
52
}
53
54
// get the associated error container which can be empty or has one element per module + module * max. number of front-ends/per-module.
55
const
std::vector<std::uint64_t> &
errors
()
const
{
return
m_errors
; }
56
// get the associated error container which can be empty or should have one element per module + module * max. number of front-ends/per-module (read/write).
57
std::vector<std::uint64_t> &
errors
() {
return
m_errors
; }
58
};
59
61
template
<AccessPolicy accessPolicy=AccessPolicy::Const>
62
class
PixelRawDataProxy
63
:
public
RawDataProxyBase
<typename Utils::ContainerAccessHelper<PhaseII::PixelRawDataContainer, accessPolicy>::ContainerType >
64
{
65
public
:
66
using
BASE
=
RawDataProxyBase<typename Utils::ContainerAccessHelper<PhaseII::PixelRawDataContainer, accessPolicy>::ContainerType
>;
67
using
BASE::BASE
;
68
69
int
getToT
()
const
{
return
PixelRawDataContainer::getToT
(this->
dataWord
()); }
70
int
getBCID
()
const
{
return
PixelRawDataContainer::getBCID
(this->
dataWord
()); }
71
int
getLVL1A
()
const
{
return
PixelRawDataContainer::getLVL1A
(this->
dataWord
()); }
72
int
getLVL1ID
()
const
{
return
PixelRawDataContainer::getLVL1ID
(this->
dataWord
()); }
73
};
74
75
// provide means to RawDataCollectionProxies to discover the RDO proxy type to be used for a certain i.e. pixel RDO container.
76
namespace
RawData {
77
namespace
details
{
78
template
<>
79
struct
traits
<
PixelRawDataContainer
> {
80
template
<AccessPolicy accessPolicy>
81
using
RawDataProxy
=
PixelRawDataProxy<accessPolicy>
;
82
};
83
}
84
}
85
86
// Define all the proxies for read only access of the pixel raw data
87
template
<AccessPolicy accessPolicy=AccessPolicy::Const>
88
using
PixelRawDataTypeTraits
=
RawDataTypeTraits
<
typename
Utils::ContainerAccessHelper
<
PixelRawDataContainer
,
89
accessPolicy>::ContainerType >;
90
}
91
92
// Pool converter do not like namespaces
93
using
PhaseIIPixelRawDataContainer
=
PhaseII::PixelRawDataTypeTraits<PhaseII::AccessPolicy::Mutable>::ContainerCollection
;
94
95
CLASS_DEF
(
PhaseIIPixelRawDataContainer
, 1261995829, 1)
96
#endif
CLASS_DEF.h
macros to associate a CLID to a type
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition
Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
DeclareIndexingPolicy.h
declare to which family the container belongs as far as its indexing policy is concerned
PhaseIIInDetRawDataContainer.h
PhaseIIPixelRawDataContainer
PhaseII::PixelRawDataTypeTraits< PhaseII::AccessPolicy::Mutable >::ContainerCollection PhaseIIPixelRawDataContainer
Definition
PhaseIIPixelRawDataContainer.h:93
PhaseII::InDetRawDataContainer
Base raw data container which provides coordinates of a certain dimension and a data word per RDO (ra...
Definition
PhaseIIInDetRawDataContainer.h:252
PhaseII::InDetRawDataContainer< 2 >::unpack
static constexpr int unpack(std::uint32_t mask, unsigned int shift, unsigned int word)
Definition
PhaseIIInDetRawDataContainer.h:314
PhaseII::InDetRawDataContainer< 2 >::pack
static constexpr std::uint32_t pack(std::uint32_t mask, unsigned int shift, int input)
Definition
PhaseIIInDetRawDataContainer.h:326
PhaseII::InDetRawDataContainer< 2 >::dataWord
const std::uint32_t & dataWord(unsigned int index) const
Definition
PhaseIIInDetRawDataContainer.h:263
PhaseII::PixelRawDataContainer
The container for pixel RDOs The base class is the InDetRawDataContainer with a coordinate dimension ...
Definition
PhaseIIPixelRawDataContainer.h:18
PhaseII::PixelRawDataContainer::MASK_LVL1A
static constexpr std::uint32_t MASK_LVL1A
Definition
PhaseIIPixelRawDataContainer.h:28
PhaseII::PixelRawDataContainer::MASK_LVL1D
static constexpr std::uint32_t MASK_LVL1D
Definition
PhaseIIPixelRawDataContainer.h:26
PhaseII::PixelRawDataContainer::SHIFT_TOT
static constexpr unsigned int SHIFT_TOT
Definition
PhaseIIPixelRawDataContainer.h:23
PhaseII::PixelRawDataContainer::makeWord
static std::uint32_t makeWord(int tot, int bcid, int lvl1a, int lvl1d)
Definition
PhaseIIPixelRawDataContainer.h:47
PhaseII::PixelRawDataContainer::SHIFT_LVL1D
static constexpr unsigned int SHIFT_LVL1D
Definition
PhaseIIPixelRawDataContainer.h:27
PhaseII::PixelRawDataContainer::getToT
static int getToT(std::uint32_t dataWord)
Definition
PhaseIIPixelRawDataContainer.h:41
PhaseII::PixelRawDataContainer::errors
std::vector< std::uint64_t > & errors()
Definition
PhaseIIPixelRawDataContainer.h:57
PhaseII::PixelRawDataContainer::SHIFT_BCID
static constexpr unsigned int SHIFT_BCID
Definition
PhaseIIPixelRawDataContainer.h:25
PhaseII::PixelRawDataContainer::getLVL1A
static int getLVL1A(std::uint32_t dataWord)
Definition
PhaseIIPixelRawDataContainer.h:43
PhaseII::PixelRawDataContainer::MASK_TOT
static constexpr std::uint32_t MASK_TOT
Definition
PhaseIIPixelRawDataContainer.h:22
PhaseII::PixelRawDataContainer::getLVL1ID
static int getLVL1ID(std::uint32_t dataWord)
Definition
PhaseIIPixelRawDataContainer.h:44
PhaseII::PixelRawDataContainer::MASK_BCID
static constexpr std::uint32_t MASK_BCID
Definition
PhaseIIPixelRawDataContainer.h:24
PhaseII::PixelRawDataContainer::SHIFT_LVL1A
static constexpr unsigned int SHIFT_LVL1A
Definition
PhaseIIPixelRawDataContainer.h:29
PhaseII::PixelRawDataContainer::getBCID
static int getBCID(std::uint32_t dataWord)
Definition
PhaseIIPixelRawDataContainer.h:42
PhaseII::PixelRawDataContainer::errors
const std::vector< std::uint64_t > & errors() const
Definition
PhaseIIPixelRawDataContainer.h:55
PhaseII::PixelRawDataContainer::m_errors
std::vector< std::uint64_t > m_errors
Definition
PhaseIIPixelRawDataContainer.h:37
PhaseII::PixelRawDataProxy
A proxy for a pixel RDO which adds convenience methods to interpret the data word to the base proxy.
Definition
PhaseIIPixelRawDataContainer.h:64
PhaseII::PixelRawDataProxy::getLVL1A
int getLVL1A() const
Definition
PhaseIIPixelRawDataContainer.h:71
PhaseII::PixelRawDataProxy::getBCID
int getBCID() const
Definition
PhaseIIPixelRawDataContainer.h:70
PhaseII::PixelRawDataProxy::getToT
int getToT() const
Definition
PhaseIIPixelRawDataContainer.h:69
PhaseII::PixelRawDataProxy::BASE
RawDataProxyBase< typename Utils::ContainerAccessHelper< PhaseII::PixelRawDataContainer, accessPolicy >::ContainerType > BASE
Definition
PhaseIIPixelRawDataContainer.h:66
PhaseII::PixelRawDataProxy::getLVL1ID
int getLVL1ID() const
Definition
PhaseIIPixelRawDataContainer.h:72
PhaseII::RawDataProxyBase
Base class for an RDO proxy.
Definition
PhaseIIInDetRawDataContainer.h:360
PhaseII::RawDataProxyBase::BASE
Utils::ElementProxyBase< T_RawDataContainer, unsigned int > BASE
Definition
PhaseIIInDetRawDataContainer.h:362
PhaseII::RawDataProxyBase< Utils::ContainerAccessHelper< PhaseII::PixelRawDataContainer, AccessPolicy::Const >::ContainerType >::dataWord
const auto & dataWord() const
Definition
PhaseIIInDetRawDataContainer.h:371
PhaseII
Definition
ContainerRangeGuard.h:7
PhaseII::PixelRawDataTypeTraits
RawDataTypeTraits< typename Utils::ContainerAccessHelper< PixelRawDataContainer, accessPolicy >::ContainerType > PixelRawDataTypeTraits
Definition
PhaseIIPixelRawDataContainer.h:88
details
Definition
IParticleWriter.h:21
PhaseII::RawDataTypeTraits
helper class to define all the proxies for a RDO container.
Definition
PhaseIIInDetRawDataContainer.h:520
PhaseII::RawDataTypeTraits::ContainerCollection
typename Utils::ContainerAccessHelper< PhaseII::IndexedRanges< ContainerNonConst, std::atomic< PhaseII::DataRange > >, accessPolicy >::ContainerType ContainerCollection
Definition
PhaseIIInDetRawDataContainer.h:526
PhaseII::RawData::details::traits< PixelRawDataContainer >::RawDataProxy
PixelRawDataProxy< accessPolicy > RawDataProxy
Definition
PhaseIIPixelRawDataContainer.h:81
PhaseII::RawData::details::traits
Definition
PhaseIIInDetRawDataContainer.h:429
Utils::ContainerAccessHelper
Definition
ProxyContainer.h:50
Generated on
for ATLAS Offline Software by
1.17.0