ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTestReadJVec.cxx
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration.
3 */
10
11
12#include "xAODTestReadJVec.h"
16#include "AthLinks/ElementLink.h"
17#include <format>
18#include <print>
19#include <sstream>
20
21
22namespace {
23
24
28template <class CONT>
29std::string formEL (const ElementLink<CONT>& el)
30{
31 return std::format ("({}:{})",
32 el.dataID(),
33 static_cast<int>(el.index()) == -1 ? "inv" : std::to_string(el.index()));
34}
35
36
40template <class T>
41std::string form_vec_elt (const T& x)
42{
43 return std::format ("{}", x);
44}
45
46
47
51std::string form_vec_elt (const std::string& x)
52{
53 return std::format ("'{}'", x);
54}
55
56
60template <class CONT>
61std::string form_vec_elt (const ElementLink<CONT>& x)
62{
63 return formEL (x);
64}
65
66
70template <class RANGE>
71std::string formJVec (const RANGE& r) {
72 std::ostringstream ss;
73 std::print (ss, "[");
74 std::string sep;
75 for (const auto & elt : r) {
76 std::print (ss, "{}", sep);
77 sep = " ";
78 std::print (ss, "{}", form_vec_elt (elt));
79 }
80 std::print (ss, "]");
81 return ss.str();
82}
83
84
85}
86
87
88namespace DMTest {
89
90
95{
100 return StatusCode::SUCCESS;
101}
102
103
107StatusCode xAODTestReadJVec::execute (const EventContext& ctx) const
108{
109 if (!m_jvecContainerKey.empty()) {
112 for (const JVec* jvec : *jveccont) {
113 ATH_CHECK( dumpJVec (*jvec) );
114 ATH_CHECK( dumpDecor (ctx, *jvec) );
115 }
116 }
117
118 if (!m_jvecInfoKey.empty()) {
119 SG::ReadHandle<JVec> jvecinfo (m_jvecInfoKey, ctx);
121 ATH_CHECK( dumpJVec (*jvecinfo) );
122 ATH_CHECK( dumpInfoDecor (ctx, *jvecinfo) );
123 }
124
125 return StatusCode::SUCCESS;
126}
127
128
132StatusCode xAODTestReadJVec::dumpJVec (const JVec& jvec) const
133{
134 ATH_MSG_INFO( " ivec: {} fvec: {} svec: {} lvec: {}",
135 formJVec (jvec.ivec()),
136 formJVec (jvec.fvec()),
137 formJVec (jvec.svec()),
138 formJVec (jvec.lvec()));
139 return StatusCode::SUCCESS;
140}
141
142
146StatusCode
147xAODTestReadJVec::dumpDecor (const EventContext& ctx,
148 const JVec& jvec) const
149{
150 std::ostringstream ss;
151 if (!m_jvecDecorKey.empty()) {
153 std::print (ss, " decorJVec: {}", formJVec (decor (jvec)));
154 }
155
156 ATH_MSG_INFO( ss.str() );
157 return StatusCode::SUCCESS;
158}
159
160
164StatusCode
165xAODTestReadJVec::dumpInfoDecor (const EventContext& ctx,
166 const JVec& jvec) const
167{
168 std::ostringstream ss;
169 if (!m_jvecInfoDecorKey.empty()) {
171 std::print (ss, " decorJVec: {}", formJVec (decor (jvec)));
172 }
173
174 ATH_MSG_INFO( ss.str() );
175 return StatusCode::SUCCESS;
176}
177
178
179} // namespace DMTest
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x,...)
static Double_t ss
Handle class for reading a decoration on an object.
Handle class for reading from StoreGate.
#define x
intRange_t ivec() const
linkRange_t lvec() const
stringRange_t svec() const
floatRange_t fvec() const
SG::ReadHandleKey< DMTest::JVecContainer > m_jvecContainerKey
SG::ReadDecorHandleKey< DMTest::JVec > m_jvecInfoDecorKey
StatusCode dumpJVec(const JVec &jvec) const
Dump a JVec object.
SG::ReadHandleKey< DMTest::JVec > m_jvecInfoKey
virtual StatusCode initialize() override
Algorithm initialization; called at the beginning of the job.
virtual StatusCode execute(const EventContext &ctx) const override
Algorithm event processing.
StatusCode dumpInfoDecor(const EventContext &ctx, const JVec &jvec) const
Dump decorations from a standalone JVec object.
StatusCode dumpDecor(const EventContext &ctx, const JVec &jvec) const
Dump decorations from a JVec object.
SG::ReadDecorHandleKey< DMTest::JVecContainer > m_jvecDecorKey
Handle class for reading a decoration on an object.
int r
Definition globals.cxx:22
Definition B.h:23
JVec_v1 JVec
Definition JVec.h:23
For testing jagged vectors.