ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTestShallowCopy.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
10
11
12#include "xAODTestShallowCopy.h"
25
26
27namespace DMTest {
28
29
34{
35 if (m_cvecReadKey.empty()) {
36 m_cvecWriteKey = "";
38 }
39 ATH_CHECK( m_cvecReadKey.initialize( !m_cvecReadKey.empty() ) );
40 ATH_CHECK( m_cvecWriteKey.initialize( !m_cvecReadKey.empty() ) );
41 ATH_CHECK( m_cvecAnInt10Key.initialize( !m_cvecReadKey.empty() ) );
43
44 if (m_cvecWDReadKey.empty()) {
47 }
48 ATH_CHECK( m_cvecWDReadKey.initialize( !m_cvecWDReadKey.empty() ) );
49 ATH_CHECK( m_cvecWDWriteKey.initialize( !m_cvecWDReadKey.empty() ) );
50 ATH_CHECK( m_cvecWDAnInt10Key.initialize( !m_cvecWDReadKey.empty() ) );
52
53 if (m_cinfoReadKey.empty()) {
54 m_cinfoWriteKey = "";
56 }
57 ATH_CHECK( m_cinfoReadKey.initialize( !m_cinfoReadKey.empty() ) );
58 ATH_CHECK( m_cinfoWriteKey.initialize( !m_cinfoReadKey.empty() ) );
59 ATH_CHECK( m_cinfoAnInt10Key.initialize( !m_cinfoReadKey.empty() ) );
61
62 if (m_cinfoReadKeyBase.empty()) {
64 }
65 ATH_CHECK( m_cinfoReadKeyBase.initialize( !m_cinfoReadKeyBase.empty() ) );
66 ATH_CHECK( m_cinfoWriteKeyBase.initialize( !m_cinfoReadKeyBase.empty() ) );
68
69 if (m_ctrigReadKey.empty()) {
70 m_ctrigWriteKey = "";
72 }
73 ATH_CHECK( m_ctrigReadKey.initialize( !m_ctrigReadKey.empty() ) );
74 ATH_CHECK( m_ctrigWriteKey.initialize( !m_ctrigReadKey.empty() ) );
75 ATH_CHECK( m_ctrigAnInt10Key.initialize( !m_ctrigReadKey.empty() ) );
77
78 return StatusCode::SUCCESS;
79}
80
81
85StatusCode xAODTestShallowCopy::execute (const EventContext& ctx) const
86{
87 int count = ctx.evt() + 1;
88
89 if (!m_cvecReadKey.empty()) {
91 auto ret = xAOD::shallowCopyContainer (*vec);
92
94 ATH_CHECK( copy.record (std::unique_ptr<DMTest::CVec>(ret.first),
95 std::unique_ptr<xAOD::ShallowAuxContainer>(ret.second)) );
96
97 ATH_CHECK( m_cvecDecorDeps.linkDecors (m_cvecReadKey, ctx) );
98
100 for (C* c : *ret.first)
101 anInt10(*c) = count * 20000 + c->anInt() * 100;
102 }
103
104 if (!m_cvecWDReadKey.empty()) {
106 auto ret = xAOD::shallowCopyContainer (*vec);
107 ret.first->meta1 = vec->meta1;
108
110 ATH_CHECK( copy.record (std::unique_ptr<DMTest::CVecWithData>(ret.first),
111 std::unique_ptr<xAOD::ShallowAuxContainer>(ret.second)) );
112
113 ATH_CHECK( m_cvecWDDecorDeps.linkDecors (m_cvecWDReadKey, ctx) );
114
116 for (C* c : *ret.first)
117 anInt10(*c) = count * 20000 + c->anInt() * 100;
118 }
119
120 if (!m_cinfoReadKey.empty()) {
122 auto ret = xAOD::shallowCopyObject (*cinfo);
123
125 ATH_CHECK( copy.record (std::unique_ptr<DMTest::C>(ret.first),
126 std::unique_ptr<xAOD::ShallowAuxInfo>(ret.second)) );
127
128 ATH_CHECK( m_cinfoDecorDeps.linkDecors (m_cinfoReadKey, ctx) );
129
131 anInt10(*ret.first) = count * 20000 + ret.first->anInt() * 200;
132 }
133
134 if (!m_cinfoReadKeyBase.empty()) {
136 }
137
138 if (!m_ctrigReadKey.empty()) {
140 auto ret = xAOD::shallowCopyContainer (*ctrig);
141
143 ATH_CHECK( copy.record (std::unique_ptr<DMTest::CVec>(ret.first),
144 std::unique_ptr<xAOD::ShallowAuxContainer>(ret.second)) );
145
146 ATH_CHECK( m_ctrigDecorDeps.linkDecors (m_ctrigReadKey, ctx) );
147
149 for (C* c : *ret.first)
150 anInt10(*c) = count * 20000 + c->anInt() * 300;
151 }
152
153 return StatusCode::SUCCESS;
154}
155
156
157} // namespace DMTest
158
#define ATH_CHECK
Evaluate an expression and check for errors.
Handle mappings between names and auxid_t.
Class used for testing xAOD data reading/writing.
Class used for testing xAOD data reading/writing.
Class used for testing xAOD data reading/writing.
Test writing a container with metadata.
Class used for testing xAOD data reading/writing.
Class used for testing xAOD data reading/writing.
std::vector< size_t > vec
Helpers for checking error return status codes and reporting errors.
Handle class for reading from StoreGate.
Handle class for adding a decoration to an object.
Handle class for recording to StoreGate.
SG::ShallowCopyDecorDeps< DMTest::C > m_cinfoDecorDeps
virtual StatusCode execute(const EventContext &ctx) const override
Algorithm event processing.
SG::WriteHandleKey< DMTest::C > m_cinfoWriteKey
SG::ReadHandleKey< DMTest::CVecWithData > m_cvecWDReadKey
SG::ReadHandleKey< DMTest::CVec > m_cvecReadKey
SG::WriteHandleKey< DMTest::CVec > m_ctrigWriteKey
SG::WriteHandleKey< DMTest::CVec > m_cvecWriteKey
SG::WriteDecorHandleKey< DMTest::CVecWithData > m_cvecWDAnInt10Key
SG::ReadHandleKey< DMTest::C > m_cinfoReadKey
SG::ShallowCopyDecorDeps< DMTest::CVec > m_ctrigDecorDeps
SG::WriteHandleKey< DMTest::CVecWithData > m_cvecWDWriteKey
SG::WriteDecorHandleKey< DMTest::CVec > m_ctrigAnInt10Key
virtual StatusCode initialize() override
Algorithm initialization; called at the beginning of the job.
SG::WriteDecorHandleKey< DMTest::C > m_cinfoAnInt10Key
SG::ShallowCopyDecorDeps< DMTest::CVecWithData > m_cvecWDDecorDeps
SG::WriteDecorHandleKey< DMTest::CVec > m_cvecAnInt10Key
SG::ReadHandleKey< SG::AuxElement > m_cinfoReadKeyBase
SG::ShallowCopyDecorDeps< DMTest::CVec > m_cvecDecorDeps
SG::ShallowCopyDecorDeps< SG::AuxElement > m_cinfoDecorDepsBase
SG::WriteHandleKey< SG::AuxElement > m_cinfoWriteKeyBase
SG::ReadHandleKey< DMTest::CVec > m_ctrigReadKey
Handle class for adding a decoration to an object.
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
C_v1 C
Definition C.h:26
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, const EventContext &ctx)
Function making a shallow copy of a constant container.
std::pair< T *, ShallowAuxInfo * > shallowCopyObject(const T &obj)
Function making a shallow copy of a constant standalone object.
Algorithm to test shallow-copy of xAOD data.