ATLAS Offline Software
Loading...
Searching...
No Matches
CopyCaloCalibrationHitContainer.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7
8CopyCaloCalibrationHitContainer::CopyCaloCalibrationHitContainer(const std::string &name, ISvcLocator *pSvcLocator)
9 : AthReentrantAlgorithm(name, pSvcLocator) { }
10
12{
13 ATH_MSG_DEBUG("Initializing...");
14
15 // Check that collection name is not empty
16 if (m_collectionName.empty()) {
17 ATH_MSG_ERROR("CaloCalibrationHitContainer collection name should not be empty");
18 return StatusCode::FAILURE;
19 }
20
21 // Check and initialize keys
22 ATH_CHECK( m_signalInputKey.initialize() );
23 ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_signalInputKey);
24 ATH_CHECK( m_outputKey.initialize() );
25 ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputKey);
26
27 return StatusCode::SUCCESS;
28}
29
30StatusCode CopyCaloCalibrationHitContainer::execute(const EventContext& ctx) const
31{
32 ATH_MSG_DEBUG("execute() begin");
33
34 // Reading the input containers
35 ATH_MSG_VERBOSE("Retrieving input containers");
36
38 if (!signalContainer.isValid()) {
39 ATH_MSG_ERROR("Could not get signal CaloCalibrationHitContainer container " << signalContainer.name() << " from store " << signalContainer.store());
40 return StatusCode::FAILURE;
41 }
42 ATH_MSG_DEBUG("Found signal CaloCalibrationHitContainer container " << signalContainer.name() << " in store " << signalContainer.store());
43
44 // Creating output RDO container
46 ATH_CHECK(outputContainer.record(std::make_unique<CaloCalibrationHitContainer>(m_collectionName)));
47 if (!outputContainer.isValid()) {
48 ATH_MSG_ERROR("Could not record output CaloCalibrationHitContainer container " << outputContainer.name() << " to store " << outputContainer.store());
49 return StatusCode::FAILURE;
50 }
51 ATH_MSG_DEBUG("Recorded output CaloCalibrationHitContainer container " << outputContainer.name() << " in store " << outputContainer.store());
52
53 // Copy signal CaloHits
54 for (const CaloCalibrationHit *record : *signalContainer) {
55 outputContainer->push_back(new CaloCalibrationHit(*record));
56 }
57
58 ATH_MSG_DEBUG("execute() end");
59 return StatusCode::SUCCESS;
60}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
An algorithm that can be simultaneously executed in multiple threads.
Class to store calorimeter calibration hit.
Gaudi::Property< std::string > m_collectionName
virtual StatusCode execute(const EventContext &ctx) const override
CopyCaloCalibrationHitContainer(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteHandleKey< CaloCalibrationHitContainer > m_outputKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_signalInputKey
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::string store() const
Return the name of the store holding the object we are proxying.
const std::string & name() const
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
virtual bool isValid() override final
Can the handle be successfully dereferenced?