Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TBranchAuxDynWriter.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 TBRANCHAUXDYNWRITER_H
6 #define TBRANCHAUXDYNWRITER_H
7 
11 #include "RootAuxDynIO.h"
12 
13 // Forward declarations
14 class TFile;
15 class TTree;
16 class TBranch;
17 class TClass;
18 
19 namespace RootAuxDynIO
20 {
21 
22  struct AuxInfo {
23  std::string name;
24  std::string type_name;
25  const std::type_info*typeinfo = nullptr;
26  std::string branch_name;
27  TBranch* branch = nullptr;
28  TClass* tclass = nullptr;
29  bool is_basic_type = false;
30  void* object = nullptr;
31  void* buffer = nullptr;
32  bool written = false;
33  size_t rows_written = 0;
34 
35  // Dummy object instance; used when there was no request to write
36  // this branch but we need to write it anyway (for example,
37  // a dynamic variable that wasn't written on this event).
38  using dummy_ptr_t = std::unique_ptr<void, std::function<void(void*)> >;
40  void* dummy = 0;
41 
42  void* setDummyAddr();
43 
44  // get the right pointer to use with branch.setAddress() (different for objects and basic types)
45  void* objectAddr() { return is_basic_type? object : &object; }
46 
47  ~AuxInfo();
48  };
49 
50 
52  {
53  public:
54  TBranchAuxDynWriter( TTree& tree, TClass& cls, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill );
55  virtual ~TBranchAuxDynWriter() { }
56 
58  virtual void setBranchFillMode(bool mode) override final { m_branchFillMode = mode; }
59 
60  // throws exceptions
61  void createAuxBranch( AuxInfo& info );
62 
63  void setBranchOffsetTabLen(TBranch* b, int offsettab_len);
64 
67  // throws exceptions
68  virtual int writeAuxAttributes( const std::string& base_branchname,
69  void *store,
70  size_t backfill_nrows ) override final;
71 
72  virtual bool needsCommit() override final { return m_needsFill; }
73 
74  virtual int commit() override final;
75 
76  protected:
77  TFile* m_tfile = nullptr;
78  TTree* m_ttree = nullptr;
79  int m_bufferSize = 8192;
80  int m_splitLevel = 1;
82  bool m_branchFillMode = false;
83  bool m_needsFill = false;
84 
87  };
88 
89 } // namespace
90 #endif
grepfile.info
info
Definition: grepfile.py:38
RootAuxDynIO::AuxInfo
Definition: TBranchAuxDynWriter.h:22
SGTest::store
TestStore store
Definition: TestStore.cxx:23
RootAuxDynIO::TBranchAuxDynWriter::setBranchFillMode
virtual void setBranchFillMode(bool mode) override final
set Filling mode (true/false) for branch containers
Definition: TBranchAuxDynWriter.h:58
RootAuxDynIO::TBranchAuxDynWriter::m_tfile
TFile * m_tfile
Definition: TBranchAuxDynWriter.h:77
RootAuxDynIO::TBranchAuxDynWriter::createAuxBranch
void createAuxBranch(AuxInfo &info)
Definition: TBranchAuxDynWriter.cxx:68
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
RootAuxDynIO::TBranchAuxDynWriter
Definition: TBranchAuxDynWriter.h:52
RootAuxDynIO::AuxInfo::written
bool written
Definition: TBranchAuxDynWriter.h:32
RootAuxDynIO::AuxInfo::tclass
TClass * tclass
Definition: TBranchAuxDynWriter.h:28
RootAuxDynIO::IRootAuxDynWriter
Interface for an AuxDyn Writer - TTree based.
Definition: IRootAuxDynIO.h:57
RootAuxDynIO::TBranchAuxDynWriter::m_ttree
TTree * m_ttree
Definition: TBranchAuxDynWriter.h:78
RootAuxDynIO::AuxInfo::setDummyAddr
void * setDummyAddr()
Definition: TBranchAuxDynWriter.cxx:19
tree
TChain * tree
Definition: tile_monitor.h:30
CaloClusterListBadChannel.cls
cls
Definition: CaloClusterListBadChannel.py:8
RootAuxDynIO::AuxInfo::name
std::string name
Definition: TBranchAuxDynWriter.h:23
RootAuxDynIO::AuxInfo::branch
TBranch * branch
Definition: TBranchAuxDynWriter.h:27
RootAuxDynIO::AuxInfo::type_name
std::string type_name
Definition: TBranchAuxDynWriter.h:24
RootAuxDynIO::AuxInfo::is_basic_type
bool is_basic_type
Definition: TBranchAuxDynWriter.h:29
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
RootAuxDynIO::TBranchAuxDynWriter::setBranchOffsetTabLen
void setBranchOffsetTabLen(TBranch *b, int offsettab_len)
Definition: TBranchAuxDynWriter.cxx:54
RootAuxDynIO::AuxInfo::~AuxInfo
~AuxInfo()
Definition: TBranchAuxDynWriter.cxx:35
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
EFTrackingXrtAlgorithmConfig.bufferSize
bufferSize
Definition: EFTrackingXrtAlgorithmConfig.py:77
RootAuxDynIO::AuxDynAttrAccess
Definition: RootAuxDynIO.h:20
RootAuxDynIO::TBranchAuxDynWriter::m_branchFillMode
bool m_branchFillMode
Definition: TBranchAuxDynWriter.h:82
RootAuxDynIO::TBranchAuxDynWriter::commit
virtual int commit() override final
Call Fill() on the ROOT object used by this writer.
Definition: TBranchAuxDynWriter.cxx:193
RootAuxDynIO::AuxInfo::dummy
void * dummy
Definition: TBranchAuxDynWriter.h:40
RootAuxDynIO::TBranchAuxDynWriter::~TBranchAuxDynWriter
virtual ~TBranchAuxDynWriter()
Definition: TBranchAuxDynWriter.h:55
RootAuxDynIO::TBranchAuxDynWriter::writeAuxAttributes
virtual int writeAuxAttributes(const std::string &base_branchname, void *store, size_t backfill_nrows) override final
handle writing of dynamic xAOD attributes of an object called from RootTreeContainer::writeObject()
Definition: TBranchAuxDynWriter.cxx:128
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
RootAuxDynIO::TBranchAuxDynWriter::m_needsFill
bool m_needsFill
Definition: TBranchAuxDynWriter.h:83
Preparation.mode
mode
Definition: Preparation.py:107
RootAuxDynIO::AuxInfo::typeinfo
const std::type_info * typeinfo
Definition: TBranchAuxDynWriter.h:25
RootAuxDynIO::AuxInfo::dummyptr
dummy_ptr_t dummyptr
Definition: TBranchAuxDynWriter.h:39
RootAuxDynIO::AuxInfo::object
void * object
Definition: TBranchAuxDynWriter.h:30
RootAuxDynIO::AuxInfo::rows_written
size_t rows_written
Definition: TBranchAuxDynWriter.h:33
RootAuxDynIO::TBranchAuxDynWriter::needsCommit
virtual bool needsCommit() override final
is there a need to call commit()?
Definition: TBranchAuxDynWriter.h:72
RootAuxDynIO::TBranchAuxDynWriter::m_splitLevel
int m_splitLevel
Definition: TBranchAuxDynWriter.h:80
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
RootAuxDynIO::TBranchAuxDynWriter::TBranchAuxDynWriter
TBranchAuxDynWriter(TTree &tree, TClass &cls, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill)
Definition: TBranchAuxDynWriter.cxx:42
RootAuxDynIO::AuxInfo::dummy_ptr_t
std::unique_ptr< void, std::function< void(void *)> > dummy_ptr_t
Definition: TBranchAuxDynWriter.h:38
RootAuxDynIO
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.
Definition: RNTupleContainer.h:28
RootAuxDynIO::AuxInfo::objectAddr
void * objectAddr()
Definition: TBranchAuxDynWriter.h:45
AthMessaging.h
RootAuxDynIO.h
AuxStoreInternal.h
An auxiliary data store that holds data internally.
RootAuxDynIO::TBranchAuxDynWriter::m_auxInfoMap
std::map< SG::auxid_t, AuxInfo > m_auxInfoMap
cached aux branches data by auxid
Definition: TBranchAuxDynWriter.h:86
IRootAuxDynIO.h
RootAuxDynIO::AuxInfo::branch_name
std::string branch_name
Definition: TBranchAuxDynWriter.h:26
RootAuxDynIO::TBranchAuxDynWriter::m_bufferSize
int m_bufferSize
Definition: TBranchAuxDynWriter.h:79
RootAuxDynIO::AuxInfo::buffer
void * buffer
Definition: TBranchAuxDynWriter.h:31
RootAuxDynIO::TBranchAuxDynWriter::m_branchOffsetTabLen
int m_branchOffsetTabLen
Definition: TBranchAuxDynWriter.h:81