Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 <optional>
16 #include <string>
17 
18 namespace ROOT::Experimental {
19  class RNTupleReader;
20 }
21 class TClass;
22 
23 namespace RootAuxDynIO
24 {
26  using ROOT::Experimental::RNTupleView;
27 
29  {
30  public :
31 
32  struct FieldInfo
33  {
35 
36  TClass* tclass = 0;
37  TClass* SE_tclass = 0;
38 
39  bool isPackedContainer = false;
40  bool needsSE = false;
42 
44  std::string attribName;
45  std::string fieldName;
46  std::optional< RNTupleView<void> > view;
47  };
48 
49 
51  RNTupleAuxDynReader(const std::string& field_name, const std::string& field_type, RNTupleReader* reader);
52 
54  void init(bool standalone);
55 
57  virtual void addReaderToObject(void* object, size_t row, std::recursive_mutex* iomtx = nullptr ) override final;
58 
60  virtual const SG::auxid_set_t& auxIDs() const override final;
61 
62  void addBytes(size_t bytes);
63 
64  virtual size_t getBytesRead() const override final;
65 
66  virtual void resetBytesRead() override final;
67 
69  FieldInfo& getFieldInfo(const SG::auxid_t& auxid, const SG::AuxStoreInternal& store);
70 
72 
73  virtual ~RNTupleAuxDynReader() {}
74 
75  protected:
76  // auxids that could be found in registry for attribute names from the file
78 
79  std::string m_storeFieldName;
80  // counter for bytes read
81  size_t m_bytesRead = 0;
82  // offset of the AxuStoreHolder base class in the objects read by the Reader
84  bool m_initialized = false;
85  std::string m_key;
86 
87  // map auxid -> fieldInfo.
88  std::map<SG::auxid_t, FieldInfo> m_fieldInfos;
89 
90  // not owned
92  };
93 
94 
95 
96  inline void RNTupleAuxDynReader::addBytes(size_t bytes) {
97  m_bytesRead += bytes;
98  }
99 
100  inline size_t RNTupleAuxDynReader::getBytesRead() const {
101  return m_bytesRead;
102  }
103 
105  m_bytesRead = 0;
106  }
107 
109  return m_auxids;
110  }
111 
113  return m_ntupleReader;
114  }
115 
116 } //namespace
117 #endif
118 
query_example.row
row
Definition: query_example.py:24
SGTest::store
TestStore store
Definition: TestStore.cxx:23
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::TypeError
@ TypeError
Definition: RNTupleAuxDynReader.h:34
RootAuxDynIO::RNTupleAuxDynReader
Definition: RNTupleAuxDynReader.h:29
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
L1CaloPhase1Monitoring.standalone
standalone
Definition: L1CaloPhase1Monitoring.py:120
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:165
RootAuxDynIO::RNTupleAuxDynReader::m_ntupleReader
RNTupleReader * m_ntupleReader
Definition: RNTupleAuxDynReader.h:91
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Status
Status
Definition: RNTupleAuxDynReader.h:34
RootAuxDynIO::RNTupleAuxDynReader::m_storeHolderOffset
int m_storeHolderOffset
Definition: RNTupleAuxDynReader.h:83
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo
Definition: RNTupleAuxDynReader.h:33
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Initialized
@ Initialized
Definition: RNTupleAuxDynReader.h:34
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::SE_tclass
TClass * SE_tclass
Definition: RNTupleAuxDynReader.h:37
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
RootAuxDynIO::RNTupleAuxDynReader::m_key
std::string m_key
Definition: RNTupleAuxDynReader.h:85
RootAuxDynIO::RNTupleAuxDynReader::m_auxids
SG::auxid_set_t m_auxids
Definition: RNTupleAuxDynReader.h:77
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:296
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotFound
@ NotFound
Definition: RNTupleAuxDynReader.h:34
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:81
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::attribName
std::string attribName
Definition: RNTupleAuxDynReader.h:44
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::fieldName
std::string fieldName
Definition: RNTupleAuxDynReader.h:45
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::auxid
SG::auxid_t auxid
Definition: RNTupleAuxDynReader.h:43
RootAuxDynIO::RNTupleAuxDynReader::resetBytesRead
virtual void resetBytesRead() override final
Definition: RNTupleAuxDynReader.h:104
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::status
enum Status status
Definition: RNTupleAuxDynReader.h:41
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::view
std::optional< RNTupleView< void > > view
Definition: RNTupleAuxDynReader.h:46
RootAuxDynIO::RNTupleAuxDynReader::getFieldInfo
FieldInfo & getFieldInfo(const SG::auxid_t &auxid, const SG::AuxStoreInternal &store)
get field informatino for auxid
Definition: RNTupleAuxDynReader.cxx:231
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::needsSE
bool needsSE
Definition: RNTupleAuxDynReader.h:40
RootAuxDynIO::RNTupleAuxDynReader::init
void init(bool standalone)
initialize once the mode of the Aux store is known
Definition: RNTupleAuxDynReader.cxx:196
RootAuxDynIO::RNTupleAuxDynReader::m_initialized
bool m_initialized
Definition: RNTupleAuxDynReader.h:84
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:108
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::isPackedContainer
bool isPackedContainer
Definition: RNTupleAuxDynReader.h:39
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::tclass
TClass * tclass
Definition: RNTupleAuxDynReader.h:36
RootAuxDynIO::RNTupleAuxDynReader::m_fieldInfos
std::map< SG::auxid_t, FieldInfo > m_fieldInfos
Definition: RNTupleAuxDynReader.h:88
RootAuxDynIO::IRootAuxDynReader
Definition: RootAuxDynIO.h:73
RootAuxDynIO
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.
Definition: RNTupleContainer.h:26
RootAuxDynIO::RNTupleAuxDynReader::getBytesRead
virtual size_t getBytesRead() const override final
Definition: RNTupleAuxDynReader.h:100
AthMessaging.h
RootAuxDynIO.h
RNTupleReader
ROOT::Experimental::RNTupleReader RNTupleReader
Definition: RNTupleAuxDynStore.h:19
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotInitialized
@ NotInitialized
Definition: RNTupleAuxDynReader.h:34
SG::auxid_set_t
A set of aux data identifiers.
Definition: AuxTypes.h:47
ROOT::Experimental
Definition: RNTCollection.h:26
RootAuxDynIO::RNTupleAuxDynReader::m_storeFieldName
std::string m_storeFieldName
Definition: RNTupleAuxDynReader.h:79
collisions.reader
reader
read the goodrunslist xml file(s)
Definition: collisions.py:22
RootAuxDynIO::RNTupleAuxDynReader::getNativeReader
RNTupleReader * getNativeReader()
Definition: RNTupleAuxDynReader.h:112
AuxStoreInternal.h
An auxiliary data store that holds data internally.
RootAuxDynIO::RNTupleAuxDynReader::addBytes
void addBytes(size_t bytes)
Definition: RNTupleAuxDynReader.h:96