Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
VariableMule.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #ifndef VARIABLE_MULE_H
7 #define VARIABLE_MULE_H
8 
11 #include "Gaudi/Algorithm.h"
13 
14 
15 template <typename T>
17 {
18  typename T::const_value_type from;
19  typename T::const_value_type to;
20 };
21 
22 template <typename T, typename C>
24 {
25 public:
26  std::map<std::string,std::string> toCopy;
27 private:
33  std::vector<SG::AuxElement::ConstAccessor<T>> m_fromAcc;
34 public:
35  VariableMule(const T& default_value): m_default(default_value) {}
36  StatusCode initialize(Gaudi::Algorithm* parent,
37  const std::vector<std::string>& froms,
38  const std::string& to) {
39  for (const auto& key: toCopy) {
40  std::string fullto = to + "." + key.second;
41  std::string doc = "Key to move " + key.first + "->" + key.second;
42  for (const auto& from: froms) {
43  std::string fullfrom = from + "." + key.first;
44  m_fromKeys.emplace_back(parent, "read_" + key.first, fullfrom, doc);
45  }
46  m_fromAcc.emplace_back(key.first);
47  m_toKeys.emplace_back(parent, "write_" + key.second, fullto, doc);
48  }
51  return StatusCode::SUCCESS;
52  }
53  void copy(const std::vector<MatchedPair<C>>& pairs, const EventContext& cxt)
54  const {
55  std::vector<SG::ReadDecorHandle<C,T>> from;
56  std::vector<SG::WriteDecorHandle<C,T>> to;
57  for (const auto& k: m_fromKeys) {
58  from.emplace_back(k, cxt);
59  }
60  for (const auto& k: m_toKeys) {
61  to.emplace_back(k, cxt);
62  }
63  size_t n_keys = m_fromAcc.size();
64  for (const auto& pair: pairs) {
65  for (size_t iii = 0; iii < n_keys; iii++) {
66  if (pair.from) {
67  to.at(iii)(*pair.to) = m_fromAcc.at(iii)(*pair.from);
68  } else {
69  to.at(iii)(*pair.to) = m_default;
70  }
71  }
72  }
73  }
74 };
75 
76 
77 #endif
AthCheckMacros.h
VariableMule::m_toKeys
WC m_toKeys
Definition: VariableMule.h:31
VariableMule
Definition: VariableMule.h:24
VariableMule::toCopy
std::map< std::string, std::string > toCopy
Definition: VariableMule.h:26
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
VariableMule::m_fromAcc
std::vector< SG::AuxElement::ConstAccessor< T > > m_fromAcc
Definition: VariableMule.h:33
VariableMule::initialize
StatusCode initialize(Gaudi::Algorithm *parent, const std::vector< std::string > &froms, const std::string &to)
Definition: VariableMule.h:36
python.CreateTierZeroArgdict.pairs
pairs
Definition: CreateTierZeroArgdict.py:201
MatchedPair::to
T::const_value_type to
Definition: VariableMule.h:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MatchedPair
Definition: VariableMule.h:17
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
VariableMule::copy
void copy(const std::vector< MatchedPair< C >> &pairs, const EventContext &cxt) const
Definition: VariableMule.h:53
SG::VarHandleKeyArrayCommon::initialize
StatusCode initialize(bool used=true)
forward the initialization to the member VarHandleKeys
VariableMule::m_fromKeys
RC m_fromKeys
Definition: VariableMule.h:30
CxxUtils::to
CONT to(RANGE &&r)
Definition: ranges.h:39
VariableMule::VariableMule
VariableMule(const T &default_value)
Definition: VariableMule.h:35
WriteDecorHandleKeyArray.h
MatchedPair::from
T::const_value_type from
Definition: VariableMule.h:18
ReadDecorHandleKeyArray.h
VariableMule::m_default
T m_default
Definition: VariableMule.h:32
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
fitman.k
k
Definition: fitman.py:528
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37