ATLAS Offline Software
RNTupleAuxDynReader.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef RNTUPLEAUXDYNREADER_H
6 #define RNTUPLEAUXDYNREADER_H
7 
11 
12 #include "ROOT/RNTupleView.hxx"
13 
14 #include <map>
15 #include <string>
16 
17 namespace ROOT::Experimental {
18  class RNTupleReader;
19 }
20 class TClass;
21 
22 namespace RootAuxDynIO
23 {
25  using ROOT::Experimental::RNTupleView;
26 
28  {
29  public :
30 
31  struct FieldInfo
32  {
34 
35  TClass* tclass = 0;
36  TClass* SE_tclass = 0;
37 
38  bool isPackedContainer = false;
39  bool needsSE = false;
41 
43  std::string attribName;
44  std::string fieldName;
45 #if ROOT_VERSION_CODE >= ROOT_VERSION( 6, 31, 0 )
46  std::unique_ptr< RNTupleView<void, true> > view_p; // pointer because lack of default xtor
47 #endif
48  };
49 
50 
52  RNTupleAuxDynReader(const std::string& field_name, const std::string& field_type, RNTupleReader* reader);
53 
55  void init(bool standalone);
56 
58  virtual void addReaderToObject(void* object, size_t row, std::recursive_mutex* iomtx = nullptr ) override final;
59 
61  virtual const SG::auxid_set_t& auxIDs() const override final;
62 
63  void addBytes(size_t bytes);
64 
65  virtual size_t getBytesRead() const override final;
66 
67  virtual void resetBytesRead() override final;
68 
70  const FieldInfo& getFieldInfo(const SG::auxid_t& auxid, const SG::AuxStoreInternal& store);
71 
73 
74  virtual ~RNTupleAuxDynReader() {}
75 
76  protected:
77  // auxids that could be found in registry for attribute names from the file
79 
80  std::string m_storeFieldName;
81  // counter for bytes read
82  size_t m_bytesRead = 0;
83  // offset of the AxuStoreHolder base class in the objects read by the Reader
85  bool m_initialized = false;
86  std::string m_key;
87 
88  // map auxid -> fieldInfo.
89  std::map<SG::auxid_t, FieldInfo> m_fieldInfos;
90 
91  // not owned
93  };
94 
95 
96 
97  inline void RNTupleAuxDynReader::addBytes(size_t bytes) {
98  m_bytesRead += bytes;
99  }
100 
101  inline size_t RNTupleAuxDynReader::getBytesRead() const {
102  return m_bytesRead;
103  }
104 
106  m_bytesRead = 0;
107  }
108 
110  return m_auxids;
111  }
112 
114  return m_ntupleReader;
115  }
116 
117 } //namespace
118 #endif
119 
query_example.row
row
Definition: query_example.py:24
store
StoreGateSvc * store
Definition: fbtTestBasics.cxx:69
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::TypeError
@ TypeError
Definition: RNTupleAuxDynReader.h:33
RootAuxDynIO::RNTupleAuxDynReader
Definition: RNTupleAuxDynReader.h:28
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
RootAuxDynIO::RNTupleAuxDynReader::RNTupleAuxDynReader
RNTupleAuxDynReader(const std::string &field_name, const std::string &field_type, RNTupleReader *reader)
create Reader for Aux attributes of an AuxContainer object stored in a given field
Definition: RNTupleAuxDynReader.cxx:113
RootAuxDynIO::RNTupleAuxDynReader::m_ntupleReader
RNTupleReader * m_ntupleReader
Definition: RNTupleAuxDynReader.h:92
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Status
Status
Definition: RNTupleAuxDynReader.h:33
RootAuxDynIO::RNTupleAuxDynReader::m_storeHolderOffset
int m_storeHolderOffset
Definition: RNTupleAuxDynReader.h:84
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo
Definition: RNTupleAuxDynReader.h:32
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Initialized
@ Initialized
Definition: RNTupleAuxDynReader.h:33
pool::RootCollection::RNTupleReader
ROOT::Experimental::RNTupleReader RNTupleReader
Definition: RNTCollection.h:37
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::SE_tclass
TClass * SE_tclass
Definition: RNTupleAuxDynReader.h:36
RootAuxDynIO::RNTupleAuxDynReader::getFieldInfo
const FieldInfo & getFieldInfo(const SG::auxid_t &auxid, const SG::AuxStoreInternal &store)
get field informatino for auxid
Definition: RNTupleAuxDynReader.cxx:182
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
RootAuxDynIO::RNTupleAuxDynReader::m_key
std::string m_key
Definition: RNTupleAuxDynReader.h:86
RootAuxDynIO::RNTupleAuxDynReader::m_auxids
SG::auxid_set_t m_auxids
Definition: RNTupleAuxDynReader.h:78
RootAuxDynIO::RNTupleAuxDynReader::addReaderToObject
virtual void addReaderToObject(void *object, size_t row, std::recursive_mutex *iomtx=nullptr) override final
attach RNTupleAuxStore to the current Aux container @object
Definition: RNTupleAuxDynReader.cxx:255
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotFound
@ NotFound
Definition: RNTupleAuxDynReader.h:33
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
RootAuxDynIO::RNTupleAuxDynReader::m_bytesRead
size_t m_bytesRead
Definition: RNTupleAuxDynReader.h:82
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::attribName
std::string attribName
Definition: RNTupleAuxDynReader.h:43
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::view_p
std::unique_ptr< RNTupleView< void, true > > view_p
Definition: RNTupleAuxDynReader.h:46
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::fieldName
std::string fieldName
Definition: RNTupleAuxDynReader.h:44
RNTupleReader
ROOT::Experimental::RNTupleReader RNTupleReader
Definition: RNTCollectionSchemaEditor.h:21
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::auxid
SG::auxid_t auxid
Definition: RNTupleAuxDynReader.h:42
RootAuxDynIO::RNTupleAuxDynReader::resetBytesRead
virtual void resetBytesRead() override final
Definition: RNTupleAuxDynReader.h:105
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::status
enum Status status
Definition: RNTupleAuxDynReader.h:40
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::needsSE
bool needsSE
Definition: RNTupleAuxDynReader.h:39
RootAuxDynIO::RNTupleAuxDynReader::init
void init(bool standalone)
initialize once the mode of the Aux store is known
Definition: RNTupleAuxDynReader.cxx:141
RootAuxDynIO::RNTupleAuxDynReader::m_initialized
bool m_initialized
Definition: RNTupleAuxDynReader.h:85
RootAuxDynIO::RNTupleAuxDynReader::auxIDs
virtual const SG::auxid_set_t & auxIDs() const override final
Aux IDs of all the Aux attributes belonging to the Aux container being read.
Definition: RNTupleAuxDynReader.h:109
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::isPackedContainer
bool isPackedContainer
Definition: RNTupleAuxDynReader.h:38
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::tclass
TClass * tclass
Definition: RNTupleAuxDynReader.h:35
RootAuxDynIO::RNTupleAuxDynReader::m_fieldInfos
std::map< SG::auxid_t, FieldInfo > m_fieldInfos
Definition: RNTupleAuxDynReader.h:89
RootAuxDynIO::IRootAuxDynReader
Definition: RootAuxDynIO.h:75
RootAuxDynIO
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.
Definition: RNTupleContainer.h:25
RootAuxDynIO::RNTupleAuxDynReader::getBytesRead
virtual size_t getBytesRead() const override final
Definition: RNTupleAuxDynReader.h:101
AthMessaging.h
RootAuxDynIO.h
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotInitialized
@ NotInitialized
Definition: RNTupleAuxDynReader.h:33
SG::auxid_set_t
A set of aux data identifiers.
Definition: AuxTypes.h:47
ROOT::Experimental
Definition: RNTCollection.h:27
RootAuxDynIO::RNTupleAuxDynReader::m_storeFieldName
std::string m_storeFieldName
Definition: RNTupleAuxDynReader.h:80
collisions.reader
reader
read the goodrunslist xml file(s)
Definition: collisions.py:22
RootAuxDynIO::RNTupleAuxDynReader::getNativeReader
RNTupleReader * getNativeReader()
Definition: RNTupleAuxDynReader.h:113
AuxStoreInternal.h
An auxiliary data store that holds data internally.
RootAuxDynIO::RNTupleAuxDynReader::addBytes
void addBytes(size_t bytes)
Definition: RNTupleAuxDynReader.h:97