ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTestWriteCInfoTool.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
17#include "AthLinks/ElementLink.h"
18
19
20namespace DMTest {
21
22
30 const std::string& name,
31 const IInterface* parent)
32
33 : base_class (type, name, parent),
34 m_cvecKey ("cvec"),
35 m_cinfoKey ("cinfo")
36{
37 declareProperty ("CVecKey", m_cvecKey);
38 declareProperty ("CInfoKey", m_cinfoKey);
39}
40
41
46{
47 ATH_CHECK( m_cvecKey.initialize() );
48 ATH_CHECK( m_cinfoKey.initialize() );
49 return StatusCode::SUCCESS;
50}
51
52
56StatusCode xAODTestWriteCInfoTool::doit (const EventContext& ctx) const
57{
58 unsigned int count = ctx.eventID().event_number() + 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);
70 cinfo->setAFloat ((float)count * 0.1);
71 anInt2(*cinfo) = count * 2000;
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
89} // namespace DMTest
90
#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.
virtual StatusCode initialize() override
Tool initialization; called at the beginning of the job.
SG::WriteHandleKey< DMTest::C > m_cinfoKey
xAODTestWriteCInfoTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
virtual StatusCode doit(const EventContext &ctx) const override
Tool event processing.
SG::ReadHandleKey< DMTest::CVec > m_cvecKey
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
Tool to test writing xAOD classes with auxiliary data (cinfo).