ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
ZDC
ZdcRec
src
ZdcRecV3Decode.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/*
6
* ZdcRecV3.cxx
7
*
8
* Created on: Sept 11, 2016 (never forget)
9
* Author: Peter.Steinberg@bnl.gov
10
*/
11
12
13
#include <memory>
14
15
#include "GaudiKernel/ISvcLocator.h"
16
#include "GaudiKernel/MsgStream.h"
17
#include "GaudiKernel/StatusCode.h"
18
#include "
StoreGate/StoreGateSvc.h
"
19
#include "
StoreGate/WriteHandle.h
"
20
#include "
StoreGate/ReadHandle.h
"
21
//#include "Identifier/Identifier.h"
22
23
#include "
xAODForward/ZdcModuleAuxContainer.h
"
24
#include "
xAODForward/ZdcModuleContainer.h
"
25
#include "
ZdcRec/ZdcRecV3Decode.h
"
26
#include "
ZdcRec/ZdcRecChannelToolV2.h
"
27
#include "
xAODForward/ZdcModuleToString.h
"
28
#include "
ZdcByteStream/ZdcToString.h
"
29
30
//==================================================================================================
31
ZdcRecV3Decode::ZdcRecV3Decode
(
const
std::string& name, ISvcLocator* pSvcLocator) :
32
33
AthAlgorithm
(name, pSvcLocator),
34
m_ownPolicy
(static_cast<int> (
SG
::OWN_ELEMENTS))
35
{
36
declareProperty
(
"OwnPolicy"
,
m_ownPolicy
) ;
37
}
38
//==================================================================================================
39
40
//==================================================================================================
41
ZdcRecV3Decode::~ZdcRecV3Decode
() {}
42
//==================================================================================================
43
44
//==================================================================================================
45
StatusCode
ZdcRecV3Decode::initialize
()
46
{
47
MsgStream mLog(msgSvc(), name());
48
49
// Unpacking tool
50
ATH_CHECK
(
m_ChannelTool
.retrieve() );
51
52
53
ATH_CHECK
(
m_zdcModuleContainerName
.initialize() );
54
ATH_CHECK
(
m_zdcSumContainerName
.initialize() );
55
ATH_CHECK
(
m_ttContainerName
.initialize(
SG::AllowEmpty
) );
56
57
if
(
m_ownPolicy
==
SG::OWN_ELEMENTS
)
58
mLog << MSG::DEBUG <<
"...will OWN its cells."
<<
endmsg
;
59
else
60
mLog << MSG::DEBUG <<
"...will VIEW its cells."
<<
endmsg
;
61
62
63
mLog << MSG::DEBUG <<
"--> ZDC: ZdcRecV3Decode initialization complete"
<<
endmsg
;
64
65
return
StatusCode::SUCCESS;
66
}
67
//==================================================================================================
68
69
//==================================================================================================
70
StatusCode
ZdcRecV3Decode::execute
(
const
EventContext& ctx)
71
{
72
73
ATH_MSG_DEBUG
(
"--> ZDC: ZdcRecV3Decode execute starting on "
74
<< ctx.evt()
75
<<
"th event"
);
76
77
//Look for the container presence
78
if
(
m_ttContainerName
.empty()) {
79
return
StatusCode::SUCCESS;
80
}
81
82
// Look up the Digits "TriggerTowerContainer" in Storegate
83
SG::ReadHandle<xAOD::TriggerTowerContainer>
ttContainer (
m_ttContainerName
, ctx);
84
85
//Create the containers to hold the reconstructed information (you just pass the pointer and the converter does the work)
86
std::unique_ptr<xAOD::ZdcModuleContainer> moduleContainer(
new
xAOD::ZdcModuleContainer
());
87
std::unique_ptr<xAOD::ZdcModuleAuxContainer> moduleAuxContainer(
new
xAOD::ZdcModuleAuxContainer
() );
88
moduleContainer->setStore( moduleAuxContainer.get() );
89
90
//Create the containers to hold the reconstructed information (you just pass the pointer and the converter does the work)
91
std::unique_ptr<xAOD::ZdcModuleContainer> moduleSumContainer(
new
xAOD::ZdcModuleContainer
());
92
std::unique_ptr<xAOD::ZdcModuleAuxContainer> moduleSumAuxContainer(
new
xAOD::ZdcModuleAuxContainer
() );
93
moduleSumContainer->setStore( moduleSumAuxContainer.get() );
94
95
// rearrange ZDC channels and perform fast reco on all channels (including non-big tubes)
96
int
ncha =
m_ChannelTool
->convertTT2ZM(ttContainer.
get
(), moduleContainer.get(), moduleSumContainer.get() );
97
ATH_MSG_DEBUG
(
"m_ChannelTool->convertTT2ZM returned "
<< ncha <<
" channels"
);
98
//msg( MSG::DEBUG ) << ZdcModuleToString(*moduleContainer) << endmsg;
99
100
SG::WriteHandle<xAOD::ZdcModuleContainer>
moduleContainerH (
m_zdcModuleContainerName
, ctx);
101
ATH_CHECK
( moduleContainerH.
record
(std::move(moduleContainer),
102
std::move(moduleAuxContainer)) );
103
104
SG::WriteHandle<xAOD::ZdcModuleContainer>
sumsContainerH (
m_zdcSumContainerName
, ctx);
105
ATH_CHECK
( sumsContainerH.
record
(std::move(moduleSumContainer),
106
std::move(moduleSumAuxContainer)) );
107
108
return
StatusCode::SUCCESS;
109
110
}
111
//==================================================================================================
112
113
//==================================================================================================
114
StatusCode
ZdcRecV3Decode::finalize
()
115
{
116
117
ATH_MSG_DEBUG
(
"--> ZDC: ZdcRecV3Decode finalize complete"
);
118
119
return
StatusCode::SUCCESS;
120
121
}
122
//==================================================================================================
123
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
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:29
StoreGateSvc.h
ReadHandle.h
Handle class for reading from StoreGate.
WriteHandle.h
Handle class for recording to StoreGate.
ZdcModuleAuxContainer.h
ZdcModuleContainer.h
ZdcModuleToString.h
ZdcRecChannelToolV2.h
ZdcRecV3Decode.h
ZdcToString.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::get
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
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.
ZdcRecV3Decode::m_zdcModuleContainerName
SG::WriteHandleKey< xAOD::ZdcModuleContainer > m_zdcModuleContainerName
Definition
ZdcRecV3Decode.h:69
ZdcRecV3Decode::m_ownPolicy
int m_ownPolicy
Definition
ZdcRecV3Decode.h:63
ZdcRecV3Decode::ZdcRecV3Decode
ZdcRecV3Decode(const std::string &name, ISvcLocator *pSvcLocator)
Definition
ZdcRecV3Decode.cxx:31
ZdcRecV3Decode::m_ChannelTool
ToolHandle< ZdcRecChannelToolV2 > m_ChannelTool
Definition
ZdcRecV3Decode.h:78
ZdcRecV3Decode::execute
StatusCode execute(const EventContext &ctx) override
Execute method.
Definition
ZdcRecV3Decode.cxx:70
ZdcRecV3Decode::finalize
StatusCode finalize() override
Definition
ZdcRecV3Decode.cxx:114
ZdcRecV3Decode::m_zdcSumContainerName
SG::WriteHandleKey< xAOD::ZdcModuleContainer > m_zdcSumContainerName
Definition
ZdcRecV3Decode.h:72
ZdcRecV3Decode::initialize
StatusCode initialize() override
Definition
ZdcRecV3Decode.cxx:45
ZdcRecV3Decode::m_ttContainerName
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_ttContainerName
Definition
ZdcRecV3Decode.h:66
ZdcRecV3Decode::~ZdcRecV3Decode
~ZdcRecV3Decode()
Definition
ZdcRecV3Decode.cxx:41
SG
Forward declaration.
Definition
CaloCellPacker_400_500.h:32
SG::AllowEmpty
@ AllowEmpty
Definition
StoreGate/StoreGate/VarHandleKey.h:27
SG::OWN_ELEMENTS
@ OWN_ELEMENTS
this data object owns its elements
Definition
OwnershipPolicy.h:17
xAOD::ZdcModuleContainer
ZdcModuleContainer_v1 ZdcModuleContainer
Definition
ZdcModuleContainer.h:18
xAOD::ZdcModuleAuxContainer
ZdcModuleAuxContainer_v2 ZdcModuleAuxContainer
Definition
ZdcModuleAuxContainer.h:17
Generated on
for ATLAS Offline Software by
1.17.0