ATLAS Offline Software
RNTupleAuxDynReader.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef RNTUPLEAUXDYNREADER_H
6 #define RNTUPLEAUXDYNREADER_H
7 
10 #include "RootAuxDynReader.h"
11 
12 #include "ROOT/RNTupleView.hxx"
13 
14 #include <map>
15 #include <optional>
16 #include <string>
17 
18 class TClass;
19 
20 namespace RootAuxDynIO
21 {
23  {
24  public :
25 
26  struct FieldInfo
27  {
29 
30  TClass* tclass = 0;
31  TClass* SE_tclass = 0;
32 
33  bool isPackedContainer = false;
34  bool needsSE = false;
36 
38  std::string attribName;
39  std::string fieldName;
40  std::optional< ROOT::RNTupleView<void> > view;
41  };
42 
43 
45  RNTupleAuxDynReader(const std::string& field_name, const std::string& field_type, ROOT::RNTupleReader* reader);
46 
48  void init(bool standalone);
49 
51  virtual void addReaderToObject(void* object, size_t row, std::recursive_mutex* iomtx = nullptr ) override final;
52 
54  FieldInfo& getFieldInfo(const SG::auxid_t& auxid, const SG::AuxStoreInternal& store);
55 
56  ROOT::RNTupleReader* getNativeReader();
57 
59 
60  protected:
61  std::string m_storeFieldName;
62  // offset of the AxuStoreHolder base class in the objects read by the Reader
64  bool m_initialized = false;
65  std::string m_key;
66 
67  // map auxid -> fieldInfo.
69 
70  // not owned
71  ROOT::RNTupleReader* m_ntupleReader;
72  };
73 
74 
75  inline ROOT::RNTupleReader* RNTupleAuxDynReader::getNativeReader() {
76  return m_ntupleReader;
77  }
78 
79 } //namespace
80 #endif
81 
SGTest::store
TestStore store
Definition: TestStore.cxx:23
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::TypeError
@ TypeError
Definition: RNTupleAuxDynReader.h:28
RootAuxDynReader
Definition: RootAuxDynReader.h:14
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::view
std::optional< ROOT::RNTupleView< void > > view
Definition: RNTupleAuxDynReader.h:40
RootAuxDynIO::RNTupleAuxDynReader
Definition: RNTupleAuxDynReader.h:23
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
L1CaloPhase1Monitoring.standalone
standalone
Definition: L1CaloPhase1Monitoring.py:139
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Status
Status
Definition: RNTupleAuxDynReader.h:28
RootAuxDynIO::RNTupleAuxDynReader::m_storeHolderOffset
int m_storeHolderOffset
Definition: RNTupleAuxDynReader.h:63
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo
Definition: RNTupleAuxDynReader.h:27
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::Initialized
@ Initialized
Definition: RNTupleAuxDynReader.h:28
RootAuxDynIO::RNTupleAuxDynReader::RNTupleAuxDynReader
RNTupleAuxDynReader(const std::string &field_name, const std::string &field_type, ROOT::RNTupleReader *reader)
create Reader for Aux attributes of an AuxContainer object stored in a given field
Definition: RNTupleAuxDynReader.cxx:152
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::SE_tclass
TClass * SE_tclass
Definition: RNTupleAuxDynReader.h:31
keylayer_zslicemap.row
row
Definition: keylayer_zslicemap.py:155
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
RootAuxDynIO::RNTupleAuxDynReader::m_key
std::string m_key
Definition: RNTupleAuxDynReader.h:65
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:285
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotFound
@ NotFound
Definition: RNTupleAuxDynReader.h:28
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::attribName
std::string attribName
Definition: RNTupleAuxDynReader.h:38
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::fieldName
std::string fieldName
Definition: RNTupleAuxDynReader.h:39
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::auxid
SG::auxid_t auxid
Definition: RNTupleAuxDynReader.h:37
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::status
enum Status status
Definition: RNTupleAuxDynReader.h:35
RootAuxDynIO::RNTupleAuxDynReader::getFieldInfo
FieldInfo & getFieldInfo(const SG::auxid_t &auxid, const SG::AuxStoreInternal &store)
get field informatino for auxid
Definition: RNTupleAuxDynReader.cxx:220
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::needsSE
bool needsSE
Definition: RNTupleAuxDynReader.h:34
RootAuxDynIO::RNTupleAuxDynReader::init
void init(bool standalone)
initialize once the mode of the Aux store is known
Definition: RNTupleAuxDynReader.cxx:183
RootAuxDynIO::RNTupleAuxDynReader::m_initialized
bool m_initialized
Definition: RNTupleAuxDynReader.h:64
protected
#define protected
Definition: GenEventCnv_p1.h:26
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::isPackedContainer
bool isPackedContainer
Definition: RNTupleAuxDynReader.h:33
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::tclass
TClass * tclass
Definition: RNTupleAuxDynReader.h:30
RootAuxDynIO::RNTupleAuxDynReader::m_fieldInfos
std::map< SG::auxid_t, FieldInfo > m_fieldInfos
Definition: RNTupleAuxDynReader.h:68
RootAuxDynIO
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.
Definition: RNTupleContainer.h:28
RootAuxDynIO::RNTupleAuxDynReader::m_ntupleReader
ROOT::RNTupleReader * m_ntupleReader
Definition: RNTupleAuxDynReader.h:71
python.CaloAddPedShiftConfig.default
default
Definition: CaloAddPedShiftConfig.py:43
RootAuxDynIO::RNTupleAuxDynReader::getNativeReader
ROOT::RNTupleReader * getNativeReader()
Definition: RNTupleAuxDynReader.h:75
AthMessaging.h
RootAuxDynIO::RNTupleAuxDynReader::FieldInfo::NotInitialized
@ NotInitialized
Definition: RNTupleAuxDynReader.h:28
RootAuxDynIO::RNTupleAuxDynReader::m_storeFieldName
std::string m_storeFieldName
Definition: RNTupleAuxDynReader.h:61
collisions.reader
reader
read the goodrunslist xml file(s)
Definition: collisions.py:22
AuxStoreInternal.h
An auxiliary data store that holds data internally.
ROOT
Selection rules: declare transient members.
Definition: DataVector.h:581
RootAuxDynReader.h