ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTestWriteCInfo.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// $Id$
12
13
14#include "xAODTestWriteCInfo.h"
17#include "AthLinks/ElementLink.h"
18
19
20namespace DMTest {
21
22
29 ISvcLocator *pSvcLocator)
30 : AthReentrantAlgorithm (name, pSvcLocator),
31 m_cvecKey ("cvec"),
32 m_cinfoKey ("cinfo")
33{
34 declareProperty ("Offset", m_offset = 0);
35 declareProperty ("CVecKey", m_cvecKey);
36 declareProperty ("CInfoKey", m_cinfoKey);
37}
38
39
44{
45 ATH_CHECK( m_eventInfoKey.initialize() );
46 ATH_CHECK( m_cvecKey.initialize() );
47 ATH_CHECK( m_cinfoKey.initialize() );
48 return StatusCode::SUCCESS;
49}
50
51
55StatusCode xAODTestWriteCInfo::execute (const EventContext& ctx) const
56{
58 unsigned int count = eventInfo->eventNumber() + 1;
59
61
62 auto cinfo = std::make_unique<DMTest::C>();
63 auto info_store = std::make_unique<DMTest::CInfoAuxContainer>();
64 cinfo->setStore (info_store.get());
65
66 static const C::Accessor<int> anInt2 ("anInt2");
67 static const C::Accessor<ElementLink<DMTest::CVec> > cEL ("cEL");
68
69 cinfo->setAnInt (count * 1000 + m_offset);
70 cinfo->setAFloat ((float)count * 0.1 + m_offset);
71 anInt2(*cinfo) = count * 2000 + m_offset;
72
73 if (!cvec->empty()) {
74 cEL(*cinfo).toIndexedElement (*cvec, count % cvec->size());
75 }
76
78 std::unique_ptr<const DMTest::C> cinfo_c (std::move (cinfo));
79 std::unique_ptr<const DMTest::CInfoAuxContainer> info_store_c (std::move (info_store));
80 if (cinfoH.put (std::move(cinfo_c), std::move(info_store_c)) == nullptr) {
81 ATH_MSG_ERROR ("Can't record CInfo");
82 return StatusCode::FAILURE;
83 }
84
85 return StatusCode::SUCCESS;
86}
87
88
93{
94 return StatusCode::SUCCESS;
95}
96
97
98} // namespace DMTest
99
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
Class used for testing xAOD data reading/writing.
Class used for testing xAOD data reading/writing.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
An algorithm that can be simultaneously executed in multiple threads.
virtual StatusCode execute(const EventContext &ctx) const override
Algorithm event processing.
virtual StatusCode initialize() override
Algorithm initialization; called at the beginning of the job.
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
xAODTestWriteCInfo(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
SG::ReadHandleKey< DMTest::CVec > m_cvecKey
SG::WriteHandleKey< DMTest::C > m_cinfoKey
virtual StatusCode finalize() override
Algorithm finalization; called at the end of the job.
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
const_pointer_type put(std::unique_ptr< T > data, bool returnExisting=false) const
Record an object to the store.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146
Definition B.h:23
Algorithm to test writing xAOD classes with auxiliary data (cinfo).