Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TBranchAuxDynReader.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 TBRANCHAUXDYNREADER_H
6 #define TBRANCHAUXDYNREADER_H
7 
9 #include "RootAuxDynReader.h"
10 
11 #include <map>
12 #include <string>
13 
14 #include "TDataType.h"
15 class TTree;
16 class TClass;
17 class TBranch;
18 
20 {
21 public :
22 
23  struct BranchInfo
24  {
26 
27  TBranch* branch = 0;
28  TClass* tclass = 0;
29  EDataType edtyp = kOther_t;
30 
31  // to handle type differences
32  bool needsSE = false;
33  TClass* SE_tclass = 0;
34  EDataType SE_edt = kOther_t;
35 
36  bool isPackedContainer = false;
38 
40  std::string attribName;
41 
42  void setAddress(void* data);
43  };
44 
45  TBranchAuxDynReader(TTree *tree, TBranch *base_branch);
46 
47  void init(bool standalone);
48 
49  virtual void addReaderToObject(void* object, size_t ttree_row, std::recursive_mutex* iomtx = nullptr ) override final;
50 
51  BranchInfo& getBranchInfo(const SG::auxid_t& auxid, const SG::AuxStoreInternal& store);
52 
54 
55 protected:
56  std::string m_baseBranchName;
57  // offset of the AxuStoreHolder base class in the objects read by the Reader
59  bool m_initialized = false;
60  std::string m_key;
61 
62  TTree* m_tree = nullptr;
63  // map of attribute name to TBranch* as read from the file
64  std::map<std::string, TBranch*> m_branchMap;
65  // map auxid -> branch info. not sure if it can be different from m_branchMap
67 
68 private:
69  SG::auxid_t initBranch (bool standalone, const std::string& attr, TBranch* branch);
70 };
71 
72 
73 #endif
SGTest::store
TestStore store
Definition: TestStore.cxx:23
TBranchAuxDynReader::initBranch
SG::auxid_t initBranch(bool standalone, const std::string &attr, TBranch *branch)
Definition: TBranchAuxDynReader.cxx:202
TBranchAuxDynReader::BranchInfo::Initialized
@ Initialized
Definition: TBranchAuxDynReader.h:25
TBranchAuxDynReader::BranchInfo::SE_tclass
TClass * SE_tclass
Definition: TBranchAuxDynReader.h:33
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
RootAuxDynReader
Definition: RootAuxDynReader.h:14
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
TBranchAuxDynReader::m_branchInfos
std::map< SG::auxid_t, BranchInfo > m_branchInfos
Definition: TBranchAuxDynReader.h:66
TBranchAuxDynReader::BranchInfo
Definition: TBranchAuxDynReader.h:24
L1CaloPhase1Monitoring.standalone
standalone
Definition: L1CaloPhase1Monitoring.py:120
TBranchAuxDynReader::BranchInfo::branch
TBranch * branch
Definition: TBranchAuxDynReader.h:27
tree
TChain * tree
Definition: tile_monitor.h:30
TBranchAuxDynReader::init
void init(bool standalone)
Definition: TBranchAuxDynReader.cxx:247
TBranchAuxDynReader::BranchInfo::status
enum Status status
Definition: TBranchAuxDynReader.h:37
TBranchAuxDynReader::BranchInfo::edtyp
EDataType edtyp
Definition: TBranchAuxDynReader.h:29
TBranchAuxDynReader::BranchInfo::auxid
SG::auxid_t auxid
Definition: TBranchAuxDynReader.h:39
TBranchAuxDynReader::BranchInfo::NotFound
@ NotFound
Definition: TBranchAuxDynReader.h:25
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
TBranchAuxDynReader::BranchInfo::NotInitialized
@ NotInitialized
Definition: TBranchAuxDynReader.h:25
TBranchAuxDynReader::m_storeHolderOffset
int m_storeHolderOffset
Definition: TBranchAuxDynReader.h:58
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
TBranchAuxDynReader::BranchInfo::tclass
TClass * tclass
Definition: TBranchAuxDynReader.h:28
TBranchAuxDynReader::m_baseBranchName
std::string m_baseBranchName
Definition: TBranchAuxDynReader.h:56
TBranchAuxDynReader::BranchInfo::TypeError
@ TypeError
Definition: TBranchAuxDynReader.h:25
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
TBranchAuxDynReader::BranchInfo::Status
Status
Definition: TBranchAuxDynReader.h:25
TBranchAuxDynReader::TBranchAuxDynReader
TBranchAuxDynReader(TTree *tree, TBranch *base_branch)
Definition: TBranchAuxDynReader.cxx:171
TBranchAuxDynReader::BranchInfo::isPackedContainer
bool isPackedContainer
Definition: TBranchAuxDynReader.h:36
TBranchAuxDynReader::m_branchMap
std::map< std::string, TBranch * > m_branchMap
Definition: TBranchAuxDynReader.h:64
TBranchAuxDynReader::addReaderToObject
virtual void addReaderToObject(void *object, size_t ttree_row, std::recursive_mutex *iomtx=nullptr) override final
Attach specialized AuxStore for reading dynamic attributes.
Definition: TBranchAuxDynReader.cxx:349
TBranchAuxDynReader::BranchInfo::SE_edt
EDataType SE_edt
Definition: TBranchAuxDynReader.h:34
TBranchAuxDynReader::BranchInfo::needsSE
bool needsSE
Definition: TBranchAuxDynReader.h:32
TBranchAuxDynReader
Definition: TBranchAuxDynReader.h:20
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
TBranchAuxDynReader::m_initialized
bool m_initialized
Definition: TBranchAuxDynReader.h:59
columnar::final
CM final
Definition: ColumnAccessor.h:106
TBranchAuxDynReader::BranchInfo::setAddress
void setAddress(void *data)
Definition: TBranchAuxDynReader.cxx:143
TBranchAuxDynReader::getBranchInfo
BranchInfo & getBranchInfo(const SG::auxid_t &auxid, const SG::AuxStoreInternal &store)
Definition: TBranchAuxDynReader.cxx:260
TBranchAuxDynReader::BranchInfo::attribName
std::string attribName
Definition: TBranchAuxDynReader.h:40
RTTAlgmain.branch
branch
Definition: RTTAlgmain.py:61
python.CaloAddPedShiftConfig.default
default
Definition: CaloAddPedShiftConfig.py:43
TBranchAuxDynReader::m_key
std::string m_key
Definition: TBranchAuxDynReader.h:60
TBranchAuxDynReader::m_tree
TTree * m_tree
Definition: TBranchAuxDynReader.h:62
AuxStoreInternal.h
An auxiliary data store that holds data internally.
RootAuxDynReader.h