ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileSvc
TileByteStream
src
TileDigitsContByteStreamTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Gaudi includes
6
7
// Atlas includes
8
#include "
AthenaKernel/errorcheck.h
"
9
#include "
StoreGate/ReadCondHandle.h
"
10
11
// Tile includes
12
#include "
TileByteStream/TileDigitsContByteStreamTool.h
"
13
#include "
TileByteStream/TileROD_Decoder.h
"
14
#include "
TileByteStream/TileROD_Encoder.h
"
15
#include "
TileEvent/TileDigitsCollection.h
"
16
#include "
TileEvent/TileDigitsContainer.h
"
17
#include "
TileEvent/TileDigits.h
"
18
#include "
TileIdentifier/TileHWID.h
"
19
20
#include "
AthenaKernel/CLASS_DEF.h
"
21
22
#include <map>
23
#include <stdint.h>
24
25
26
static
const
InterfaceID
IID_ITileDigitsContByteStreamTool
27
(
"TileDigitsContByteStreamTool"
, 1, 0);
28
29
const
InterfaceID&
TileDigitsContByteStreamTool::interfaceID
( )
30
{
return
IID_ITileDigitsContByteStreamTool
; }
31
32
// default constructor
33
34
TileDigitsContByteStreamTool::TileDigitsContByteStreamTool
(
const
std::string&
type
35
,
const
std::string& name,
const
IInterface* parent )
36
:
AthAlgTool
(
type
, name, parent)
37
,
m_tileHWID
(0)
38
,
m_verbose
(false)
39
,
m_runPeriod
(0)
40
{
41
declareInterface< TileDigitsContByteStreamTool >(
this
);
42
}
43
44
// destructor
45
46
TileDigitsContByteStreamTool::~TileDigitsContByteStreamTool
() {}
47
48
StatusCode
TileDigitsContByteStreamTool::initialize
() {
49
50
ATH_MSG_INFO
(
"Initializing TileDigitsContByteStreamTool"
);
51
52
ATH_CHECK
(
detStore
()->retrieve(
m_tileHWID
,
"TileHWID"
) );
53
54
ToolHandle<TileROD_Decoder> dec(
"TileROD_Decoder"
);
55
ATH_CHECK
( dec.retrieve() );
56
57
ATH_CHECK
(
m_hid2RESrcIDKey
.initialize(
m_initializeForWriting
) );
58
59
const
TileCablingService
*cabling =
TileCablingService::getInstance
();
60
m_runPeriod
= cabling->runPeriod();
61
62
return
StatusCode::SUCCESS;
63
}
64
65
StatusCode
TileDigitsContByteStreamTool::finalize
() {
66
ATH_MSG_INFO
(
"Finalizing TileDigitsContByteStreamTool successfuly"
);
67
return
StatusCode::SUCCESS;
68
}
69
70
StatusCode
TileDigitsContByteStreamTool::convert
(
DIGITS
* digitsContainer,
FullEventAssembler<TileHid2RESrcID>
*fea)
const
71
{
72
FullEventAssembler<TileHid2RESrcID>::RODDATA
* theROD;
73
74
SG::ReadCondHandle<TileHid2RESrcID>
hid2re{
m_hid2RESrcIDKey
};
75
76
std::map<uint32_t, TileROD_Encoder> mapEncoder;
77
78
ATH_MSG_DEBUG
(
" number of digits collections "
<< digitsContainer->
size
() <<
" "
<<
evtStore
()->proxy(digitsContainer)->name() );
79
80
int
m = 0;
81
int
n = 0;
82
uint32_t reid = 0x0;
83
84
bool
isTMDB =
evtStore
()->proxy(digitsContainer)->name() ==
"MuRcvDigitsCnt"
;
85
86
for
(
const
TileDigitsCollection
* digitsCollection : *digitsContainer) {
87
88
TileDigitsCollection::ID
frag_id = digitsCollection->identify();
89
90
if
(isTMDB){
91
reid = hid2re->getRodTileMuRcvID(frag_id);
92
mapEncoder[reid].setTileHWID(
m_tileHWID
,
m_runPeriod
);
93
}
else
{
94
reid = hid2re->getRodID(frag_id);
95
mapEncoder[reid].setTileHWID(
m_tileHWID
,
m_verbose
, 1);
96
}
97
98
for
(
const
TileDigits
* digits : *digitsCollection) {
99
mapEncoder[reid].addDigi(digits);
100
++n;
101
}
102
++m;
103
104
ATH_MSG_DEBUG
(
" Collection "
<< m <<
": "
<< MSG::hex <<
"0x"
<< frag_id
105
<<
" ROD "
<<
"0x"
<< reid
106
<<
" number of channels "
<< MSG::dec << n );
107
}
108
109
// TileROD_Encoder has collected all the channels, now can fill the ROD block data.
110
111
for
(std::pair<const uint32_t, TileROD_Encoder>& reidAndEncoder: mapEncoder) {
112
113
theROD = fea->
getRodData
(reidAndEncoder.first);
114
TileROD_Encoder
& theEncoder = reidAndEncoder.second;
115
116
// RODId is already defined so use it for the exception
117
118
if
((reidAndEncoder.first & 0xf00)) {
119
theEncoder.
fillRODTileMuRcvDigi
(*theROD);
120
}
else
{
121
if
(
m_doFragType1
) theEncoder.
fillROD1
(*theROD);
122
if
(
m_doFragType5
) theEncoder.
fillROD5D
(*theROD);
123
}
124
125
ATH_MSG_DEBUG
(
" Number words in ROD "
<< MSG::hex <<
" 0x"
<< reidAndEncoder.first << MSG::dec <<
" : "
<< theROD->size() );
126
}
127
128
return
StatusCode::SUCCESS;
129
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CLASS_DEF.h
macros to associate a CLID to a type
errorcheck.h
Helpers for checking error return status codes and reporting errors.
ReadCondHandle.h
TileDigitsCollection.h
IID_ITileDigitsContByteStreamTool
static const InterfaceID IID_ITileDigitsContByteStreamTool("TileDigitsContByteStreamTool", 1, 0)
TileDigitsContByteStreamTool.h
TileDigitsContainer.h
TileDigits.h
TileHWID.h
TileROD_Decoder.h
TileROD_Encoder.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition
FullEventAssembler.h:38
FullEventAssembler::RODDATA
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
Definition
FullEventAssembler.h:52
FullEventAssembler::getRodData
RODDATA * getRodData(uint32_t id)
get a block of ROD data
IdentifiableContainerMT::size
size_t size() const
Duplicate of fullSize for backwards compatability.
Definition
IdentifiableContainerMT.h:209
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
TileCablingService
Definition
TileCablingService.h:23
TileCablingService::getInstance
static const TileCablingService * getInstance()
get pointer to service instance
Definition
TileCablingService.cxx:24
TileDigitsCollection
Definition
TileDigitsCollection.h:18
TileDigitsCollection::ID
MyBase::ID ID
Definition
TileDigitsCollection.h:23
TileDigitsContByteStreamTool::interfaceID
static const InterfaceID & interfaceID()
AlgTool InterfaceID.
Definition
TileDigitsContByteStreamTool.cxx:29
TileDigitsContByteStreamTool::TileDigitsContByteStreamTool
TileDigitsContByteStreamTool(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition
TileDigitsContByteStreamTool.cxx:34
TileDigitsContByteStreamTool::convert
StatusCode convert(DIGITS *cont, FullEventAssembler< TileHid2RESrcID > *fea) const
Provides conversion from TileDigitsContainer to BS.
Definition
TileDigitsContByteStreamTool.cxx:70
TileDigitsContByteStreamTool::m_doFragType5
Gaudi::Property< bool > m_doFragType5
Definition
TileDigitsContByteStreamTool.h:57
TileDigitsContByteStreamTool::m_tileHWID
const TileHWID * m_tileHWID
Definition
TileDigitsContByteStreamTool.h:63
TileDigitsContByteStreamTool::m_doFragType1
Gaudi::Property< bool > m_doFragType1
Definition
TileDigitsContByteStreamTool.h:56
TileDigitsContByteStreamTool::finalize
virtual StatusCode finalize() override
Definition
TileDigitsContByteStreamTool.cxx:65
TileDigitsContByteStreamTool::m_verbose
bool m_verbose
Definition
TileDigitsContByteStreamTool.h:65
TileDigitsContByteStreamTool::DIGITS
TileDigitsContainer DIGITS
Definition
TileDigitsContByteStreamTool.h:32
TileDigitsContByteStreamTool::initialize
virtual StatusCode initialize() override
Definition
TileDigitsContByteStreamTool.cxx:48
TileDigitsContByteStreamTool::m_initializeForWriting
Gaudi::Property< bool > m_initializeForWriting
Definition
TileDigitsContByteStreamTool.h:58
TileDigitsContByteStreamTool::~TileDigitsContByteStreamTool
virtual ~TileDigitsContByteStreamTool()
destructor
Definition
TileDigitsContByteStreamTool.cxx:46
TileDigitsContByteStreamTool::m_runPeriod
int m_runPeriod
Definition
TileDigitsContByteStreamTool.h:66
TileDigitsContByteStreamTool::m_hid2RESrcIDKey
SG::ReadCondHandleKey< TileHid2RESrcID > m_hid2RESrcIDKey
Definition
TileDigitsContByteStreamTool.h:60
TileDigits
Definition
TileDigits.h:30
TileROD_Encoder
Provides conversion from TileRawChannel, TileL2 and TMDB (digits,MF raw channel,decision) to ROD form...
Definition
TileROD_Encoder.h:46
TileROD_Encoder::fillROD5D
void fillROD5D(std::vector< uint32_t > &v)
Definition
TileROD_Encoder.cxx:525
TileROD_Encoder::fillROD1
void fillROD1(std::vector< uint32_t > &v)
convert all TileDigits in the current list to a vector of 32bit words
Definition
TileROD_Encoder.cxx:494
TileROD_Encoder::fillRODTileMuRcvDigi
void fillRODTileMuRcvDigi(std::vector< uint32_t > &v)
convert the TMDB objects into a vector of 32bit words: 8bit words/digit, 16bit words/RC,...
Definition
TileROD_Encoder.cxx:533
type
Generated on
for ATLAS Offline Software by
1.17.0