ATLAS Offline Software
xAODTestShallowCopy.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
12 #include "xAODTestShallowCopy.h"
19 #include "xAODCore/ShallowCopy.h"
20 #include "StoreGate/ReadHandle.h"
21 #include "StoreGate/WriteHandle.h"
25 
26 
27 namespace DMTest {
28 
29 
34 {
35  if (m_cvecReadKey.empty()) {
36  m_cvecWriteKey = "";
37  m_cvecAnInt10Key = "";
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()) {
45  m_cvecWDWriteKey = "";
46  m_cvecWDAnInt10Key = "";
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 = "";
55  m_cinfoAnInt10Key = "";
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  }
68 
69  if (m_ctrigReadKey.empty()) {
70  m_ctrigWriteKey = "";
71  m_ctrigAnInt10Key = "";
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 
85 StatusCode 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 
ShallowCopy.h
DMTest::xAODTestShallowCopy::execute
virtual StatusCode execute(const EventContext &ctx) const override
Algorithm event processing.
Definition: xAODTestShallowCopy.cxx:85
DMTest::xAODTestShallowCopy::m_cinfoReadKeyBase
SG::ReadHandleKey< SG::AuxElement > m_cinfoReadKeyBase
Definition: xAODTestShallowCopy.h:83
xAODTestShallowCopy.h
Algorithm to test shallow-copy of xAOD data.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
DMTest::xAODTestShallowCopy::m_cvecDecorDeps
SG::ShallowCopyDecorDeps< DMTest::CVec > m_cvecDecorDeps
Definition: xAODTestShallowCopy.h:60
DMTest::xAODTestShallowCopy::m_ctrigDecorDeps
SG::ShallowCopyDecorDeps< DMTest::CVec > m_ctrigDecorDeps
Definition: xAODTestShallowCopy.h:96
CAuxContainer.h
Class used for testing xAOD data reading/writing.
DMTest::C_v1
Definition: C_v1.h:27
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
DMTest::xAODTestShallowCopy::m_cinfoDecorDepsBase
SG::ShallowCopyDecorDeps< SG::AuxElement > m_cinfoDecorDepsBase
Definition: xAODTestShallowCopy.h:87
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
DMTest::xAODTestShallowCopy::m_cvecReadKey
SG::ReadHandleKey< DMTest::CVec > m_cvecReadKey
Definition: xAODTestShallowCopy.h:54
SG::ShallowCopyDecorDeps::initialize
StatusCode initialize(const SG::ReadHandleKey< T > &origKey, const SG::WriteHandleKey< T > &copyKey, bool used=true)
Initialize this property.
CInfoAuxContainer.h
Class used for testing xAOD data reading/writing.
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
WriteHandle.h
Handle class for recording to StoreGate.
DMTest::xAODTestShallowCopy::m_cvecWDAnInt10Key
SG::WriteDecorHandleKey< DMTest::CVecWithData > m_cvecWDAnInt10Key
Definition: xAODTestShallowCopy.h:67
CVec.h
Class used for testing xAOD data reading/writing.
DMTest::xAODTestShallowCopy::m_cvecWriteKey
SG::WriteHandleKey< DMTest::CVec > m_cvecWriteKey
Definition: xAODTestShallowCopy.h:56
xAOD::shallowCopyObject
std::pair< T *, ShallowAuxInfo * > shallowCopyObject(const T &obj)
Function making a shallow copy of a constant standalone object.
Definition: ShallowCopy.h:163
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
C.h
Class used for testing xAOD data reading/writing.
DMTest::xAODTestShallowCopy::m_ctrigReadKey
SG::ReadHandleKey< DMTest::CVec > m_ctrigReadKey
Definition: xAODTestShallowCopy.h:90
DMTest::xAODTestShallowCopy::m_ctrigAnInt10Key
SG::WriteDecorHandleKey< DMTest::CVec > m_ctrigAnInt10Key
Definition: xAODTestShallowCopy.h:94
WriteDecorHandle.h
Handle class for adding a decoration to an object.
DMTest::xAODTestShallowCopy::m_cinfoDecorDeps
SG::ShallowCopyDecorDeps< DMTest::C > m_cinfoDecorDeps
Definition: xAODTestShallowCopy.h:78
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DMTest::xAODTestShallowCopy::m_cvecAnInt10Key
SG::WriteDecorHandleKey< DMTest::CVec > m_cvecAnInt10Key
Definition: xAODTestShallowCopy.h:58
DMTest::xAODTestShallowCopy::m_cinfoWriteKeyBase
SG::WriteHandleKey< SG::AuxElement > m_cinfoWriteKeyBase
Definition: xAODTestShallowCopy.h:85
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CVecWithData.h
Test writing a container with metadata.
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
SG::ShallowCopyDecorDeps::linkDecors
StatusCode linkDecors(const SG::ReadHandleKey< T > &origKey, const EventContext &ctx=Gaudi::Hive::currentContext()) const
Create alias for the decorations, linked to the shallow copy.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
DMTest::xAODTestShallowCopy::m_ctrigWriteKey
SG::WriteHandleKey< DMTest::CVec > m_ctrigWriteKey
Definition: xAODTestShallowCopy.h:92
DMTest::xAODTestShallowCopy::m_cinfoWriteKey
SG::WriteHandleKey< DMTest::C > m_cinfoWriteKey
Definition: xAODTestShallowCopy.h:74
DMTest::xAODTestShallowCopy::m_cinfoAnInt10Key
SG::WriteDecorHandleKey< DMTest::C > m_cinfoAnInt10Key
Definition: xAODTestShallowCopy.h:76
AuxTypeRegistry.h
Handle mappings between names and auxid_t.
DMTest::xAODTestShallowCopy::m_cvecWDWriteKey
SG::WriteHandleKey< DMTest::CVecWithData > m_cvecWDWriteKey
Definition: xAODTestShallowCopy.h:65
CTrigAuxContainer.h
Class used for testing xAOD data reading/writing.
DMTest::xAODTestShallowCopy::m_cvecWDReadKey
SG::ReadHandleKey< DMTest::CVecWithData > m_cvecWDReadKey
Definition: xAODTestShallowCopy.h:63
calibdata.copy
bool copy
Definition: calibdata.py:26
DMTest::xAODTestShallowCopy::m_cvecWDDecorDeps
SG::ShallowCopyDecorDeps< DMTest::CVecWithData > m_cvecWDDecorDeps
Definition: xAODTestShallowCopy.h:69
ReadHandle.h
Handle class for reading from StoreGate.
python.compressB64.c
def c
Definition: compressB64.py:93
DMTest::xAODTestShallowCopy::m_cinfoReadKey
SG::ReadHandleKey< DMTest::C > m_cinfoReadKey
Definition: xAODTestShallowCopy.h:72
DMTest
Definition: B.h:23
DMTest::xAODTestShallowCopy::initialize
virtual StatusCode initialize() override
Algorithm initialization; called at the beginning of the job.
Definition: xAODTestShallowCopy.cxx:33