ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetEventCnv
ITkPixelByteStreamCnv
src
ITkPixelCnvTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/*
6
* Author: Ondra Kovanda, ondrej.kovanda at cern.ch
7
* Date: 03/2025
8
* Description: Top-level tool to be called from BS converter or algorithm
9
*/
10
11
#include "
ITkPixelCnvTool.h
"
12
#include "
ITkPixelCabling/ITkPixelOnlineId.h
"
13
#include "
InDetRawData/PixelRDO_Container.h
"
14
#include "
ITkPixelRDO_Container.h
"
15
#include "
ITkPixelCabling/ITkPixelCablingData.h
"
16
17
18
19
20
ITkPixelCnvTool::ITkPixelCnvTool
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent)
21
:
AthAlgTool
(
type
, name, parent)
22
{}
23
27
StatusCode
ITkPixelCnvTool::initialize
(){
28
29
//Initialize the sub-tools
30
ATH_CHECK
(
m_hitSortingTool
.retrieve());
31
32
ATH_CHECK
(
m_encodingTool
.retrieve());
33
34
ATH_CHECK
(
m_pixelCablingKey
.initialize());
35
36
if
(not
m_dataRateMonTool
.empty())
37
ATH_CHECK
(
m_dataRateMonTool
.retrieve());
38
39
return
StatusCode::SUCCESS;
40
41
}
42
47
template
<
class
ContainerType>
48
StatusCode
ITkPixelCnvTool::convertToByteStream
(
const
ContainerType* cont)
const
{
49
50
//Get the cabling
51
SG::ReadCondHandle<ITkPixelCablingData>
cablingData(
m_pixelCablingKey
);
52
const
ITkPixelCablingData
* cabling = *cablingData;
53
54
//Get the full event assembler from ByteStreamCnvSvcBase
55
//SrcIdMap translates lower lvl IDs into higher lvl, e. g. ROD -> ROB, ROB -> ROS, ROS -> Det
56
FullEventAssembler<SrcIdMap>
* fea = 0;
57
ATH_CHECK
(
m_byteStreamCnvSvc
->getFullEventAssembler(fea,
"ITkPixelRawCont"
));
58
59
fea->
setDetEvtType
(0x0);
60
fea->
setLvl1TriggerType
(0x0);
61
62
//Expose the buffer to be filled with the encoded data
63
//Other BS converters use FullEventAssembler<SrcIdMap>::RODDATA,
64
//which is just a typedef for std::vector<uint32_t>. Why the extra
65
//layer of renaming?
66
std::vector<uint32_t>* rod;
67
68
//sort the RDO hits based on the FE
69
const
std::map<ITkPixelOnlineId, ITkPixLayout<uint16_t>> EventHitMaps =
m_hitSortingTool
->sortRDOHits(cont, cabling);
70
71
int
nRODs = 0;
72
73
for
(
const
auto
& [onlineID, hitMap] : EventHitMaps){
74
75
//make a copy of the onlineID
76
uint32_t onID = (uint32_t)onlineID;
77
78
//Encode the FE hits
79
std::vector<uint32_t> encodedStream =
m_encodingTool
->encodeFE(hitMap, onID & 0x3);
80
81
//Is this a merged quad? If so, collapse the chip ID in the online identifier to 00
82
//we can get the information from cabling's online -> modlue Info map.
83
ITkPixelCabling::ModuleInfo
mi = cabling->offlineModuleInfo((onID >> 2) << 2);
84
if
(mi.
type
==
ITkPixelCabling::ModuleType::MergedQuad
) onID = (onID >> 2) << 2;
85
86
// passing information to the monitoring tool if initialised
87
if
(not
m_dataRateMonTool
.empty()) {
88
m_dataRateMonTool
->fill(mi.
id
.get_identifier32().get_compact(), encodedStream, hitMap);
89
}
90
91
//At this point, the ROD identifier will be labelled with lowest two bits 00 for single
92
//chips, chip 00 in unmerged quads and for entire merged quads, and with
93
//the rest up to 0x3 for the remaining 3 chips in unmerged quads. The higher bits are
94
//the online 'base'. We need this because of the unmerged quads, where one
95
//offline entity maps on 4 online entities.
96
97
98
//Create ROD and insert the payload
99
rod = fea->
getRodData
(onID);
100
if
(rod->size() == 0) nRODs++;
101
rod->insert(rod->end(), encodedStream.begin(), encodedStream.end());
102
103
}
104
std::cout <<
"nRODs = "
<< nRODs <<
"\n"
;
105
106
return
StatusCode::SUCCESS;
107
}
108
109
template
StatusCode
ITkPixelCnvTool::convertToByteStream<ITkPixelRDO_Container>
(
const
ITkPixelRDO_Container
* cont)
const
;
110
template
StatusCode
ITkPixelCnvTool::convertToByteStream<PixelRDO_Container>
(
const
PixelRDO_Container
* cont)
const
;
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ITkPixelCablingData.h
ITkPixelCnvTool.h
ITkPixelOnlineId.h
ITkPixelRDO_Container.h
ITkPixelRDO_Container
InDetRawDataContainer< InDetRawDataCollection< ITkPixelRDORawData > > ITkPixelRDO_Container
Definition
ITkPixelRDO_Container.h:22
PixelRDO_Container.h
PixelRDO_Container
InDetRawDataContainer< InDetRawDataCollection< PixelRDORawData > > PixelRDO_Container
Definition
PixelRDO_Container.h:25
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition
FullEventAssembler.h:38
FullEventAssembler::setLvl1TriggerType
void setLvl1TriggerType(uint8_t m)
change LVL1 Trigger Type
FullEventAssembler::setDetEvtType
void setDetEvtType(uint32_t m)
change Detector Event Type
FullEventAssembler::getRodData
RODDATA * getRodData(uint32_t id)
get a block of ROD data
ITkPixelCablingData
Definition
ITkPixelCablingData.h:105
ITkPixelCnvTool::ITkPixelCnvTool
ITkPixelCnvTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition
ITkPixelCnvTool.cxx:20
ITkPixelCnvTool::m_pixelCablingKey
SG::ReadCondHandleKey< ITkPixelCablingData > m_pixelCablingKey
Definition
ITkPixelCnvTool.h:49
ITkPixelCnvTool::convertToByteStream
StatusCode convertToByteStream(const ContainerType *cont) const
Take ITkPixelRDO_Container or PixelRDO_Container and translate it to bytestream.
Definition
ITkPixelCnvTool.cxx:48
ITkPixelCnvTool::initialize
virtual StatusCode initialize() override
Retrieve helper tools.
Definition
ITkPixelCnvTool.cxx:27
ITkPixelCnvTool::m_byteStreamCnvSvc
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
Definition
ITkPixelCnvTool.h:47
ITkPixelCnvTool::m_encodingTool
ToolHandle< ITkPixelEncodingTool > m_encodingTool
Definition
ITkPixelCnvTool.h:45
ITkPixelCnvTool::m_hitSortingTool
ToolHandle< ITkPixelHitSortingTool > m_hitSortingTool
Definition
ITkPixelCnvTool.h:43
ITkPixelCnvTool::m_dataRateMonTool
ToolHandle< ITkPixelDataRateMonTool > m_dataRateMonTool
Definition
ITkPixelCnvTool.h:51
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
ITkPixelCabling::MergedQuad
@ MergedQuad
Definition
ITkPixelCablingData.h:28
type
ITkPixelCabling::ModuleInfo
Definition
ITkPixelCablingData.h:49
ITkPixelCabling::ModuleInfo::id
ID id
Definition
ITkPixelCablingData.h:50
ITkPixelCabling::ModuleInfo::type
ModuleType type
Definition
ITkPixelCablingData.h:51
Generated on
for ATLAS Offline Software by
1.17.0