ATLAS Offline Software
RObjectManager.h
Go to the documentation of this file.
1 // Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef XAODROOTACCESS_TOOLS_ROBJECTMANAGER_H
8 #define XAODROOTACCESS_TOOLS_ROBJECTMANAGER_H
9 
10 // Local include(s).
12 
13 // ROOT include(s).
14 #include <ROOT/RNTupleView.hxx>
15 
16 // System include(s).
17 #include <functional>
18 #include <memory>
19 
20 namespace xAOD::Experimental {
21 
31 
32  public:
34  RObjectManager(ROOT::RNTupleView<void> field, const ::Long64_t& entry,
35  std::unique_ptr<THolder> holder);
38 
40  ROOT::RNTupleView<void>& field();
42  const ROOT::RNTupleView<void>& field() const;
43 
45  virtual ::Int_t getEntry(::Int_t getall = 0) override;
46 
48  virtual const void* object() const override;
50  virtual void* object() override;
52  virtual void setObject(void* obj) override;
53 
55  virtual ::Bool_t create() override;
57  virtual ::Bool_t isSet() const override;
59  virtual void reset() override;
60 
61  private:
63  ROOT::RNTupleView<void> m_field;
65  std::unique_ptr<THolder> m_holder;
67  std::reference_wrapper<const ::Long64_t> m_entryToLoad;
69  ::Long64_t m_entry;
71  ::Bool_t m_isSet;
72 
73 }; // class RObjectManager
74 
75 } // namespace xAOD::Experimental
76 
77 #endif // XAODROOTACCESS_TOOLS_ROBJECTMANAGER_H
xAOD::Experimental::RObjectManager::reset
virtual void reset() override
Reset the object at the end of processing of an event.
Definition: RObjectManager.cxx:117
xAOD::Experimental::RObjectManager
Manager for EDM objects created by ROOT.
Definition: RObjectManager.h:30
xAOD::Experimental::RObjectManager::setObject
virtual void setObject(void *obj) override
Function replacing the object being handled.
Definition: RObjectManager.cxx:91
xAOD::Details::IObjectManager::holder
const THolder * holder() const
Accessor to the Holder object.
Definition: IObjectManager.cxx:43
xAOD::Experimental
Definition: REvent.cxx:67
xAOD::Experimental::RObjectManager::isSet
virtual ::Bool_t isSet() const override
Check if the object was set for the current event.
Definition: RObjectManager.cxx:108
xAOD::Experimental::RObjectManager::m_field
ROOT::RNTupleView< void > m_field
The typeless object taking care of reading the field.
Definition: RObjectManager.h:63
IObjectManager.h
xAOD::Experimental::RObjectManager::m_holder
std::unique_ptr< THolder > m_holder
Holder object for the EDM object.
Definition: RObjectManager.h:65
xAOD::Experimental::RObjectManager::create
virtual ::Bool_t create() override
Create the object for the current event.
Definition: RObjectManager.cxx:100
xAOD::Experimental::RObjectManager::field
ROOT::RNTupleView< void > & field()
Accessor to the field (non-const)
Definition: RObjectManager.cxx:27
xAOD::Experimental::RObjectManager::~RObjectManager
~RObjectManager()
Destructor.
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
xAOD::Experimental::RObjectManager::m_entry
::Long64_t m_entry
The last entry that was loaded for this field.
Definition: RObjectManager.h:69
xAOD::Experimental::RObjectManager::getEntry
virtual ::Int_t getEntry(::Int_t getall=0) override
Function for updating the object in memory if needed.
Definition: RObjectManager.cxx:45
xAOD::Experimental::RObjectManager::RObjectManager
RObjectManager(ROOT::RNTupleView< void > field, const ::Long64_t &entry, std::unique_ptr< THolder > holder)
Constructor.
Definition: RObjectManager.cxx:16
xAOD::Experimental::RObjectManager::m_isSet
::Bool_t m_isSet
Was the object set for the current event?
Definition: RObjectManager.h:71
xAOD::Experimental::RObjectManager::m_entryToLoad
std::reference_wrapper< const ::Long64_t > m_entryToLoad
Entry number to load next.
Definition: RObjectManager.h:67
xAOD::Details::IObjectManager
Manager for EDM objects created by ROOT.
Definition: IObjectManager.h:20
python.PyAthena.obj
obj
Definition: PyAthena.py:132
xAOD::Experimental::RObjectManager::object
virtual const void * object() const override
Function getting a const pointer to the object being handled.
Definition: RObjectManager.cxx:77