12 #ifndef NAIA_OnDemandContainer_h
13 #define NAIA_OnDemandContainer_h
82 tree->Branch(T::BranchName.c_str(), static_cast<T *>(
this));
95 targetTree->Branch(T::BranchName.c_str(), const_cast<T *>(sourceContainer));
106 tree->SetBranchAddress(T::BranchName.c_str(), &
myPtrAddress);
107 m_branch = tree->GetBranch(T::BranchName.c_str());
129 throw std::runtime_error(T::BranchName +
": this container is not available on file");
140 unsigned long long m_treeEntry = std::numeric_limits<unsigned long long>::max();
void Branch(TTree *tree)
Create the TBranch associated with this container.
Mixin class to add "read-on-demand" behavior to an existing container class.
void SetTreeEntry(unsigned long long treeEntry)
Set the TTree entry number.
T * operator->()
Access operator. Use this to access container data
void SetBranchAddress(TTree *tree)
Setup reading of the data container.
OnDemandContainer()=default
void DisableIO() const
Disables I/O for this container. It won't be written on disk and trying to read it will cause an exce...
void LoadEvent()
Wrapper to call GetEntry on the underlying TBranch.
void MirrorBranch(TTree *targetTree, const T *sourceContainer)
Create a TBranch associated with this container mirroring from an existing container.
unsigned long long m_treeEntry