ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileSvc
TileByteStream
src
TileBeamElemContByteStreamCnv.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Gaudi includes
6
#include "GaudiKernel/StatusCode.h"
7
#include "GaudiKernel/DataObject.h"
8
#include "GaudiKernel/IRegistry.h"
9
10
// Athena includes
11
#include "
AthenaKernel/StorableConversions.h
"
12
#include "
AthenaKernel/errorcheck.h
"
13
14
#include "
ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h
"
15
#include "
ByteStreamCnvSvcBase/ByteStreamAddress.h
"
16
#include "
ByteStreamCnvSvcBase/ROBDataProviderSvc.h
"
17
#include "
ByteStreamData/RawEvent.h
"
18
19
#include "
AthenaKernel/CLASS_DEF.h
"
20
21
22
// Tile includes
23
#include "
TileByteStream/TileBeamElemContByteStreamCnv.h
"
24
#include "
TileByteStream/TileROD_Decoder.h
"
25
#include "
TileByteStream/TileHid2RESrcID.h
"
26
#include "
TileIdentifier/TileTBFrag.h
"
27
#include "
TileEvent/TileBeamElemContainer.h
"
28
29
30
31
TileBeamElemContByteStreamCnv::TileBeamElemContByteStreamCnv
(ISvcLocator* svcloc)
32
:
AthConstConverter
(
storageType
(),
classID
(), svcloc,
"TileBeamElemContByteStreamCnv"
)
33
,
m_robSvc
(
"ROBDataProviderSvc"
,
name
())
34
,
m_decoder
(
"TileROD_Decoder"
)
35
,
m_ROBID
()
36
,
m_hid2re
(nullptr)
37
{
38
}
39
40
CLID
TileBeamElemContByteStreamCnv::classID
() {
return
ClassID_traits<TileBeamElemContainer>::ID
();}
41
42
long
TileBeamElemContByteStreamCnv::storageType
() {
return
ByteStreamAddress::storageType
(); }
43
44
StatusCode
TileBeamElemContByteStreamCnv::initialize
() {
45
46
ATH_CHECK
( Converter::initialize() );
47
48
ATH_MSG_DEBUG
(
" initialize "
);
49
50
// retrieve Tool
51
ATH_CHECK
(
m_decoder
.retrieve() );
52
m_hid2re
=
m_decoder
->getHid2re();
53
54
ATH_CHECK
(
m_robSvc
.retrieve() );
55
56
m_ROBID
.clear();
57
m_ROBID
.push_back(
m_hid2re
->getRobFromFragID(
DIGI_PAR_FRAG
) );
58
m_ROBID
.push_back(
m_hid2re
->getRobFromFragID(
LASER_OBJ_FRAG
) );
59
60
return
StatusCode::SUCCESS;
61
}
62
63
64
StatusCode
TileBeamElemContByteStreamCnv::createObjConst
(IOpaqueAddress* pAddr, DataObject*& pObj)
const
65
{
66
ATH_MSG_DEBUG
(
" Executing createObj method"
);
67
68
ByteStreamAddress
* pRE_Addr{};
69
ATH_CHECK
( (pRE_Addr =
dynamic_cast<
ByteStreamAddress
*
>
(pAddr)) !=
nullptr
);
70
71
const
EventContext& ctx = pRE_Addr->
getEventContext
();
72
73
std::vector<uint32_t> robid(1);
74
robid[0] = 0;
75
std::vector<const ROBDataProviderSvc::ROBF*> robf;
76
77
// keep pointer to whole event and to CIS PAR frag internally
78
m_event =
m_robSvc
->getEvent(ctx);
79
m_robSvc
->getROBData(ctx,
m_ROBID
, robf);
80
m_robFrag = (robf.size() > 0 ) ? robf[0] : 0;
81
82
TileMutableBeamElemContainer
* cont = m_queue.get (
true
);
83
ATH_CHECK
( cont->
status
() );
84
85
// iterate over all collections in a container and fill them
86
for
(
IdentifierHash
hash : cont->
GetAllCurrentHashes
()) {
87
TileBeamElemCollection
* beamCollection = cont->
indexFindPtr
(hash);
88
beamCollection->
clear
();
89
TileBeamElemCollection::ID
collID = beamCollection->
identify
();
90
91
// find ROB
92
uint32_t newrob =
m_hid2re
->getRobFromFragID(collID);
93
if
(newrob != robid[0]) {
94
robid[0] = newrob;
95
robf.clear();
96
m_robSvc
->getROBData(ctx, robid, robf);
97
}
98
99
// unpack ROB data
100
if
(robf.size() > 0 ) {
101
m_decoder
->fillCollection(robf[0], *beamCollection);
102
}
103
}
104
105
ATH_MSG_DEBUG
(
" Creating Container "
<< *(pRE_Addr->par()) );
106
107
TileBeamElemContainer
* basecont = cont;
108
pObj =
SG::asStorable
( basecont ) ;
109
return
StatusCode::SUCCESS;
110
}
111
112
StatusCode
TileBeamElemContByteStreamCnv::createRepConst
(DataObject*
/* pObj */
, IOpaqueAddress*&
/* pAddr */
)
const
113
{
114
// No conversion from TileBeamElem to BS
115
116
ATH_MSG_ERROR
(
" Can not create BS from TileBeamElem "
);
117
118
return
StatusCode::FAILURE ;
119
}
120
121
StatusCode
TileBeamElemContByteStreamCnv::finalize
()
122
{
123
return
Converter::finalize();
124
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ByteStreamAddress.h
ByteStreamCnvSvcBase.h
CLASS_DEF.h
macros to associate a CLID to a type
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
ROBDataProviderSvc.h
RawEvent.h
StorableConversions.h
convert to and from a SG storable
TileBeamElemContByteStreamCnv.h
TileBeamElemContainer.h
TileHid2RESrcID.h
TileROD_Decoder.h
TileTBFrag.h
LASER_OBJ_FRAG
#define LASER_OBJ_FRAG
Definition
TileTBFrag.h:49
DIGI_PAR_FRAG
#define DIGI_PAR_FRAG
Definition
TileTBFrag.h:41
AthConstConverter::AthConstConverter
AthConstConverter(long storage_type, const CLID &class_type, ISvcLocator *svc, const std::string &name)
Definition
AthConstConverter.h:35
AthConstConverter::name
const std::string & name() const
Definition
AthConstConverter.h:67
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition
ByteStreamAddress.h:28
ByteStreamAddress::getEventContext
const EventContext & getEventContext() const
Definition
ByteStreamAddress.h:62
ByteStreamAddress::storageType
static constexpr long storageType()
Definition
ByteStreamAddress.h:51
IdentifiableContainerMT::GetAllCurrentHashes
virtual std::vector< IdentifierHash > GetAllCurrentHashes() const override final
Returns a collection of all hashes availiable in this IDC.
Definition
IdentifiableContainerMT.h:237
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
TileBeamElemCollection
Definition
TileBeamElemCollection.h:12
TileBeamElemCollection::ID
MyBase::ID ID
Definition
TileBeamElemCollection.h:17
TileBeamElemContByteStreamCnv::initialize
virtual StatusCode initialize() override
Definition
TileBeamElemContByteStreamCnv.cxx:44
TileBeamElemContByteStreamCnv::TileBeamElemContByteStreamCnv
TileBeamElemContByteStreamCnv(ISvcLocator *svcloc)
Definition
TileBeamElemContByteStreamCnv.cxx:31
TileBeamElemContByteStreamCnv::m_robSvc
ServiceHandle< IROBDataProviderSvc > m_robSvc
Pointer to IROBDataProviderSvc.
Definition
TileBeamElemContByteStreamCnv.h:71
TileBeamElemContByteStreamCnv::createRepConst
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
Definition
TileBeamElemContByteStreamCnv.cxx:112
TileBeamElemContByteStreamCnv::finalize
virtual StatusCode finalize() override
Definition
TileBeamElemContByteStreamCnv.cxx:121
TileBeamElemContByteStreamCnv::storageType
static long storageType()
Definition
TileBeamElemContByteStreamCnv.cxx:42
TileBeamElemContByteStreamCnv::m_decoder
ToolHandle< TileROD_Decoder > m_decoder
Pointer to TileROD_Decoder.
Definition
TileBeamElemContByteStreamCnv.h:74
TileBeamElemContByteStreamCnv::m_ROBID
std::vector< uint32_t > m_ROBID
Definition
TileBeamElemContByteStreamCnv.h:82
TileBeamElemContByteStreamCnv::createObjConst
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
Definition
TileBeamElemContByteStreamCnv.cxx:64
TileBeamElemContByteStreamCnv::classID
static CLID classID()
Definition
TileBeamElemContByteStreamCnv.cxx:40
TileBeamElemContByteStreamCnv::m_hid2re
const TileHid2RESrcID * m_hid2re
Pointer to TileHid2RESrcID.
Definition
TileBeamElemContByteStreamCnv.h:85
TileBeamElemContainer
Definition
TileBeamElemContainer.h:13
TileMutableBeamElemContainer
Definition
TileMutableBeamElemContainer.h:25
TileMutableDataContainer::status
StatusCode status() const
Return the error status from the constructors.
TileMutableDataContainer::indexFindPtr
Collection * indexFindPtr(IdentifierHash hash)
Look up a (non-const) collection via hash.
TileRawDataCollection::identify
ID identify() const
Definition
TileRawDataCollection.h:71
TileRawDataCollection::clear
virtual void clear()
SG::asStorable
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
Definition
DataObjectSharedPtr.h:31
ClassID_traits::ID
static constexpr CLID ID()
Definition
Control/AthenaKernel/AthenaKernel/ClassID_traits.h:44
Generated on
for ATLAS Offline Software by
1.17.0