ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArByteStream
src
LArRawSCDataReadingAlg.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 "
LArRawSCDataReadingAlg.h
"
6
#include "
LArIdentifier/LArOnlineID.h
"
7
#include "
ByteStreamCnvSvcBase/IROBDataProviderSvc.h
"
8
#include "
LArRawEvent/LArDigitContainer.h
"
9
#include "
LArRawEvent/LArRawSCContainer.h
"
10
#include "
LArRawEvent/LArLATOMEHeaderContainer.h
"
11
#include "eformat/Version.h"
12
#include "eformat/index.h"
13
14
15
LArRawSCDataReadingAlg::LArRawSCDataReadingAlg
(
const
std::string& name, ISvcLocator* pSvcLocator) :
16
AthReentrantAlgorithm
(name, pSvcLocator),
17
m_latomeDecoder
(
"LArByteStream/LATOMEDecoder"
, this) {
18
19
declareProperty
(
"LATOMEDecoder"
,
m_latomeDecoder
);
20
}
21
22
23
StatusCode
LArRawSCDataReadingAlg::initialize
() {
24
25
m_doAdc
= !
m_adcCollKey
.empty();
26
ATH_CHECK
(
m_adcCollKey
.initialize(
m_doAdc
));
27
28
m_doAdcBas
= !
m_adcBasCollKey
.empty();
29
ATH_CHECK
(
m_adcBasCollKey
.initialize(
m_doAdcBas
));
30
31
m_doEt
= !
m_etCollKey
.empty();
32
ATH_CHECK
(
m_etCollKey
.initialize(
m_doEt
));
33
34
m_doEtId
= !
m_etIdCollKey
.empty();
35
ATH_CHECK
(
m_etIdCollKey
.initialize(
m_doEtId
));
36
37
m_doLATOMEHeader
= !
m_latomeHeaderCollKey
.empty();
38
ATH_CHECK
(
m_latomeHeaderCollKey
.initialize(
m_doLATOMEHeader
));
39
40
ATH_CHECK
(
m_mapKey
.initialize() );
41
42
ATH_CHECK
(
m_robDataProviderSvc
.retrieve());
43
ATH_CHECK
(
detStore
()->retrieve(
m_onlineId
,
"LArOnlineID"
));
44
45
ATH_CHECK
(
m_latomeDecoder
.retrieve());
46
47
return
StatusCode::SUCCESS;
48
}
49
50
51
StatusCode
LArRawSCDataReadingAlg::execute
(
const
EventContext& ctx)
const
{
52
53
LArDigitContainer
* adc_coll =
nullptr
;
54
LArDigitContainer
* adc_bas_coll =
nullptr
;
55
LArRawSCContainer
* et_coll =
nullptr
;
56
LArRawSCContainer
* et_id_coll =
nullptr
;
57
LArLATOMEHeaderContainer
* latome_header_coll =
nullptr
;
58
59
if
(
m_doAdc
) {
60
SG::WriteHandle<LArDigitContainer>
adcHdl(
m_adcCollKey
, ctx);
61
ATH_CHECK
(adcHdl.
record
(std::make_unique<LArDigitContainer>()));
62
adc_coll = adcHdl.
ptr
();
63
adc_coll->
reserve
(1000);
64
}
65
66
if
(
m_doAdcBas
) {
67
SG::WriteHandle<LArDigitContainer>
adcBasHdl(
m_adcBasCollKey
, ctx);
68
ATH_CHECK
(adcBasHdl.
record
(std::make_unique<LArDigitContainer>()));
69
adc_bas_coll = adcBasHdl.
ptr
();
70
adc_bas_coll->
reserve
(1000);
71
}
72
73
if
(
m_doEt
) {
74
SG::WriteHandle<LArRawSCContainer>
etHdl(
m_etCollKey
, ctx);
75
ATH_CHECK
(etHdl.
record
(std::make_unique<LArRawSCContainer>()));
76
et_coll = etHdl.
ptr
();
77
et_coll->
reserve
(1000);
78
}
79
80
if
(
m_doEtId
) {
81
SG::WriteHandle<LArRawSCContainer>
etIdHdl(
m_etIdCollKey
, ctx);
82
ATH_CHECK
(etIdHdl.
record
(std::make_unique<LArRawSCContainer>()));
83
et_id_coll = etIdHdl.
ptr
();
84
et_id_coll->
reserve
(1000);
85
}
86
87
if
(
m_doLATOMEHeader
) {
88
SG::WriteHandle<LArLATOMEHeaderContainer>
latomeHeaderHdl(
m_latomeHeaderCollKey
, ctx);
89
ATH_CHECK
(latomeHeaderHdl.
record
(std::make_unique<LArLATOMEHeaderContainer>()));
90
latome_header_coll = latomeHeaderHdl.
ptr
();
91
latome_header_coll->
reserve
(1000);
92
}
93
if
(
m_robList
.empty() )
return
StatusCode::SUCCESS;
94
95
// Get the mapping
96
SG::ReadCondHandle<LArLATOMEMapping>
mapHdl(
m_mapKey
, ctx);
97
const
LArLATOMEMapping
*
map
=*mapHdl;
98
if
(!
map
) {
99
ATH_MSG_ERROR
(
"Do not have LATOME mapping with the key "
<<
m_mapKey
.key());
100
return
StatusCode::FAILURE;
101
}
102
103
//Get the raw event
104
//
105
106
std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> robFrags;
107
m_robDataProviderSvc
->getROBData( ctx,
m_robList
, robFrags );
108
109
// Call the converter
110
StatusCode
sc
=
m_latomeDecoder
->convert(robFrags,
map
,
111
adc_coll, adc_bas_coll, et_coll, et_id_coll,
112
latome_header_coll);
113
if
(
sc
!= StatusCode::SUCCESS)
114
ATH_MSG_WARNING
(
"ERROR LATOMEDecoder tool returned an error. LAr SC containers might be garbage"
);
115
116
return
StatusCode::SUCCESS;
117
}
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_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
IROBDataProviderSvc.h
LArDigitContainer.h
LArLATOMEHeaderContainer.h
LArOnlineID.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
LArRawSCContainer.h
LArRawSCDataReadingAlg.h
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
LArDigitContainer
Container class for LArDigit.
Definition
LArDigitContainer.h:24
LArLATOMEHeaderContainer
Container class for LArLATOMEHeader.
Definition
LArLATOMEHeaderContainer.h:19
LArLATOMEMapping
class to provide SC mapping
Definition
LArLATOMEMapping.h:28
LArRawSCContainer
Container class for LArRawSC.
Definition
LArRawSCContainer.h:17
LArRawSCDataReadingAlg::m_mapKey
SG::ReadCondHandleKey< LArLATOMEMapping > m_mapKey
Definition
LArRawSCDataReadingAlg.h:40
LArRawSCDataReadingAlg::m_adcBasCollKey
SG::WriteHandleKey< LArDigitContainer > m_adcBasCollKey
Definition
LArRawSCDataReadingAlg.h:43
LArRawSCDataReadingAlg::m_doEt
bool m_doEt
Definition
LArRawSCDataReadingAlg.h:62
LArRawSCDataReadingAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition
LArRawSCDataReadingAlg.cxx:51
LArRawSCDataReadingAlg::m_doAdc
bool m_doAdc
Definition
LArRawSCDataReadingAlg.h:60
LArRawSCDataReadingAlg::m_adcCollKey
SG::WriteHandleKey< LArDigitContainer > m_adcCollKey
Definition
LArRawSCDataReadingAlg.h:42
LArRawSCDataReadingAlg::m_robList
Gaudi::Property< std::vector< uint32_t > > m_robList
Definition
LArRawSCDataReadingAlg.h:51
LArRawSCDataReadingAlg::m_doEtId
bool m_doEtId
Definition
LArRawSCDataReadingAlg.h:63
LArRawSCDataReadingAlg::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition
LArRawSCDataReadingAlg.h:49
LArRawSCDataReadingAlg::initialize
StatusCode initialize() override
Definition
LArRawSCDataReadingAlg.cxx:23
LArRawSCDataReadingAlg::m_doAdcBas
bool m_doAdcBas
Definition
LArRawSCDataReadingAlg.h:61
LArRawSCDataReadingAlg::m_onlineId
const LArOnlineID * m_onlineId
Definition
LArRawSCDataReadingAlg.h:54
LArRawSCDataReadingAlg::m_etCollKey
SG::WriteHandleKey< LArRawSCContainer > m_etCollKey
Definition
LArRawSCDataReadingAlg.h:44
LArRawSCDataReadingAlg::m_etIdCollKey
SG::WriteHandleKey< LArRawSCContainer > m_etIdCollKey
Definition
LArRawSCDataReadingAlg.h:45
LArRawSCDataReadingAlg::m_latomeDecoder
ToolHandle< LArLATOMEDecoder > m_latomeDecoder
Definition
LArRawSCDataReadingAlg.h:57
LArRawSCDataReadingAlg::m_latomeHeaderCollKey
SG::WriteHandleKey< LArLATOMEHeaderContainer > m_latomeHeaderCollKey
Definition
LArRawSCDataReadingAlg.h:46
LArRawSCDataReadingAlg::LArRawSCDataReadingAlg
LArRawSCDataReadingAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LArRawSCDataReadingAlg.cxx:15
LArRawSCDataReadingAlg::m_doLATOMEHeader
bool m_doLATOMEHeader
Definition
LArRawSCDataReadingAlg.h:64
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
map
STL class.
Generated on
for ATLAS Offline Software by
1.17.0