ATLAS Offline Software
xAODTestWrite.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
12 #include "xAODTestWrite.h"
13 #include "xAODTestWriteHelper.h"
23 #include "AthLinks/ElementLink.h"
25 
26 
27 namespace DMTest {
28 
29 
34 {
35  ATH_CHECK( m_cvecKey.initialize() );
36  ATH_CHECK( m_ctrigKey.initialize() );
37  ATH_CHECK( m_gvecKey.initialize (SG::AllowEmpty) );
38  ATH_CHECK( m_cvecWDKey.initialize() );
39  return StatusCode::SUCCESS;
40 }
41 
42 
46 StatusCode xAODTestWrite::execute (const EventContext& ctx) const
47 {
48  unsigned int count = ctx.eventID().event_number() + 1;
49 
51 
52  auto trig_coll = std::make_unique<DMTest::CVec>();
53  auto trig_store = std::make_unique<DMTest::CTrigAuxContainer>();
54  trig_coll->setStore (trig_store.get());
55 
56  static const C::Accessor<int> anInt2 ("anInt2");
57  static const C::Accessor<ElementLink<DMTest::CVec> > cEL ("cEL");
58 
59  //static const C::Decorator<SG::PackedElement<unsigned int> > dpInt1 ("dpInt1");
60  //static const C::Decorator<SG::PackedElement<std::vector<float> > > dpvFloat ("dpvFloat");
61  static const C::Decorator<unsigned int> dpInt1 ("dpInt1");
62  static const C::Decorator<std::vector<float> > dpvFloat ("dpvFloat");
63 
64  for (int i=0; i < 8; i++) {
65  trig_coll->push_back (new DMTest::C);
66  C& c = *trig_coll->back();
67  c.setAnInt (count * 500 + i+1);
68  c.setAFloat (count * 600 + (float)i*0.1);
69 
70  anInt2(c) = count*700 + i+1;
71  }
72 
74  CHECK( ctrig.record (std::move (trig_coll), std::move (trig_store)) );
75 
76  if (!m_gvecKey.empty()) {
77  auto gcont = std::make_unique<DMTest::GVec>();
78  auto gstore = std::make_unique<DMTest::GAuxContainer>();
79  gcont->setStore (gstore.get());
80 
81  for (int i=0; i < 10; i++) {
82  gcont->push_back (new DMTest::G);
83  G& g = *gcont->back();
84  g.setAnInt (count * 700 + i+1);
85  g.setgFloat (count * 700 + 100 + i+0.5);
86  std::vector<double> v;
87  for (int j=0; j<i; j++) {
88  v.push_back (count * 700 + 100*j + i+0.5);
89  }
90  g.setgvFloat (v);
91  }
92 
94  CHECK( gvec.record (std::move (gcont), std::move (gstore)) );
95  }
96 
98 
99  return StatusCode::SUCCESS;
100 }
101 
102 
107  const EventContext& ctx) const
108 {
109  auto coll = std::make_unique<DMTest::CVecWithData>();
110  auto store = std::make_unique<DMTest::CAuxContainer>();
111  coll->setStore (store.get());
112 
113  coll->meta1 = count + 1000;
114  for (int i=0; i < 10; i++) {
115  coll->push_back (new DMTest::C);
116  C& c = *coll->back();
117  c.setAnInt (count * 200 + i+1);
118  }
119 
121  CHECK( cvecWD.record (std::move (coll), std::move (store)) );
122 
123  return StatusCode::SUCCESS;
124 }
125 
126 
127 } // namespace DMTest
128 
SGTest::store
TestStore store
Definition: TestStore.cxx:23
DMTest::xAODTestWrite::initialize
virtual StatusCode initialize() override
Algorithm initialization; called at the beginning of the job.
Definition: xAODTestWrite.cxx:33
DMTest::xAODTestWrite::m_ctrigKey
SG::WriteHandleKey< DMTest::CVec > m_ctrigKey
Definition: xAODTestWrite.h:58
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
DMTest::xAODTestWrite::execute
virtual StatusCode execute(const EventContext &ctx) const override
Algorithm event processing.
Definition: xAODTestWrite.cxx:46
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
GVec.h
CAuxContainer.h
Class used for testing xAOD data reading/writing.
DMTest::C_v1
Definition: C_v1.h:27
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
AuxDataOption.h
Hold information about an option setting request.
G.h
Test for xAOD auto schema evolution.
CVec.h
Class used for testing xAOD data reading/writing.
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
C.h
Class used for testing xAOD data reading/writing.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
DMTest::xAODTestWrite::write_cvec_with_data
StatusCode write_cvec_with_data(unsigned int count, const EventContext &ctx) const
Test writing container with additional data.
Definition: xAODTestWrite.cxx:106
DMTest::G_v1
Definition: DataModelTestDataRead/DataModelTestDataRead/versions/G_v1.h:28
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CVecWithData.h
Test writing a container with metadata.
DMTest::xAODTestWrite::m_cvecWDKey
SG::WriteHandleKey< DMTest::CVecWithData > m_cvecWDKey
Definition: xAODTestWrite.h:62
DMTest::xAODTestWrite::m_cvecKey
SG::ReadHandleKey< DMTest::CVec > m_cvecKey
Definition: xAODTestWrite.h:56
python.PyAthena.v
v
Definition: PyAthena.py:154
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
xAODTestWrite.h
Algorithm to test writing xAOD classes with auxiliary data.
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
xAODTestWriteHelper.h
Test recording ViewVector w/o having CLASS_DEF visible in compilation unit.
CTrigAuxContainer.h
Class used for testing xAOD data reading/writing.
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
GAuxContainer.h
Test for xAOD auto schema evolution.
python.compressB64.c
def c
Definition: compressB64.py:93
DMTest::xAODTestWrite::m_gvecKey
SG::WriteHandleKey< DMTest::GVec > m_gvecKey
Definition: xAODTestWrite.h:60
DMTest
Definition: B.h:23