ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArByteStream
src
LArRawSCCalibDataReadingAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArRawSCCalibDataReadingAlg.h
"
6
#include "
LArIdentifier/LArOnlineID.h
"
7
#include "
ByteStreamCnvSvcBase/IROBDataProviderSvc.h
"
8
#include "
LArRawEvent/LArDigitContainer.h
"
9
#include "
LArRawEvent/LArAccumulatedDigitContainer.h
"
10
#include "
LArRawEvent/LArAccumulatedCalibDigitContainer.h
"
11
#include "
LArRawEvent/LArLATOMEHeaderContainer.h
"
12
#include "eformat/Version.h"
13
#include "eformat/index.h"
14
15
16
17
StatusCode
LArRawSCCalibDataReadingAlg::initialize
() {
18
19
20
if
(
m_accDigitKey
.key().size()>0) {
21
ATH_CHECK
(
m_accDigitKey
.initialize());
22
m_doAccDigits
=
true
;
23
}
24
else
{
25
m_doAccDigits
=
false
;
26
}
27
28
if
(
m_accCalibDigitKey
.key().size()>0) {
29
ATH_CHECK
(
m_accCalibDigitKey
.initialize());
30
m_doAccCalibDigits
=
true
;
31
}
32
else
{
33
m_doAccCalibDigits
=
false
;
34
}
35
36
if
(
m_latomeHeaderCollKey
.key().size()>0) {
37
ATH_CHECK
(
m_latomeHeaderCollKey
.initialize());
38
m_doLATOMEHeader
=
true
;
39
}
40
else
{
41
m_doLATOMEHeader
=
false
;
42
}
43
44
45
if
(!
m_doAccDigits
&& !
m_doAccCalibDigits
) {
46
ATH_MSG_FATAL
(
"Needs ether Digits or CalibDigits or AccDigits or AccCalibDigit Key"
);
47
return
StatusCode::FAILURE;
48
}
49
50
if
(
m_doAccDigits
&&
m_doAccCalibDigits
) {
51
ATH_MSG_FATAL
(
"Could not have both CalibDigits, AccCalibDigits Key"
);
52
return
StatusCode::FAILURE;
53
}
54
55
ATH_CHECK
(
m_mapKey
.initialize() );
56
ATH_CHECK
(
m_cablingKey
.initialize() );
57
ATH_CHECK
(
m_calibMapKey
.initialize() );
58
59
ATH_CHECK
(
m_robDataProviderSvc
.retrieve());
60
ATH_CHECK
(
detStore
()->retrieve(
m_onlineId
,
"LArOnlineID"
));
61
62
ATH_CHECK
(
m_latomeDecoder
.retrieve());
63
64
65
return
StatusCode::SUCCESS;
66
}
67
68
StatusCode
LArRawSCCalibDataReadingAlg::execute
(
const
EventContext& ctx)
const
{
69
LArAccumulatedDigitContainer
* accdigits=
nullptr
;
70
LArAccumulatedCalibDigitContainer
* caccdigits=
nullptr
;
71
LArLATOMEHeaderContainer
* latome_header_coll =
nullptr
;
72
73
74
if
(
m_doAccDigits
) {
75
SG::WriteHandle<LArAccumulatedDigitContainer>
accdigitsHdl(
m_accDigitKey
,ctx);
76
ATH_CHECK
(accdigitsHdl.
record
(std::make_unique<LArAccumulatedDigitContainer>()));
77
accdigits=accdigitsHdl.
ptr
();
78
accdigits->
reserve
(35000);
//Enough space for the full calo
79
}
80
81
if
(
m_doAccCalibDigits
) {
82
SG::WriteHandle<LArAccumulatedCalibDigitContainer>
caccdigitsHdl(
m_accCalibDigitKey
,ctx);
83
ATH_CHECK
(caccdigitsHdl.
record
(std::make_unique<LArAccumulatedCalibDigitContainer>()));
84
caccdigits=caccdigitsHdl.
ptr
();
85
caccdigits->
reserve
(35000);
//Enough space for the full calo
86
}
87
88
if
(
m_doLATOMEHeader
) {
89
SG::WriteHandle<LArLATOMEHeaderContainer>
latomeHeaderHdl(
m_latomeHeaderCollKey
, ctx);
90
ATH_CHECK
(latomeHeaderHdl.
record
(std::make_unique<LArLATOMEHeaderContainer>()));
91
latome_header_coll = latomeHeaderHdl.
ptr
();
92
latome_header_coll->
reserve
(120);
93
}
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
SG::ReadCondHandle<LArOnOffIdMapping>
cablingHdl{
m_cablingKey
, ctx};
104
const
LArOnOffIdMapping
*onoffmap = *cablingHdl;
105
if
(!onoffmap) {
106
ATH_MSG_ERROR
(
"Do not have mapping object "
<<
m_cablingKey
.key());
107
return
StatusCode::FAILURE;
108
}
109
110
SG::ReadCondHandle<LArCalibLineMapping>
clmapHdl(
m_calibMapKey
, ctx);
111
const
LArCalibLineMapping
*clmap=*clmapHdl;
112
if
(!clmap) {
113
ATH_MSG_ERROR
(
"Do not have calib line mapping with the key "
<<
m_calibMapKey
.key());
114
return
StatusCode::FAILURE;
115
}
116
117
//Get full events and filter out LAr ROBs
118
const
RawEvent
* rawEvent=
m_robDataProviderSvc
->getEvent(ctx);
119
120
StatusCode
sc
=
m_latomeDecoder
->convert(rawEvent,
map
, onoffmap, clmap,
121
accdigits, caccdigits,
122
latome_header_coll);
123
if
(
sc
!= StatusCode::SUCCESS)
124
ATH_MSG_WARNING
(
"ERROR LATOMEDecoder tool returned an error. LAr SC containers might be garbage"
);
125
126
127
return
StatusCode::SUCCESS;
128
}
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_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
IROBDataProviderSvc.h
LArAccumulatedCalibDigitContainer.h
LArAccumulatedDigitContainer.h
LArDigitContainer.h
LArLATOMEHeaderContainer.h
LArOnlineID.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
LArRawSCCalibDataReadingAlg.h
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition
RawEvent.h:37
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
LArAccumulatedCalibDigitContainer
Container class for LArAccumulatedCalibDigit.
Definition
LArAccumulatedCalibDigitContainer.h:25
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition
LArAccumulatedDigitContainer.h:22
LArCalibLineMapping
Definition
LArCalibLineMapping.h:17
LArLATOMEHeaderContainer
Container class for LArLATOMEHeader.
Definition
LArLATOMEHeaderContainer.h:19
LArLATOMEMapping
class to provide SC mapping
Definition
LArLATOMEMapping.h:28
LArOnOffIdMapping
Definition
LArOnOffIdMapping.h:20
LArRawSCCalibDataReadingAlg::m_accDigitKey
SG::WriteHandleKey< LArAccumulatedDigitContainer > m_accDigitKey
Definition
LArRawSCCalibDataReadingAlg.h:46
LArRawSCCalibDataReadingAlg::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition
LArRawSCCalibDataReadingAlg.h:43
LArRawSCCalibDataReadingAlg::m_latomeDecoder
ToolHandle< LArLATOMEDecoder > m_latomeDecoder
Definition
LArRawSCCalibDataReadingAlg.h:64
LArRawSCCalibDataReadingAlg::m_doAccCalibDigits
bool m_doAccCalibDigits
Definition
LArRawSCCalibDataReadingAlg.h:68
LArRawSCCalibDataReadingAlg::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition
LArRawSCCalibDataReadingAlg.h:51
LArRawSCCalibDataReadingAlg::initialize
StatusCode initialize() override
Definition
LArRawSCCalibDataReadingAlg.cxx:17
LArRawSCCalibDataReadingAlg::m_doAccDigits
bool m_doAccDigits
Definition
LArRawSCCalibDataReadingAlg.h:67
LArRawSCCalibDataReadingAlg::m_calibMapKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibMapKey
Definition
LArRawSCCalibDataReadingAlg.h:42
LArRawSCCalibDataReadingAlg::m_latomeHeaderCollKey
SG::WriteHandleKey< LArLATOMEHeaderContainer > m_latomeHeaderCollKey
Definition
LArRawSCCalibDataReadingAlg.h:48
LArRawSCCalibDataReadingAlg::m_mapKey
SG::ReadCondHandleKey< LArLATOMEMapping > m_mapKey
Definition
LArRawSCCalibDataReadingAlg.h:41
LArRawSCCalibDataReadingAlg::m_doLATOMEHeader
bool m_doLATOMEHeader
Definition
LArRawSCCalibDataReadingAlg.h:69
LArRawSCCalibDataReadingAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition
LArRawSCCalibDataReadingAlg.cxx:68
LArRawSCCalibDataReadingAlg::m_accCalibDigitKey
SG::WriteHandleKey< LArAccumulatedCalibDigitContainer > m_accCalibDigitKey
Definition
LArRawSCCalibDataReadingAlg.h:47
LArRawSCCalibDataReadingAlg::m_onlineId
const LArOnlineID * m_onlineId
Definition
LArRawSCCalibDataReadingAlg.h:60
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