14#ifndef TGO4HDF5DATAHANDLE_H
15#define TGO4HDF5DATAHANDLE_H
64 void InsertTypeMember(
const H5std_string &name,
size_t offset,
const H5::DataType &new_member);
96 virtual void Read(hsize_t sequencenum, H5::H5File *file);
99 virtual void Write(hsize_t sequencenum, H5::H5File *file);
205 void Read(hsize_t sequencenum, H5::H5File*file)
override;
208 void Write(hsize_t sequencenum, H5::H5File*file)
override;
255 void Read(hsize_t sequencenum, H5::H5File* file)
override;
258 void Write(hsize_t sequencenum, H5::H5File* file)
override;
303 void Read(hsize_t sequencenum, H5::H5File* file)
override;
306 void Write(hsize_t sequencenum, H5::H5File* ile)
override;
359 void Read(hsize_t sequencenum, H5::H5File* file)
override;
362 void Write(hsize_t sequencenum, H5::H5File* file)
override;
The abstract base class for the data elements of which the unpacked events (or detector structure dat...
void Write(hsize_t sequencenum, H5::H5File *file) override
Write event of sequence number from file.
void AllocReadBuffer(size_t size)
(Re-)allocate read buffer depending on the object size read from file
void BuildWriteDataset(H5::H5File *file) override
create datasets for writing memory structure of type into file.
Char_t * fxReadBuffer
secondary read bounce buffer for hdf5
void Read(hsize_t sequencenum, H5::H5File *file) override
Read event of sequence number from file.
TGo4HDF5BasicDataHandle(const char *name, size_t datasize)
create new data handle
void BuildReadDataset(H5::H5File *file, TGo4HDF5Source *parent) override
create datasets and buffers for reading this structure from hdf5 file.
virtual ~TGo4HDF5BasicDataHandle()
void Read(hsize_t sequencenum, H5::H5File *file) override
Read event of sequence number from file.
void Write(hsize_t sequencenum, H5::H5File *file) override
Write event of sequence number from file.
void BuildReadDataset(H5::H5File *file, TGo4HDF5Source *parent) override
create datasets and buffers for reading this structure from hdf5 file.
virtual ~TGo4HDF5CompositeDataHandle()
TGo4HDF5CompositeDataHandle(const char *name, size_t datasize)
create new data handle
void BuildWriteDataset(H5::H5File *file) override
create datasets for writing memory structure of type into file.
TGo4HDF5DataHandleFactory()
TGo4HDF5DataHandle * CreateDataHandle(const char *name, size_t datasize, const char *type)
create implementation of data handle by type
The base class to access a datatype with substructures in hdf5.
virtual void Write(hsize_t sequencenum, H5::H5File *file)
Write event of sequence number from file.
virtual void BuildWriteDataset(H5::H5File *file)
create datasets for writing memory structure of type into file.
void SetTopEventClass(const char *classname)
pass the top level event element class down the member hierarchy.
Bool_t fbDataSetExists
check on the fly if this handle has already created a dataset
virtual void Read(hsize_t sequencenum, H5::H5File *file)
Read event of sequence number from file.
virtual void SetObjectPointer(void *memptr)
define location of corresponding object in memory.
void SetTopEvent(TGo4EventElement *eve)
pass the top level event element down the member hierarchy.
TGo4HDF5DataHandle(const char *name, size_t datasize)
create new data handle
H5::CompType * GetType() const
return handle for type descriptor.
TGo4HDF5DataHandle * GetSubMember(UInt_t ix)
virtual ~TGo4HDF5DataHandle()
virtual void BuildReadDataset(H5::H5File *file, TGo4HDF5Source *parent)
create datasets and buffers for reading this structure from hdf5 file.
TGo4HDF5Source * fxParentSource
backpointer to parent source for exceptions
std::vector< TGo4HDF5DataHandle * > fxSubcomponents
collect sub-components of the referenced data object
TGo4HDF5DataHandle * FindSubMember(const char *name)
lookup if subcomponent of name already is in list.
void SetActive(Bool_t on)
const char * GetTypeName() const
TString fxEventClass
the top level event element classname to access the current data member from outside
void SetAllSubMembersActive(Bool_t on)
void SetMemberName(const char *name)
identifier for the member to access from outside using the top event handle
ULong_t fiEntries
number of event entries found in file dataspace
H5::DataSpace * fxDataSpace
dataspace in memory
Bool_t fbDataSetActive
we may disable this dataset temporarily from writing or reading useful for dynamic vector of vector c...
static TGo4HDF5DataHandleFactory fxFactory
TGo4HDF5DataHandle * AddSubMember(const char *name, size_t datasize, const char *collectiontype=nullptr)
create new subhandle for complex member component on heap.
TString fxMemberHandle
predefined interpreter access command e.g.
H5::DataSet fxDataSet
dataset containing the structure
H5::DataSpace fxFileSpace
dataspace in file
void InsertTypeMember(const H5std_string &name, size_t offset, const H5::DataType &new_member)
wrapper function to define contained structure member.
void SetMemberClass(const char *clname)
type of the member to access from outside
size_t fiReadOffset
begin of real eventdata payload after event object pointer
void SetParentOffset(size_t off)
remember location of this object relative to upper level object.
size_t fiDataSize
size of data structure in bytes, for redefining output dataset
size_t fiParentOffset
offset of this data structure relative to top level event object
TString fxMemberClass
classname of the entry for interpreter to operate e.g.
TString fxTypeName
identifier of the dataset
TGo4EventElement * fxEvent
the top level event element to access the current data member from outside
H5::CompType * fxType
component type representing the data structure
void * fxData
pointer to begin of data in memory
Event source which reads entries from a dataset in a hdf5 formatted file names of elements in hdf5 da...
void Read(hsize_t sequencenum, H5::H5File *file) override
Read event of sequence number from file.
TString fxInnerClassName
class that is contained in innermost vector
void Write(hsize_t sequencenum, H5::H5File *file) override
Write event of sequence number from file.
TGo4HDF5SubVectorDataHandle(const char *name, size_t datasize)
create new data handle
virtual ~TGo4HDF5SubVectorDataHandle()
void BuildReadDataset(H5::H5File *file, TGo4HDF5Source *parent) override
create datasets and buffers for reading this structure from hdf5 file.
void BuildWriteDataset(H5::H5File *file) override
create datasets for writing memory structure of type into file.
void SetObjectPointer(void *memptr) override
define location of corresponding object in memory.
void SetInnerClassName(const char *nm)
H5::CompType * fxCollection
collection type with fxType as entries
virtual ~TGo4HDF5VectorDataHandle()
size_t fiElementSize
size of the (collection element) structure
void BuildWriteDataset(H5::H5File *file) override
create datasets for writing memory structure of type into file.
void SetElementSize(size_t len)
remember size of a single element (structure) in this collection, if it is one.
TGo4HDF5VarContainer fxVarHandle
handle for variable arrays
TGo4HDF5VectorDataHandle(const char *name, size_t datasize)
create new data handle
void Write(hsize_t sequencenum, H5::H5File *ile) override
Write event of sequence number from file.
void Read(hsize_t sequencenum, H5::H5File *file) override
Read event of sequence number from file.
void SetObjectPointer(void *memptr) override
define location of corresponding object in memory.
void BuildReadDataset(H5::H5File *file, TGo4HDF5Source *parent) override
create datasets and buffers for reading this structure from hdf5 file.
unsigned long fx_Begin_ptr
hdf5 needs structure containing the hvl_t to deal with it correctly