ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1ResultByteStream
src
RecMuCTPIByteStreamCnv.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
6
// Gaudi/Athena include(s):
7
#include "GaudiKernel/MsgStream.h"
8
#include "
ByteStreamCnvSvcBase/ByteStreamAddress.h
"
9
#include "
ByteStreamData/ROBData.h
"
10
11
#include "
AthenaKernel/StorableConversions.h
"
12
13
// Trigger include(s):
14
#include "
TrigT1Result/MuCTPI_RIO.h
"
15
16
// Local include(s):
17
#include "
RecMuCTPIByteStreamCnv.h
"
18
23
RecMuCTPIByteStreamCnv::RecMuCTPIByteStreamCnv
( ISvcLocator* svcloc )
24
:
Converter
(
storageType
(),
classID
(), svcloc ),
25
m_tool
(
"RecMuCTPIByteStreamTool"
),
26
m_robDataProvider
(
"ROBDataProviderSvc"
,
"RecMuCTPIByteStreamCnv"
) {
27
28
}
29
34
CLID
RecMuCTPIByteStreamCnv::classID
() {
35
36
return
ClassID_traits< MuCTPI_RIO >::ID
();
37
38
}
39
40
long
RecMuCTPIByteStreamCnv::storageType
() {
41
return
ByteStreamAddress::storageType
();
42
}
43
47
StatusCode
RecMuCTPIByteStreamCnv::initialize
() {
48
49
//
50
// Initialise the base class:
51
//
52
ATH_CHECK
( Converter::initialize() );
53
54
MsgStream log( msgSvc(),
"RecMuCTPIByteStreamCnv"
);
55
log << MSG::DEBUG <<
"RecMuCTPIByteStreamCnv in initialize()"
<<
endmsg
;
56
57
//
58
// Get RecMuCTPIByteStreamTool:
59
//
60
ATH_CHECK
(
m_tool
.retrieve() );
61
log << MSG::DEBUG <<
"Connected to RecMuCTPIByteStreamTool"
<<
endmsg
;
62
63
//
64
// Get ROBDataProvider:
65
//
66
ATH_CHECK
(
m_robDataProvider
.retrieve() );
67
log << MSG::DEBUG <<
"Connected to ROBDataProviderSvc"
<<
endmsg
;
68
69
return
StatusCode::SUCCESS;
70
}
71
77
StatusCode
RecMuCTPIByteStreamCnv::createObj
( IOpaqueAddress* pAddr, DataObject*& pObj ) {
78
79
MsgStream log( msgSvc(),
"RecMuCTPIByteStreamCnv"
);
80
log << MSG::DEBUG <<
"executing createObj()"
<<
endmsg
;
81
82
ByteStreamAddress
* pBS_Addr{};
83
ATH_CHECK
( (pBS_Addr =
dynamic_cast<
ByteStreamAddress
*
>
(pAddr)) !=
nullptr
);
84
85
const
EventContext& ctx = pBS_Addr->
getEventContext
();
86
87
log << MSG::DEBUG <<
" Creating Objects "
<< *( pBS_Addr->par() ) <<
endmsg
;
88
89
// get SourceID
90
const
uint32_t robId =
m_srcIdMap
.getRobID(
m_srcIdMap
.getRodID() );
91
92
std::vector< uint32_t > vID;
93
vID.push_back( robId );
94
95
// get ROB fragment
96
IROBDataProviderSvc::VROBFRAG
robFrags ;
97
m_robDataProvider
->getROBData(ctx, vID, robFrags );
98
99
// size check
100
if
( robFrags.size() == 0 ) {
101
// This is a hack - in early data the rob id of the MuCTPI was
102
// wrong, i.e. 0x76000b
103
uint32_t newRobId = robId;
104
newRobId |= 0x00000b;
105
vID[0] = ( newRobId );
106
m_robDataProvider
->getROBData(ctx, vID, robFrags );
107
// size check
108
if
( robFrags.size() != 1 ) {
109
log << MSG::WARNING <<
" Number of ROB fragments for source ROB ID "
<< MSG::hex << newRobId <<
" (ROD ID "
110
<<
m_srcIdMap
.getRodID() << MSG::dec <<
") is "
<< robFrags.size() <<
endmsg
;
111
MuCTPI_RIO
* result =
new
MuCTPI_RIO
;
112
pObj =
SG::asStorable
( result ) ;
113
return
StatusCode::SUCCESS;
114
}
115
}
116
117
IROBDataProviderSvc::VROBFRAG::const_iterator it = robFrags.begin();
118
MuCTPI_RIO
* result{};
119
// Convert to Object
120
auto
sc
=
m_tool
->convert(
ROBData
( *it ).
getROBFragment
(), result ) ;
121
if
(
sc
.isFailure()){
122
log << MSG::ERROR<<
"RecMuCTPIByteStreamCnv::createObj failed."
<<
endmsg
;
123
delete
result;
//object new'ed in convert
124
return
sc
;
125
}
126
pObj =
SG::asStorable
( result ) ;
127
128
return
StatusCode::SUCCESS;
129
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ByteStreamAddress.h
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
MuCTPI_RIO.h
ROBData.h
Defines the ROB data entity. The ROB data is an abstract entity that is used to decouple the raw even...
ROBData
ROBData_T< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType > ROBData
Definition
ROBData.h:225
RecMuCTPIByteStreamCnv.h
StorableConversions.h
convert to and from a SG storable
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
Converter::Converter
Converter()
Definition
Converter.h:29
IROBDataProviderSvc::VROBFRAG
std::vector< const ROBF * > VROBFRAG
Definition
IROBDataProviderSvc.h:25
MuCTPI_RIO
Reconstruction Input Object of the MuCTPI hardware and simulation.
Definition
MuCTPI_RIO.h:43
ROBData_T::getROBFragment
const ROBFragment * getROBFragment() const
Return the ROBFragment.
Definition
ROBData.h:184
RecMuCTPIByteStreamCnv::initialize
virtual StatusCode initialize() override
Function connecting to all the needed services/tools.
Definition
RecMuCTPIByteStreamCnv.cxx:47
RecMuCTPIByteStreamCnv::m_tool
ToolHandle< RecMuCTPIByteStreamTool > m_tool
Tool doing the actual conversion.
Definition
RecMuCTPIByteStreamCnv.h:56
RecMuCTPIByteStreamCnv::storageType
static long storageType()
Function needed by the framework.
Definition
RecMuCTPIByteStreamCnv.cxx:40
RecMuCTPIByteStreamCnv::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Service used when reading the BS data.
Definition
RecMuCTPIByteStreamCnv.h:62
RecMuCTPIByteStreamCnv::classID
static CLID classID()
Function needed by the framework.
Definition
RecMuCTPIByteStreamCnv.cxx:34
RecMuCTPIByteStreamCnv::RecMuCTPIByteStreamCnv
RecMuCTPIByteStreamCnv(ISvcLocator *svcloc)
Standard constructor.
Definition
RecMuCTPIByteStreamCnv.cxx:23
RecMuCTPIByteStreamCnv::m_srcIdMap
MuCTPISrcIdMap m_srcIdMap
Object storing the various IDs of the MuCTPI fragment.
Definition
RecMuCTPIByteStreamCnv.h:59
RecMuCTPIByteStreamCnv::createObj
virtual StatusCode createObj(IOpaqueAddress *pAddr, DataObject *&pObj) override
Function creating the MuCTPI_RIO object from a MuCTPI ROB fragment.
Definition
RecMuCTPIByteStreamCnv.cxx:77
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