ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigSteer
TrigHLTResultByteStream
src
HLTResultByteStreamCnv.cxx
Go to the documentation of this file.
1
// -*- c++ -*-
2
3
/*
4
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
#include "
HLTResultByteStreamCnv.h
"
8
#include "
HLTResultByteStreamTool.h
"
9
10
#include "
ByteStreamData/ROBData.h
"
11
#include "
ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h
"
12
#include "
ByteStreamCnvSvcBase/ByteStreamAddress.h
"
13
#include "
ByteStreamCnvSvcBase/IROBDataProviderSvc.h
"
14
15
#include "GaudiKernel/MsgStream.h"
16
#include "GaudiKernel/StatusCode.h"
17
#include "GaudiKernel/DataObject.h"
18
#include "GaudiKernel/IRegistry.h"
19
20
#include "
TrigSteeringEvent/HLTResult.h
"
21
22
#include "
StoreGate/StoreGateSvc.h
"
23
#include "
AthenaKernel/CLASS_DEF.h
"
24
25
// Tool
26
#include "GaudiKernel/IToolSvc.h"
27
28
#include <map>
29
33
34
HLT::HLTResultByteStreamCnv::HLTResultByteStreamCnv
(ISvcLocator* svcloc) :
35
Converter
(
storageType
(),
classID
(),svcloc),
36
m_log
(0),
37
m_tool
(
"HLT::HLTResultByteStreamTool"
),
38
m_ByteStreamEventAccess
(
"ByteStreamCnvSvc"
,
"HLTResultByteStreamCnv"
),
39
m_robDataProvider
(
"ROBDataProviderSvc"
,
"HLTResultByteStreamCnv"
)
40
{ }
41
45
CLID
HLT::HLTResultByteStreamCnv::classID
()
46
{
47
return
ClassID_traits<HLT::HLTResult>::ID
() ;
48
}
49
50
long
HLT::HLTResultByteStreamCnv::storageType
()
51
{
52
return
ByteStreamAddress::storageType
();
53
}
54
55
StatusCode
HLT::HLTResultByteStreamCnv::finalize
()
56
{
57
delete
m_log
;
58
return
StatusCode::SUCCESS;
59
}
60
61
65
StatusCode
HLT::HLTResultByteStreamCnv::initialize
()
66
{
67
StatusCode
sc
= Converter::initialize();
68
if
(StatusCode::SUCCESS!=
sc
)
69
{
70
return
sc
;
71
}
72
73
m_log
=
new
MsgStream(msgSvc(),
"HLTResultByteStreamCnv"
);
74
75
(*m_log) << MSG::DEBUG <<
"HLTResultByteStreamCnv in initialize() "
<<
endmsg
;
76
77
//Get ByteStreamCnvSvc
78
if
(
m_ByteStreamEventAccess
.retrieve().isFailure() ) {
79
(*m_log) << MSG::FATAL <<
"failed to retrieve ByteStreamEventAccess service: "
80
<<
m_ByteStreamEventAccess
<<
endmsg
;
81
return
StatusCode::FAILURE;
82
}
else
{
83
(*m_log) << MSG::DEBUG <<
"successfully retrieved ByteStreamEventAccess service: "
84
<<
m_ByteStreamEventAccess
<<
endmsg
;
85
}
86
// if(StatusCode::SUCCESS != service("ByteStreamCnvSvc",m_ByteStreamEventAccess)){
87
// (*m_log) << MSG::ERROR << " Can't get ByteStreamEventAccess interface " << endmsg;
88
// return StatusCode::FAILURE;
89
// }
90
91
92
93
// Retrieve Tool
94
// IToolSvc* toolSvc;
95
// if(StatusCode::SUCCESS != service("ToolSvc",toolSvc)){
96
// (*m_log) << MSG::ERROR << " Can't get ToolSvc " << endmsg;
97
// return StatusCode::FAILURE;
98
// }
99
100
// std::string toolType = "HLT::HLTResultByteStreamTool" ;
101
// if(StatusCode::SUCCESS !=toolSvc->retrieveTool(toolType,m_tool))
102
// {
103
// (*m_log) << MSG::ERROR << " Can't get ByteStreamTool " << endmsg;
104
// return StatusCode::FAILURE;
105
// }
106
// get the converter tool:
107
if
(
m_tool
.retrieve().isFailure() ) {
108
(*m_log) << MSG::FATAL <<
"failed to retrieve converter tool : "
109
<<
m_tool
<<
endmsg
;
110
return
StatusCode::FAILURE;
111
}
else
{
112
(*m_log) << MSG::DEBUG <<
"successfully retrieved converter tool: "
113
<<
m_tool
<<
endmsg
;
114
}
115
116
117
// Get ROBDataProvider
118
if
(
m_robDataProvider
.retrieve().isFailure()) {
119
(*m_log) << MSG::FATAL <<
"failed to retrieve ROBDataProviderSvc service: "
120
<<
m_robDataProvider
<<
endmsg
;
121
return
StatusCode::FAILURE;
122
}
123
(*m_log) << MSG::DEBUG <<
"successfully retrieved ROBDataProviderSvc service: "
124
<<
m_robDataProvider
<<
endmsg
;
125
126
// IService* robSvc ;
127
// sc = serviceLocator()->getService("ROBDataProviderSvc", robSvc);
128
// if(sc != StatusCode::SUCCESS ) {
129
// (*m_log)<<MSG::ERROR << " Cant get ROBDataProviderSvc " <<endmsg;
130
131
// //DBG:
132
// // return sc ;
133
// return StatusCode::SUCCESS;
134
// }
135
136
// m_robDataProvider = dynamic_cast<IROBDataProviderSvc*> (robSvc);
137
// if(m_robDataProvider == 0 ) {
138
// (*m_log)<<MSG::ERROR<< " Cant cast to ROBDataProviderSvc " <<endmsg;
139
// // return StatusCode::FAILURE ;
140
// }
141
142
return
StatusCode::SUCCESS;
143
}
144
148
StatusCode
HLT::HLTResultByteStreamCnv::createObj
(IOpaqueAddress* pAddr, DataObject*& pObj)
149
{
150
HLTResult
* result =
new
HLTResult
();
151
152
ByteStreamAddress
*pBS_Addr =
dynamic_cast<
ByteStreamAddress
*
>
(pAddr);
153
if
(pBS_Addr==
nullptr
) {
154
(*m_log) << MSG::ERROR <<
" Can not cast to ByteStreamAddress "
<<
endmsg
;
155
delete
result;
156
return
StatusCode::FAILURE;
157
}
158
159
const
std::string nm = *(pBS_Addr->par()) ;
160
std::vector<ROBData> vRobData;
161
162
StatusCode
sc
=
m_tool
->convert(*
m_robDataProvider
, result, nm);
163
if
(
sc
!= StatusCode::SUCCESS) {
164
(*m_log) << MSG::ERROR <<
"Failed to create object "
<< nm <<
endmsg
;
165
return
sc
;
166
}
167
168
pObj =
SG::asStorable
(result);
169
return
sc
;
170
}
171
175
StatusCode
HLT::HLTResultByteStreamCnv::createRep
(DataObject* pObj, IOpaqueAddress*& pAddr)
176
{
177
178
HLTResult
* result = 0;
179
SG::fromStorable
(pObj, result);
180
181
if
(!result) {
182
(*m_log) << MSG::ERROR <<
" Cannot cast to HLTResult "
<<
endmsg
;
183
return
StatusCode::FAILURE;
184
}
185
186
std::string nm = pObj->registry()->name();
187
188
RawEventWrite
*
re
=
m_ByteStreamEventAccess
->getRawEvent();
189
// Convert to ByteStream
190
StatusCode
sc
=
m_tool
->convert(result,
re
, nm);
191
192
if
( pAddr !=
nullptr
) pAddr->release();
193
ByteStreamAddress
* addr =
new
ByteStreamAddress
(
classID
(), nm,
""
);
194
pAddr = addr;
195
pAddr->addRef();
196
197
return
sc
;
198
199
}
re
const std::regex re(r_e)
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
classID
static CLID classID()
ByteStreamAddress.h
ByteStreamCnvSvcBase.h
CLASS_DEF.h
macros to associate a CLID to a type
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
HLTResultByteStreamCnv.h
HLTResultByteStreamTool.h
HLTResult.h
IROBDataProviderSvc.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
ROBData.h
Defines the ROB data entity. The ROB data is an abstract entity that is used to decouple the raw even...
RawEventWrite
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::FullEventFragment RawEventWrite
data type for writing raw event
Definition
RawEvent.h:39
StoreGateSvc.h
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition
ByteStreamAddress.h:28
ByteStreamAddress::storageType
static constexpr long storageType()
Definition
ByteStreamAddress.h:51
Converter::Converter
Converter()
Definition
Converter.h:29
HLT::HLTResultByteStreamCnv::finalize
virtual StatusCode finalize()
Gaudi finalize.
Definition
HLTResultByteStreamCnv.cxx:55
HLT::HLTResultByteStreamCnv::m_ByteStreamEventAccess
ServiceHandle< IByteStreamEventAccess > m_ByteStreamEventAccess
Gaudi helper.
Definition
HLTResultByteStreamCnv.h:93
HLT::HLTResultByteStreamCnv::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Gaudi ROB helper.
Definition
HLTResultByteStreamCnv.h:95
HLT::HLTResultByteStreamCnv::createRep
virtual StatusCode createRep(DataObject *pObj, IOpaqueAddress *&pAddr)
create bytestream from RDOs (HLTResult)
Definition
HLTResultByteStreamCnv.cxx:175
HLT::HLTResultByteStreamCnv::storageType
static long storageType()
storageType
Definition
HLTResultByteStreamCnv.cxx:50
HLT::HLTResultByteStreamCnv::m_log
MsgStream * m_log
std message stream
Definition
HLTResultByteStreamCnv.h:89
HLT::HLTResultByteStreamCnv::m_tool
ToolHandle< HLTResultByteStreamTool > m_tool
tool for conversion work
Definition
HLTResultByteStreamCnv.h:91
HLT::HLTResultByteStreamCnv::classID
static CLID classID()
CLID.
Definition
HLTResultByteStreamCnv.cxx:45
HLT::HLTResultByteStreamCnv::initialize
virtual StatusCode initialize()
Gaudi initialize.
Definition
HLTResultByteStreamCnv.cxx:65
HLT::HLTResultByteStreamCnv::createObj
virtual StatusCode createObj(IOpaqueAddress *pAddr, DataObject *&pObj)
create RDO (HLTResult) from bytestream
Definition
HLTResultByteStreamCnv.cxx:148
HLT::HLTResultByteStreamCnv::HLTResultByteStreamCnv
HLTResultByteStreamCnv(ISvcLocator *svcloc)
std Gaudi converter constructor
Definition
HLTResultByteStreamCnv.cxx:34
HLT::HLTResult
HLT::HLTResult is sumarising result of trigger decision evaluation (online/offline) It contains basic...
Definition
HLTResult.h:49
SG::fromStorable
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
Definition
StorableConversions.h:169
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