ATLAS Offline Software
StoreGate/StoreGate/VarHandleKeyArray.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 #ifndef STOREGATE_VARHANDLEKEYARRAY_H
6 #define STOREGATE_VARHANDLEKEYARRAY_H 1
7 
15 #include "GaudiKernel/DataHandle.h"
16 #include "GaudiKernel/IDataHandleHolder.h"
17 #include "StoreGate/VarHandleKey.h"
18 
19 #include <vector>
20 #include <string>
21 
22 namespace SG {
23 
29  public:
31  virtual ~VarHandleKeyArray() = default;
32  virtual StatusCode assign(const std::vector<std::string>& vs)=0;
33  virtual void push_back(const std::string& key)=0;
34  virtual std::string toString() const = 0;
35  virtual Gaudi::DataHandle::Mode mode() const = 0;
36 
37  virtual std::vector<SG::VarHandleKey*> keys() const = 0;
38 
39  virtual void renounce() = 0;
40  virtual bool renounced() const = 0;
41  virtual void declare(IDataHandleHolder*) = 0;
42 
43  virtual void setOwner( IDataHandleHolder* o ) = 0;
44  virtual const IDataHandleHolder* owner() const = 0;
45  virtual IDataHandleHolder* owner() = 0;
46 
47  };
48 
49 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
50 // mixin class for common functionality
51 //
52 
61  template <class Base>
63  public std::vector<Base> {
64  public:
70 
75  VarHandleKeyArrayCommon( const std::vector<Base>& v ):
76  std::vector<Base>(v) {};
77 
82  VarHandleKeyArrayCommon( std::initializer_list<Base> l ):
83  std::vector<Base>{l} {};
84 
90  VarHandleKeyArrayCommon( std::initializer_list<std::string> l ) {
91  for (const auto &e : l) {
92  std::vector<Base>::emplace_back( e );
93  }
94  }
95 
106  template <class T = Base>
107  requires T::isDecorHandleKey
109  std::initializer_list<std::string> l ) {
110  for (const auto &e : l) {
111  std::vector<Base>::emplace_back( contKey, e );
112  }
113  }
114 
120  StatusCode initialize (bool used = true);
121 
127  virtual StatusCode assign(const std::vector<std::string>& vs) override;
128 
133  virtual void push_back(const std::string& key) override {
134  std::vector<Base>::emplace_back( key );
135  }
136 
140  virtual std::string toString() const override;
141 
145  virtual std::vector<SG::VarHandleKey*> keys() const override;
146 
147 
151  virtual void renounce() override { m_isRenounced = true; }
152 
156  virtual bool renounced() const override { return m_isRenounced; }
157 
158  virtual void declare( IDataHandleHolder* ) override;
159 
160  virtual void setOwner( IDataHandleHolder* o ) override { m_owner = o; }
161  virtual const IDataHandleHolder* owner() const override { return m_owner; }
162  virtual IDataHandleHolder* owner() override { return m_owner; }
163 
164  private:
165 
166  bool m_isRenounced{ false };
167  IDataHandleHolder* m_owner{ nullptr };
168 
169  };
170 
171 } // namespace SG
172 
173 namespace std {
174  ostream& operator<<(ostream& s, const SG::VarHandleKeyArray& m);
175 }
176 
177 
179 
180 #endif
used
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
SG::VarHandleKeyArray::assign
virtual StatusCode assign(const std::vector< std::string > &vs)=0
SG::VarHandleKeyArrayCommon::VarHandleKeyArrayCommon
VarHandleKeyArrayCommon(std::initializer_list< std::string > l)
base Constructor that takes an initializer list of std::strings.
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:90
SG::VarHandleKeyArray::toString
virtual std::string toString() const =0
VarHandleKey.h
A property holding a SG store/key/clid from which a VarHandle is made.
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::VarHandleKeyArray::owner
virtual IDataHandleHolder * owner()=0
SG::VarHandleKeyArrayCommon::VarHandleKeyArrayCommon
VarHandleKeyArrayCommon(const std::vector< Base > &v)
base Constructor that takes a vector
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:75
SG::VarHandleKeyArrayCommon
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:63
SG::VarHandleKeyArray::keys
virtual std::vector< SG::VarHandleKey * > keys() const =0
requires
requires requires()
This specialization is used for classes deriving from DataObject.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:68
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
SG::VarHandleKeyArrayCommon::toString
virtual std::string toString() const override
string representation of the VarHandleKeyArray
SG::VarHandleKeyArrayCommon::renounced
virtual bool renounced() const override
query renounced state
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:156
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
SG::VarHandleKeyArrayCommon::declare
virtual void declare(IDataHandleHolder *) override
SG::VarHandleKeyArrayCommon::setOwner
virtual void setOwner(IDataHandleHolder *o) override
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:160
SG::VarHandleKeyArray::renounced
virtual bool renounced() const =0
SG::VarHandleKeyArray::push_back
virtual void push_back(const std::string &key)=0
SG::VarHandleKeyArrayCommon::VarHandleKeyArrayCommon
requires T::isDecorHandleKey VarHandleKeyArrayCommon(VarHandleKey &contKey, std::initializer_list< std::string > l)
base Constructor that takes an associated container and an initializer list of std::strings.
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:108
SG::VarHandleKeyArrayCommon::owner
virtual const IDataHandleHolder * owner() const override
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:161
SG::VarHandleKeyArray::owner
virtual const IDataHandleHolder * owner() const =0
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
Base
SG::VarHandleKeyArrayCommon::m_isRenounced
bool m_isRenounced
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:166
SG::VarHandleKeyArrayCommon::assign
virtual StatusCode assign(const std::vector< std::string > &vs) override
Set the contents of the VarHandleKeyArray from a vector of std::strings.
SG::VarHandleKeyArrayCommon::keys
virtual std::vector< SG::VarHandleKey * > keys() const override
create array of all base VarHandleKeys in the Array
SG::VarHandleKeyArray::~VarHandleKeyArray
virtual ~VarHandleKeyArray()=default
SG::VarHandleKeyArray::declare
virtual void declare(IDataHandleHolder *)=0
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::VarHandleKeyArrayCommon::renounce
virtual void renounce() override
if called, handles will not be declared in the algorithm I/O
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:151
SG::VarHandleKeyArrayCommon::initialize
StatusCode initialize(bool used=true)
forward the initialization to the member VarHandleKeys
SG::VarHandleKeyArrayCommon::VarHandleKeyArrayCommon
VarHandleKeyArrayCommon(std::initializer_list< Base > l)
base Constructor that takes an initializer list of VarHandleKeys
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:82
EventContainers::Mode
Mode
Definition: IdentifiableContainerBase.h:13
operator<<
std::ostream & operator<<(std::ostream &lhs, const TestGaudiProperty &rhs)
Definition: TestGaudiProperty.cxx:69
SG::VarHandleKeyArrayCommon::push_back
virtual void push_back(const std::string &key) override
Add a new key to the VarHandleKeyArray.
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:133
SG::VarHandleKeyArrayCommon::m_owner
IDataHandleHolder * m_owner
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:167
SG::VarHandleKey
A property holding a SG store/key/clid from which a VarHandle is made.
Definition: StoreGate/StoreGate/VarHandleKey.h:59
python.PyAthena.v
v
Definition: PyAthena.py:154
SG::VarHandleKeyArrayCommon::owner
virtual IDataHandleHolder * owner() override
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:162
SG::VarHandleKeyArrayCommon::VarHandleKeyArrayCommon
VarHandleKeyArrayCommon()
default base Constructor of mixin
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:69
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
SG::VarHandleKeyArray::VarHandleKeyArray
VarHandleKeyArray()
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:30
SG::VarHandleKeyArray::mode
virtual Gaudi::DataHandle::Mode mode() const =0
VarHandleKeyArray.icc
SG::VarHandleKeyArray
Definition: StoreGate/StoreGate/VarHandleKeyArray.h:28
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37