Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
ROOT::TBufferMerger Class Reference

TBufferMerger is a class to facilitate writing data in parallel from multiple threads, while writing to a single output file.

Its purpose is similar to TParallelMergingFile, but instead of using processes that connect to a network socket, TBufferMerger uses threads that each write to a TBufferMergerFile, which in turn push data into a queue managed by the TBufferMerger.

Definition at line 41 of file TBufferMerger.hxx.

Public Member Functions

 TBufferMerger (const char *name, Option_t *option="RECREATE", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
 Constructor.
 TBufferMerger (std::unique_ptr< TFile > output)
 Constructor.
virtual ~TBufferMerger ()
 Destructor.
size_t GetAutoSave () const
size_t GetBuffered () const
Bool_t GetCompressTemporaryKeys () const
std::shared_ptr< TBufferMergerFileGetFile ()
 Returns a TBufferMergerFile to which data can be written.
const char * GetMergeOptions ()
 Returns the current merge options.
Bool_t GetNotrees () const
 Returns whether the file has been marked as not containing any TTree objects and thus that steps that are specific to TTree can be skipped.
size_t GetQueueSize () const
void SetAutoSave (size_t)
void SetCompressTemporaryKeys (Bool_t=true)
void SetMergeOptions (const TString &options)
 Sets the merge options.
void SetNotrees (Bool_t notrees=kFALSE)
 Indicates that any TTree objects in the file should be skipped and thus that steps that are specific to TTree can be skipped.

Private Member Functions

 TBufferMerger ()
 TBufferMerger has no default constructor.
 TBufferMerger (const TBufferMerger &)
 TBufferMerger has no copy constructor.
void Init (std::unique_ptr< TFile >)
void Merge (TBufferMergerFile *memfile)
TBufferMergeroperator= (const TBufferMerger &)
 TBufferMerger has no copy operator.

Private Attributes

std::vector< std::weak_ptr< TBufferMergerFile > > fAttachedFiles
std::mutex fMergeMutex
TFileMerger fMerger {false, false}

Friends

class TBufferMergerFile

#include <ROOT/TBufferMerger.hxx>

Constructor & Destructor Documentation

◆ TBufferMerger() [1/4]

ROOT::TBufferMerger::TBufferMerger ( const char * name,
Option_t * option = "RECREATE",
Int_t compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault )

Constructor.

Parameters
nameOutput file name
optionOutput file creation options
compressOutput file compression level

Definition at line 23 of file TBufferMerger.cxx.

◆ TBufferMerger() [2/4]

ROOT::TBufferMerger::TBufferMerger ( std::unique_ptr< TFile > output)

Constructor.

Parameters
outputOutput TFile

Definition at line 31 of file TBufferMerger.cxx.

◆ ~TBufferMerger()

ROOT::TBufferMerger::~TBufferMerger ( )
virtual

Destructor.

Definition at line 44 of file TBufferMerger.cxx.

◆ TBufferMerger() [3/4]

ROOT::TBufferMerger::TBufferMerger ( )
private

TBufferMerger has no default constructor.

◆ TBufferMerger() [4/4]

ROOT::TBufferMerger::TBufferMerger ( const TBufferMerger & )
private

TBufferMerger has no copy constructor.

Member Function Documentation

◆ GetAutoSave()

size_t ROOT::TBufferMerger::GetAutoSave ( ) const
inline

Definition at line 78 of file TBufferMerger.hxx.

◆ GetBuffered()

size_t ROOT::TBufferMerger::GetBuffered ( ) const
inline

Definition at line 75 of file TBufferMerger.hxx.

◆ GetCompressTemporaryKeys()

Bool_t ROOT::TBufferMerger::GetCompressTemporaryKeys ( ) const
inline

Definition at line 111 of file TBufferMerger.hxx.

◆ GetFile()

std::shared_ptr< TBufferMergerFile > ROOT::TBufferMerger::GetFile ( )

Returns a TBufferMergerFile to which data can be written.

At the end, all TBufferMergerFiles get merged into the output file. The user is responsible to "cd" into the file to associate objects such as histograms or trees to it.

After the creation of this file, the user must reset the kMustCleanup bit on any objects attached to it and take care of their deletion, as there is a possibility that a race condition will happen that causes a crash if ROOT manages these objects.

Definition at line 56 of file TBufferMerger.cxx.

◆ GetMergeOptions()

const char * ROOT::TBufferMerger::GetMergeOptions ( )

Returns the current merge options.

Definition at line 65 of file TBufferMerger.cxx.

◆ GetNotrees()

Bool_t ROOT::TBufferMerger::GetNotrees ( ) const
inline

Returns whether the file has been marked as not containing any TTree objects and thus that steps that are specific to TTree can be skipped.

Definition at line 102 of file TBufferMerger.hxx.

◆ GetQueueSize()

size_t ROOT::TBufferMerger::GetQueueSize ( ) const
inline

Definition at line 72 of file TBufferMerger.hxx.

◆ Init()

void ROOT::TBufferMerger::Init ( std::unique_ptr< TFile > output)
private

Definition at line 36 of file TBufferMerger.cxx.

◆ Merge()

void ROOT::TBufferMerger::Merge ( ROOT::TBufferMergerFile * memfile)
private

Definition at line 76 of file TBufferMerger.cxx.

◆ operator=()

TBufferMerger & ROOT::TBufferMerger::operator= ( const TBufferMerger & )
private

TBufferMerger has no copy operator.

◆ SetAutoSave()

void ROOT::TBufferMerger::SetAutoSave ( size_t )
inline

Definition at line 84 of file TBufferMerger.hxx.

◆ SetCompressTemporaryKeys()

void ROOT::TBufferMerger::SetCompressTemporaryKeys ( Bool_t = true)
inline

Definition at line 108 of file TBufferMerger.hxx.

◆ SetMergeOptions()

void ROOT::TBufferMerger::SetMergeOptions ( const TString & options)

Sets the merge options.

SetMergeOptions("fast") will disable recompression of input data into the output if they have different compression settings.

Parameters
optionsTFileMerger/TFileMergeInfo merge options

Definition at line 71 of file TBufferMerger.cxx.

◆ SetNotrees()

void ROOT::TBufferMerger::SetNotrees ( Bool_t notrees = kFALSE)
inline

Indicates that any TTree objects in the file should be skipped and thus that steps that are specific to TTree can be skipped.

Definition at line 95 of file TBufferMerger.hxx.

◆ TBufferMergerFile

friend class TBufferMergerFile
friend

Definition at line 113 of file TBufferMerger.hxx.

Member Data Documentation

◆ fAttachedFiles

std::vector<std::weak_ptr<TBufferMergerFile> > ROOT::TBufferMerger::fAttachedFiles
private

Definition at line 131 of file TBufferMerger.hxx.

◆ fMergeMutex

std::mutex ROOT::TBufferMerger::fMergeMutex
private

Definition at line 130 of file TBufferMerger.hxx.

◆ fMerger

TFileMerger ROOT::TBufferMerger::fMerger {false, false}
private

Definition at line 129 of file TBufferMerger.hxx.


The documentation for this class was generated from the following files: