2#ifndef XAODROOTACCESS_EVENT_H
3#define XAODROOTACCESS_EVENT_H
21#include <unordered_map>
39 implements<IProxyDict>;
79 const std::string& itemList);
90 const std::string& newName);
121 template <
typename T>
124 template <
typename T>
128 template <
typename T>
129 StatusCode
keys(std::vector<std::string>& vkeys,
bool metadata)
const;
132 template <
typename T>
133 StatusCode
retrieve(
const T*& obj,
const std::string& key);
135 template <
typename T>
136 StatusCode
retrieve(T*& obj,
const std::string& key);
139 template <
typename T>
140 StatusCode
record(T* obj,
const std::string& key);
142 template <
typename T>
143 StatusCode
record(std::unique_ptr<T> obj,
const std::string& key);
146 StatusCode
copy(
const std::string& pattern =
".*");
154 template <
typename T>
157 template <
typename T>
161 template <
typename T>
162 StatusCode
metaKeys(std::vector<std::string>& vkeys)
const;
165 template <
typename T>
169 template <
typename T>
172 template <
typename T>
176 template <
typename T>
180 template <
typename T>
181 StatusCode
recordMeta(std::unique_ptr<T> obj,
const std::string& key);
193 const std::string&
getName(
const void* obj)
const override;
202 bool silent)
override;
222 std::vector<const SG::DataProxy*>
proxies()
const override;
238 const std::string& key,
bool allowMods,
239 bool returnExisting)
override;
242 const std::string&
name()
const override;
248 const std::string& key,
bool overwrite =
false,
249 bool metadata =
true,
bool isOwner =
true);
260 virtual StatusCode
getNames(
const std::string& targetClassName,
261 std::vector<std::string>& vkeys,
262 bool metadata =
false)
const = 0;
269 virtual StatusCode
connectAux(
const std::string& prefix,
bool standalone) = 0;
273 bool standalone) = 0;
281 virtual StatusCode
record(
void* obj,
const std::string& typeName,
282 const std::string& key,
bool overwrite,
283 bool metadata,
bool isOwner) = 0;
291 void*
getOutputObject(
const std::string& key,
const std::type_info& ti,
292 bool metadata)
const;
294 const void*
getInputObject(
const std::string& key,
const std::type_info& ti,
295 bool silent,
bool metadata);
297 bool contains(
const std::string& key,
const std::type_info& ti,
301 bool metadata)
const;
305 std::unordered_map<std::string, std::unique_ptr<TVirtualManager>>;
uint32_t CLID
The Class ID type.
Define macros for attributes used to control the static checker.
Lock object for taking out upgradable locks.
Class mimicking the AthMessaging class from the offline software.
Helper object for holding something through a THolder.
Manager for EDM objects created by ROOT.
StatusCode removeListener(TVirtualIncidentListener *listener)
Remove an incident listener object.
virtual bool hasInput() const =0
Check if an input file is connected to the object.
StatusCode record(std::unique_ptr< T > obj, const std::string &key)
Add an output object to the event, explicitly taking ownership of it.
StatusCode addListener(TVirtualIncidentListener *listener)
Register an incident listener object.
virtual StatusCode connectAux(const std::string &prefix, bool standalone)=0
Function setting up access to a set of auxiliary branches.
StatusCode retrieve(T *&obj, const std::string &key)
Retrieve an output object from the event.
EventFormat m_inputEventFormat
Format of the current input file.
const std::string & name() const override
Get the name of the instance.
std::set< std::string > m_inputMissingObjects
Objects that have been asked for, but were found to be missing in the current input.
StatusCode retrieveMetaInput(const T *&obj, const std::string &key)
Retrieve an input metadata object.
virtual StatusCode getNames(const std::string &targetClassName, std::vector< std::string > &vkeys, bool metadata=false) const =0
Function determining the list keys associated with a type name.
bool transientContains(const std::string &key) const
Function checking if an object is already in memory.
const EventFormat * outputEventFormat() const
Get information about the output objects.
const std::string * keyToString(SG::sgkey_t key) const override
Find the string corresponding to a given key.
virtual StatusCode recordAux(TVirtualManager &mgr, const std::string &key, bool metadata)=0
Record an auxiliary store into a connected output file.
virtual bool hasOutput() const =0
Check if an output file is connected to the object.
void registerKey(SG::sgkey_t key, const std::string &str, CLID clid) override
Remember an additional mapping from key to string/CLID.
bool contains(const std::string &key, const std::type_info &ti, bool metadata)
Internal function checking if an object is in the input.
void clearListeners()
Remove all listeners from the object.
StatusCode recordMeta(T *obj, const std::string &key)
Add an object to the output file's metadata.
void clearNameRemap()
Clear the current name re-mapping.
const EventFormat * inputEventFormat() const
Get information about the input objects.
virtual StatusCode record(void *obj, const std::string &typeName, const std::string &key, bool overwrite, bool metadata, bool isOwner)=0
Record an object into a connected output file.
bool contains(const std::string &key)
Function checking if an object is available from the store.
SG::sgkey_t stringToKey(const std::string &str, CLID clid) override
Find the string corresponding to a given key.
std::vector< const SG::DataProxy * > proxies() const override
return the list of all current proxies in store
const void * getInputObject(SG::sgkey_t key, const std::type_info &ti, bool silent) override
Function for retrieving an input object in a non-template way.
upgrade_mutex_t m_branchesMutex
Mutex for multithread synchronization.
virtual StatusCode connectObject(const std::string &key, bool silent)=0
Function setting up access to a particular object.
AthContainers_detail::upgrading_lock< upgrade_mutex_t > upgrading_lock_t
Lock type for multithread synchronization.
StatusCode addNameRemap(const std::string &onfile, const std::string &newName)
Add a name re-mapping rule.
StatusCode metaKeys(std::vector< std::string > &vkeys) const
Provide a list of all metadata object keys associated with a specific type.
const std::string & getName(const void *obj) const override
Function returning the key describing a known object.
SG::DataProxy * proxy_exact(SG::sgkey_t sgkey) const override
Get proxy given a hashed key+clid.
Object_t m_inputObjects
Collection of all the managed input objects.
void setAuxItemList(const std::string &containerKey, const std::string &itemList)
Configure which dynamic variables to write out for a given store.
virtual ~Event()
Virtual destructor.
StatusCode copy(const std::string &pattern=".*")
Copy an object directly from the input to the output.
SG::DataProxy * recordObject(SG::DataObjectSharedPtr< DataObject > obj, const std::string &key, bool allowMods, bool returnExisting) override
Record an object in the store.
std::string dump()
Function creating a user-readable dump of the current input.
void printProxyWarnings(bool value=true)
Enable warnings associated with broken element links.
Event(std::string_view name)
Constructor with a name.
bool m_printEventProxyWarnings
Option to silence common warnings that seem to be harmless.
SG::sgkey_t getKey(const void *obj) const override
Function returning the hash describing a known object.
std::unordered_map< std::string, std::unique_ptr< TVirtualManager > > Object_t
Definition of the internal data structure type.
void * getOutputObject(SG::sgkey_t key, const std::type_info &ti) override
Function for retrieving an output object in a non-template way.
StatusCode addToStore(CLID id, SG::DataProxy *proxy) override
Add a new proxy to the store.
StatusCode retrieveMetaOutput(T *&obj, const std::string &key)
Retrieve an output metadata object.
virtual StatusCode connectMetaObject(const std::string &key, bool silent)=0
Function setting up access to a particular metadata object.
virtual StatusCode setAuxStore(const std::string &key, Details::IObjectManager &mgr, bool metadata)=0
Function connecting a DV object to its auxiliary store.
const BranchInfo * getBranchInfo(SG::sgkey_t sgkey) const
Get the object describing one object/branch.
StatusCode record(T *obj, const std::string &key)
Add an output object to the event.
bool transientContainsMeta(const std::string &key) const
Function checking if a meta-object is already in memory.
const xAOD::EventFormatElement * getEventFormatElement(SG::sgkey_t sgkey) const
Get the metadata object for a given "SG key".
void printNameRemap() const
Print the current name re-mapping rules.
StatusCode recordTypeless(void *obj, const std::string &typeName, const std::string &key, bool overwrite=false, bool metadata=true, bool isOwner=true)
Internal function for recording an object into the output.
StatusCode keys(std::vector< std::string > &vkeys, bool metadata) const
Provide a list of all data object keys associated with a specific type.
virtual StatusCode connectMetaAux(const std::string &prefix, bool standalone)=0
Function setting up access to a set of auxiliary branches for a metadata object.
StatusCode retrieveMetaOutput(const T *&obj, const std::string &key)
Retrieve an output metadata object.
StatusCode retrieve(const T *&obj, const std::string &key)
Retrieve either an input or an output object from the event.
StatusCode recordMeta(std::unique_ptr< T > obj, const std::string &key)
Add an object to the output file's metadata, explicitly taking ownership of it.
void setActive() const
Set this event object as the currently active one.
SG::sgkey_t getHash(const std::string &key) const override
Function returning the hash describing an object name.
std::unordered_map< std::string, std::string > m_nameRemapping
Container name re-mapping rules.
Object_t m_inputMetaObjects
Collection of all the managed input meta-objects.
std::unordered_map< std::string, std::set< std::string > > m_auxItemList
Rules for selecting which auxiliary branches to write.
EventFormat * m_outputEventFormat
Format of the current output file.
bool transientContains(const std::string &key, const std::type_info &ti, bool metadata) const
Internal function checking if an object is already in memory.
Object_t m_outputObjects
Collection of all the managed output object.
SG::SGKeyMap< BranchInfo > m_branches ATLAS_THREAD_SAFE
Map from hashed sgkey to BranchInfo.
void printIOStats() const
Function printing the I/O statistics of the current process.
bool containsMeta(const std::string &key)
Function checking if a meta-object is available from the store.
AthContainers_detail::upgrade_mutex upgrade_mutex_t
Mutex type for multithread synchronization.
std::vector< TVirtualIncidentListener * > m_listeners
Listeners who should be notified when certain incidents happen.
SG::DataProxy * proxy(const void *const pTransient) const override
get proxy for a given data object address in memory
Object_t m_outputMetaObjects
Collection of all the managed output meta-objects.
Base interface for getting objects out of the input file.
Class providing an interface for classes listening to xAOD incidents.
Interface class for the "manager classes".
CxxUtils::RefCountedPtr< T > DataObjectSharedPtr
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
std::unordered_map< sgkey_t, T > SGKeyMap
A map using sgkey_t as a key.
implements< IProxyDict > IProxyDictBase
IProxyDict base class to use in a specific build environment
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
EventFormat_v1 EventFormat
Definition of the current event format version.
Helper struct used by the IProxyDict code.
std::unique_ptr< SG::DataProxy > m_proxy
Data proxy describing this branch/object.
const ::TClass * m_class
Dictionary describing this branch/object.