ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
AthenaRoot
RootAuxDynIO
src
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
8
#include "
AthenaBaseComps/AthMessaging.h
"
9
#include "
AthContainers/AuxStoreInternal.h
"
10
#include "
RootAuxDynIO/IRootAuxDynIO.h
"
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
*)> >;
39
dummy_ptr_t
dummyptr
;
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
51
class
TBranchAuxDynWriter
:
public
AthMessaging
,
public
IRootAuxDynWriter
,
public
AuxDynAttrAccess
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;
81
int
m_branchOffsetTabLen
= 0;
82
bool
m_branchFillMode
= false;
83
bool
m_needsFill
= false;
84
86
std
::
map
<
SG
::auxid_t,
AuxInfo
>
m_auxInfoMap
;
87
};
88
89
}
// namespace
90
#endif
AthMessaging.h
AuxStoreInternal.h
An auxiliary data store that holds data internally.
IRootAuxDynIO.h
RootAuxDynIO.h
AthMessaging::AthMessaging
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
Definition
AthMessaging.cxx:13
RootAuxDynIO::AuxDynAttrAccess::AuxDynAttrAccess
AuxDynAttrAccess(TClass &tc)
Definition
RootAuxDynIO.cxx:25
RootAuxDynIO::IRootAuxDynWriter
Interface for an AuxDyn Writer - TTree based.
Definition
IRootAuxDynIO.h:57
RootAuxDynIO::TBranchAuxDynWriter::~TBranchAuxDynWriter
virtual ~TBranchAuxDynWriter()
Definition
TBranchAuxDynWriter.h:55
RootAuxDynIO::TBranchAuxDynWriter::setBranchOffsetTabLen
void setBranchOffsetTabLen(TBranch *b, int offsettab_len)
Definition
TBranchAuxDynWriter.cxx:54
RootAuxDynIO::TBranchAuxDynWriter::m_branchOffsetTabLen
int m_branchOffsetTabLen
Definition
TBranchAuxDynWriter.h:81
RootAuxDynIO::TBranchAuxDynWriter::commit
virtual int commit() override final
Call Fill() on the ROOT object used by this writer.
Definition
TBranchAuxDynWriter.cxx:193
RootAuxDynIO::TBranchAuxDynWriter::m_tfile
TFile * m_tfile
Definition
TBranchAuxDynWriter.h:77
RootAuxDynIO::TBranchAuxDynWriter::m_splitLevel
int m_splitLevel
Definition
TBranchAuxDynWriter.h:80
RootAuxDynIO::TBranchAuxDynWriter::needsCommit
virtual bool needsCommit() override final
is there a need to call commit()?
Definition
TBranchAuxDynWriter.h:72
RootAuxDynIO::TBranchAuxDynWriter::m_ttree
TTree * m_ttree
Definition
TBranchAuxDynWriter.h:78
RootAuxDynIO::TBranchAuxDynWriter::m_needsFill
bool m_needsFill
Definition
TBranchAuxDynWriter.h:83
RootAuxDynIO::TBranchAuxDynWriter::createAuxBranch
void createAuxBranch(AuxInfo &info)
Definition
TBranchAuxDynWriter.cxx:68
RootAuxDynIO::TBranchAuxDynWriter::m_branchFillMode
bool m_branchFillMode
Definition
TBranchAuxDynWriter.h:82
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
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_auxInfoMap
std::map< SG::auxid_t, AuxInfo > m_auxInfoMap
cached aux branches data by auxid
Definition
TBranchAuxDynWriter.h:86
RootAuxDynIO::TBranchAuxDynWriter::TBranchAuxDynWriter
TBranchAuxDynWriter(TTree &tree, TClass &cls, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill)
Definition
TBranchAuxDynWriter.cxx:42
RootAuxDynIO::TBranchAuxDynWriter::m_bufferSize
int m_bufferSize
Definition
TBranchAuxDynWriter.h:79
map
STL class.
RootAuxDynIO
Specialization of RootAuxDynStore for reading Aux Dynamic attributes from RNTuple.
Definition
RNTupleContainer.h:28
SG
Forward declaration.
Definition
CaloCellPacker_400_500.h:32
std
STL namespace.
RootAuxDynIO::AuxInfo
Definition
TBranchAuxDynWriter.h:22
RootAuxDynIO::AuxInfo::tclass
TClass * tclass
Definition
TBranchAuxDynWriter.h:28
RootAuxDynIO::AuxInfo::object
void * object
Definition
TBranchAuxDynWriter.h:30
RootAuxDynIO::AuxInfo::branch_name
std::string branch_name
Definition
TBranchAuxDynWriter.h:26
RootAuxDynIO::AuxInfo::buffer
void * buffer
Definition
TBranchAuxDynWriter.h:31
RootAuxDynIO::AuxInfo::rows_written
size_t rows_written
Definition
TBranchAuxDynWriter.h:33
RootAuxDynIO::AuxInfo::~AuxInfo
~AuxInfo()
Definition
TBranchAuxDynWriter.cxx:35
RootAuxDynIO::AuxInfo::written
bool written
Definition
TBranchAuxDynWriter.h:32
RootAuxDynIO::AuxInfo::dummy_ptr_t
std::unique_ptr< void, std::function< void(void *)> > dummy_ptr_t
Definition
TBranchAuxDynWriter.h:38
RootAuxDynIO::AuxInfo::objectAddr
void * objectAddr()
Definition
TBranchAuxDynWriter.h:45
RootAuxDynIO::AuxInfo::is_basic_type
bool is_basic_type
Definition
TBranchAuxDynWriter.h:29
RootAuxDynIO::AuxInfo::setDummyAddr
void * setDummyAddr()
Definition
TBranchAuxDynWriter.cxx:19
RootAuxDynIO::AuxInfo::type_name
std::string type_name
Definition
TBranchAuxDynWriter.h:24
RootAuxDynIO::AuxInfo::branch
TBranch * branch
Definition
TBranchAuxDynWriter.h:27
RootAuxDynIO::AuxInfo::dummy
void * dummy
Definition
TBranchAuxDynWriter.h:40
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::name
std::string name
Definition
TBranchAuxDynWriter.h:23
protected
#define protected
Definition
testRead.cxx:26
tree
TChain * tree
Definition
tile_monitor.h:30
Generated on
for ATLAS Offline Software by
1.17.0