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):
11 #include "TVirtualManager.h"
12 
13 // ROOT include(s):
14 #include <ROOT/RNTupleReader.hxx>
15 #include <ROOT/RNTupleView.hxx>
16 
17 // Make the RNTuple types available in the ROOT namespace
18 // with all versions of ROOT.
19 #if ROOT_VERSION_CODE < ROOT_VERSION(6, 35, 1)
20 namespace ROOT {
21 using Experimental::RNTupleReader;
22 using Experimental::RNTupleView;
23 } // namespace ROOT
24 #endif // ROOT_VERSION_CODE < ROOT_VERSION(6, 36, 0)
25 
26 namespace xAOD {
27 
28  // Forward declaration(s):
29  class THolder;
30 
32  namespace Experimental {
33 
44 
45  public:
47  RObjectManager( ROOT::RNTupleView<void> field, ::Long64_t& entry, THolder* holder = 0, ::Bool_t renewOnRead = kFALSE );
48 
50  RObjectManager( const RObjectManager& parent ) = delete;
53 
56 
58  const std::string& fieldName() const;
59 
61  const THolder* holder() const;
63  THolder* holder();
64 
66  virtual ::Int_t getEntry( ::Int_t getall = 0 ) override;
67 
69  virtual const void* object() const override;
71  virtual void* object() override;
73  virtual void setObject( void* obj ) override;
74 
76  virtual ::Bool_t create() override;
78  virtual ::Bool_t isSet() const override;
80  virtual void reset() override;
81 
82  private:
84  ROOT::RNTupleView<void> m_field;
86  std::unique_ptr<THolder> m_holder;
88  std::reference_wrapper<::Long64_t> m_entryToLoad;
90  ::Long64_t m_entry;
92  ::Bool_t m_isSet;
94  ::Bool_t m_renewOnRead;
95 
96  }; // class RObjectManager
97 
98  } // namespace Experimental
99 
100 } // namespace xAOD
101 
102 #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:132
xAOD::Experimental::RObjectManager::operator=
RObjectManager & operator=(const RObjectManager &parent)=delete
Do not allow copying this object.
xAOD::Experimental::RObjectManager
Manager for EDM objects created by ROOT.
Definition: RObjectManager.h:43
xAOD::Experimental::RObjectManager::holder
const THolder * holder() const
Accessor to the Holder object.
Definition: RObjectManager.cxx:36
xAOD::Experimental::RObjectManager::setObject
virtual void setObject(void *obj) override
Function replacing the object being handled.
Definition: RObjectManager.cxx:106
xAOD::THolder
This class takes care of holding EDM objects in memory.
Definition: THolder.h:35
xAOD::Experimental::RObjectManager::RObjectManager
RObjectManager(const RObjectManager &parent)=delete
Do not allow copy-constructing this object:
xAOD::Experimental::RObjectManager::RObjectManager
RObjectManager(ROOT::RNTupleView< void > field, ::Long64_t &entry, THolder *holder=0, ::Bool_t renewOnRead=kFALSE)
Constructor.
Definition: RObjectManager.cxx:20
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
xAOD::TVirtualManager
Interface class for the "manager classes".
Definition: TVirtualManager.h:24
xAOD::Experimental::RObjectManager::m_entryToLoad
std::reference_wrapper<::Long64_t > m_entryToLoad
Entry number to load next.
Definition: RObjectManager.h:88
xAOD::Experimental::RObjectManager::isSet
virtual ::Bool_t isSet() const override
Check if the object was set for the current event.
Definition: RObjectManager.cxx:123
xAOD::Experimental::RObjectManager::m_field
ROOT::RNTupleView< void > m_field
The typeless object taking care of reading the field.
Definition: RObjectManager.h:84
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAOD::Experimental::RObjectManager::m_holder
std::unique_ptr< THolder > m_holder
Holder object for the EDM object.
Definition: RObjectManager.h:86
xAOD::Experimental::RObjectManager::create
virtual ::Bool_t create() override
Create the object for the current event.
Definition: RObjectManager.cxx:115
xAOD::Experimental::RObjectManager::~RObjectManager
~RObjectManager()
Destructor.
Definition: RObjectManager.cxx:27
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
xAOD::Experimental::RObjectManager::m_renewOnRead
::Bool_t m_renewOnRead
Should the object be recreated on each read?
Definition: RObjectManager.h:94
xAOD::Experimental::RObjectManager::m_entry
::Long64_t m_entry
The last entry that was loaded for this field.
Definition: RObjectManager.h:90
TVirtualManager.h
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:56
xAOD::Experimental::RObjectManager::m_isSet
::Bool_t m_isSet
Was the object set for the current event?
Definition: RObjectManager.h:92
xAOD::Experimental::RObjectManager::fieldName
const std::string & fieldName() const
provide the field name
Definition: RObjectManager.cxx:30
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:92
ROOT
Selection rules: declare transient members.
Definition: DataVector.h:580