ATLAS Offline Software
Loading...
Searching...
No Matches
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"
21//#include "Identifier/Identifier.h"
22
29
30//==================================================================================================
31ZdcRecV3Decode::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//==================================================================================================
42//==================================================================================================
43
44//==================================================================================================
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() );
56
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//==================================================================================================
71{
72
73 const EventContext& ctx = Gaudi::Hive::currentContext();
74 ATH_MSG_DEBUG ("--> ZDC: ZdcRecV3Decode execute starting on "
75 << ctx.evt()
76 << "th event");
77
78 //Look for the container presence
79 if (m_ttContainerName.empty()) {
80 return StatusCode::SUCCESS;
81 }
82
83 // Look up the Digits "TriggerTowerContainer" in Storegate
85
86 //Create the containers to hold the reconstructed information (you just pass the pointer and the converter does the work)
87 std::unique_ptr<xAOD::ZdcModuleContainer> moduleContainer( new xAOD::ZdcModuleContainer());
88 std::unique_ptr<xAOD::ZdcModuleAuxContainer> moduleAuxContainer( new xAOD::ZdcModuleAuxContainer() );
89 moduleContainer->setStore( moduleAuxContainer.get() );
90
91 //Create the containers to hold the reconstructed information (you just pass the pointer and the converter does the work)
92 std::unique_ptr<xAOD::ZdcModuleContainer> moduleSumContainer( new xAOD::ZdcModuleContainer());
93 std::unique_ptr<xAOD::ZdcModuleAuxContainer> moduleSumAuxContainer( new xAOD::ZdcModuleAuxContainer() );
94 moduleSumContainer->setStore( moduleSumAuxContainer.get() );
95
96 // rearrange ZDC channels and perform fast reco on all channels (including non-big tubes)
97 int ncha = m_ChannelTool->convertTT2ZM(ttContainer.get(), moduleContainer.get(), moduleSumContainer.get() );
98 ATH_MSG_DEBUG("m_ChannelTool->convertTT2ZM returned " << ncha << " channels");
99 //msg( MSG::DEBUG ) << ZdcModuleToString(*moduleContainer) << endmsg;
100
102 ATH_CHECK( moduleContainerH.record (std::move(moduleContainer),
103 std::move(moduleAuxContainer)) );
104
106 ATH_CHECK( sumsContainerH.record (std::move(moduleSumContainer),
107 std::move(moduleSumAuxContainer)) );
108
109 return StatusCode::SUCCESS;
110
111}
112//==================================================================================================
113
114//==================================================================================================
116{
117
118 ATH_MSG_DEBUG( "--> ZDC: ZdcRecV3Decode finalize complete" );
119
120 return StatusCode::SUCCESS;
121
122}
123//==================================================================================================
124
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::WriteHandleKey< xAOD::ZdcModuleContainer > m_zdcModuleContainerName
ZdcRecV3Decode(const std::string &name, ISvcLocator *pSvcLocator)
ToolHandle< ZdcRecChannelToolV2 > m_ChannelTool
StatusCode execute() override
StatusCode finalize() override
SG::WriteHandleKey< xAOD::ZdcModuleContainer > m_zdcSumContainerName
StatusCode initialize() override
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_ttContainerName
Forward declaration.
@ OWN_ELEMENTS
this data object owns its elements
ZdcModuleContainer_v1 ZdcModuleContainer
ZdcModuleAuxContainer_v2 ZdcModuleAuxContainer