ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArByteStream
src
LArCalibDigitContByteStreamCnv.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
#include "
LArByteStream/LArCalibDigitContByteStreamCnv.h
"
6
#include "
LArByteStream/LArRawDataContByteStreamTool.h
"
7
8
#include "
ByteStreamCnvSvcBase/IByteStreamCnvSvc.h
"
9
#include "
ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h
"
10
#include "
ByteStreamCnvSvcBase/ByteStreamAddress.h
"
11
#include "
ByteStreamCnvSvcBase/IROBDataProviderSvc.h
"
12
#include "
ByteStreamData/RawEvent.h
"
13
14
#include "
LArRawEvent/LArCalibDigitContainer.h
"
15
#include "
LArRecConditions/LArCalibLineMapping.h
"
16
#include "
LArCabling/LArOnOffIdMapping.h
"
17
18
#include "
StoreGate/ReadCondHandle.h
"
19
#include "
AthenaKernel/StorableConversions.h
"
20
21
//STL-Stuff
22
#include <map>
23
#include <iostream>
24
25
26
LArCalibDigitContByteStreamCnv::LArCalibDigitContByteStreamCnv
(ISvcLocator* svcloc) :
27
AthConstConverter
(
storageType
(),
classID
(),svcloc,
"LArCalibDigitContByteStreamCnv"
),
28
m_tool
(
"LArRawDataContByteStreamTool"
),
29
m_rdpSvc
(
"ROBDataProviderSvc"
,
name
()),
30
m_byteStreamCnvSvc
(
"ByteStreamCnvSvc"
,
name
()),
31
m_calibLineMappingKey
(
"LArCalibLineMap"
),
32
m_onOffIdMappingKey
(
"LArOnOffIdMap"
)
33
{}
34
35
LArCalibDigitContByteStreamCnv::~LArCalibDigitContByteStreamCnv
() {
36
}
37
38
CLID
LArCalibDigitContByteStreamCnv::classID
(){
39
return
ClassID_traits<LArCalibDigitContainer>::ID
() ;
40
}
41
42
43
StatusCode
44
LArCalibDigitContByteStreamCnv::initialize
()
45
{
46
ATH_CHECK
( AthConstConverter::initialize() );
47
48
if
(
m_rdpSvc
.retrieve().isFailure()) {
49
ATH_MSG_WARNING
(
" Can't get ByteStreamInputSvc interface Reading of ByteStream Data not possible. "
);
50
}
51
52
ATH_CHECK
(
m_byteStreamCnvSvc
.retrieve() );
53
54
ATH_CHECK
(
m_tool
.retrieve() );
55
ATH_CHECK
(
m_calibLineMappingKey
.initialize() );
56
ATH_CHECK
(
m_onOffIdMappingKey
.initialize() );
57
58
return
StatusCode::SUCCESS;
59
}
60
61
StatusCode
62
LArCalibDigitContByteStreamCnv::createObjConst
(IOpaqueAddress* pAddr, DataObject*& pObj)
const
63
{
//Convert Digits from ByteStream to StoreGate
64
ATH_MSG_VERBOSE
(
"Executing CreateObj method for LArCalibDigitContainer "
);
65
66
if
(!
m_rdpSvc
) {
67
ATH_MSG_ERROR
(
" ROBDataProviderSvc not loaded. Can't read ByteStream."
);
68
return
StatusCode::FAILURE;
69
}
70
71
ByteStreamAddress
* pRE_Addr{};
72
ATH_CHECK
( (pRE_Addr =
dynamic_cast<
ByteStreamAddress
*
>
(pAddr)) !=
nullptr
);
73
74
const
EventContext& ctx = pRE_Addr->
getEventContext
();
75
const
RawEvent
*
re
=
m_rdpSvc
->getEvent(ctx);
76
if
(!
re
) {
77
ATH_MSG_ERROR
(
"Could not get raw event from ByteStreamInputSvc"
);
78
return
StatusCode::FAILURE;
79
}
80
const
std::string& key = *(pAddr->par());
// Get key used in the StoreGateSvc::retrieve function
81
// get gain an pass to convert function.
82
// get gain and pass to convert function.
83
CaloGain::CaloGain
gain=
CaloGain::LARNGAIN
;
//At this place, LARNGAINS means Automatic gain.
84
if
(key==
"HIGH"
)
85
gain=
CaloGain::LARHIGHGAIN
;
86
else
if
(key==
"MEDIUM"
)
87
gain=
CaloGain::LARMEDIUMGAIN
;
88
else
if
(key==
"LOW"
)
89
gain=
CaloGain::LARLOWGAIN
;
90
// Convert the RawEvent to LArCalibDigitContainer
91
ATH_MSG_DEBUG
(
"Converting LArCalibDigits (from ByteStream). key="
<< key <<
" ,gain="
<< gain );
92
93
SG::ReadCondHandle<LArCalibLineMapping>
calibLineMapping (
m_calibLineMappingKey
);
94
SG::ReadCondHandle<LArOnOffIdMapping>
onOffIdMapping (
m_onOffIdMappingKey
);
95
if
(!*calibLineMapping || !*onOffIdMapping) {
96
ATH_MSG_ERROR
(
"Cannot access mappings"
);
97
return
StatusCode::FAILURE;
98
}
99
100
LArCalibDigitContainer
*CalibDigitContainer=
new
LArCalibDigitContainer
;
101
StatusCode
sc
=
m_tool
->convert(
re
,CalibDigitContainer,gain,
102
**calibLineMapping,
103
**onOffIdMapping);
104
if
(
sc
!=StatusCode::SUCCESS) {
105
ATH_MSG_WARNING
(
"Conversion tool returned an error. LArCalibDigitContainer might be empty."
);
106
}
107
108
pObj =
SG::asStorable
(CalibDigitContainer) ;
109
return
StatusCode::SUCCESS;
110
}
111
112
StatusCode
113
LArCalibDigitContByteStreamCnv::createRepConst
(DataObject* pObj, IOpaqueAddress*& pAddr)
const
114
{
// convert LArDigits from StoreGate into ByteStream
115
ATH_MSG_VERBOSE
(
"Execute CreateRep method of LArCalibDigitContainer "
);
116
// Get Full Event Assembler
117
FullEventAssembler<RodRobIdMap>
*fea = 0;
118
ATH_CHECK
(
m_byteStreamCnvSvc
->getFullEventAssembler(fea,
"LAr"
) );
119
120
LArCalibDigitContainer
* CalibDigitContainer=0;
121
if
(!
SG::fromStorable
(pObj, CalibDigitContainer) || !CalibDigitContainer) {
122
ATH_MSG_ERROR
(
"Cannot get LArCalibDigitContainer for DataObject. Key="
<< pObj->registry()->name() );
123
return
StatusCode::FAILURE;
124
}
125
126
std::string nm = pObj->registry()->name();
127
pAddr =
new
ByteStreamAddress
(
classID
(),nm,
""
);
128
129
ATH_CHECK
(
m_tool
->WriteLArCalibDigits(CalibDigitContainer, *fea) );
130
131
return
StatusCode::SUCCESS;
132
}
re
const std::regex re(r_e)
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x,...)
Definition
AthMsgStreamMacros.h:43
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x,...)
Definition
AthMsgStreamMacros.h:47
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x,...)
Definition
AthMsgStreamMacros.h:46
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x,...)
Definition
AthMsgStreamMacros.h:42
ByteStreamAddress.h
ByteStreamCnvSvcBase.h
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
IByteStreamCnvSvc.h
IROBDataProviderSvc.h
LArCalibDigitContByteStreamCnv.h
LArCalibDigitContainer.h
LArCalibLineMapping.h
LArOnOffIdMapping.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
LArRawDataContByteStreamTool.h
Helper tool for conversion of raw data classes to/from LArByteStream.
RawEvent.h
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition
RawEvent.h:37
ReadCondHandle.h
StorableConversions.h
convert to and from a SG storable
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
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition
FullEventAssembler.h:38
LArCalibDigitContByteStreamCnv::createRepConst
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
Definition
LArCalibDigitContByteStreamCnv.cxx:113
LArCalibDigitContByteStreamCnv::classID
static CLID classID()
Definition
LArCalibDigitContByteStreamCnv.cxx:38
LArCalibDigitContByteStreamCnv::m_tool
ToolHandle< BYTESTREAMTOOL > m_tool
Definition
LArCalibDigitContByteStreamCnv.h:55
LArCalibDigitContByteStreamCnv::m_onOffIdMappingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_onOffIdMappingKey
Definition
LArCalibDigitContByteStreamCnv.h:59
LArCalibDigitContByteStreamCnv::LArCalibDigitContByteStreamCnv
LArCalibDigitContByteStreamCnv(ISvcLocator *svcloc)
Definition
LArCalibDigitContByteStreamCnv.cxx:26
LArCalibDigitContByteStreamCnv::storageType
static long storageType()
Definition
LArCalibDigitContByteStreamCnv.h:51
LArCalibDigitContByteStreamCnv::initialize
virtual StatusCode initialize() override
Definition
LArCalibDigitContByteStreamCnv.cxx:44
LArCalibDigitContByteStreamCnv::m_byteStreamCnvSvc
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
Definition
LArCalibDigitContByteStreamCnv.h:57
LArCalibDigitContByteStreamCnv::m_calibLineMappingKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibLineMappingKey
Definition
LArCalibDigitContByteStreamCnv.h:58
LArCalibDigitContByteStreamCnv::m_rdpSvc
ServiceHandle< IROBDataProviderSvc > m_rdpSvc
Definition
LArCalibDigitContByteStreamCnv.h:56
LArCalibDigitContByteStreamCnv::createObjConst
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
Definition
LArCalibDigitContByteStreamCnv.cxx:62
LArCalibDigitContByteStreamCnv::~LArCalibDigitContByteStreamCnv
virtual ~LArCalibDigitContByteStreamCnv()
Definition
LArCalibDigitContByteStreamCnv.cxx:35
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition
LArCalibDigitContainer.h:19
SG::ReadCondHandle
Definition
ReadCondHandle.h:39
CaloGain::CaloGain
CaloGain
Definition
CaloGain.h:11
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition
CaloGain.h:18
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition
CaloGain.h:18
CaloGain::LARNGAIN
@ LARNGAIN
Definition
CaloGain.h:19
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition
CaloGain.h:18
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